]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA6/pythia-6.4.14.f
add aliroot macros to look at data from strip modules and from LED reference system
[u/mrichter/AliRoot.git] / PYTHIA6 / 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             CALL PYSHOW(IPU3,IPU4,QMAX)
3169           ELSEIF(ISET(ISUB).EQ.11) THEN
3170             CALL PYADSH(NFIN)
3171           ENDIF
3172           PARJ(81)=ALAMSV
3173  
3174 C...Allow possibility for user to abort event generation.
3175           IVETO=0
3176           IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO)
3177           IF(IVETO.EQ.1) GOTO 100
3178  
3179 C...Decay of final state resonances.
3180           MINT(32)=0
3181           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) CALL PYRESD(0)
3182           IF(MINT(51).EQ.1) GOTO 100
3183           MINT(52)=N
3184  
3185  
3186 C...Multiple interactions - PYTHIA 6.3 intermediate style.
3187   140     IF(MSTP(81).GE.10.AND.MINT(50).EQ.1) THEN
3188             IF(ISUB.EQ.95) MINT(31)=MINT(31)+1
3189             CALL PYMIGN(6)
3190             IF(MINT(51).EQ.1) GOTO 100
3191             MINT(53)=N
3192  
3193 C...Beam remnant flavour and colour assignments - new scheme.
3194             CALL PYMIHK
3195             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3196      &      GOTO 120
3197             IF(MINT(51).EQ.1) GOTO 100
3198  
3199 C...Primordial kT and beam remnant momentum sharing - new scheme.
3200             CALL PYMIRM
3201             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3202      &      GOTO 120
3203             IF(MINT(51).EQ.1) GOTO 100
3204             IF(ISUB.EQ.95) MINT(31)=MINT(31)-1
3205  
3206 C...Multiple interactions - PYTHIA 6.2 style.
3207           ELSEIF(MINT(111).NE.12) THEN
3208             IF (MSTP(81).GE.1.AND.MINT(50).EQ.1.AND.ISUB.NE.95) THEN
3209               CALL PYMULT(6)
3210               MINT(53)=N
3211             ENDIF
3212  
3213 C...Hadron remnants and primordial kT.
3214             CALL PYREMN(IPU1,IPU2)
3215             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO
3216      &           110
3217             IF(MINT(51).EQ.1) GOTO 100
3218           ENDIF
3219  
3220         ELSEIF(ISUB.NE.99) THEN
3221 C...Diffractive and elastic scattering.
3222           CALL PYDIFF
3223  
3224         ELSE
3225 C...DIS scattering (photon flux external).
3226           CALL PYDISG
3227           IF(MINT(51).EQ.1) GOTO 100
3228         ENDIF
3229  
3230 C...Check that no odd resonance left undecayed.
3231         MINT(54)=N
3232         IF(MSTP(111).GE.1) THEN
3233           NFIX=N
3234           DO 150 I=MINT(84)+1,NFIX
3235             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
3236      &      K(I,2).NE.22) THEN
3237               KCA=PYCOMP(K(I,2))
3238               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
3239                 CALL PYRESD(I)
3240                 IF(MINT(51).EQ.1) GOTO 100
3241               ENDIF
3242             ENDIF
3243   150     CONTINUE
3244         ENDIF
3245  
3246 C...Boost hadronic subsystem to overall rest frame.
3247 C..(Only relevant when photon inside lepton beam.)
3248         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
3249  
3250 C...Recalculate energies from momenta and masses (if desired).
3251         IF(MSTP(113).GE.1) THEN
3252           DO 160 I=MINT(83)+1,N
3253             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
3254      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3255   160     CONTINUE
3256           NRECAL=N
3257         ENDIF
3258  
3259 C...Colour reconnection before string formation
3260         IF (MSTP(95).GE.2) CALL PYFSCR(MINT(84)+1)
3261
3262 C...Rearrange partons along strings, check invariant mass cuts.
3263         MSTU(28)=0
3264         IF(MSTP(111).LE.0) MSTJ(14)=-1
3265         CALL PYPREP(MINT(84)+1)
3266         MSTJ(14)=MSTJ14
3267         IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN
3268           MSTU(24)=0
3269           GOTO 100
3270         ENDIF
3271         IF (MINT(51).EQ.1.AND.NPREP.LE.5) GOTO 110
3272         IF (MINT(51).EQ.1) GOTO 100
3273         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
3274         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
3275           DO 190 I=MINT(84)+1,N
3276             IF(K(I,2).EQ.94) THEN
3277               DO 180 I1=I+1,MIN(N,I+10)
3278                 IF(K(I1,3).EQ.I) THEN
3279                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
3280                   IF(K(I1,3).EQ.0) THEN
3281                     DO 170 II=MINT(84)+1,I-1
3282                         IF(K(II,2).EQ.K(I1,2)) THEN
3283                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
3284      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
3285                         ENDIF
3286   170               CONTINUE
3287                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
3288                   ENDIF
3289                 ENDIF
3290   180         CONTINUE
3291             ENDIF
3292   190     CONTINUE
3293           CALL PYEDIT(12)
3294           CALL PYEDIT(14)
3295           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
3296           IF(MSTP(125).EQ.0) MINT(4)=0
3297           DO 210 I=MINT(83)+1,N
3298             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
3299               DO 200 I1=I+1,N
3300                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
3301                 IF(K(I1,3).EQ.I) K(I,5)=I1
3302   200         CONTINUE
3303             ENDIF
3304   210     CONTINUE
3305         ENDIF
3306  
3307 C...Introduce separators between sections in PYLIST event listing.
3308         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
3309           MSTU70=1
3310           MSTU(71)=N
3311         ELSEIF(IPILE.EQ.1) THEN
3312           MSTU70=3
3313           MSTU(71)=2
3314           MSTU(72)=MINT(4)
3315           MSTU(73)=N
3316         ENDIF
3317  
3318 C...Go back to lab frame (needed for vertices, also in fragmentation).
3319         CALL PYFRAM(1)
3320  
3321 C...Set nonvanishing production vertex (optional).
3322         IF(MSTP(151).EQ.1) THEN
3323           DO 220 J=1,4
3324             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
3325      &      SIN(PARU(2)*PYR(0))
3326   220     CONTINUE
3327           DO 240 I=MINT(83)+1,N
3328             DO 230 J=1,4
3329               V(I,J)=V(I,J)+VTX(J)
3330   230       CONTINUE
3331   240     CONTINUE
3332         ENDIF
3333  
3334 C...Perform hadronization (if desired).
3335         IF(MSTP(111).GE.1) THEN
3336           CALL PYEXEC
3337           IF(MSTU(24).NE.0) GOTO 100
3338         ENDIF
3339         IF(MSTP(113).GE.1) THEN
3340           DO 250 I=NRECAL,N
3341             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
3342      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3343   250     CONTINUE
3344         ENDIF
3345         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
3346  
3347 C...Store event information and calculate Monte Carlo estimates of
3348 C...subprocess cross-sections.
3349   260   IF(IPILE.EQ.1) CALL PYDOCU
3350  
3351 C...Set counters for current pileup event and loop to next one.
3352         MSTI(41)=IPILE
3353         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
3354         IF(MSTU70.LT.10) THEN
3355           MSTU70=MSTU70+1
3356           MSTU(70+MSTU70)=N
3357         ENDIF
3358         MINT(83)=N
3359         MINT(84)=N+MSTP(126)
3360         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
3361   270 CONTINUE
3362  
3363 C...Generic information on pileup events. Reconstruct missing history.
3364       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
3365         PARI(91)=VINT(132)
3366         PARI(92)=VINT(133)
3367         PARI(93)=VINT(134)
3368         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
3369       ENDIF
3370       CALL PYEDIT(16)
3371  
3372 C...Transform to the desired coordinate frame.
3373   280 CALL PYFRAM(MSTP(124))
3374       MSTU(70)=MSTU70
3375       PARU(21)=VINT(1)
3376  
3377 C...Error messages
3378  5100 FORMAT(1X,'Error: no subprocess switched on.'/
3379      &1X,'Execution stopped.')
3380  
3381       RETURN
3382       END
3383  
3384 C*********************************************************************
3385  
3386 C...PYEVNW
3387 C...Administers the generation of a high-pT event via calls to
3388 C...a number of subroutines for the new multiple interactions and
3389 C...showering framework.
3390  
3391       SUBROUTINE PYEVNW
3392  
3393 C...Double precision and integer declarations.
3394       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3395       IMPLICIT INTEGER(I-N)
3396       INTEGER PYK,PYCHGE,PYCOMP
3397 C...Commonblocks.
3398       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
3399       COMMON/PYCTAG/NCT,MCT(4000,2)
3400       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3401       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3402       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3403       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3404       COMMON/PYINT1/MINT(400),VINT(400)
3405       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3406       COMMON/PYINT4/MWID(500),WIDS(500,5)
3407       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
3408       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
3409      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
3410      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
3411       SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,
3412      &     /PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/,/PYINTM/
3413 C...Local arrays.
3414       DIMENSION VTX(4)
3415  
3416 C...Stop if no subprocesses on.
3417       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
3418         WRITE(MSTU(11),5100)
3419         CALL PYSTOP(1)
3420       ENDIF
3421  
3422 C...Initial values for some counters.
3423       MSTU(1)=0
3424       MSTU(2)=0
3425       N=0
3426       MINT(5)=MINT(5)+1
3427       MINT(7)=0
3428       MINT(8)=0
3429       MINT(30)=0
3430       MINT(83)=0
3431       MINT(84)=MSTP(126)
3432       MSTU(24)=0
3433       MSTU70=0
3434       MSTJ14=MSTJ(14)
3435 C...Normally, use K(I,4:5) colour info rather than /PYCT/.
3436       NCT=0
3437       MINT(33)=0
3438  
3439 C...Let called routines know call is from PYEVNW (not PYEVNT).
3440       MINT(35)=3
3441  
3442 C...If variable energies: redo incoming kinematics and cross-section.
3443       MSTI(61)=0
3444       IF(MSTP(171).EQ.1) THEN
3445         CALL PYINKI(1)
3446         IF(MSTI(61).EQ.1) THEN
3447           MINT(5)=MINT(5)-1
3448           RETURN
3449         ENDIF
3450         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
3451         CALL PYXTOT
3452       ENDIF
3453  
3454 C...Loop over number of pileup events; check space left.
3455       IF(MSTP(131).LE.0) THEN
3456         NPILE=1
3457       ELSE
3458         CALL PYPILE(2)
3459         NPILE=MINT(81)
3460       ENDIF
3461       DO 300 IPILE=1,NPILE
3462         IF(MINT(84)+100.GE.MSTU(4)) THEN
3463           CALL PYERRM(11,
3464      &    '(PYEVNW:) no more space in PYJETS for pileup events')
3465           IF(MSTU(21).GE.1) GOTO 310
3466         ENDIF
3467         MINT(82)=IPILE
3468  
3469 C...Generate variables of hard scattering.
3470         MINT(51)=0
3471         MSTI(52)=0
3472   100   CONTINUE
3473         IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
3474         MINT(31)=0
3475         MINT(39)=0
3476         MINT(36)=0
3477         MINT(51)=0
3478         MINT(57)=0
3479         CALL PYRAND
3480         IF(MSTI(61).EQ.1) THEN
3481           MINT(5)=MINT(5)-1
3482           RETURN
3483         ENDIF
3484         IF(MINT(51).EQ.2) RETURN
3485         ISUB=MINT(1)
3486         IF(MSTP(111).EQ.-1) GOTO 290
3487  
3488 C...Loopback point if PYPREP fails, especially for junction topologies.
3489         NPREP=0
3490         MNT31S=MINT(31)
3491   110   NPREP=NPREP+1
3492         MINT(31)=MNT31S
3493  
3494         IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
3495 C...Hard scattering (including low-pT):
3496 C...reconstruct kinematics and colour flow of hard scattering.
3497           MINT31=MINT(31)
3498   120     MINT(31)=MINT31
3499           MINT(51)=0
3500           CALL PYSCAT
3501           IF(MINT(51).EQ.1) GOTO 100
3502           NPARTD=N
3503           NFIN=N
3504  
3505 C...Intertwined initial state showers and multiple interactions.
3506 C...Force no IS showers if no pdfs defined: MSTP(61) -> 0 for PYEVOL.
3507 C...Force no MI if cross section not known: MSTP(81) -> 0 for PYEVOL.
3508           MSTP61=MSTP(61)
3509           IF (MINT(47).LT.2) MSTP(61)=0
3510           MSTP81=MSTP(81)
3511           IF (MINT(50).EQ.0) MSTP(81)=0
3512           IF ((MSTP(61).GE.1.OR.MOD(MSTP(81),10).GE.0).AND.
3513      &    MINT(111).NE.12) THEN
3514 C...Absolute max pT2 scale for evolution: phase space limit.
3515             PT2MXS=0.25D0*VINT(2)
3516 C...Check if more constrained by ISR and MI max scales:
3517             PT2MXS=MIN(PT2MXS,MAX(VINT(56),VINT(62)))
3518 C...Loopback point in case of failure in evolution.
3519             LOOP=0
3520   130       LOOP=LOOP+1
3521             MINT(51)=0
3522             IF(LOOP.GT.100) THEN
3523               CALL PYERRM(9,'(PYEVNW:) failed to evolve shower or '
3524      &             //'multiple interactions.')
3525               MINT(51)=1
3526               RETURN
3527             ENDIF
3528  
3529 C...Pre-initialization of interleaved MI/ISR/JI evolution, only done
3530 C...once per event. (E.g. compute constants and save variables to be
3531 C...restored later in case of failure.)
3532             IF (LOOP.EQ.1) CALL PYEVOL(-1,DUMMY1,DUMMY2)
3533  
3534 C...Initialize interleaved MI/ISR/JI evolution.
3535 C...PT2MAX: absolute upper limit for evolution - Initialization may
3536 C...        return a PT2MAX which is lower than this.
3537 C...PT2MIN: absolute lower limit for evolution - Initialization may
3538 C...        return a PT2MIN which is larger than this (e.g. Lambda_QCD).
3539             PT2MAX=PT2MXS
3540             PT2MIN=0D0
3541             CALL PYEVOL(0,PT2MAX,PT2MIN)
3542             IF (MINT(51).EQ.1) GOTO 130
3543  
3544 C...Perform interleaved MI/ISR/JI evolution from PT2MAX to PT2MIN.
3545 C...In principle factorized, so can be stopped and restarted.
3546 C...Example: stop/start at pT=10 GeV. (Commented out for now.)
3547 C            PT2MED=MAX(10D0**2,PT2MIN)
3548 C            CALL PYEVOL(1,PT2MAX,PT2MED)
3549 C            IF (MINT(51).EQ.1) GOTO 160
3550 C            PT2MAX=PT2MED
3551             CALL PYEVOL(1,PT2MAX,PT2MIN)
3552             IF (MINT(51).EQ.1) GOTO 130
3553  
3554 C...Finalize interleaved MI/ISR/JI evolution.
3555             CALL PYEVOL(2,PT2MAX,PT2MIN)
3556             IF (MINT(51).EQ.1) GOTO 130
3557  
3558           ENDIF
3559           MSTP(61)=MSTP61
3560           MSTP(81)=MSTP81
3561           IF(MINT(51).EQ.1) GOTO 100
3562 C...(MINT(52) is actually obsolete in this routine. Set anyway
3563 C...to ensure PYDOCU stable.)
3564           MINT(52)=N
3565           MINT(53)=N
3566  
3567 C...Beam remnants - new scheme.
3568   140     IF(MINT(50).EQ.1) THEN
3569             IF (ISUB.EQ.95) MINT(31)=1
3570  
3571 C...Beam remnant flavour and colour assignments - new scheme.
3572             CALL PYMIHK
3573             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3574      &           GOTO 120
3575             IF(MINT(51).EQ.1) GOTO 100
3576  
3577 C...Primordial kT and beam remnant momentum sharing - new scheme.
3578             CALL PYMIRM
3579             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3580      &      GOTO 120
3581             IF(MINT(51).EQ.1) GOTO 100
3582             IF (ISUB.EQ.95) MINT(31)=0
3583           ELSEIF(MINT(111).NE.12) THEN
3584 C...Hadron remnants and primordial kT - old model.
3585 C...Happens e.g. for direct photon on one side.
3586             IPU1=IMI(1,1,1)
3587             IPU2=IMI(2,1,1)
3588             CALL PYREMN(IPU1,IPU2)
3589             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO
3590      &           110
3591             IF(MINT(51).EQ.1) GOTO 100
3592 C...PYREMN does not set colour tags for BRs, so needs to be done now.
3593             DO 160 I=MINT(53)+1,N
3594               DO 150 KCS=4,5
3595                 IDA=MOD(K(I,KCS),MSTU(5))
3596                 IF (IDA.NE.0) THEN
3597                   MCT(I,KCS-3)=MCT(IDA,6-KCS)
3598                 ELSE
3599                   MCT(I,KCS-3)=0
3600                 ENDIF
3601   150         CONTINUE
3602   160       CONTINUE
3603 C...Instruct PYPREP to use colour tags
3604             MINT(33)=1
3605
3606             DO 360 MQGST=1,2
3607               DO 350 I=MINT(84)+1,N
3608   
3609 C...Look for coloured string endpoint, or (later) leftover gluon.
3610                 IF (K(I,1).NE.3) GOTO 350
3611                 KC=PYCOMP(K(I,2))
3612                 IF(KC.EQ.0) GOTO 350
3613                 KQ=KCHG(KC,2)
3614                 IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 350
3615   
3616 C...  Pick up loose string end with no previous tag.
3617                 KCS=4
3618                 IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
3619                 IF(MCT(I,KCS-3).NE.0) GOTO 350
3620                   
3621                 CALL PYCTTR(I,KCS,I)
3622                 IF(MINT(51).NE.0) RETURN
3623   
3624  350          CONTINUE
3625  360        CONTINUE
3626 C...Now delete any colour processing information if set (since partons
3627 C...otherwise not FS showered!)
3628             DO 170 I=MINT(84)+1,N
3629               IF (I.LE.N) THEN
3630                 K(I,4)=MOD(K(I,4),MSTU(5)**2)
3631                 K(I,5)=MOD(K(I,5),MSTU(5)**2)
3632               ENDIF
3633   170       CONTINUE
3634           ENDIF
3635  
3636 C...Showering of final state partons (optional).
3637           ALAMSV=PARJ(81)
3638           PARJ(81)=PARP(72)
3639           IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.1.AND.ISET(ISUB).LE.10)
3640      &    THEN
3641             QMAX=VINT(55)
3642             IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
3643             CALL PYPTFS(1,QMAX,0D0,PTGEN)
3644 C...External processes: handle successive showers.
3645           ELSEIF(ISET(ISUB).EQ.11) THEN
3646             CALL PYADSH(NFIN)
3647           ENDIF
3648           PARJ(81)=ALAMSV
3649
3650 C...Allow possibility for user to abort event generation.
3651           IVETO=0
3652           IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO) ! sm
3653           IF(IVETO.EQ.1) GOTO 100
3654
3655  
3656 C...Decay of final state resonances.
3657           MINT(32)=0
3658           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) THEN
3659             CALL PYRESD(0)
3660             IF(MINT(51).NE.0) GOTO 100
3661           ENDIF
3662  
3663           IF(MINT(51).EQ.1) GOTO 100
3664  
3665         ELSEIF(ISUB.NE.99) THEN
3666 C...Diffractive and elastic scattering.
3667           CALL PYDIFF
3668  
3669         ELSE
3670 C...DIS scattering (photon flux external).
3671           CALL PYDISG
3672           IF(MINT(51).EQ.1) GOTO 100
3673         ENDIF
3674  
3675 C...Check that no odd resonance left undecayed.
3676         MINT(54)=N
3677         IF(MSTP(111).GE.1) THEN
3678           NFIX=N
3679           DO 180 I=MINT(84)+1,NFIX
3680             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
3681      &      K(I,2).NE.22) THEN
3682               KCA=PYCOMP(K(I,2))
3683               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
3684                 CALL PYRESD(I)
3685                 IF(MINT(51).EQ.1) GOTO 100
3686               ENDIF
3687             ENDIF
3688   180     CONTINUE
3689         ENDIF
3690  
3691 C...Boost hadronic subsystem to overall rest frame.
3692 C..(Only relevant when photon inside lepton beam.)
3693         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
3694  
3695 C...Recalculate energies from momenta and masses (if desired).
3696         IF(MSTP(113).GE.1) THEN
3697           DO 190 I=MINT(83)+1,N
3698             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
3699      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3700   190     CONTINUE
3701           NRECAL=N
3702         ENDIF
3703  
3704 C...Colour reconnection before string formation
3705         CALL PYFSCR(MINT(84)+1)
3706  
3707 C...Rearrange partons along strings, check invariant mass cuts.
3708         MSTU(28)=0
3709         IF(MSTP(111).LE.0) MSTJ(14)=-1
3710         CALL PYPREP(MINT(84)+1)
3711         MSTJ(14)=MSTJ14
3712         IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN
3713           MSTU(24)=0
3714           GOTO 100
3715         ENDIF
3716         IF(MINT(51).EQ.1) GOTO 110
3717         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
3718         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
3719           DO 220 I=MINT(84)+1,N
3720             IF(K(I,2).EQ.94) THEN
3721               DO 210 I1=I+1,MIN(N,I+10)
3722                 IF(K(I1,3).EQ.I) THEN
3723                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
3724                   IF(K(I1,3).EQ.0) THEN
3725                     DO 200 II=MINT(84)+1,I-1
3726                         IF(K(II,2).EQ.K(I1,2)) THEN
3727                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
3728      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
3729                         ENDIF
3730   200               CONTINUE
3731                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
3732                   ENDIF
3733                 ENDIF
3734   210         CONTINUE
3735             ENDIF
3736   220     CONTINUE
3737           CALL PYEDIT(12)
3738           CALL PYEDIT(14)
3739           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
3740           IF(MSTP(125).EQ.0) MINT(4)=0
3741           DO 240 I=MINT(83)+1,N
3742             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
3743               DO 230 I1=I+1,N
3744                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
3745                 IF(K(I1,3).EQ.I) K(I,5)=I1
3746   230         CONTINUE
3747             ENDIF
3748   240     CONTINUE
3749         ENDIF
3750  
3751 C...Introduce separators between sections in PYLIST event listing.
3752         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
3753           MSTU70=1
3754           MSTU(71)=N
3755         ELSEIF(IPILE.EQ.1) THEN
3756           MSTU70=3
3757           MSTU(71)=2
3758           MSTU(72)=MINT(4)
3759           MSTU(73)=N
3760         ENDIF
3761  
3762 C...Go back to lab frame (needed for vertices, also in fragmentation).
3763         CALL PYFRAM(1)
3764  
3765 C...Set nonvanishing production vertex (optional).
3766         IF(MSTP(151).EQ.1) THEN
3767           DO 250 J=1,4
3768             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
3769      &      SIN(PARU(2)*PYR(0))
3770   250     CONTINUE
3771           DO 270 I=MINT(83)+1,N
3772             DO 260 J=1,4
3773               V(I,J)=V(I,J)+VTX(J)
3774   260       CONTINUE
3775   270     CONTINUE
3776         ENDIF
3777  
3778 C...Perform hadronization (if desired).
3779         IF(MSTP(111).GE.1) THEN
3780           CALL PYEXEC
3781           IF(MSTU(24).NE.0) GOTO 100
3782         ENDIF
3783         IF(MSTP(113).GE.1) THEN
3784           DO 280 I=NRECAL,N
3785             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
3786      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3787   280     CONTINUE
3788         ENDIF
3789         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
3790  
3791 C...Store event information and calculate Monte Carlo estimates of
3792 C...subprocess cross-sections.
3793   290   IF(IPILE.EQ.1) CALL PYDOCU
3794  
3795 C...Set counters for current pileup event and loop to next one.
3796         MSTI(41)=IPILE
3797         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
3798         IF(MSTU70.LT.10) THEN
3799           MSTU70=MSTU70+1
3800           MSTU(70+MSTU70)=N
3801         ENDIF
3802         MINT(83)=N
3803         MINT(84)=N+MSTP(126)
3804         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
3805   300 CONTINUE
3806  
3807 C...Generic information on pileup events. Reconstruct missing history.
3808       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
3809         PARI(91)=VINT(132)
3810         PARI(92)=VINT(133)
3811         PARI(93)=VINT(134)
3812         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
3813       ENDIF
3814       CALL PYEDIT(16)
3815  
3816 C...Transform to the desired coordinate frame.
3817   310 CALL PYFRAM(MSTP(124))
3818       MSTU(70)=MSTU70
3819       PARU(21)=VINT(1)
3820  
3821 C...Error messages
3822  5100 FORMAT(1X,'Error: no subprocess switched on.'/
3823      &1X,'Execution stopped.')
3824  
3825       RETURN
3826       END
3827  
3828  
3829 C***********************************************************************
3830  
3831 C...PYSTAT
3832 C...Prints out information about cross-sections, decay widths, branching
3833 C...ratios, kinematical limits, status codes and parameter values.
3834  
3835       SUBROUTINE PYSTAT(MSTAT)
3836  
3837 C...Double precision and integer declarations.
3838       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3839       IMPLICIT INTEGER(I-N)
3840       INTEGER PYK,PYCHGE,PYCOMP
3841 C...Parameter statement to help give large particle numbers.
3842       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
3843      &KEXCIT=4000000,KDIMEN=5000000)
3844       PARAMETER (EPS=1D-3)
3845 C...Commonblocks.
3846       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3847       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3848       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3849       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
3850       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3851       COMMON/PYINT1/MINT(400),VINT(400)
3852       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3853       COMMON/PYINT4/MWID(500),WIDS(500,5)
3854       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
3855       COMMON/PYINT6/PROC(0:500)
3856       CHARACTER PROC*28, CHTMP*16
3857       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
3858       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
3859       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
3860      &/PYINT2/,/PYINT4/,/PYINT5/,/PYINT6/,/PYMSSM/,/PYMSRV/
3861 C...Local arrays, character variables and data.
3862       DIMENSION WDTP(0:400),WDTE(0:400,0:5),NMODES(0:20),PBRAT(10)
3863       CHARACTER PROGA(6)*28,CHAU*16,CHKF*16,CHD1*16,CHD2*16,CHD3*16,
3864      &CHIN(2)*12,STATE(-1:5)*4,CHKIN(21)*18,DISGA(2)*28,
3865      &PROGG9(13)*28,PROGG4(4)*28,PROGG2(2)*28,PROGP4(4)*28
3866       CHARACTER*24 CHD0, CHDC(10)
3867       CHARACTER*6 DNAME(3)
3868       DATA PROGA/
3869      &'VMD/hadron * VMD            ','VMD/hadron * direct         ',
3870      &'VMD/hadron * anomalous      ','direct * direct             ',
3871      &'direct * anomalous          ','anomalous * anomalous       '/
3872       DATA DISGA/'e * VMD','e * anomalous'/
3873       DATA PROGG9/
3874      &'direct * direct             ','direct * VMD                ',
3875      &'direct * anomalous          ','VMD * direct                ',
3876      &'VMD * VMD                   ','VMD * anomalous             ',
3877      &'anomalous * direct          ','anomalous * VMD             ',
3878      &'anomalous * anomalous       ','DIS * VMD                   ',
3879      &'DIS * anomalous             ','VMD * DIS                   ',
3880      &'anomalous * DIS             '/
3881       DATA PROGG4/
3882      &'direct * direct             ','direct * resolved           ',
3883      &'resolved * direct           ','resolved * resolved         '/
3884       DATA PROGG2/
3885      &'direct * hadron             ','resolved * hadron           '/
3886       DATA PROGP4/
3887      &'VMD * hadron                ','direct * hadron             ',
3888      &'anomalous * hadron          ','DIS * hadron                '/
3889       DATA STATE/'----','off ','on  ','on/+','on/-','on/1','on/2'/,
3890      &CHKIN/' m_hard (GeV/c^2) ',' p_T_hard (GeV/c) ',
3891      &'m_finite (GeV/c^2)','   y*_subsystem   ','     y*_large     ',
3892      &'     y*_small     ','    eta*_large    ','    eta*_small    ',
3893      &'cos(theta*)_large ','cos(theta*)_small ','       x_1        ',
3894      &'       x_2        ','       x_F        ',' cos(theta_hard)  ',
3895      &'m''_hard (GeV/c^2) ','       tau        ','        y*        ',
3896      &'cos(theta_hard^-) ','cos(theta_hard^+) ','      x_T^2       ',
3897      &'       tau''       '/
3898       DATA DNAME /'q     ','lepton','nu    '/
3899  
3900 C...Cross-sections.
3901       IF(MSTAT.LE.1) THEN
3902         IF(MINT(121).GT.1) CALL PYSAVE(5,0)
3903         WRITE(MSTU(11),5000)
3904         WRITE(MSTU(11),5100)
3905         WRITE(MSTU(11),5200) 0,PROC(0),NGEN(0,3),NGEN(0,1),XSEC(0,3)
3906         DO 100 I=1,500
3907           IF(MSUB(I).NE.1) GOTO 100
3908           WRITE(MSTU(11),5200) I,PROC(I),NGEN(I,3),NGEN(I,1),XSEC(I,3)
3909   100   CONTINUE
3910         IF(MINT(121).GT.1) THEN
3911           WRITE(MSTU(11),5300)
3912           DO 110 IGA=1,MINT(121)
3913             CALL PYSAVE(3,IGA)
3914             IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
3915               WRITE(MSTU(11),5200) IGA,DISGA(IGA),NGEN(0,3),NGEN(0,1),
3916      &        XSEC(0,3)
3917             ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
3918               WRITE(MSTU(11),5200) IGA,PROGG9(IGA),NGEN(0,3),NGEN(0,1),
3919      &        XSEC(0,3)
3920             ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.30) THEN
3921               WRITE(MSTU(11),5200) IGA,PROGP4(IGA),NGEN(0,3),NGEN(0,1),
3922      &        XSEC(0,3)
3923             ELSEIF(MINT(121).EQ.4) THEN
3924               WRITE(MSTU(11),5200) IGA,PROGG4(IGA),NGEN(0,3),NGEN(0,1),
3925      &        XSEC(0,3)
3926             ELSEIF(MINT(121).EQ.2) THEN
3927               WRITE(MSTU(11),5200) IGA,PROGG2(IGA),NGEN(0,3),NGEN(0,1),
3928      &        XSEC(0,3)
3929             ELSE
3930               WRITE(MSTU(11),5200) IGA,PROGA(IGA),NGEN(0,3),NGEN(0,1),
3931      &        XSEC(0,3)
3932             ENDIF
3933   110     CONTINUE
3934           CALL PYSAVE(5,0)
3935         ENDIF
3936         WRITE(MSTU(11),5400) MSTU(23),MSTU(30),MSTU(27),
3937      &  1D0-DBLE(NGEN(0,3))/MAX(1D0,DBLE(NGEN(0,2)))
3938  
3939 C...Decay widths and branching ratios.
3940       ELSEIF(MSTAT.EQ.2) THEN
3941         WRITE(MSTU(11),5500)
3942         WRITE(MSTU(11),5600)
3943         DO 140 KC=1,500
3944           KF=KCHG(KC,4)
3945           CALL PYNAME(KF,CHKF)
3946           IOFF=0
3947           IF(KC.LE.22) THEN
3948             IF(KC.GT.2*MSTP(1).AND.KC.LE.10) GOTO 140
3949             IF(KC.GT.10+2*MSTP(1).AND.KC.LE.20) GOTO 140
3950             IF(KC.LE.5.OR.(KC.GE.11.AND.KC.LE.16)) IOFF=1
3951             IF(KC.EQ.18.AND.PMAS(18,1).LT.1D0) IOFF=1
3952             IF(KC.EQ.21.OR.KC.EQ.22) IOFF=1
3953           ELSE
3954             IF(MWID(KC).LE.0) GOTO 140
3955             IF(IMSS(1).LE.0.AND.(KF/KSUSY1.EQ.1.OR.
3956      &      KF/KSUSY1.EQ.2)) GOTO 140
3957           ENDIF
3958 C...Off-shell branchings.
3959           IF(IOFF.EQ.1) THEN
3960             NGP=0
3961             IF(KC.LE.20) NGP=(MOD(KC,10)+1)/2
3962             IF(NGP.LE.MSTP(1)) WRITE(MSTU(11),5700) KF,CHKF(1:10),
3963      &      PMAS(KC,1),0D0,0D0,STATE(MDCY(KC,1)),0D0
3964             DO 120 J=1,MDCY(KC,3)
3965               IDC=J+MDCY(KC,2)-1
3966               NGP1=0
3967               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
3968      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
3969               NGP2=0
3970               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
3971      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
3972               CALL PYNAME(KFDP(IDC,1),CHD1)
3973               CALL PYNAME(KFDP(IDC,2),CHD2)
3974               IF(KFDP(IDC,3).EQ.0) THEN
3975                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
3976      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5800) IDC,CHD1(1:10),
3977      &          CHD2(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
3978               ELSE
3979                 CALL PYNAME(KFDP(IDC,3),CHD3)
3980                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
3981      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5900) IDC,CHD1(1:10),
3982      &          CHD2(1:10),CHD3(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
3983               ENDIF
3984   120       CONTINUE
3985 C...On-shell decays.
3986           ELSE
3987             CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
3988             BRFIN=1D0
3989             IF(WDTE(0,0).LE.0D0) BRFIN=0D0
3990             WRITE(MSTU(11),5700) KF,CHKF(1:10),PMAS(KC,1),WDTP(0),1D0,
3991      &      STATE(MDCY(KC,1)),BRFIN
3992             DO 130 J=1,MDCY(KC,3)
3993               IDC=J+MDCY(KC,2)-1
3994               NGP1=0
3995               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
3996      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
3997               NGP2=0
3998               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
3999      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
4000               BRPRI=0D0
4001               IF(WDTP(0).GT.0D0) BRPRI=WDTP(J)/WDTP(0)
4002               BRFIN=0D0
4003               IF(WDTE(0,0).GT.0D0) BRFIN=WDTE(J,0)/WDTE(0,0)
4004               CALL PYNAME(KFDP(IDC,1),CHD1)
4005               CALL PYNAME(KFDP(IDC,2),CHD2)
4006               IF(KFDP(IDC,3).EQ.0) THEN
4007                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
4008      &          WRITE(MSTU(11),5800) IDC,CHD1(1:10),
4009      &          CHD2(1:10),WDTP(J),BRPRI,
4010      &          STATE(MDME(IDC,1)),BRFIN
4011               ELSE
4012                 CALL PYNAME(KFDP(IDC,3),CHD3)
4013                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
4014      &          WRITE(MSTU(11),5900) IDC,CHD1(1:10),
4015      &          CHD2(1:10),CHD3(1:10),WDTP(J),BRPRI,
4016      &          STATE(MDME(IDC,1)),BRFIN
4017               ENDIF
4018   130       CONTINUE
4019           ENDIF
4020   140   CONTINUE
4021         WRITE(MSTU(11),6000)
4022  
4023 C...Allowed incoming partons/particles at hard interaction.
4024       ELSEIF(MSTAT.EQ.3) THEN
4025         WRITE(MSTU(11),6100)
4026         CALL PYNAME(MINT(11),CHAU)
4027         CHIN(1)=CHAU(1:12)
4028         CALL PYNAME(MINT(12),CHAU)
4029         CHIN(2)=CHAU(1:12)
4030         WRITE(MSTU(11),6200) CHIN(1),CHIN(2)
4031         DO 150 I=-20,22
4032           IF(I.EQ.0) GOTO 150
4033           IA=IABS(I)
4034           IF(IA.GT.MSTP(58).AND.IA.LE.10) GOTO 150
4035           IF(IA.GT.10+2*MSTP(1).AND.IA.LE.20) GOTO 150
4036           CALL PYNAME(I,CHAU)
4037           WRITE(MSTU(11),6300) CHAU,STATE(KFIN(1,I)),CHAU,
4038      &    STATE(KFIN(2,I))
4039   150   CONTINUE
4040         WRITE(MSTU(11),6400)
4041  
4042 C...User-defined limits on kinematical variables.
4043       ELSEIF(MSTAT.EQ.4) THEN
4044         WRITE(MSTU(11),6500)
4045         WRITE(MSTU(11),6600)
4046         SHRMAX=CKIN(2)
4047         IF(SHRMAX.LT.0D0) SHRMAX=VINT(1)
4048         WRITE(MSTU(11),6700) CKIN(1),CHKIN(1),SHRMAX
4049         PTHMIN=MAX(CKIN(3),CKIN(5))
4050         PTHMAX=CKIN(4)
4051         IF(PTHMAX.LT.0D0) PTHMAX=0.5D0*SHRMAX
4052         WRITE(MSTU(11),6800) CKIN(3),PTHMIN,CHKIN(2),PTHMAX
4053         WRITE(MSTU(11),6900) CHKIN(3),CKIN(6)
4054         DO 160 I=4,14
4055           WRITE(MSTU(11),6700) CKIN(2*I-1),CHKIN(I),CKIN(2*I)
4056   160   CONTINUE
4057         SPRMAX=CKIN(32)
4058         IF(SPRMAX.LT.0D0) SPRMAX=VINT(1)
4059         WRITE(MSTU(11),6700) CKIN(31),CHKIN(15),SPRMAX
4060         WRITE(MSTU(11),7000)
4061  
4062 C...Status codes and parameter values.
4063       ELSEIF(MSTAT.EQ.5) THEN
4064         WRITE(MSTU(11),7100)
4065         WRITE(MSTU(11),7200)
4066         DO 170 I=1,100
4067           WRITE(MSTU(11),7300) I,MSTP(I),PARP(I),100+I,MSTP(100+I),
4068      &    PARP(100+I)
4069   170   CONTINUE
4070  
4071 C...List of all processes implemented in the program.
4072       ELSEIF(MSTAT.EQ.6) THEN
4073         WRITE(MSTU(11),7400)
4074         WRITE(MSTU(11),7500)
4075         DO 180 I=1,500
4076           IF(ISET(I).LT.0) GOTO 180
4077           WRITE(MSTU(11),7600) I,PROC(I),ISET(I),KFPR(I,1),KFPR(I,2)
4078   180   CONTINUE
4079         WRITE(MSTU(11),7700)
4080  
4081       ELSEIF(MSTAT.EQ.7) THEN
4082       WRITE (MSTU(11),8000)
4083       NMODES(0)=0
4084       NMODES(10)=0
4085       NMODES(9)=0
4086       DO 290 ILR=1,2
4087         DO 280 KFSM=1,16
4088           KFSUSY=ILR*KSUSY1+KFSM
4089           NRVDC=0
4090 C...SDOWN DECAYS
4091           IF (KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5) THEN
4092             NRVDC=3
4093             DO 190 I=1,NRVDC
4094               PBRAT(I)=0D0
4095               NMODES(I)=0
4096   190       CONTINUE
4097             CALL PYNAME(KFSUSY,CHTMP)
4098             CHD0=CHTMP//' '
4099             CHDC(1)=DNAME(3) // ' + ' // DNAME(1)
4100             CHDC(2)=DNAME(2) // ' + ' // DNAME(1)
4101             CHDC(3)=DNAME(1) // ' + ' // DNAME(1)
4102             KC=PYCOMP(KFSUSY)
4103             DO 200 J=1,MDCY(KC,3)
4104               IDC=J+MDCY(KC,2)-1
4105               ID1=IABS(KFDP(IDC,1))
4106               ID2=IABS(KFDP(IDC,2))
4107               IF (KFDP(IDC,3).EQ.0) THEN
4108                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4109      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4110                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4111                   NMODES(1)=NMODES(1)+1
4112                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4113                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4114                 ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4115      &                 .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6)) THEN
4116                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4117                   NMODES(2)=NMODES(2)+1
4118                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4119                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4120                 ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4121      &                 .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4122                   PBRAT(3)=PBRAT(3)+BRAT(IDC)
4123                   NMODES(3)=NMODES(3)+1
4124                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4125                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4126                 ENDIF
4127               ENDIF
4128   200       CONTINUE
4129           ENDIF
4130 C...SUP DECAYS
4131           IF (KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6) THEN
4132             NRVDC=2
4133             DO 210 I=1,NRVDC
4134               NMODES(I)=0
4135               PBRAT(I)=0D0
4136   210       CONTINUE
4137             CALL PYNAME(KFSUSY,CHTMP)
4138             CHD0=CHTMP//' '
4139             CHDC(1)=DNAME(2) // ' + ' // DNAME(1)
4140             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4141             KC=PYCOMP(KFSUSY)
4142             DO 220 J=1,MDCY(KC,3)
4143               IDC=J+MDCY(KC,2)-1
4144               ID1=IABS(KFDP(IDC,1))
4145               ID2=IABS(KFDP(IDC,2))
4146               IF (KFDP(IDC,3).EQ.0) THEN
4147                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
4148      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4149                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4150                   NMODES(1)=NMODES(1)+1
4151                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4152                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4153                 ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
4154      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4155                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4156                   NMODES(2)=NMODES(2)+1
4157                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4158                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4159                 ENDIF
4160               ENDIF
4161   220       CONTINUE
4162           ENDIF
4163 C...SLEPTON DECAYS
4164           IF (KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15) THEN
4165             NRVDC=2
4166             DO 230 I=1,NRVDC
4167               PBRAT(I)=0D0
4168               NMODES(I)=0
4169   230       CONTINUE
4170             CALL PYNAME(KFSUSY,CHTMP)
4171             CHD0=CHTMP//' '
4172             CHDC(1)=DNAME(3) // ' + ' // DNAME(2)
4173             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4174             KC=PYCOMP(KFSUSY)
4175             DO 240 J=1,MDCY(KC,3)
4176               IDC=J+MDCY(KC,2)-1
4177               ID1=IABS(KFDP(IDC,1))
4178               ID2=IABS(KFDP(IDC,2))
4179               IF (KFDP(IDC,3).EQ.0) THEN
4180                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4181      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
4182                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4183                   NMODES(1)=NMODES(1)+1
4184                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4185                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4186                 ENDIF
4187                 IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND.(ID2
4188      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4189                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4190                   NMODES(2)=NMODES(2)+1
4191                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4192                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4193                 ENDIF
4194               ENDIF
4195   240       CONTINUE
4196           ENDIF
4197 C...SNEUTRINO DECAYS
4198           IF ((KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16).AND.ILR.EQ.1)
4199      &         THEN
4200             NRVDC=2
4201             DO 250 I=1,NRVDC
4202               PBRAT(I)=0D0
4203               NMODES(I)=0
4204   250       CONTINUE
4205             CALL PYNAME(KFSUSY,CHTMP)
4206             CHD0=CHTMP//' '
4207             CHDC(1)=DNAME(2) // ' + ' // DNAME(2)
4208             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4209             KC=PYCOMP(KFSUSY)
4210             DO 260 J=1,MDCY(KC,3)
4211               IDC=J+MDCY(KC,2)-1
4212               ID1=IABS(KFDP(IDC,1))
4213               ID2=IABS(KFDP(IDC,2))
4214               IF (KFDP(IDC,3).EQ.0) THEN
4215                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
4216      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
4217                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4218                   NMODES(1)=NMODES(1)+1
4219                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4220                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4221                 ENDIF
4222                 IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
4223      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4224                   NMODES(2)=NMODES(2)+1
4225                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4226                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4227                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4228                 ENDIF
4229               ENDIF
4230   260       CONTINUE
4231           ENDIF
4232           IF (NRVDC.NE.0) THEN
4233             DO 270 I=1,NRVDC
4234               WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
4235               NMODES(0)=NMODES(0)+NMODES(I)
4236   270       CONTINUE
4237           ENDIF
4238   280   CONTINUE
4239   290 CONTINUE
4240       DO 370 KFSM=21,37
4241         KFSUSY=KSUSY1+KFSM
4242         NRVDC=0
4243 C...NEUTRALINO DECAYS
4244         IF (KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
4245           NRVDC=4
4246           DO 300 I=1,NRVDC
4247             PBRAT(I)=0D0
4248             NMODES(I)=0
4249   300     CONTINUE
4250           CALL PYNAME(KFSUSY,CHTMP)
4251           CHD0=CHTMP//' '
4252           CHDC(1)=DNAME(3) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
4253           CHDC(2)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4254           CHDC(3)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4255           CHDC(4)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4256           KC=PYCOMP(KFSUSY)
4257           DO 310 J=1,MDCY(KC,3)
4258             IDC=J+MDCY(KC,2)-1
4259             ID1=IABS(KFDP(IDC,1))
4260             ID2=IABS(KFDP(IDC,2))
4261             ID3=IABS(KFDP(IDC,3))
4262             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4263      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.11.OR
4264      &           .ID3.EQ.13.OR.ID3.EQ.15)) THEN
4265               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4266               NMODES(1)=NMODES(1)+1
4267               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4268               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4269             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4270      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4271      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4272               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4273               NMODES(2)=NMODES(2)+1
4274               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4275               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4276             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4277      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
4278      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4279               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4280               NMODES(3)=NMODES(3)+1
4281               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4282               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4283             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4284      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4285      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4286               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4287               NMODES(4)=NMODES(4)+1
4288               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4289               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4290             ENDIF
4291   310     CONTINUE
4292         ENDIF
4293 C...CHARGINO DECAYS
4294         IF (KFSM.EQ.24.OR.KFSM.EQ.37) THEN
4295           NRVDC=5
4296           DO 320 I=1,NRVDC
4297             PBRAT(I)=0D0
4298             NMODES(I)=0
4299   320     CONTINUE
4300           CALL PYNAME(KFSUSY,CHTMP)
4301           CHD0=CHTMP//' '
4302           CHDC(1)=DNAME(3) // ' + ' // DNAME(3) // ' + ' // DNAME(2)
4303           CHDC(2)=DNAME(2) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
4304           CHDC(3)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4305           CHDC(4)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4306           CHDC(5)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4307           KC=PYCOMP(KFSUSY)
4308           DO 330 J=1,MDCY(KC,3)
4309             IDC=J+MDCY(KC,2)-1
4310             ID1=IABS(KFDP(IDC,1))
4311             ID2=IABS(KFDP(IDC,2))
4312             ID3=IABS(KFDP(IDC,3))
4313             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4314      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.12.OR
4315      &           .ID3.EQ.14.OR.ID3.EQ.16)) THEN
4316               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4317               NMODES(1)=NMODES(1)+1
4318               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4319               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4320             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4321      &             .(ID2.EQ.12.OR.ID2.EQ.14.OR.ID2.EQ.16).AND.(ID3.EQ
4322      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
4323               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4324               NMODES(1)=NMODES(1)+1
4325               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4326               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4327             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4328      &             .(ID2.EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ
4329      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
4330               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4331               NMODES(2)=NMODES(2)+1
4332               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4333               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4334             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4335      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4336      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
4337               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4338               NMODES(3)=NMODES(3)+1
4339               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4340               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4341             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4342      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4343      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4344               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4345               NMODES(3)=NMODES(3)+1
4346               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4347               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4348             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4349      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4350      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
4351               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4352               NMODES(4)=NMODES(4)+1
4353               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4354               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4355             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4356      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4357      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4358               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4359               NMODES(4)=NMODES(4)+1
4360               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4361               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4362             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4363      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4364      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4365               PBRAT(5)=PBRAT(5)+BRAT(IDC)
4366               NMODES(5)=NMODES(5)+1
4367               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4368               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4369             ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND
4370      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4371      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4372               PBRAT(5)=PBRAT(5)+BRAT(IDC)
4373               NMODES(5)=NMODES(5)+1
4374               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4375               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4376             ENDIF
4377   330     CONTINUE
4378         ENDIF
4379 C...GLUINO DECAYS
4380         IF (KFSM.EQ.21) THEN
4381           NRVDC=3
4382           DO 340 I=1,NRVDC
4383             PBRAT(I)=0D0
4384             NMODES(I)=0
4385   340     CONTINUE
4386           CALL PYNAME(KFSUSY,CHTMP)
4387           CHD0=CHTMP//' '
4388           CHDC(1)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4389           CHDC(2)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4390           CHDC(3)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4391           KC=PYCOMP(KFSUSY)
4392           DO 350 J=1,MDCY(KC,3)
4393             IDC=J+MDCY(KC,2)-1
4394             ID1=IABS(KFDP(IDC,1))
4395             ID2=IABS(KFDP(IDC,2))
4396             ID3=IABS(KFDP(IDC,3))
4397             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4398      &           .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1.OR
4399      &           .ID3.EQ.3.OR.ID3.EQ.5)) THEN
4400               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4401               NMODES(1)=NMODES(1)+1
4402               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4403               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4404             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4405      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
4406      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4407               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4408               NMODES(2)=NMODES(2)+1
4409               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4410               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4411             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4412      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4413      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4414               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4415               NMODES(3)=NMODES(3)+1
4416               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4417               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4418             ENDIF
4419   350     CONTINUE
4420         ENDIF
4421  
4422         IF (NRVDC.NE.0) THEN
4423           DO 360 I=1,NRVDC
4424             WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
4425             NMODES(0)=NMODES(0)+NMODES(I)
4426   360     CONTINUE
4427         ENDIF
4428   370 CONTINUE
4429       WRITE (MSTU(11),8100) NMODES(0), NMODES(10), NMODES(9)
4430  
4431       IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
4432         WRITE (MSTU(11),8500)
4433         DO 400 IRV=1,3
4434           DO 390 JRV=1,3
4435             DO 380 KRV=1,3
4436               WRITE (MSTU(11),8700) IRV,JRV,KRV,RVLAM(IRV,JRV,KRV)
4437      &             ,RVLAMP(IRV,JRV,KRV),RVLAMB(IRV,JRV,KRV)
4438   380       CONTINUE
4439   390     CONTINUE
4440   400   CONTINUE
4441         WRITE (MSTU(11),8600)
4442       ENDIF
4443       ENDIF
4444  
4445 C...Formats for printouts.
4446  5000 FORMAT('1',9('*'),1X,'PYSTAT:  Statistics on Number of ',
4447      &'Events and Cross-sections',1X,9('*'))
4448  5100 FORMAT(/1X,78('=')/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',12X,
4449      &'Subprocess',12X,'I',6X,'Number of points',6X,'I',4X,'Sigma',3X,
4450      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',34('-'),'I',28('-'),
4451      &'I',4X,'(mb)',4X,'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',1X,
4452      &'N:o',1X,'Type',25X,'I',4X,'Generated',9X,'Tried',1X,'I',12X,
4453      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/1X,'I',34X,'I',28X,
4454      &'I',12X,'I')
4455  5200 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I12,1X,I13,1X,'I',1X,1P,
4456      &D10.3,1X,'I')
4457  5300 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/
4458      &1X,'I',34X,'I',28X,'I',12X,'I')
4459  5400 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')//
4460      &1X,'********* Total number of errors, excluding junctions =',
4461      &1X,I8,' *************'/
4462      &1X,'********* Total number of errors, including junctions =',
4463      &1X,I8,' *************'/
4464      &1X,'********* Total number of warnings =                   ',
4465      &1X,I8,' *************'/
4466      &1X,'********* Fraction of events that fail fragmentation ',
4467      &'cuts =',1X,F8.5,' *********'/)
4468  5500 FORMAT('1',27('*'),1X,'PYSTAT:  Decay Widths and Branching ',
4469      &'Ratios',1X,27('*'))
4470  5600 FORMAT(/1X,98('=')/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
4471      &1X,'I',5X,'Mother  -->  Branching/Decay Channel',8X,'I',1X,
4472      &'Width (GeV)',1X,'I',7X,'B.R.',1X,'I',1X,'Stat',1X,'I',2X,
4473      &'Eff. B.R.',1X,'I'/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
4474      &1X,98('='))
4475  5700 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,'I',1X,
4476      &I8,2X,A10,3X,'(m =',F10.3,')',2X,'-->',5X,'I',2X,1P,D10.3,0P,1X,
4477      &'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,1P,D10.3,0P,1X,'I')
4478  5800 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,15X,'I',2X,
4479      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
4480      &1P,D10.3,0P,1X,'I')
4481  5900 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,1X,'+',1X,A10,2X,'I',2X,
4482      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
4483      &1P,D10.3,0P,1X,'I')
4484  6000 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,98('='))
4485  6100 FORMAT('1',7('*'),1X,'PYSTAT: Allowed Incoming Partons/',
4486      &'Particles at Hard Interaction',1X,7('*'))
4487  6200 FORMAT(/1X,78('=')/1X,'I',38X,'I',37X,'I'/1X,'I',1X,
4488      &'Beam particle:',1X,A12,10X,'I',1X,'Target particle:',1X,A12,7X,
4489      &'I'/1X,'I',38X,'I',37X,'I'/1X,'I',1X,'Content',6X,'State',19X,
4490      &'I',1X,'Content',6X,'State',18X,'I'/1X,'I',38X,'I',37X,'I'/1X,
4491      &78('=')/1X,'I',38X,'I',37X,'I')
4492  6300 FORMAT(1X,'I',1X,A9,5X,A4,19X,'I',1X,A9,5X,A4,18X,'I')
4493  6400 FORMAT(1X,'I',38X,'I',37X,'I'/1X,78('='))
4494  6500 FORMAT('1',12('*'),1X,'PYSTAT: User-Defined Limits on ',
4495      &'Kinematical Variables',1X,12('*'))
4496  6600 FORMAT(/1X,78('=')/1X,'I',76X,'I')
4497  6700 FORMAT(1X,'I',16X,1P,D10.3,0P,1X,'<',1X,A,1X,'<',1X,1P,D10.3,0P,
4498      &16X,'I')
4499  6800 FORMAT(1X,'I',3X,1P,D10.3,0P,1X,'(',1P,D10.3,0P,')',1X,'<',1X,A,
4500      &1X,'<',1X,1P,D10.3,0P,16X,'I')
4501  6900 FORMAT(1X,'I',29X,A,1X,'=',1X,1P,D10.3,0P,16X,'I')
4502  7000 FORMAT(1X,'I',76X,'I'/1X,78('='))
4503  7100 FORMAT('1',12('*'),1X,'PYSTAT: Summary of Status Codes and ',
4504      &'Parameter Values',1X,12('*'))
4505  7200 FORMAT(/3X,'I',4X,'MSTP(I)',9X,'PARP(I)',20X,'I',4X,'MSTP(I)',9X,
4506      &'PARP(I)'/)
4507  7300 FORMAT(1X,I3,5X,I6,6X,1P,D10.3,0P,18X,I3,5X,I6,6X,1P,D10.3)
4508  7400 FORMAT('1',13('*'),1X,'PYSTAT: List of implemented processes',
4509      &1X,13('*'))
4510  7500 FORMAT(/1X,65('=')/1X,'I',34X,'I',28X,'I'/1X,'I',12X,
4511      &'Subprocess',12X,'I',1X,'ISET',2X,'KFPR(I,1)',2X,'KFPR(I,2)',1X,
4512      &'I'/1X,'I',34X,'I',28X,'I'/1X,65('=')/1X,'I',34X,'I',28X,'I')
4513  7600 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I4,1X,I10,1X,I10,1X,'I')
4514  7700 FORMAT(1X,'I',34X,'I',28X,'I'/1X,65('='))
4515  8000 FORMAT(1X/ 1X/
4516      &     17X,'Sums over R-Violating branching ratios',1X/ 1X
4517      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I'/1X,'I',4X
4518      &     ,'Mother  -->  Sum over final state flavours',4X,'I',2X
4519      &     ,'BR(sum)',2X,'I',2X,'N',2X,'I'/1X,'I',50X,'I',11X,'I',5X,'I'
4520      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I')
4521  8100 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I'/1X,70('=')/1X,'I',1X
4522      &     ,'Total number of R-Violating modes :',3X,I5,24X,'I'/
4523      &     1X,'I',1X,'Total number with non-vanishing BR :',2X,I5,24X
4524      &     ,'I'/1X,'I',1X,'Total number with BR > 0.001 :',8X,I5,24X,'I'
4525      &     /1X,70('='))
4526  8200 FORMAT(1X,'I',1X,A9,1X,'-->',1X,A24,11X,
4527      &     'I',2X,1P,D8.2,0P,1X,'I',2X,I2,1X,'I')
4528  8300 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I')
4529  8500 FORMAT(1X/ 1X/
4530      &     1X,'R-Violating couplings',1X/ 1X /
4531      &     1X,55('=')/
4532      &     1X,'I',1X,'IJK',1X,'I',2X,'LAMBDA(IJK)',2X,'I',2X
4533      &     ,'LAMBDA''(IJK)',1X,'I',1X,"LAMBDA''(IJK)",1X,'I'/1X,'I',5X
4534      &     ,'I',15X,'I',15X,'I',15X,'I')
4535  8600 FORMAT(1X,55('='))
4536  8700 FORMAT(1X,'I',1X,I1,I1,I1,1X,'I',1X,1P,D13.3,0P,1X,'I',1X,1P
4537      &     ,D13.3,0P,1X,'I',1X,1P,D13.3,0P,1X,'I')
4538  
4539       RETURN
4540       END
4541  
4542 C*********************************************************************
4543  
4544 C...PYUPEV
4545 C...Administers the hard-process generation required for output to the
4546 C...Les Houches event record.
4547  
4548       SUBROUTINE PYUPEV
4549  
4550 C...Double precision and integer declarations.
4551       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4552       IMPLICIT INTEGER(I-N)
4553       INTEGER PYK,PYCHGE,PYCOMP
4554  
4555 C...Commonblocks.
4556       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
4557       COMMON/PYCTAG/NCT,MCT(4000,2)
4558       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4559       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
4560       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
4561       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4562       COMMON/PYINT1/MINT(400),VINT(400)
4563       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
4564       COMMON/PYINT4/MWID(500),WIDS(500,5)
4565       SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,
4566      &/PYINT1/,/PYINT2/,/PYINT4/
4567  
4568 C...HEPEUP for output.
4569       INTEGER MAXNUP
4570       PARAMETER (MAXNUP=500)
4571       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
4572       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
4573       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
4574      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
4575      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
4576       SAVE /HEPEUP/
4577  
4578 C...Stop if no subprocesses on.
4579       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
4580         WRITE(MSTU(11),5100)
4581         STOP
4582       ENDIF
4583  
4584 C...Special flags for hard-process generation only.
4585       MSTP71=MSTP(71)
4586       MSTP(71)=0
4587       MST128=MSTP(128)
4588       MSTP(128)=1
4589  
4590 C...Initial values for some counters.
4591       N=0
4592       MINT(5)=MINT(5)+1
4593       MINT(7)=0
4594       MINT(8)=0
4595       MINT(30)=0
4596       MINT(83)=0
4597       MINT(84)=MSTP(126)
4598       MSTU(24)=0
4599       MSTU70=0
4600       MSTJ14=MSTJ(14)
4601 C...Normally, use K(I,4:5) colour info rather than /PYCTAG/.
4602       MINT(33)=0
4603  
4604 C...If variable energies: redo incoming kinematics and cross-section.
4605       MSTI(61)=0
4606       IF(MSTP(171).EQ.1) THEN
4607         CALL PYINKI(1)
4608         IF(MSTI(61).EQ.1) THEN
4609           MINT(5)=MINT(5)-1
4610           RETURN
4611         ENDIF
4612         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
4613         CALL PYXTOT
4614       ENDIF
4615  
4616 C...Do not allow pileup events.
4617       MINT(82)=1
4618  
4619 C...Generate variables of hard scattering.
4620       MINT(51)=0
4621       MSTI(52)=0
4622   100 CONTINUE
4623       IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
4624       MINT(31)=0
4625       MINT(51)=0
4626       MINT(57)=0
4627       CALL PYRAND
4628       IF(MSTI(61).EQ.1) THEN
4629         MINT(5)=MINT(5)-1
4630         RETURN
4631       ENDIF
4632       IF(MINT(51).EQ.2) RETURN
4633       ISUB=MINT(1)
4634  
4635       IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
4636 C...Hard scattering (including low-pT):
4637 C...reconstruct kinematics and colour flow of hard scattering.
4638         MINT31=MINT(31)
4639   110   MINT(31)=MINT31
4640         MINT(51)=0
4641         CALL PYSCAT
4642         IF(MINT(51).EQ.1) GOTO 100
4643         IPU1=MINT(84)+1
4644         IPU2=MINT(84)+2
4645  
4646 C...Decay of final state resonances.
4647         MINT(32)=0
4648         IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10.AND.ISUB.NE.95)
4649      &  CALL PYRESD(0)
4650         IF(MINT(51).EQ.1) GOTO 100
4651         MINT(52)=N
4652  
4653 C...Longitudinal boost of hard scattering.
4654         BETAZ=(VINT(41)-VINT(42))/(VINT(41)+VINT(42))
4655         CALL PYROBO(MINT(84)+1,N,0D0,0D0,0D0,0D0,BETAZ)
4656  
4657       ELSEIF(ISUB.NE.99) THEN
4658 C...Diffractive and elastic scattering.
4659         CALL PYDIFF
4660  
4661       ELSE
4662 C...DIS scattering (photon flux external).
4663         CALL PYDISG
4664         IF(MINT(51).EQ.1) GOTO 100
4665       ENDIF
4666  
4667 C...Check that no odd resonance left undecayed.
4668       MINT(54)=N
4669       NFIX=N
4670       DO 120 I=MINT(84)+1,NFIX
4671         IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
4672      &  K(I,2).NE.22) THEN
4673           KCA=PYCOMP(K(I,2))
4674           IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
4675             CALL PYRESD(I)
4676             IF(MINT(51).EQ.1) GOTO 100
4677           ENDIF
4678         ENDIF
4679   120 CONTINUE
4680  
4681 C...Boost hadronic subsystem to overall rest frame.
4682 C..(Only relevant when photon inside lepton beam.)
4683       IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
4684  
4685 C...Store event information and calculate Monte Carlo estimates of
4686 C...subprocess cross-sections.
4687   130 CALL PYDOCU
4688  
4689 C...Transform to the desired coordinate frame.
4690   140 CALL PYFRAM(MSTP(124))
4691       MSTU(70)=MSTU70
4692       PARU(21)=VINT(1)
4693  
4694 C...Restore special flags for hard-process generation only.
4695       MSTP(71)=MSTP71
4696       MSTP(128)=MST128
4697  
4698 C...Trace colour tags; convert to LHA style labels.
4699       NCT=100
4700       DO 150 I=MINT(84)+1,N
4701         MCT(I,1)=0
4702         MCT(I,2)=0
4703   150 CONTINUE
4704       DO 160 I=MINT(84)+1,N
4705         KQ=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
4706         IF(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
4707           IF(K(I,4).NE.0.AND.(KQ.EQ.1.OR.KQ.EQ.2).AND.MCT(I,1).EQ.0)
4708      &    THEN
4709             IMO=MOD(K(I,4)/MSTU(5),MSTU(5))
4710             IDA=MOD(K(I,4),MSTU(5))
4711             IF(IMO.NE.0.AND.MOD(K(IMO,5)/MSTU(5),MSTU(5)).EQ.I.AND.
4712      &      MCT(IMO,2).NE.0) THEN
4713               MCT(I,1)=MCT(IMO,2)
4714             ELSEIF(IMO.NE.0.AND.MOD(K(IMO,4),MSTU(5)).EQ.I.AND.
4715      &      MCT(IMO,1).NE.0) THEN
4716               MCT(I,1)=MCT(IMO,1)
4717             ELSEIF(IDA.NE.0.AND.MOD(K(IDA,5),MSTU(5)).EQ.I.AND.
4718      &      MCT(IDA,2).NE.0) THEN
4719               MCT(I,1)=MCT(IDA,2)
4720             ELSE
4721               NCT=NCT+1
4722               MCT(I,1)=NCT
4723             ENDIF
4724           ENDIF
4725           IF(K(I,5).NE.0.AND.(KQ.EQ.-1.OR.KQ.EQ.2).AND.MCT(I,2).EQ.0)
4726      &    THEN
4727             IMO=MOD(K(I,5)/MSTU(5),MSTU(5))
4728             IDA=MOD(K(I,5),MSTU(5))
4729             IF(IMO.NE.0.AND.MOD(K(IMO,4)/MSTU(5),MSTU(5)).EQ.I.AND.
4730      &      MCT(IMO,1).NE.0) THEN
4731               MCT(I,2)=MCT(IMO,1)
4732             ELSEIF(IMO.NE.0.AND.MOD(K(IMO,5),MSTU(5)).EQ.I.AND.
4733      &      MCT(IMO,2).NE.0) THEN
4734               MCT(I,2)=MCT(IMO,2)
4735             ELSEIF(IDA.NE.0.AND.MOD(K(IDA,4),MSTU(5)).EQ.I.AND.
4736      &      MCT(IDA,1).NE.0) THEN
4737               MCT(I,2)=MCT(IDA,1)
4738             ELSE
4739               NCT=NCT+1
4740               MCT(I,2)=NCT
4741             ENDIF
4742           ENDIF
4743         ENDIF
4744   160 CONTINUE
4745  
4746 C...Put event in HEPEUP commonblock.
4747       NUP=N-MINT(84)
4748       IDPRUP=MINT(1)
4749       XWGTUP=1D0
4750       SCALUP=VINT(53)
4751       AQEDUP=VINT(57)
4752       AQCDUP=VINT(58)
4753       DO 180 I=1,NUP
4754         IDUP(I)=K(I+MINT(84),2)
4755         IF(I.LE.2) THEN
4756           ISTUP(I)=-1
4757           MOTHUP(1,I)=0
4758           MOTHUP(2,I)=0
4759         ELSEIF(K(I+4,3).EQ.0) THEN
4760           ISTUP(I)=1
4761           MOTHUP(1,I)=1
4762           MOTHUP(2,I)=2
4763         ELSE
4764           ISTUP(I)=1
4765           MOTHUP(1,I)=K(I+MINT(84),3)-MINT(84)
4766           MOTHUP(2,I)=0
4767         ENDIF
4768         IF(I.GE.3.AND.K(I+MINT(84),3).GT.0)
4769      &  ISTUP(K(I+MINT(84),3)-MINT(84))=2
4770         ICOLUP(1,I)=MCT(I+MINT(84),1)
4771         ICOLUP(2,I)=MCT(I+MINT(84),2)
4772         DO 170 J=1,5
4773           PUP(J,I)=P(I+MINT(84),J)
4774   170   CONTINUE
4775         VTIMUP(I)=V(I,5)
4776         SPINUP(I)=9D0
4777   180 CONTINUE
4778  
4779 C...Optionally write out event to disk. Minimal size for time/spin fields.
4780       IF(MSTP(162).GT.0) THEN
4781         WRITE(MSTP(162),5200) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
4782         DO 190 I=1,NUP
4783           IF(VTIMUP(I).EQ.0D0) THEN
4784             WRITE(MSTP(162),5300) IDUP(I),ISTUP(I),MOTHUP(1,I),
4785      &      MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5),
4786      &      ' 0. 9.'
4787           ELSE
4788             WRITE(MSTP(162),5400) IDUP(I),ISTUP(I),MOTHUP(1,I),
4789      &      MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5),
4790      &      VTIMUP(I),' 9.'
4791           ENDIF
4792   190   CONTINUE
4793
4794 C...Optional extra line with parton-density information.
4795         IF(MSTP(165).GE.1) WRITE(MSTP(162),5500) MSTI(15),MSTI(16),
4796      &  PARI(33),PARI(34),PARI(23),PARI(29),PARI(30) 
4797       ENDIF
4798  
4799 C...Error messages and other print formats.
4800  5100 FORMAT(1X,'Error: no subprocess switched on.'/
4801      &1X,'Execution stopped.')
4802  5200 FORMAT(1P,2I6,4E14.6)
4803  5300 FORMAT(1P,I8,5I5,5E18.10,A6)
4804  5400 FORMAT(1P,I8,5I5,5E18.10,E12.4,A3)
4805  5500 FORMAT(1P,'#pdf ',2I5,5E18.10)
4806  
4807       RETURN
4808       END
4809  
4810 C*********************************************************************
4811  
4812 C...PYUPIN
4813 C...Fills the HEPRUP commonblock with info on incoming beams and allowed
4814 C...processes, and optionally stores that information on file.
4815  
4816       SUBROUTINE PYUPIN
4817  
4818 C...Double precision and integer declarations.
4819       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4820       IMPLICIT INTEGER(I-N)
4821  
4822 C...Commonblocks.
4823       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
4824       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4825       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4826       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
4827       SAVE /PYJETS/,/PYSUBS/,/PYPARS/,/PYINT5/
4828  
4829 C...User process initialization commonblock.
4830       INTEGER MAXPUP
4831       PARAMETER (MAXPUP=100)
4832       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4833       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4834       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4835      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4836      &LPRUP(MAXPUP)
4837       SAVE /HEPRUP/
4838  
4839 C...Store info on incoming beams.
4840       IDBMUP(1)=K(1,2)
4841       IDBMUP(2)=K(2,2)
4842       EBMUP(1)=P(1,4)
4843       EBMUP(2)=P(2,4)
4844       PDFGUP(1)=0
4845       PDFGUP(2)=0
4846       PDFSUP(1)=MSTP(51)
4847       PDFSUP(2)=MSTP(51)
4848  
4849 C...Event weighting strategy.
4850       IDWTUP=3
4851  
4852 C...Info on individual processes.
4853       NPRUP=0
4854       DO 100 ISUB=1,500
4855         IF(MSUB(ISUB).EQ.1) THEN
4856           NPRUP=NPRUP+1
4857           XSECUP(NPRUP)=1D9*XSEC(ISUB,3)
4858           XERRUP(NPRUP)=XSECUP(NPRUP)/SQRT(MAX(1D0,DBLE(NGEN(ISUB,3))))
4859           XMAXUP(NPRUP)=1D0
4860           LPRUP(NPRUP)=ISUB
4861         ENDIF
4862   100 CONTINUE
4863  
4864 C...Write info to file.
4865       IF(MSTP(161).GT.0) THEN
4866         WRITE(MSTP(161),5100) IDBMUP(1),IDBMUP(2),EBMUP(1),EBMUP(2),
4867      &  PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
4868         DO 110 IPR=1,NPRUP
4869           WRITE(MSTP(161),5200) XSECUP(IPR),XERRUP(IPR),XMAXUP(IPR),
4870      &    LPRUP(IPR)
4871   110   CONTINUE
4872       ENDIF
4873  
4874 C...Formats for printout.
4875  5100 FORMAT(1P,2I8,2E14.6,6I6)
4876  5200 FORMAT(1P,3E14.6,I6)
4877  
4878       RETURN
4879       END
4880
4881
4882 C*********************************************************************
4883
4884 C...Combine the two old-style Pythia initialization and event files
4885 C...into a single Les Houches Event File.
4886
4887       SUBROUTINE PYLHEF
4888  
4889 C...Double precision and integer declarations.
4890       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4891       IMPLICIT INTEGER(I-N)
4892  
4893 C...PYTHIA commonblock: only used to provide read/write units and version.
4894       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4895       SAVE /PYPARS/
4896  
4897 C...User process initialization commonblock.
4898       INTEGER MAXPUP
4899       PARAMETER (MAXPUP=100)
4900       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4901       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4902       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4903      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4904      &LPRUP(MAXPUP)
4905       SAVE /HEPRUP/
4906  
4907 C...User process event common block.
4908       INTEGER MAXNUP
4909       PARAMETER (MAXNUP=500)
4910       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
4911       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
4912       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
4913      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
4914      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
4915       SAVE /HEPEUP/
4916
4917 C...Lines to read in assumed never longer than 200 characters. 
4918       PARAMETER (MAXLEN=200)
4919       CHARACTER*(MAXLEN) STRING
4920
4921 C...Format for reading lines.
4922       CHARACTER*6 STRFMT
4923       STRFMT='(A000)'
4924       WRITE(STRFMT(3:5),'(I3)') MAXLEN
4925
4926 C...Rewind initialization and event files. 
4927       REWIND MSTP(161)
4928       REWIND MSTP(162)
4929
4930 C...Write header info.
4931       WRITE(MSTP(163),'(A)') '<LesHouchesEvents version="1.0">'
4932       WRITE(MSTP(163),'(A)') '<!--'
4933       WRITE(MSTP(163),'(A,I1,A1,I3)') 'File generated with PYTHIA ',
4934      &MSTP(181),'.',MSTP(182)
4935       WRITE(MSTP(163),'(A)') '-->'       
4936
4937 C...Read first line of initialization info and get number of processes.
4938       READ(MSTP(161),'(A)',END=400,ERR=400) STRING                  
4939       READ(STRING,*,ERR=400) IDBMUP(1),IDBMUP(2),EBMUP(1),
4940      &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
4941
4942 C...Copy initialization lines, omitting trailing blanks. 
4943 C...Embed in <init> ... </init> block.
4944       WRITE(MSTP(163),'(A)') '<init>' 
4945       DO 140 IPR=0,NPRUP
4946         IF(IPR.GT.0) READ(MSTP(161),'(A)',END=400,ERR=400) STRING
4947         LEN=MAXLEN+1  
4948   120   LEN=LEN-1
4949         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 120
4950         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
4951   140 CONTINUE
4952       WRITE(MSTP(163),'(A)') '</init>' 
4953
4954 C...Begin event loop. Read first line of event info or already done.
4955       READ(MSTP(162),'(A)',END=320,ERR=400) STRING    
4956   200 CONTINUE
4957
4958 C...Look at first line to know number of particles in event.
4959       READ(STRING,*,ERR=400) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
4960
4961 C...Begin an <event> block. Copy event lines, omitting trailing blanks. 
4962       WRITE(MSTP(163),'(A)') '<event>' 
4963       DO 240 I=0,NUP
4964         IF(I.GT.0) READ(MSTP(162),'(A)',END=400,ERR=400) STRING
4965         LEN=MAXLEN+1  
4966   220   LEN=LEN-1
4967         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 220
4968         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
4969   240 CONTINUE
4970               
4971 C...Copy trailing comment lines - with a # in the first column - as is.
4972   260 READ(MSTP(162),'(A)',END=300,ERR=400) STRING    
4973       IF(STRING(1:1).EQ.'#') THEN
4974         LEN=MAXLEN+1  
4975   280   LEN=LEN-1
4976         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 280
4977         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
4978         GOTO 260
4979       ENDIF
4980
4981 C..End the <event> block. Loop back to look for next event.
4982       WRITE(MSTP(163),'(A)') '</event>' 
4983       GOTO 200
4984
4985 C...Successfully reached end of event loop: write closing tag
4986 C...and remove temporary intermediate files (unless asked not to).
4987   300 WRITE(MSTP(163),'(A)') '</event>' 
4988   320 WRITE(MSTP(163),'(A)') '</LesHouchesEvents>' 
4989       IF(MSTP(164).EQ.1) RETURN
4990       CLOSE(MSTP(161),ERR=400,STATUS='DELETE')
4991       CLOSE(MSTP(162),ERR=400,STATUS='DELETE')
4992       RETURN
4993
4994 C...Error exit.
4995   400 WRITE(*,*) ' PYLHEF file joining failed!'
4996
4997       RETURN
4998       END
4999  
5000 C*********************************************************************
5001  
5002 C...PYINRE
5003 C...Calculates full and effective widths of gauge bosons, stores
5004 C...masses and widths, rescales coefficients to be used for
5005 C...resonance production generation.
5006  
5007       SUBROUTINE PYINRE
5008  
5009 C...Double precision and integer declarations.
5010       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5011       IMPLICIT INTEGER(I-N)
5012       INTEGER PYK,PYCHGE,PYCOMP
5013 C...Parameter statement to help give large particle numbers.
5014       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
5015      &KEXCIT=4000000,KDIMEN=5000000)
5016 C...Commonblocks.
5017       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5018       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5019       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
5020       COMMON/PYDAT4/CHAF(500,2)
5021       CHARACTER CHAF*16
5022       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5023       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5024       COMMON/PYINT1/MINT(400),VINT(400)
5025       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
5026       COMMON/PYINT4/MWID(500),WIDS(500,5)
5027       COMMON/PYINT6/PROC(0:500)
5028       CHARACTER PROC*28
5029       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
5030       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
5031      &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT6/,/PYMSSM/
5032 C...Local arrays and data.
5033       DIMENSION WDTP(0:400),WDTE(0:400,0:5),WDTPM(0:400),
5034      &WDTEM(0:400,0:5),KCORD(500),PMORD(500)
5035  
5036 C...Born level couplings in MSSM Higgs doublet sector.
5037       XW=PARU(102)
5038       XWV=XW
5039       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
5040       XW1=1D0-XW
5041       IF(MSTP(4).EQ.2) THEN
5042         TANBE=PARU(141)
5043         RATBE=((1D0-TANBE**2)/(1D0+TANBE**2))**2
5044         SQMZ=PMAS(23,1)**2
5045         SQMW=PMAS(24,1)**2
5046         SQMH=PMAS(25,1)**2
5047         SQMA=SQMH*(SQMZ-SQMH)/(SQMZ*RATBE-SQMH)
5048         SQMHP=0.5D0*(SQMA+SQMZ+SQRT((SQMA+SQMZ)**2-4D0*SQMA*SQMZ*RATBE))
5049         SQMHC=SQMA+SQMW
5050         IF(SQMH.GE.SQMZ.OR.MIN(SQMA,SQMHP,SQMHC).LE.0D0) THEN
5051           WRITE(MSTU(11),5000)
5052           CALL PYSTOP(101)
5053         ENDIF
5054         PMAS(35,1)=SQRT(SQMHP)
5055         PMAS(36,1)=SQRT(SQMA)
5056         PMAS(37,1)=SQRT(SQMHC)
5057         ALSU=0.5D0*ATAN(2D0*TANBE*(SQMA+SQMZ)/((1D0-TANBE**2)*
5058      &  (SQMA-SQMZ)))
5059         BESU=ATAN(TANBE)
5060         PARU(142)=1D0
5061         PARU(143)=1D0
5062         PARU(161)=-SIN(ALSU)/COS(BESU)
5063         PARU(162)=COS(ALSU)/SIN(BESU)
5064         PARU(163)=PARU(161)
5065         PARU(164)=SIN(BESU-ALSU)
5066         PARU(165)=PARU(164)
5067         PARU(168)=SIN(BESU-ALSU)+0.5D0*COS(2D0*BESU)*SIN(BESU+ALSU)/XW
5068         PARU(171)=COS(ALSU)/COS(BESU)
5069         PARU(172)=SIN(ALSU)/SIN(BESU)
5070         PARU(173)=PARU(171)
5071         PARU(174)=COS(BESU-ALSU)
5072         PARU(175)=PARU(174)
5073         PARU(176)=COS(2D0*ALSU)*COS(BESU+ALSU)-2D0*SIN(2D0*ALSU)*
5074      &  SIN(BESU+ALSU)
5075         PARU(177)=COS(2D0*BESU)*COS(BESU+ALSU)
5076         PARU(178)=COS(BESU-ALSU)-0.5D0*COS(2D0*BESU)*COS(BESU+ALSU)/XW
5077         PARU(181)=TANBE
5078         PARU(182)=1D0/TANBE
5079         PARU(183)=PARU(181)
5080         PARU(184)=0D0
5081         PARU(185)=PARU(184)
5082         PARU(186)=COS(BESU-ALSU)
5083         PARU(187)=SIN(BESU-ALSU)
5084         PARU(188)=PARU(186)
5085         PARU(189)=PARU(187)
5086         PARU(190)=0D0
5087         PARU(195)=COS(BESU-ALSU)
5088       ENDIF
5089  
5090 C...Reset effective widths of gauge bosons.
5091       DO 110 I=1,500
5092         DO 100 J=1,5
5093           WIDS(I,J)=1D0
5094   100   CONTINUE
5095   110 CONTINUE
5096  
5097 C...Order resonances by increasing mass (except Z0 and W+/-).
5098       NRES=0
5099       DO 140 KC=1,500
5100         KF=KCHG(KC,4)
5101         IF(KF.EQ.0) GOTO 140
5102         IF(MWID(KC).EQ.0) GOTO 140
5103         IF(KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18) THEN
5104           IF(MSTP(1).LE.3) GOTO 140
5105         ENDIF
5106         IF(KF/KSUSY1.EQ.1.OR.KF/KSUSY1.EQ.2) THEN
5107           IF(IMSS(1).LE.0) GOTO 140
5108         ENDIF
5109         NRES=NRES+1
5110         PMRES=PMAS(KC,1)
5111         IF(KC.EQ.23.OR.KC.EQ.24) PMRES=0D0
5112         DO 120 I1=NRES-1,1,-1
5113           IF(PMRES.GE.PMORD(I1)) GOTO 130
5114           KCORD(I1+1)=KCORD(I1)
5115           PMORD(I1+1)=PMORD(I1)
5116   120   CONTINUE
5117   130   KCORD(I1+1)=KC
5118         PMORD(I1+1)=PMRES
5119   140 CONTINUE
5120  
5121 C...Loop over possible resonances.
5122       DO 180 I=1,NRES
5123         KC=KCORD(I)
5124         KF=KCHG(KC,4)
5125  
5126 C...Check that no fourth generation channels on by mistake.
5127         IF(MSTP(1).LE.3) THEN
5128           DO 150 J=1,MDCY(KC,3)
5129             IDC=J+MDCY(KC,2)-1
5130             KFA1=IABS(KFDP(IDC,1))
5131             KFA2=IABS(KFDP(IDC,2))
5132             IF(KFA1.EQ.7.OR.KFA1.EQ.8.OR.KFA1.EQ.17.OR.KFA1.EQ.18.OR.
5133      &      KFA2.EQ.7.OR.KFA2.EQ.8.OR.KFA2.EQ.17.OR.KFA2.EQ.18)
5134      &      MDME(IDC,1)=-1
5135   150     CONTINUE
5136         ENDIF
5137  
5138 C...Check that no supersymmetric channels on by mistake.
5139         IF(IMSS(1).LE.0) THEN
5140           DO 160 J=1,MDCY(KC,3)
5141             IDC=J+MDCY(KC,2)-1
5142             KFA1S=IABS(KFDP(IDC,1))/KSUSY1
5143             KFA2S=IABS(KFDP(IDC,2))/KSUSY1
5144             IF(KFA1S.EQ.1.OR.KFA1S.EQ.2.OR.KFA2S.EQ.1.OR.KFA2S.EQ.2)
5145      &      MDME(IDC,1)=-1
5146   160     CONTINUE
5147         ENDIF
5148  
5149 C...Find mass and evaluate width.
5150         PMR=PMAS(KC,1)
5151         IF(KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) MINT(62)=1
5152         IF(MWID(KC).EQ.3) MINT(63)=1
5153         CALL PYWIDT(KF,PMR**2,WDTP,WDTE)
5154         MINT(51)=0
5155  
5156 C...Evaluate suppression factors due to non-simulated channels.
5157         IF(KCHG(KC,3).EQ.0) THEN
5158           WDTP0I=0D0
5159           IF(WDTP(0).GT.0D0) WDTP0I=1D0/WDTP(0)
5160           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))**2+
5161      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
5162      &    2D0*WDTE(0,4)*WDTE(0,5))*WDTP0I**2
5163           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*WDTP0I
5164           WIDS(KC,3)=0D0
5165           WIDS(KC,4)=0D0
5166           WIDS(KC,5)=0D0
5167         ELSE
5168           IF(MWID(KC).EQ.3) MINT(63)=1
5169           CALL PYWIDT(-KF,PMR**2,WDTPM,WDTEM)
5170           MINT(51)=0
5171           WDTP0I=0D0
5172           IF(WDTP(0).GT.0D0) WDTP0I=1D0/WDTP(0)
5173           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))*(WDTEM(0,1)+WDTEM(0,3))+
5174      &    (WDTE(0,1)+WDTE(0,2))*(WDTEM(0,4)+WDTEM(0,5))+
5175      &    (WDTE(0,4)+WDTE(0,5))*(WDTEM(0,1)+WDTEM(0,3))+
5176      &    WDTE(0,4)*WDTEM(0,5)+WDTE(0,5)*WDTEM(0,4))*WDTP0I**2
5177           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*WDTP0I
5178           WIDS(KC,3)=(WDTEM(0,1)+WDTEM(0,3)+WDTEM(0,4))*WDTP0I
5179           WIDS(KC,4)=((WDTE(0,1)+WDTE(0,2))**2+
5180      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
5181      &    2D0*WDTE(0,4)*WDTE(0,5))*WDTP0I**2
5182           WIDS(KC,5)=((WDTEM(0,1)+WDTEM(0,3))**2+
5183      &    2D0*(WDTEM(0,1)+WDTEM(0,3))*(WDTEM(0,4)+WDTEM(0,5))+
5184      &    2D0*WDTEM(0,4)*WDTEM(0,5))*WDTP0I**2
5185         ENDIF
5186  
5187 C...Set resonance widths and branching ratios;
5188 C...also on/off switch for decays.
5189         IF(MWID(KC).EQ.1.OR.MWID(KC).EQ.3) THEN
5190           PMAS(KC,2)=WDTP(0)
5191           PMAS(KC,3)=MIN(0.9D0*PMAS(KC,1),10D0*PMAS(KC,2))
5192           IF(MSTP(41).EQ.0.OR.MSTP(41).EQ.1) MDCY(KC,1)=MSTP(41)
5193           DO 170 J=1,MDCY(KC,3)
5194             IDC=J+MDCY(KC,2)-1
5195             BRAT(IDC)=0D0
5196             IF(WDTP(0).GT.0D0) BRAT(IDC)=WDTP(J)/WDTP(0)
5197   170     CONTINUE
5198         ENDIF
5199   180 CONTINUE
5200  
5201 C...Flavours of leptoquark: redefine charge and name.
5202       KFLQQ=KFDP(MDCY(42,2),1)
5203       KFLQL=KFDP(MDCY(42,2),2)
5204       KCHG(42,1)=KCHG(PYCOMP(KFLQQ),1)*ISIGN(1,KFLQQ)+
5205      &KCHG(PYCOMP(KFLQL),1)*ISIGN(1,KFLQL)
5206       LL=1
5207       IF(IABS(KFLQL).EQ.13) LL=2
5208       IF(IABS(KFLQL).EQ.15) LL=3
5209       CHAF(42,1)='LQ_'//CHAF(IABS(KFLQQ),1)(1:1)//
5210      &CHAF(IABS(KFLQL),1)(1:LL)//' '
5211       CHAF(42,2)=CHAF(42,2)(1:4+LL)//'bar '
5212  
5213 C...Special cases in treatment of gamma*/Z0: redefine process name.
5214       IF(MSTP(43).EQ.1) THEN
5215         PROC(1)='f + fbar -> gamma*'
5216         PROC(15)='f + fbar -> g + gamma*'
5217         PROC(19)='f + fbar -> gamma + gamma*'
5218         PROC(30)='f + g -> f + gamma*'
5219         PROC(35)='f + gamma -> f + gamma*'
5220       ELSEIF(MSTP(43).EQ.2) THEN
5221         PROC(1)='f + fbar -> Z0'
5222         PROC(15)='f + fbar -> g + Z0'
5223         PROC(19)='f + fbar -> gamma + Z0'
5224         PROC(30)='f + g -> f + Z0'
5225         PROC(35)='f + gamma -> f + Z0'
5226       ELSEIF(MSTP(43).EQ.3) THEN
5227         PROC(1)='f + fbar -> gamma*/Z0'
5228         PROC(15)='f + fbar -> g + gamma*/Z0'
5229         PROC(19)='f+ fbar -> gamma + gamma*/Z0'
5230         PROC(30)='f + g -> f + gamma*/Z0'
5231         PROC(35)='f + gamma -> f + gamma*/Z0'
5232       ENDIF
5233  
5234 C...Special cases in treatment of gamma*/Z0/Z'0: redefine process name.
5235       IF(MSTP(44).EQ.1) THEN
5236         PROC(141)='f + fbar -> gamma*'
5237       ELSEIF(MSTP(44).EQ.2) THEN
5238         PROC(141)='f + fbar -> Z0'
5239       ELSEIF(MSTP(44).EQ.3) THEN
5240         PROC(141)='f + fbar -> Z''0'
5241       ELSEIF(MSTP(44).EQ.4) THEN
5242         PROC(141)='f + fbar -> gamma*/Z0'
5243       ELSEIF(MSTP(44).EQ.5) THEN
5244         PROC(141)='f + fbar -> gamma*/Z''0'
5245       ELSEIF(MSTP(44).EQ.6) THEN
5246         PROC(141)='f + fbar -> Z0/Z''0'
5247       ELSEIF(MSTP(44).EQ.7) THEN
5248         PROC(141)='f + fbar -> gamma*/Z0/Z''0'
5249       ENDIF
5250  
5251 C...Special cases in treatment of WW -> WW: redefine process name.
5252       IF(MSTP(45).EQ.1) THEN
5253         PROC(77)='W+ + W+ -> W+ + W+'
5254       ELSEIF(MSTP(45).EQ.2) THEN
5255         PROC(77)='W+ + W- -> W+ + W-'
5256       ELSEIF(MSTP(45).EQ.3) THEN
5257         PROC(77)='W+/- + W+/- -> W+/- + W+/-'
5258       ENDIF
5259  
5260 C...Format for error information.
5261  5000 FORMAT(1X,'Error: unphysical input tan^2(beta) and m_H ',
5262      &'combination'/1X,'Execution stopped!')
5263  
5264       RETURN
5265       END
5266  
5267 C*********************************************************************
5268  
5269 C...PYINBM
5270 C...Identifies the two incoming particles and the choice of frame.
5271  
5272        SUBROUTINE PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
5273  
5274 C...Double precision and integer declarations.
5275       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5276       IMPLICIT INTEGER(I-N)
5277       INTEGER PYK,PYCHGE,PYCOMP
5278  
5279 C...User process initialization commonblock.
5280       INTEGER MAXPUP
5281       PARAMETER (MAXPUP=100)
5282       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5283       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5284       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5285      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5286      &LPRUP(MAXPUP)
5287       SAVE /HEPRUP/
5288  
5289 C...Commonblocks.
5290       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
5291       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5292       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5293       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5294       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5295       COMMON/PYINT1/MINT(400),VINT(400)
5296       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
5297  
5298 C...Local arrays, character variables and data.
5299       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHCOM(3)*12,CHALP(2)*26,
5300      &CHIDNT(3)*12,CHTEMP*12,CHCDE(39)*12,CHINIT*76,CHNAME*16
5301       DIMENSION LEN(3),KCDE(39),PM(2)
5302       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
5303      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
5304       DATA CHCDE/    'e-          ','e+          ','nu_e        ',
5305      &'nu_ebar     ','mu-         ','mu+         ','nu_mu       ',
5306      &'nu_mubar    ','tau-        ','tau+        ','nu_tau      ',
5307      &'nu_taubar   ','pi+         ','pi-         ','n0          ',
5308      &'nbar0       ','p+          ','pbar-       ','gamma       ',
5309      &'lambda0     ','sigma-      ','sigma0      ','sigma+      ',
5310      &'xi-         ','xi0         ','omega-      ','pi0         ',
5311      &'reggeon     ','pomeron     ','gamma/e-    ','gamma/e+    ',
5312      &'gamma/mu-   ','gamma/mu+   ','gamma/tau-  ','gamma/tau+  ',
5313      &'k+          ','k-          ','ks0         ','kl0         '/
5314       DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
5315      &211,-211,2112,-2112,2212,-2212,22,3122,3112,3212,3222,
5316      &3312,3322,3334,111,110,990,6*22,321,-321,310,130/
5317  
5318 C...Store initial energy. Default frame.
5319       VINT(290)=WIN
5320       MINT(111)=0
5321  
5322 C...Special user process initialization; convert to normal input.
5323       IF(CHFRAM(1:1).EQ.'u'.OR.CHFRAM(1:1).EQ.'U') THEN
5324         MINT(111)=11
5325         IF(PDFGUP(1).EQ.-9.OR.PDFGUP(2).EQ.-9) MINT(111)=12
5326         CALL PYNAME(IDBMUP(1),CHNAME)
5327         CHBEAM=CHNAME(1:12)
5328         CALL PYNAME(IDBMUP(2),CHNAME)
5329         CHTARG=CHNAME(1:12)
5330       ENDIF
5331  
5332 C...Convert character variables to lowercase and find their length.
5333       CHCOM(1)=CHFRAM
5334       CHCOM(2)=CHBEAM
5335       CHCOM(3)=CHTARG
5336       DO 130 I=1,3
5337         LEN(I)=12
5338         DO 110 LL=12,1,-1
5339           IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
5340           DO 100 LA=1,26
5341             IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
5342      &      CHALP(1)(LA:LA)
5343   100     CONTINUE
5344   110   CONTINUE
5345         CHIDNT(I)=CHCOM(I)
5346  
5347 C...Fix up bar, underscore and charge in particle name (if needed).
5348         DO 120 LL=1,10
5349           IF(CHIDNT(I)(LL:LL).EQ.'~') THEN
5350             CHTEMP=CHIDNT(I)
5351             CHIDNT(I)=CHTEMP(1:LL-1)//'bar'//CHTEMP(LL+1:10)//'  '
5352           ENDIF
5353   120   CONTINUE
5354         IF(CHIDNT(I)(1:2).EQ.'nu'.AND.CHIDNT(I)(3:3).NE.'_') THEN
5355           CHTEMP=CHIDNT(I)
5356           CHIDNT(I)='nu_'//CHTEMP(3:7)
5357         ELSEIF(CHIDNT(I)(1:2).EQ.'n ') THEN
5358           CHIDNT(I)(1:3)='n0 '
5359         ELSEIF(CHIDNT(I)(1:4).EQ.'nbar') THEN
5360           CHIDNT(I)(1:5)='nbar0'
5361         ELSEIF(CHIDNT(I)(1:2).EQ.'p ') THEN
5362           CHIDNT(I)(1:3)='p+ '
5363         ELSEIF(CHIDNT(I)(1:4).EQ.'pbar'.OR.
5364      &    CHIDNT(I)(1:2).EQ.'p-') THEN
5365           CHIDNT(I)(1:5)='pbar-'
5366         ELSEIF(CHIDNT(I)(1:6).EQ.'lambda') THEN
5367           CHIDNT(I)(7:7)='0'
5368         ELSEIF(CHIDNT(I)(1:3).EQ.'reg') THEN
5369           CHIDNT(I)(1:7)='reggeon'
5370         ELSEIF(CHIDNT(I)(1:3).EQ.'pom') THEN
5371           CHIDNT(I)(1:7)='pomeron'
5372         ENDIF
5373   130 CONTINUE
5374  
5375 C...Identify free initialization.
5376       IF(CHCOM(1)(1:2).EQ.'no') THEN
5377         MINT(65)=1
5378         RETURN
5379       ENDIF
5380  
5381 C...Identify incoming beam and target particles.
5382       DO 160 I=1,2
5383         DO 140 J=1,39
5384           IF(CHIDNT(I+1).EQ.CHCDE(J)) MINT(10+I)=KCDE(J)
5385   140   CONTINUE
5386         PM(I)=PYMASS(MINT(10+I))
5387         VINT(2+I)=PM(I)
5388         MINT(140+I)=0
5389         IF(MINT(10+I).EQ.22.AND.CHIDNT(I+1)(6:6).EQ.'/') THEN
5390           CHTEMP=CHIDNT(I+1)(7:12)//' '
5391           DO 150 J=1,12
5392             IF(CHTEMP.EQ.CHCDE(J)) MINT(140+I)=KCDE(J)
5393   150     CONTINUE
5394           PM(I)=PYMASS(MINT(140+I))
5395           VINT(302+I)=PM(I)
5396         ENDIF
5397   160 CONTINUE
5398       IF(MINT(11).EQ.0) WRITE(MSTU(11),5000) CHBEAM(1:LEN(2))
5399       IF(MINT(12).EQ.0) WRITE(MSTU(11),5100) CHTARG(1:LEN(3))
5400       IF(MINT(11).EQ.0.OR.MINT(12).EQ.0) CALL PYSTOP(7)
5401  
5402 C...Identify choice of frame and input energies.
5403       CHINIT=' '
5404  
5405 C...Events defined in the CM frame.
5406       IF(CHCOM(1)(1:2).EQ.'cm') THEN
5407         MINT(111)=1
5408         S=WIN**2
5409         IF(MSTP(122).GE.1) THEN
5410           IF(CHCOM(2)(1:1).NE.'e') THEN
5411             LOFFS=(31-(LEN(2)+LEN(3)))/2
5412             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
5413      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5414      &      ' collider'//' '
5415           ELSE
5416             LOFFS=(30-(LEN(2)+LEN(3)))/2
5417             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
5418      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5419      &      ' collider'//' '
5420           ENDIF
5421           WRITE(MSTU(11),5200) CHINIT
5422           WRITE(MSTU(11),5300) WIN
5423         ENDIF
5424  
5425 C...Events defined in fixed target frame.
5426       ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
5427         MINT(111)=2
5428         S=PM(1)**2+PM(2)**2+2D0*PM(2)*SQRT(PM(1)**2+WIN**2)
5429         IF(MSTP(122).GE.1) THEN
5430           LOFFS=(29-(LEN(2)+LEN(3)))/2
5431           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5432      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5433      &    ' fixed target'//' '
5434           WRITE(MSTU(11),5200) CHINIT
5435           WRITE(MSTU(11),5400) WIN
5436           WRITE(MSTU(11),5500) SQRT(S)
5437         ENDIF
5438  
5439 C...Frame defined by user three-vectors.
5440       ELSEIF(CHCOM(1)(1:1).EQ.'3') THEN
5441         MINT(111)=3
5442         P(1,5)=PM(1)
5443         P(2,5)=PM(2)
5444         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
5445         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
5446         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5447      &  (P(1,3)+P(2,3))**2
5448         IF(MSTP(122).GE.1) THEN
5449           LOFFS=(22-(LEN(2)+LEN(3)))/2
5450           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5451      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5452      &    ' user configuration'//' '
5453           WRITE(MSTU(11),5200) CHINIT
5454           WRITE(MSTU(11),5600)
5455           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5456           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5457           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5458         ENDIF
5459  
5460 C...Frame defined by user four-vectors.
5461       ELSEIF(CHCOM(1)(1:1).EQ.'4') THEN
5462         MINT(111)=4
5463         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
5464         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
5465         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
5466         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
5467         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5468      &  (P(1,3)+P(2,3))**2
5469         IF(MSTP(122).GE.1) THEN
5470           LOFFS=(22-(LEN(2)+LEN(3)))/2
5471           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5472      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5473      &    ' user configuration'//' '
5474           WRITE(MSTU(11),5200) CHINIT
5475           WRITE(MSTU(11),5600)
5476           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5477           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5478           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5479         ENDIF
5480  
5481 C...Frame defined by user five-vectors.
5482       ELSEIF(CHCOM(1)(1:1).EQ.'5') THEN
5483         MINT(111)=5
5484         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5485      &  (P(1,3)+P(2,3))**2
5486         IF(MSTP(122).GE.1) THEN
5487           LOFFS=(22-(LEN(2)+LEN(3)))/2
5488           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5489      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5490      &    ' user configuration'//' '
5491           WRITE(MSTU(11),5200) CHINIT
5492           WRITE(MSTU(11),5600)
5493           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5494           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5495           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5496         ENDIF
5497  
5498 C...Frame defined by HEPRUP common block.
5499       ELSEIF(MINT(111).GE.11) THEN
5500         S=(EBMUP(1)+EBMUP(2))**2-(SQRT(MAX(0D0,EBMUP(1)**2-PM(1)**2))-
5501      &  SQRT(MAX(0D0,EBMUP(2)**2-PM(2)**2)))**2
5502         IF(MSTP(122).GE.1) THEN
5503           LOFFS=(22-(LEN(2)+LEN(3)))/2
5504           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5505      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5506      &    ' user configuration'//' '
5507           WRITE(MSTU(11),5200) CHINIT
5508           WRITE(MSTU(11),6000) EBMUP(1),EBMUP(2)
5509           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5510         ENDIF
5511  
5512 C...Unknown frame. Error for too low CM energy.
5513       ELSE
5514         WRITE(MSTU(11),5800) CHFRAM(1:LEN(1))
5515         CALL PYSTOP(7)
5516       ENDIF
5517       IF(S.LT.PARP(2)**2) THEN
5518         WRITE(MSTU(11),5900) SQRT(S)
5519         CALL PYSTOP(7)
5520       ENDIF
5521  
5522 C...Formats for initialization and error information.
5523  5000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''D0'/
5524      &1X,'Execution stopped!')
5525  5100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''D0'/
5526      &1X,'Execution stopped!')
5527  5200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
5528  5300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
5529      &19X,'I'/1X,'I',76X,'I'/1X,78('='))
5530  5400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
5531  5500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
5532      &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
5533  5600 FORMAT(1X,'I',76X,'I'/1X,'I',18X,'px (GeV/c)',3X,'py (GeV/c)',3X,
5534      &'pz (GeV/c)',6X,'E (GeV)',9X,'I')
5535  5700 FORMAT(1X,'I',8X,A8,4(2X,F10.3,1X),8X,'I')
5536  5800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''D0'/
5537      &1X,'Execution stopped!')
5538  5900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
5539      &'generation.'/1X,'Execution stopped!')
5540  6000 FORMAT(1X,'I',12X,'with',1X,F10.3,1X,'GeV on',1X,F10.3,1X,
5541      &'GeV beam energies',13X,'I')
5542  
5543       RETURN
5544       END
5545  
5546 C*********************************************************************
5547  
5548 C...PYINKI
5549 C...Sets up kinematics, including rotations and boosts to/from CM frame.
5550  
5551       SUBROUTINE PYINKI(MODKI)
5552  
5553 C...Double precision and integer declarations.
5554       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5555       IMPLICIT INTEGER(I-N)
5556       INTEGER PYK,PYCHGE,PYCOMP
5557  
5558 C...User process initialization commonblock.
5559       INTEGER MAXPUP
5560       PARAMETER (MAXPUP=100)
5561       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5562       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5563       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5564      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5565      &LPRUP(MAXPUP)
5566       SAVE /HEPRUP/
5567  
5568 C...Commonblocks.
5569       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
5570       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5571       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5572       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5573       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5574       COMMON/PYINT1/MINT(400),VINT(400)
5575       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
5576  
5577 C...Set initial flavour state.
5578       N=2
5579       DO 100 I=1,2
5580         K(I,1)=1
5581         K(I,2)=MINT(10+I)
5582         IF(MINT(140+I).NE.0) K(I,2)=MINT(140+I)
5583   100 CONTINUE
5584  
5585 C...Reset boost. Do kinematics for various cases.
5586       DO 110 J=6,10
5587         VINT(J)=0D0
5588   110 CONTINUE
5589  
5590 C...Set up kinematics for events defined in CM frame.
5591       IF(MINT(111).EQ.1) THEN
5592         WIN=VINT(290)
5593         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
5594         S=WIN**2
5595         P(1,5)=VINT(3)
5596         P(2,5)=VINT(4)
5597         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5598         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5599         P(1,1)=0D0
5600         P(1,2)=0D0
5601         P(2,1)=0D0
5602         P(2,2)=0D0
5603         P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2D0*P(1,5)*P(2,5))**2)/
5604      &  (4D0*S))
5605         P(2,3)=-P(1,3)
5606         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
5607         P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
5608  
5609 C...Set up kinematics for fixed target events.
5610       ELSEIF(MINT(111).EQ.2) THEN
5611         WIN=VINT(290)
5612         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
5613         P(1,5)=VINT(3)
5614         P(2,5)=VINT(4)
5615         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5616         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5617         P(1,1)=0D0
5618         P(1,2)=0D0
5619         P(2,1)=0D0
5620         P(2,2)=0D0
5621         P(1,3)=WIN
5622         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
5623         P(2,3)=0D0
5624         P(2,4)=P(2,5)
5625         S=P(1,5)**2+P(2,5)**2+2D0*P(2,4)*P(1,4)
5626         VINT(10)=P(1,3)/(P(1,4)+P(2,4))
5627         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
5628  
5629 C...Set up kinematics for events in user-defined frame.
5630       ELSEIF(MINT(111).EQ.3) THEN
5631         P(1,5)=VINT(3)
5632         P(2,5)=VINT(4)
5633         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5634         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5635         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
5636         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
5637         DO 120 J=1,3
5638           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5639   120   CONTINUE
5640         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5641         VINT(7)=PYANGL(P(1,1),P(1,2))
5642         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5643         VINT(6)=PYANGL(P(1,3),P(1,1))
5644         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5645         S=P(1,5)**2+P(2,5)**2+2D0*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
5646  
5647 C...Set up kinematics for events with user-defined four-vectors.
5648       ELSEIF(MINT(111).EQ.4) THEN
5649         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
5650         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
5651         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
5652         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
5653         DO 130 J=1,3
5654           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5655   130   CONTINUE
5656         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5657         VINT(7)=PYANGL(P(1,1),P(1,2))
5658         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5659         VINT(6)=PYANGL(P(1,3),P(1,1))
5660         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5661         S=(P(1,4)+P(2,4))**2
5662  
5663 C...Set up kinematics for events with user-defined five-vectors.
5664       ELSEIF(MINT(111).EQ.5) THEN
5665         DO 140 J=1,3
5666           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5667   140   CONTINUE
5668         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5669         VINT(7)=PYANGL(P(1,1),P(1,2))
5670         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5671         VINT(6)=PYANGL(P(1,3),P(1,1))
5672         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5673         S=(P(1,4)+P(2,4))**2
5674  
5675 C...Set up kinematics for events with external user processes.
5676       ELSEIF(MINT(111).GE.11) THEN
5677         P(1,5)=VINT(3)
5678         P(2,5)=VINT(4)
5679         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5680         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5681         P(1,1)=0D0
5682         P(1,2)=0D0
5683         P(2,1)=0D0
5684         P(2,2)=0D0
5685         P(1,3)=SQRT(MAX(0D0,EBMUP(1)**2-P(1,5)**2))
5686         P(2,3)=-SQRT(MAX(0D0,EBMUP(2)**2-P(2,5)**2))
5687         P(1,4)=EBMUP(1)
5688         P(2,4)=EBMUP(2)
5689         VINT(10)=(P(1,3)+P(2,3))/(P(1,4)+P(2,4))
5690         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
5691         S=(P(1,4)+P(2,4))**2
5692       ENDIF
5693  
5694 C...Return or error for too low CM energy.
5695       IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
5696         IF(MSTP(172).LE.1) THEN
5697           CALL PYERRM(23,
5698      &    '(PYINKI:) too low invariant mass in this event')
5699         ELSE
5700           MSTI(61)=1
5701           RETURN
5702         ENDIF
5703       ENDIF
5704  
5705 C...Save information on incoming particles.
5706       VINT(1)=SQRT(S)
5707       VINT(2)=S
5708       IF(MINT(111).GE.4) THEN
5709         IF(MINT(141).EQ.0) THEN
5710           VINT(3)=P(1,5)
5711           IF(MINT(11).EQ.22.AND.P(1,5).LT.0) VINT(307)=P(1,5)**2
5712         ELSE
5713           VINT(303)=P(1,5)
5714         ENDIF
5715         IF(MINT(142).EQ.0) THEN
5716           VINT(4)=P(2,5)
5717           IF(MINT(12).EQ.22.AND.P(2,5).LT.0) VINT(308)=P(2,5)**2
5718         ELSE
5719           VINT(304)=P(2,5)
5720         ENDIF
5721       ENDIF
5722       VINT(5)=P(1,3)
5723       IF(MODKI.EQ.0) VINT(289)=S
5724       DO 150 J=1,5
5725         V(1,J)=0D0
5726         V(2,J)=0D0
5727         VINT(290+J)=P(1,J)
5728         VINT(295+J)=P(2,J)
5729   150 CONTINUE
5730  
5731 C...Store pT cut-off and related constants to be used in generation.
5732       IF(MODKI.EQ.0) VINT(285)=CKIN(3)
5733       IF(MSTP(82).LE.1) THEN
5734         PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
5735       ELSE
5736         PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
5737       ENDIF
5738       VINT(149)=4D0*PTMN**2/S
5739       VINT(154)=PTMN
5740  
5741       RETURN
5742       END
5743  
5744 C*********************************************************************
5745  
5746 C...PYINPR
5747 C...Selects partonic subprocesses to be included in the simulation.
5748  
5749       SUBROUTINE PYINPR
5750  
5751 C...Double precision and integer declarations.
5752       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5753       IMPLICIT INTEGER(I-N)
5754       INTEGER PYK,PYCHGE,PYCOMP
5755  
5756 C...User process initialization commonblock.
5757       INTEGER MAXPUP
5758       PARAMETER (MAXPUP=100)
5759       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5760       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5761       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5762      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5763      &LPRUP(MAXPUP)
5764       SAVE /HEPRUP/
5765  
5766 C...Commonblocks and character variables.
5767       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5768       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
5769       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5770       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5771       COMMON/PYINT1/MINT(400),VINT(400)
5772       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
5773       COMMON/PYINT6/PROC(0:500)
5774       CHARACTER PROC*28
5775       SAVE /PYDAT1/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
5776      &/PYINT6/
5777       CHARACTER CHIPR*10
5778  
5779 C...Reset processes to be included.
5780       IF(MSEL.NE.0) THEN
5781         DO 100 I=1,500
5782           MSUB(I)=0
5783   100   CONTINUE
5784       ENDIF
5785  
5786 C...Set running pTmin scale.
5787       IF(MSTP(82).LE.1) THEN
5788         PTMRUN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
5789       ELSE
5790         PTMRUN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
5791       ENDIF
5792  
5793 C...Begin by assuming incoming photon to enter subprocess.
5794       IF(MINT(11).EQ.22) MINT(15)=22
5795       IF(MINT(12).EQ.22) MINT(16)=22
5796  
5797 C...For e-gamma with MSTP(14)=10 allow mixture of VMD and anomalous.
5798       IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
5799         MSUB(10)=1
5800         MINT(123)=MINT(122)+1
5801  
5802 C...For gamma-p or gamma-gamma with MSTP(14) = 10, 20, 25 or 30
5803 C...allow mixture.
5804 C...Here also set a few parameters otherwise normally not touched.
5805       ELSEIF(MINT(121).GT.1) THEN
5806  
5807 C...Parton distributions dampened at small Q2; go to low energies,
5808 C...alpha_s <1; no minimum pT cut-off a priori.
5809         IF(MSTP(18).EQ.2) THEN
5810           MSTP(57)=3
5811           PARP(2)=2D0
5812           PARU(115)=1D0
5813           CKIN(5)=0.2D0
5814           CKIN(6)=0.2D0
5815         ENDIF
5816  
5817 C...Define pT cut-off parameters and whether run involves low-pT.
5818         PTMVMD=PTMRUN
5819         VINT(154)=PTMVMD
5820         PTMDIR=PTMVMD
5821         IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
5822         PTMANO=PTMVMD
5823         IF(MSTP(15).EQ.5) PTMANO=0.60D0+
5824      &  0.125D0*LOG(1D0+0.10D0*VINT(1))**2
5825         IPTL=1
5826         IF(VINT(285).GT.MAX(PTMVMD,PTMDIR,PTMANO)) IPTL=0
5827         IF(MSEL.EQ.2) IPTL=1
5828  
5829 C...Set up for p/gamma * gamma; real or virtual photons.
5830         IF(MINT(121).EQ.3.OR.MINT(121).EQ.6.OR.(MINT(121).EQ.4.AND.
5831      &  MSTP(14).EQ.30)) THEN
5832  
5833 C...Set up for p/VMD * VMD.
5834         IF(MINT(122).EQ.1) THEN
5835           MINT(123)=2
5836           MSUB(11)=1
5837           MSUB(12)=1
5838           MSUB(13)=1
5839           MSUB(28)=1
5840           MSUB(53)=1
5841           MSUB(68)=1
5842           IF(IPTL.EQ.1) MSUB(95)=1
5843           IF(MSEL.EQ.2) THEN
5844             MSUB(91)=1
5845             MSUB(92)=1
5846             MSUB(93)=1
5847             MSUB(94)=1
5848           ENDIF
5849           IF(IPTL.EQ.1) CKIN(3)=0D0
5850  
5851 C...Set up for p/VMD * direct gamma.
5852         ELSEIF(MINT(122).EQ.2) THEN
5853           MINT(123)=0
5854           IF(MINT(121).EQ.6) MINT(123)=5
5855           MSUB(131)=1
5856           MSUB(132)=1
5857           MSUB(135)=1
5858           MSUB(136)=1
5859           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
5860  
5861 C...Set up for p/VMD * anomalous gamma.
5862         ELSEIF(MINT(122).EQ.3) THEN
5863           MINT(123)=3
5864           IF(MINT(121).EQ.6) MINT(123)=7
5865           MSUB(11)=1
5866           MSUB(12)=1
5867           MSUB(13)=1
5868           MSUB(28)=1
5869           MSUB(53)=1
5870           MSUB(68)=1
5871           IF(IPTL.EQ.1) MSUB(95)=1
5872           IF(MSEL.EQ.2) THEN
5873             MSUB(91)=1
5874             MSUB(92)=1
5875             MSUB(93)=1
5876             MSUB(94)=1
5877           ENDIF
5878           IF(IPTL.EQ.1) CKIN(3)=0D0
5879  
5880 C...Set up for DIS * p.
5881         ELSEIF(MINT(122).EQ.4.AND.(IABS(MINT(11)).GT.100.OR.
5882      &  IABS(MINT(12)).GT.100)) THEN
5883           MINT(123)=8
5884           IF(IPTL.EQ.1) MSUB(99)=1
5885  
5886 C...Set up for direct * direct gamma (switch off leptons).
5887         ELSEIF(MINT(122).EQ.4) THEN
5888           MINT(123)=0
5889           MSUB(137)=1
5890           MSUB(138)=1
5891           MSUB(139)=1
5892           MSUB(140)=1
5893           DO 110 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
5894             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
5895   110     CONTINUE
5896           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
5897  
5898 C...Set up for direct * anomalous gamma.
5899         ELSEIF(MINT(122).EQ.5) THEN
5900           MINT(123)=6
5901           MSUB(131)=1
5902           MSUB(132)=1
5903           MSUB(135)=1
5904           MSUB(136)=1
5905           IF(IPTL.EQ.1) CKIN(3)=PTMANO
5906  
5907 C...Set up for anomalous * anomalous gamma.
5908         ELSEIF(MINT(122).EQ.6) THEN
5909           MINT(123)=3
5910           MSUB(11)=1
5911           MSUB(12)=1
5912           MSUB(13)=1
5913           MSUB(28)=1
5914           MSUB(53)=1
5915           MSUB(68)=1
5916           IF(IPTL.EQ.1) MSUB(95)=1
5917           IF(MSEL.EQ.2) THEN
5918             MSUB(91)=1
5919             MSUB(92)=1
5920             MSUB(93)=1
5921             MSUB(94)=1
5922           ENDIF
5923           IF(IPTL.EQ.1) CKIN(3)=0D0
5924         ENDIF
5925  
5926 C...Set up for gamma* * gamma*; virtual photons = dir, VMD, anom.
5927         ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
5928  
5929 C...Set up for direct * direct gamma (switch off leptons).
5930         IF(MINT(122).EQ.1) THEN
5931           MINT(123)=0
5932           MSUB(137)=1
5933           MSUB(138)=1
5934           MSUB(139)=1
5935           MSUB(140)=1
5936           DO 120 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
5937             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
5938   120     CONTINUE
5939           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
5940  
5941 C...Set up for direct * VMD and VMD * direct gamma.
5942         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.4) THEN
5943           MINT(123)=5
5944           MSUB(131)=1
5945           MSUB(132)=1
5946           MSUB(135)=1
5947           MSUB(136)=1
5948           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
5949  
5950 C...Set up for direct * anomalous and anomalous * direct gamma.
5951         ELSEIF(MINT(122).EQ.3.OR.MINT(122).EQ.7) THEN
5952           MINT(123)=6
5953           MSUB(131)=1
5954           MSUB(132)=1
5955           MSUB(135)=1
5956           MSUB(136)=1
5957           IF(IPTL.EQ.1) CKIN(3)=PTMANO
5958  
5959 C...Set up for VMD*VMD.
5960         ELSEIF(MINT(122).EQ.5) THEN
5961           MINT(123)=2
5962           MSUB(11)=1
5963           MSUB(12)=1
5964           MSUB(13)=1
5965           MSUB(28)=1
5966           MSUB(53)=1
5967           MSUB(68)=1
5968           IF(IPTL.EQ.1) MSUB(95)=1
5969           IF(MSEL.EQ.2) THEN
5970             MSUB(91)=1
5971             MSUB(92)=1
5972             MSUB(93)=1
5973             MSUB(94)=1
5974           ENDIF
5975           IF(IPTL.EQ.1) CKIN(3)=0D0
5976  
5977 C...Set up for VMD * anomalous and anomalous * VMD gamma.
5978         ELSEIF(MINT(122).EQ.6.OR.MINT(122).EQ.8) THEN
5979           MINT(123)=7
5980           MSUB(11)=1
5981           MSUB(12)=1
5982           MSUB(13)=1
5983           MSUB(28)=1
5984           MSUB(53)=1
5985           MSUB(68)=1
5986           IF(IPTL.EQ.1) MSUB(95)=1
5987           IF(MSEL.EQ.2) THEN
5988             MSUB(91)=1
5989             MSUB(92)=1
5990             MSUB(93)=1
5991             MSUB(94)=1
5992           ENDIF
5993           IF(IPTL.EQ.1) CKIN(3)=0D0
5994  
5995 C...Set up for anomalous * anomalous gamma.
5996         ELSEIF(MINT(122).EQ.9) THEN
5997           MINT(123)=3
5998           MSUB(11)=1
5999           MSUB(12)=1
6000           MSUB(13)=1
6001           MSUB(28)=1
6002           MSUB(53)=1
6003           MSUB(68)=1
6004           IF(IPTL.EQ.1) MSUB(95)=1
6005           IF(MSEL.EQ.2) THEN
6006             MSUB(91)=1
6007             MSUB(92)=1
6008             MSUB(93)=1
6009             MSUB(94)=1
6010           ENDIF
6011           IF(IPTL.EQ.1) CKIN(3)=0D0
6012  
6013 C...Set up for DIS * VMD and VMD * DIS gamma.
6014         ELSEIF(MINT(122).EQ.10.OR.MINT(122).EQ.12) THEN
6015           MINT(123)=8
6016           IF(IPTL.EQ.1) MSUB(99)=1
6017  
6018 C...Set up for DIS * anomalous and anomalous * DIS gamma.
6019         ELSEIF(MINT(122).EQ.11.OR.MINT(122).EQ.13) THEN
6020           MINT(123)=9
6021           IF(IPTL.EQ.1) MSUB(99)=1
6022         ENDIF
6023  
6024 C...Set up for gamma* * p; virtual photons = dir, res.
6025         ELSEIF(MINT(121).EQ.2) THEN
6026  
6027 C...Set up for direct * p.
6028         IF(MINT(122).EQ.1) THEN
6029           MINT(123)=0
6030           MSUB(131)=1
6031           MSUB(132)=1
6032           MSUB(135)=1
6033           MSUB(136)=1
6034           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6035  
6036 C...Set up for resolved * p.
6037         ELSEIF(MINT(122).EQ.2) THEN
6038           MINT(123)=1
6039           MSUB(11)=1
6040           MSUB(12)=1
6041           MSUB(13)=1
6042           MSUB(28)=1
6043           MSUB(53)=1
6044           MSUB(68)=1
6045           IF(IPTL.EQ.1) MSUB(95)=1
6046           IF(MSEL.EQ.2) THEN
6047             MSUB(91)=1
6048             MSUB(92)=1
6049             MSUB(93)=1
6050             MSUB(94)=1
6051           ENDIF
6052           IF(IPTL.EQ.1) CKIN(3)=0D0
6053         ENDIF
6054  
6055 C...Set up for gamma* * gamma*; virtual photons = dir, res.
6056         ELSEIF(MINT(121).EQ.4) THEN
6057  
6058 C...Set up for direct * direct gamma (switch off leptons).
6059         IF(MINT(122).EQ.1) THEN
6060           MINT(123)=0
6061           MSUB(137)=1
6062           MSUB(138)=1
6063           MSUB(139)=1
6064           MSUB(140)=1
6065           DO 130 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
6066             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
6067   130     CONTINUE
6068           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6069  
6070 C...Set up for direct * resolved and resolved * direct gamma.
6071         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.3) THEN
6072           MINT(123)=5
6073           MSUB(131)=1
6074           MSUB(132)=1
6075           MSUB(135)=1
6076           MSUB(136)=1
6077           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6078  
6079 C...Set up for resolved * resolved gamma.
6080         ELSEIF(MINT(122).EQ.4) THEN
6081           MINT(123)=2
6082           MSUB(11)=1
6083           MSUB(12)=1
6084           MSUB(13)=1
6085           MSUB(28)=1
6086           MSUB(53)=1
6087           MSUB(68)=1
6088           IF(IPTL.EQ.1) MSUB(95)=1
6089           IF(MSEL.EQ.2) THEN
6090             MSUB(91)=1
6091             MSUB(92)=1
6092             MSUB(93)=1
6093             MSUB(94)=1
6094           ENDIF
6095           IF(IPTL.EQ.1) CKIN(3)=0D0
6096         ENDIF
6097  
6098 C...End of special set up for gamma-p and gamma-gamma.
6099         ENDIF
6100         CKIN(1)=2D0*CKIN(3)
6101       ENDIF
6102  
6103 C...Flavour information for individual beams.
6104       DO 140 I=1,2
6105         MINT(40+I)=1
6106         IF(MINT(123).GE.1.AND.MINT(10+I).EQ.22) MINT(40+I)=2
6107         IF(IABS(MINT(10+I)).GT.100) MINT(40+I)=2
6108         MINT(44+I)=MINT(40+I)
6109         IF(MSTP(11).GE.1.AND.(IABS(MINT(10+I)).EQ.11.OR.
6110      &  IABS(MINT(10+I)).EQ.13.OR.IABS(MINT(10+I)).EQ.15)) MINT(44+I)=3
6111   140 CONTINUE
6112  
6113 C...If two real gammas, whereof one direct, pick the first.
6114 C...For two virtual photons, keep requested order.
6115       IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
6116         IF(MSTP(14).LE.10.AND.MINT(123).GE.4.AND.MINT(123).LE.6) THEN
6117           MINT(41)=1
6118           MINT(45)=1
6119         ELSEIF(MSTP(14).EQ.12.OR.MSTP(14).EQ.13.OR.MSTP(14).EQ.22.OR.
6120      &  MSTP(14).EQ.26.OR.MSTP(14).EQ.27) THEN
6121           MINT(41)=1
6122           MINT(45)=1
6123         ELSEIF(MSTP(14).EQ.14.OR.MSTP(14).EQ.17.OR.MSTP(14).EQ.23.OR.
6124      &  MSTP(14).EQ.28.OR.MSTP(14).EQ.29) THEN
6125           MINT(42)=1
6126           MINT(46)=1
6127         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.2
6128      &  .OR.MINT(122).EQ.3.OR.MINT(122).EQ.10.OR.MINT(122).EQ.11)) THEN
6129           MINT(41)=1
6130           MINT(45)=1
6131         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.4
6132      &  .OR.MINT(122).EQ.7.OR.MINT(122).EQ.12.OR.MINT(122).EQ.13)) THEN
6133           MINT(42)=1
6134           MINT(46)=1
6135         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.2) THEN
6136           MINT(41)=1
6137           MINT(45)=1
6138         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.3) THEN
6139           MINT(42)=1
6140           MINT(46)=1
6141         ENDIF
6142       ELSEIF(MINT(11).EQ.22.OR.MINT(12).EQ.22) THEN
6143         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28.OR.MINT(122).EQ.4) THEN
6144           IF(MINT(11).EQ.22) THEN
6145             MINT(41)=1
6146             MINT(45)=1
6147           ELSE
6148             MINT(42)=1
6149             MINT(46)=1
6150           ENDIF
6151         ENDIF
6152         IF(MINT(123).GE.4.AND.MINT(123).LE.7) CALL PYERRM(26,
6153      &  '(PYINPR:) unallowed MSTP(14) code for single photon')
6154       ENDIF
6155  
6156 C...Flavour information on combination of incoming particles.
6157       MINT(43)=2*MINT(41)+MINT(42)-2
6158       MINT(44)=MINT(43)
6159       IF(MINT(123).LE.0) THEN
6160         IF(MINT(11).EQ.22) MINT(43)=MINT(43)+2
6161         IF(MINT(12).EQ.22) MINT(43)=MINT(43)+1
6162       ELSEIF(MINT(123).LE.3) THEN
6163         IF(MINT(11).EQ.22) MINT(44)=MINT(44)-2
6164         IF(MINT(12).EQ.22) MINT(44)=MINT(44)-1
6165       ELSEIF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
6166         MINT(43)=4
6167         MINT(44)=1
6168       ENDIF
6169       MINT(47)=2*MIN(2,MINT(45))+MIN(2,MINT(46))-2
6170       IF(MIN(MINT(45),MINT(46)).EQ.3) MINT(47)=5
6171       IF(MINT(45).EQ.1.AND.MINT(46).EQ.3) MINT(47)=6
6172       IF(MINT(45).EQ.3.AND.MINT(46).EQ.1) MINT(47)=7
6173       MINT(50)=0
6174       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2.AND.MINT(111).NE.12) MINT(50)=1
6175       MINT(107)=0
6176       MINT(108)=0
6177       IF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
6178         IF((MINT(122).GE.4.AND.MINT(122).LE.6).OR.MINT(122).EQ.12)
6179      &  MINT(107)=2
6180         IF((MINT(122).GE.7.AND.MINT(122).LE.9).OR.MINT(122).EQ.13)
6181      &  MINT(107)=3
6182         IF(MINT(122).EQ.10.OR.MINT(122).EQ.11) MINT(107)=4
6183         IF(MINT(122).EQ.2.OR.MINT(122).EQ.5.OR.MINT(122).EQ.8.OR.
6184      &  MINT(122).EQ.10) MINT(108)=2
6185         IF(MINT(122).EQ.3.OR.MINT(122).EQ.6.OR.MINT(122).EQ.9.OR.
6186      &  MINT(122).EQ.11) MINT(108)=3
6187         IF(MINT(122).EQ.12.OR.MINT(122).EQ.13) MINT(108)=4
6188       ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.25) THEN
6189         IF(MINT(122).GE.3) MINT(107)=1
6190         IF(MINT(122).EQ.2.OR.MINT(122).EQ.4) MINT(108)=1
6191       ELSEIF(MINT(121).EQ.2) THEN
6192         IF(MINT(122).EQ.2.AND.MINT(11).EQ.22) MINT(107)=1
6193         IF(MINT(122).EQ.2.AND.MINT(12).EQ.22) MINT(108)=1
6194       ELSE
6195         IF(MINT(11).EQ.22) THEN
6196           MINT(107)=MINT(123)
6197           IF(MINT(123).GE.4) MINT(107)=0
6198           IF(MINT(123).EQ.7) MINT(107)=2
6199           IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.27) MINT(107)=4
6200           IF(MSTP(14).EQ.28) MINT(107)=2
6201           IF(MSTP(14).EQ.29) MINT(107)=3
6202           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
6203      &    MINT(107)=4
6204         ENDIF
6205         IF(MINT(12).EQ.22) THEN
6206           MINT(108)=MINT(123)
6207           IF(MINT(123).GE.4) MINT(108)=MINT(123)-3
6208           IF(MINT(123).EQ.7) MINT(108)=3
6209           IF(MSTP(14).EQ.26) MINT(108)=2
6210           IF(MSTP(14).EQ.27) MINT(108)=3
6211           IF(MSTP(14).EQ.28.OR.MSTP(14).EQ.29) MINT(108)=4
6212           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
6213      &    MINT(108)=4
6214         ENDIF
6215         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.(MSTP(14).EQ.14.OR.
6216      &  MSTP(14).EQ.17.OR.MSTP(14).EQ.18.OR.MSTP(14).EQ.23)) THEN
6217           MINTTP=MINT(107)
6218           MINT(107)=MINT(108)
6219           MINT(108)=MINTTP
6220         ENDIF
6221       ENDIF
6222       IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
6223       IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
6224  
6225 C...Select default processes according to incoming beams
6226 C...(already done for gamma-p and gamma-gamma with
6227 C...MSTP(14) = 10, 20, 25 or 30).
6228       IF(MINT(121).GT.1) THEN
6229       ELSEIF(MSEL.EQ.1.OR.MSEL.EQ.2) THEN
6230  
6231         IF(MINT(43).EQ.1) THEN
6232 C...Lepton + lepton -> gamma/Z0 or W.
6233           IF(MINT(11)+MINT(12).EQ.0) MSUB(1)=1
6234           IF(MINT(11)+MINT(12).NE.0) MSUB(2)=1
6235  
6236         ELSEIF(MINT(43).LE.3.AND.MINT(123).EQ.0.AND.
6237      &    (MINT(11).EQ.22.OR.MINT(12).EQ.22)) THEN
6238 C...Unresolved photon + lepton: Compton scattering.
6239           MSUB(133)=1
6240           MSUB(134)=1
6241  
6242         ELSEIF((MINT(123).EQ.8.OR.MINT(123).EQ.9).AND.(MINT(11).EQ.22
6243      &  .OR.MINT(12).EQ.22)) THEN
6244 C...DIS as pure gamma* + f -> f process.
6245           MSUB(99)=1
6246  
6247         ELSEIF(MINT(43).LE.3) THEN
6248 C...Lepton + hadron: deep inelastic scattering.
6249           MSUB(10)=1
6250  
6251         ELSEIF(MINT(123).EQ.0.AND.MINT(11).EQ.22.AND.
6252      &    MINT(12).EQ.22) THEN
6253 C...Two unresolved photons: fermion pair production,
6254 C...exclude lepton pairs.
6255           DO 150 ISUB=137,140
6256             MSUB(ISUB)=1
6257   150     CONTINUE
6258           DO 160 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
6259             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
6260   160     CONTINUE
6261           PTMDIR=PTMRUN
6262           IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
6263           IF(CKIN(3).LT.PTMRUN.OR.MSEL.EQ.2) CKIN(3)=PTMDIR
6264           CKIN(1)=MAX(CKIN(1),2D0*CKIN(3))
6265  
6266         ELSEIF((MINT(123).EQ.0.AND.(MINT(11).EQ.22.OR.MINT(12).EQ.22))
6267      &    .OR.(MINT(123).GE.4.AND.MINT(123).LE.6.AND.MINT(11).EQ.22.AND.
6268      &    MINT(12).EQ.22)) THEN
6269 C...Unresolved photon + hadron: photon-parton scattering.
6270           DO 170 ISUB=131,136
6271             MSUB(ISUB)=1
6272   170     CONTINUE
6273  
6274         ELSEIF(MSEL.EQ.1) THEN
6275 C...High-pT QCD processes:
6276           MSUB(11)=1
6277           MSUB(12)=1
6278           MSUB(13)=1
6279           MSUB(28)=1
6280           MSUB(53)=1
6281           MSUB(68)=1
6282           PTMN=PTMRUN
6283           VINT(154)=PTMN
6284           IF(CKIN(3).LT.PTMN) MSUB(95)=1
6285           IF(MSUB(95).EQ.1.AND.MINT(50).EQ.0) MSUB(95)=0
6286  
6287         ELSE
6288 C...All QCD processes:
6289           MSUB(11)=1
6290           MSUB(12)=1
6291           MSUB(13)=1
6292           MSUB(28)=1
6293           MSUB(53)=1
6294           MSUB(68)=1
6295           MSUB(91)=1
6296           MSUB(92)=1
6297           MSUB(93)=1
6298           MSUB(94)=1
6299           MSUB(95)=1
6300         ENDIF
6301  
6302       ELSEIF(MSEL.GE.4.AND.MSEL.LE.8) THEN
6303 C...Heavy quark production.
6304         MSUB(81)=1
6305         MSUB(82)=1
6306         MSUB(84)=1
6307         DO 180 J=1,MIN(8,MDCY(21,3))
6308           MDME(MDCY(21,2)+J-1,1)=0
6309   180   CONTINUE
6310         MDME(MDCY(21,2)+MSEL-1,1)=1
6311         MSUB(85)=1
6312         DO 190 J=1,MIN(12,MDCY(22,3))
6313           MDME(MDCY(22,2)+J-1,1)=0
6314   190   CONTINUE
6315         MDME(MDCY(22,2)+MSEL-1,1)=1
6316  
6317       ELSEIF(MSEL.EQ.10) THEN
6318 C...Prompt photon production:
6319         MSUB(14)=1
6320         MSUB(18)=1
6321         MSUB(29)=1
6322  
6323       ELSEIF(MSEL.EQ.11) THEN
6324 C...Z0/gamma* production:
6325         MSUB(1)=1
6326  
6327       ELSEIF(MSEL.EQ.12) THEN
6328 C...W+/- production:
6329         MSUB(2)=1
6330  
6331       ELSEIF(MSEL.EQ.13) THEN
6332 C...Z0 + jet:
6333         MSUB(15)=1
6334         MSUB(30)=1
6335  
6336       ELSEIF(MSEL.EQ.14) THEN
6337 C...W+/- + jet:
6338         MSUB(16)=1
6339         MSUB(31)=1
6340  
6341       ELSEIF(MSEL.EQ.15) THEN
6342 C...Z0 & W+/- pair production:
6343         MSUB(19)=1
6344         MSUB(20)=1
6345         MSUB(22)=1
6346         MSUB(23)=1
6347         MSUB(25)=1
6348  
6349       ELSEIF(MSEL.EQ.16) THEN
6350 C...h0 production:
6351         MSUB(3)=1
6352         MSUB(102)=1
6353         MSUB(103)=1
6354         MSUB(123)=1
6355         MSUB(124)=1
6356  
6357       ELSEIF(MSEL.EQ.17) THEN
6358 C...h0 & Z0 or W+/- pair production:
6359         MSUB(24)=1
6360         MSUB(26)=1
6361  
6362       ELSEIF(MSEL.EQ.18) THEN
6363 C...h0 production; interesting processes in e+e-.
6364         MSUB(24)=1
6365         MSUB(103)=1
6366         MSUB(123)=1
6367         MSUB(124)=1
6368  
6369       ELSEIF(MSEL.EQ.19) THEN
6370 C...h0, H0 and A0 production; interesting processes in e+e-.
6371         MSUB(24)=1
6372         MSUB(103)=1
6373         MSUB(123)=1
6374         MSUB(124)=1
6375         MSUB(153)=1
6376         MSUB(171)=1
6377         MSUB(173)=1
6378         MSUB(174)=1
6379         MSUB(158)=1
6380         MSUB(176)=1
6381         MSUB(178)=1
6382         MSUB(179)=1
6383  
6384       ELSEIF(MSEL.EQ.21) THEN
6385 C...Z'0 production:
6386         MSUB(141)=1
6387  
6388       ELSEIF(MSEL.EQ.22) THEN
6389 C...W'+/- production:
6390         MSUB(142)=1
6391  
6392       ELSEIF(MSEL.EQ.23) THEN
6393 C...H+/- production:
6394         MSUB(143)=1
6395  
6396       ELSEIF(MSEL.EQ.24) THEN
6397 C...R production:
6398         MSUB(144)=1
6399  
6400       ELSEIF(MSEL.EQ.25) THEN
6401 C...LQ (leptoquark) production.
6402         MSUB(145)=1
6403         MSUB(162)=1
6404         MSUB(163)=1
6405         MSUB(164)=1
6406  
6407       ELSEIF(MSEL.GE.35.AND.MSEL.LE.38) THEN
6408 C...Production of one heavy quark (W exchange):
6409         MSUB(83)=1
6410         DO 200 J=1,MIN(8,MDCY(21,3))
6411           MDME(MDCY(21,2)+J-1,1)=0
6412   200   CONTINUE
6413         MDME(MDCY(21,2)+MSEL-31,1)=1
6414  
6415 CMRENNA++Define SUSY alternatives.
6416       ELSEIF(MSEL.EQ.39) THEN
6417 C...Turn on all SUSY processes.
6418         IF(MINT(43).EQ.4) THEN
6419 C...Hadron-hadron processes.
6420           DO 210 I=201,301
6421             IF(ISET(I).GE.0) MSUB(I)=1
6422   210     CONTINUE
6423         ELSEIF(MINT(43).EQ.1) THEN
6424 C...Lepton-lepton processes: QED production of squarks.
6425           DO 220 I=201,214
6426             MSUB(I)=1
6427   220     CONTINUE
6428           MSUB(210)=0
6429           MSUB(211)=0
6430           MSUB(212)=0
6431           DO 230 I=216,228
6432             MSUB(I)=1
6433   230     CONTINUE
6434           DO 240 I=261,263
6435             MSUB(I)=1
6436   240     CONTINUE
6437           MSUB(277)=1
6438           MSUB(278)=1
6439         ENDIF
6440  
6441       ELSEIF(MSEL.EQ.40) THEN
6442 C...Gluinos and squarks.
6443         IF(MINT(43).EQ.4) THEN
6444           MSUB(243)=1
6445           MSUB(244)=1
6446           MSUB(258)=1
6447           MSUB(259)=1
6448           MSUB(261)=1
6449           MSUB(262)=1
6450           MSUB(264)=1
6451           MSUB(265)=1
6452           DO 250 I=271,296
6453             MSUB(I)=1
6454   250     CONTINUE
6455         ELSEIF(MINT(43).EQ.1) THEN
6456           MSUB(277)=1
6457           MSUB(278)=1
6458         ENDIF
6459  
6460       ELSEIF(MSEL.EQ.41) THEN
6461 C...Stop production.
6462         MSUB(261)=1
6463         MSUB(262)=1
6464         MSUB(263)=1
6465         IF(MINT(43).EQ.4) THEN
6466           MSUB(264)=1
6467           MSUB(265)=1
6468         ENDIF
6469  
6470       ELSEIF(MSEL.EQ.42) THEN
6471 C...Slepton production.
6472         DO 260 I=201,214
6473           MSUB(I)=1
6474   260   CONTINUE
6475         IF(MINT(43).NE.4) THEN
6476           MSUB(210)=0
6477           MSUB(211)=0
6478           MSUB(212)=0
6479         ENDIF
6480  
6481       ELSEIF(MSEL.EQ.43) THEN
6482 C...Neutralino/Chargino + Gluino/Squark.
6483         IF(MINT(43).EQ.4) THEN
6484           DO 270 I=237,242
6485             MSUB(I)=1
6486   270     CONTINUE
6487           DO 280 I=246,254
6488             MSUB(I)=1
6489   280     CONTINUE
6490           MSUB(256)=1
6491         ENDIF
6492  
6493       ELSEIF(MSEL.EQ.44) THEN
6494 C...Neutralino/Chargino pair production.
6495         IF(MINT(43).EQ.4) THEN
6496           DO 290 I=216,236
6497             MSUB(I)=1
6498   290     CONTINUE
6499         ELSEIF(MINT(43).EQ.1) THEN
6500           DO 300 I=216,228
6501             MSUB(I)=1
6502   300     CONTINUE
6503         ENDIF
6504  
6505       ELSEIF(MSEL.EQ.45) THEN
6506 C...Sbottom production.
6507         MSUB(287)=1
6508         MSUB(288)=1
6509         IF(MINT(43).EQ.4) THEN
6510           DO 310 I=281,296
6511             MSUB(I)=1
6512   310     CONTINUE
6513         ENDIF
6514  
6515       ELSEIF(MSEL.EQ.50) THEN
6516 C...Pair production of technipions and gauge bosons.
6517         DO 320 I=361,368
6518           MSUB(I)=1
6519   320   CONTINUE
6520         IF(MINT(43).EQ.4) THEN
6521           DO 330 I=370,377
6522             MSUB(I)=1
6523   330     CONTINUE
6524         ENDIF
6525  
6526       ELSEIF(MSEL.EQ.51) THEN
6527 C...QCD 2 -> 2 processes with compositeness/technicolor modifications.
6528         DO 340 I=381,386
6529           MSUB(I)=1
6530   340   CONTINUE
6531  
6532       ELSEIF(MSEL.EQ.61) THEN
6533 C...Charmonium production in colour octet model, with recoiling parton.
6534         DO 342 I=421,439
6535           MSUB(I)=1
6536  342   CONTINUE
6537  
6538       ELSEIF(MSEL.EQ.62) THEN
6539 C...Bottomonium production in colour octet model, with recoiling parton.
6540         DO 344 I=461,479
6541           MSUB(I)=1
6542  344   CONTINUE
6543  
6544       ELSEIF(MSEL.EQ.63) THEN
6545 C...Charmonium and bottomonium production in colour octet model.
6546         DO 346 I=421,439
6547           MSUB(I)=1
6548           MSUB(I+40)=1
6549  346   CONTINUE
6550       ENDIF
6551  
6552 C...Find heaviest new quark flavour allowed in processes 81-84.
6553       KFLQM=1
6554       DO 350 I=1,MIN(8,MDCY(21,3))
6555         IDC=I+MDCY(21,2)-1
6556         IF(MDME(IDC,1).LE.0) GOTO 350
6557         KFLQM=I
6558   350 CONTINUE
6559       IF(MSTP(7).GE.1.AND.MSTP(7).LE.8.AND.(MSEL.LE.3.OR.MSEL.GE.9))
6560      &KFLQM=MSTP(7)
6561       MINT(55)=KFLQM
6562       KFPR(81,1)=KFLQM
6563       KFPR(81,2)=KFLQM
6564       KFPR(82,1)=KFLQM
6565       KFPR(82,2)=KFLQM
6566       KFPR(83,1)=KFLQM
6567       KFPR(84,1)=KFLQM
6568       KFPR(84,2)=KFLQM
6569  
6570 C...Find heaviest new fermion flavour allowed in process 85.
6571       KFLFM=1
6572       DO 360 I=1,MIN(12,MDCY(22,3))
6573         IDC=I+MDCY(22,2)-1
6574         IF(MDME(IDC,1).LE.0) GOTO 360
6575         KFLFM=KFDP(IDC,1)
6576   360 CONTINUE
6577       IF(((MSTP(7).GE.1.AND.MSTP(7).LE.8).OR.(MSTP(7).GE.11.AND.
6578      &MSTP(7).LE.18)).AND.(MSEL.LE.3.OR.MSEL.GE.9)) KFLFM=MSTP(7)
6579       MINT(56)=KFLFM
6580       KFPR(85,1)=KFLFM
6581       KFPR(85,2)=KFLFM
6582  
6583 C...Import relevant information on external user processes.
6584       IF(MINT(111).GE.11) THEN
6585         IPYPR=0
6586         DO 390 IUP=1,NPRUP
6587 C...Find next empty PYTHIA process number slot and enable it.
6588   370     IPYPR=IPYPR+1
6589           IF(IPYPR.GT.500) CALL PYERRM(26,
6590      &    '(PYINPR.) no more empty slots for user processes')
6591           IF(ISET(IPYPR).GE.0.AND.ISET(IPYPR).LE.9) GOTO 370
6592           IF(IPYPR.GE.91.AND.IPYPR.LE.100) GOTO 370
6593           ISET(IPYPR)=11
6594 C...Overwrite KFPR with references back to process number and ID.
6595           KFPR(IPYPR,1)=IUP
6596           KFPR(IPYPR,2)=LPRUP(IUP)
6597 C...Process title.
6598           WRITE(CHIPR,'(I10)') LPRUP(IUP)
6599           ICHIN=1
6600           DO 380 ICH=1,9
6601             IF(CHIPR(ICH:ICH).EQ.' ') ICHIN=ICH+1
6602   380     CONTINUE
6603           PROC(IPYPR)='User process '//CHIPR(ICHIN:10)//' '
6604 C...Switch on process.
6605           MSUB(IPYPR)=1
6606   390   CONTINUE
6607       ENDIF
6608  
6609       RETURN
6610       END
6611  
6612 C*********************************************************************
6613  
6614 C...PYXTOT
6615 C...Parametrizes total, elastic and diffractive cross-sections
6616 C...for different energies and beams. Donnachie-Landshoff for
6617 C...total and Schuler-Sjostrand for elastic and diffractive.
6618 C...Process code IPROC:
6619 C...=  1 : p + p;
6620 C...=  2 : pbar + p;
6621 C...=  3 : pi+ + p;
6622 C...=  4 : pi- + p;
6623 C...=  5 : pi0 + p;
6624 C...=  6 : phi + p;
6625 C...=  7 : J/psi + p;
6626 C...= 11 : rho + rho;
6627 C...= 12 : rho + phi;
6628 C...= 13 : rho + J/psi;
6629 C...= 14 : phi + phi;
6630 C...= 15 : phi + J/psi;
6631 C...= 16 : J/psi + J/psi;
6632 C...= 21 : gamma + p (DL);
6633 C...= 22 : gamma + p (VDM).
6634 C...= 23 : gamma + pi (DL);
6635 C...= 24 : gamma + pi (VDM);
6636 C...= 25 : gamma + gamma (DL);
6637 C...= 26 : gamma + gamma (VDM).
6638  
6639       SUBROUTINE PYXTOT
6640  
6641 C...Double precision and integer declarations.
6642       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6643       IMPLICIT INTEGER(I-N)
6644       INTEGER PYK,PYCHGE,PYCOMP
6645 C...Commonblocks.
6646       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
6647       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
6648       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6649       COMMON/PYINT1/MINT(400),VINT(400)
6650       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
6651       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
6652       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT5/,/PYINT7/
6653 C...Local arrays.
6654       DIMENSION NPROC(30),XPAR(30),YPAR(30),IHADA(20),IHADB(20),
6655      &PMHAD(4),BHAD(4),BETP(4),IFITSD(20),IFITDD(20),CEFFS(10,8),
6656      &CEFFD(10,9),SIGTMP(6,0:5)
6657  
6658 C...Common constants.
6659       DATA EPS/0.0808D0/, ETA/-0.4525D0/, ALP/0.25D0/, CRES/2D0/,
6660      &PMRC/1.062D0/, SMP/0.880D0/, FACEL/0.0511D0/, FACSD/0.0336D0/,
6661      &FACDD/0.0084D0/
6662  
6663 C...Number of multiple processes to be evaluated (= 0 : undefined).
6664       DATA NPROC/7*1,3*0,6*1,4*0,4*3,2*6,4*0/
6665 C...X and Y parameters of sigmatot = X * s**epsilon + Y * s**(-eta).
6666       DATA XPAR/2*21.70D0,3*13.63D0,10.01D0,0.970D0,3*0D0,
6667      &8.56D0,6.29D0,0.609D0,4.62D0,0.447D0,0.0434D0,4*0D0,
6668      &0.0677D0,0.0534D0,0.0425D0,0.0335D0,2.11D-4,1.31D-4,4*0D0/
6669       DATA YPAR/
6670      &56.08D0,98.39D0,27.56D0,36.02D0,31.79D0,-1.51D0,-0.146D0,3*0D0,
6671      &13.08D0,-0.62D0,-0.060D0,0.030D0,-0.0028D0,0.00028D0,4*0D0,
6672      &0.129D0,0.115D0,0.081D0,0.072D0,2.15D-4,1.70D-4,4*0D0/
6673  
6674 C...Beam and target hadron class:
6675 C...= 1 : p/n ; = 2 : pi/rho/omega; = 3 : phi; = 4 : J/psi.
6676       DATA IHADA/2*1,3*2,3,4,3*0,3*2,2*3,4,4*0/
6677       DATA IHADB/7*1,3*0,2,3,4,3,2*4,4*0/
6678 C...Characteristic class masses, slope parameters, beta = sqrt(X).
6679       DATA PMHAD/0.938D0,0.770D0,1.020D0,3.097D0/
6680       DATA BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
6681       DATA BETP/4.658D0,2.926D0,2.149D0,0.208D0/
6682  
6683 C...Fitting constants used in parametrizations of diffractive results.
6684       DATA IFITSD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
6685       DATA IFITDD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
6686       DATA ((CEFFS(J1,J2),J2=1,8),J1=1,10)/
6687      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.213D0, 0.0D0, -0.47D0, 150D0,
6688      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.267D0, 0.0D0, -0.47D0, 100D0,
6689      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.232D0, 0.0D0, -0.47D0, 110D0,
6690      &0.213D0, 7.0D0, -0.55D0, 800D0, 0.115D0, 0.0D0, -0.47D0, 110D0,
6691      &0.267D0, 0.0D0, -0.46D0,  75D0, 0.267D0, 0.0D0, -0.46D0,  75D0,
6692      &0.232D0, 0.0D0, -0.46D0,  85D0, 0.267D0, 0.0D0, -0.48D0, 100D0,
6693      &0.115D0, 0.0D0, -0.50D0,  90D0, 0.267D0, 6.0D0, -0.56D0, 420D0,
6694      &0.232D0, 0.0D0, -0.48D0, 110D0, 0.232D0, 0.0D0, -0.48D0, 110D0,
6695      &0.115D0, 0.0D0, -0.52D0, 120D0, 0.232D0, 6.0D0, -0.56D0, 470D0,
6696      &0.115D0, 5.5D0, -0.58D0, 570D0, 0.115D0, 5.5D0, -0.58D0, 570D0/
6697       DATA ((CEFFD(J1,J2),J2=1,9),J1=1,10)/
6698      &3.11D0, -7.34D0,  9.71D0, 0.068D0, -0.42D0,  1.31D0,
6699      &-1.37D0,  35.0D0,  118D0,  3.11D0, -7.10D0,  10.6D0,
6700      &0.073D0, -0.41D0, 1.17D0, -1.41D0,  31.6D0,   95D0,
6701      &3.12D0, -7.43D0,  9.21D0, 0.067D0, -0.44D0,  1.41D0,
6702      &-1.35D0,  36.5D0,  132D0,  3.13D0, -8.18D0, -4.20D0,
6703      &0.056D0, -0.71D0, 3.12D0, -1.12D0,  55.2D0, 1298D0,
6704      &3.11D0, -6.90D0,  11.4D0, 0.078D0, -0.40D0,  1.05D0,
6705      &-1.40D0,  28.4D0,   78D0,  3.11D0, -7.13D0,  10.0D0,
6706      &0.071D0, -0.41D0, 1.23D0, -1.34D0,  33.1D0,  105D0,
6707      &3.12D0, -7.90D0, -1.49D0, 0.054D0, -0.64D0,  2.72D0,
6708      &-1.13D0,  53.1D0,  995D0,  3.11D0, -7.39D0,  8.22D0,
6709      &0.065D0, -0.44D0, 1.45D0, -1.36D0,  38.1D0,  148D0,
6710      &3.18D0, -8.95D0, -3.37D0, 0.057D0, -0.76D0,  3.32D0,
6711      &-1.12D0,  55.6D0, 1472D0,  4.18D0, -29.2D0,  56.2D0,
6712      &0.074D0, -1.36D0, 6.67D0, -1.14D0, 116.2D0, 6532D0/
6713  
6714 C...Parameters. Combinations of the energy.
6715       AEM=PARU(101)
6716       PMTH=PARP(102)
6717       S=VINT(2)
6718       SRT=VINT(1)
6719       SEPS=S**EPS
6720       SETA=S**ETA
6721       SLOG=LOG(S)
6722  
6723 C...Ratio of gamma/pi (for rescaling in parton distributions).
6724       VINT(281)=(XPAR(22)*SEPS+YPAR(22)*SETA)/
6725      &(XPAR(5)*SEPS+YPAR(5)*SETA)
6726       VINT(317)=1D0
6727       IF(MINT(50).NE.1) RETURN
6728  
6729 C...Order flavours of incoming particles: KF1 < KF2.
6730       IF(IABS(MINT(11)).LE.IABS(MINT(12))) THEN
6731         KF1=IABS(MINT(11))
6732         KF2=IABS(MINT(12))
6733         IORD=1
6734       ELSE
6735         KF1=IABS(MINT(12))
6736         KF2=IABS(MINT(11))
6737         IORD=2
6738       ENDIF
6739       ISGN12=ISIGN(1,MINT(11)*MINT(12))
6740  
6741 C...Find process number (for lookup tables).
6742       IF(KF1.GT.1000) THEN
6743         IPROC=1
6744         IF(ISGN12.LT.0) IPROC=2
6745       ELSEIF(KF1.GT.100.AND.KF2.GT.1000) THEN
6746         IPROC=3
6747         IF(ISGN12.LT.0) IPROC=4
6748         IF(KF1.EQ.111) IPROC=5
6749       ELSEIF(KF1.GT.100) THEN
6750         IPROC=11
6751       ELSEIF(KF2.GT.1000) THEN
6752         IPROC=21
6753         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=22
6754       ELSEIF(KF2.GT.100) THEN
6755         IPROC=23
6756         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=24
6757       ELSE
6758         IPROC=25
6759         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7) IPROC=26
6760       ENDIF
6761  
6762 C... Number of multiple processes to be stored; beam/target side.
6763       NPR=NPROC(IPROC)
6764       MINT(101)=1
6765       MINT(102)=1
6766       IF(NPR.EQ.3) THEN
6767         MINT(100+IORD)=4
6768       ELSEIF(NPR.EQ.6) THEN
6769         MINT(101)=4
6770         MINT(102)=4
6771       ENDIF
6772       N1=0
6773       IF(MINT(101).EQ.4) N1=4
6774       N2=0
6775       IF(MINT(102).EQ.4) N2=4
6776  
6777 C...Do not do any more for user-set or undefined cross-sections.
6778       IF(MSTP(31).LE.0) RETURN
6779       IF(NPR.EQ.0) CALL PYERRM(26,
6780      &'(PYXTOT:) cross section for this process not yet implemented')
6781  
6782 C...Parameters. Combinations of the energy.
6783       AEM=PARU(101)
6784       PMTH=PARP(102)
6785       S=VINT(2)
6786       SRT=VINT(1)
6787       SEPS=S**EPS
6788       SETA=S**ETA
6789       SLOG=LOG(S)
6790  
6791 C...Loop over multiple processes (for VDM).
6792       DO 110 I=1,NPR
6793         IF(NPR.EQ.1) THEN
6794           IPR=IPROC
6795         ELSEIF(NPR.EQ.3) THEN
6796           IPR=I+4
6797           IF(KF2.LT.1000) IPR=I+10
6798         ELSEIF(NPR.EQ.6) THEN
6799           IPR=I+10
6800         ENDIF
6801  
6802 C...Evaluate hadron species, mass, slope contribution and fit number.
6803         IHA=IHADA(IPR)
6804         IHB=IHADB(IPR)
6805         PMA=PMHAD(IHA)
6806         PMB=PMHAD(IHB)
6807         BHA=BHAD(IHA)
6808         BHB=BHAD(IHB)
6809         ISD=IFITSD(IPR)
6810         IDD=IFITDD(IPR)
6811  
6812 C...Skip if energy too low relative to masses.
6813         DO 100 J=0,5
6814           SIGTMP(I,J)=0D0
6815   100   CONTINUE
6816         IF(SRT.LT.PMA+PMB+PARP(104)) GOTO 110
6817  
6818 C...Total cross-section. Elastic slope parameter and cross-section.
6819         SIGTMP(I,0)=XPAR(IPR)*SEPS+YPAR(IPR)*SETA
6820         BEL=2D0*BHA+2D0*BHB+4D0*SEPS-4.2D0
6821         SIGTMP(I,1)=FACEL*SIGTMP(I,0)**2/BEL
6822  
6823 C...Diffractive scattering A + B -> X + B.
6824         BSD=2D0*BHB
6825         SQML=(PMA+PMTH)**2
6826         SQMU=S*CEFFS(ISD,1)+CEFFS(ISD,2)
6827         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
6828      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
6829         BXB=CEFFS(ISD,3)+CEFFS(ISD,4)/S
6830         SUM2=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)/
6831      &  (BSD+2D0*ALP*LOG(S/((PMA+PMTH)*(PMA+PMRC)))+BXB)
6832         SIGTMP(I,2)=FACSD*XPAR(IPR)*BETP(IHB)*MAX(0D0,SUM1+SUM2)
6833  
6834 C...Diffractive scattering A + B -> A + X.
6835         BSD=2D0*BHA
6836         SQML=(PMB+PMTH)**2
6837         SQMU=S*CEFFS(ISD,5)+CEFFS(ISD,6)
6838         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
6839      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
6840         BAX=CEFFS(ISD,7)+CEFFS(ISD,8)/S
6841         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/
6842      &  (BSD+2D0*ALP*LOG(S/((PMB+PMTH)*(PMB+PMRC)))+BAX)
6843         SIGTMP(I,3)=FACSD*XPAR(IPR)*BETP(IHA)*MAX(0D0,SUM1+SUM2)
6844  
6845 C...Order single diffractive correctly.
6846         IF(IORD.EQ.2) THEN
6847           SIGSAV=SIGTMP(I,2)
6848           SIGTMP(I,2)=SIGTMP(I,3)
6849           SIGTMP(I,3)=SIGSAV
6850         ENDIF
6851  
6852 C...Double diffractive scattering A + B -> X1 + X2.
6853         YEFF=LOG(S*SMP/((PMA+PMTH)*(PMB+PMTH))**2)
6854         DEFF=CEFFD(IDD,1)+CEFFD(IDD,2)/SLOG+CEFFD(IDD,3)/SLOG**2
6855         SUM1=(DEFF+YEFF*(LOG(MAX(1D-10,YEFF/DEFF))-1D0))/(2D0*ALP)
6856         IF(YEFF.LE.0) SUM1=0D0
6857         SQMU=S*(CEFFD(IDD,4)+CEFFD(IDD,5)/SLOG+CEFFD(IDD,6)/SLOG**2)
6858         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMA+PMTH)**2*(PMB+PMTH)*(PMB+PMRC))))
6859         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMB+PMTH)*(PMB+PMRC))))
6860         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)*LOG(SLUP/SLDN)/
6861      &  (2D0*ALP)
6862         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMB+PMTH)**2*(PMA+PMTH)*(PMA+PMRC))))
6863         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMA+PMTH)*(PMA+PMRC))))
6864         SUM3=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*LOG(SLUP/SLDN)/
6865      &  (2D0*ALP)
6866         BXX=CEFFD(IDD,7)+CEFFD(IDD,8)/SRT+CEFFD(IDD,9)/S
6867         SLRR=LOG(S/(ALP*(PMA+PMTH)*(PMA+PMRC)*(PMB+PMTH)*(PMB+PMRC)))
6868         SUM4=CRES**2*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*
6869      &  LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/MAX(0.1D0,2D0*ALP*SLRR+BXX)
6870         SIGTMP(I,4)=FACDD*XPAR(IPR)*MAX(0D0,SUM1+SUM2+SUM3+SUM4)
6871  
6872 C...Non-diffractive by unitarity.
6873         SIGTMP(I,5)=SIGTMP(I,0)-SIGTMP(I,1)-SIGTMP(I,2)-SIGTMP(I,3)-
6874      &  SIGTMP(I,4)
6875   110 CONTINUE
6876  
6877 C...Put temporary results in output array: only one process.
6878       IF(MINT(101).EQ.1.AND.MINT(102).EQ.1) THEN
6879         DO 120 J=0,5
6880           SIGT(0,0,J)=SIGTMP(1,J)
6881   120   CONTINUE
6882  
6883 C...Beam multiple processes.
6884       ELSEIF(MINT(101).EQ.4.AND.MINT(102).EQ.1) THEN
6885         IF(MINT(107).EQ.2) THEN
6886           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
6887         ELSE
6888           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
6889      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
6890         ENDIF
6891         IF(MSTP(20).GT.0) THEN
6892           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)))**MSTP(20)
6893         ENDIF
6894         DO 140 I=1,4
6895           IF(MINT(107).EQ.2) THEN
6896             CONV=(AEM/PARP(160+I))*VINT(317)
6897           ELSEIF(VINT(154).GT.PARP(15)) THEN
6898             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
6899      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
6900           ELSE
6901             CONV=0D0
6902           ENDIF
6903           I1=MAX(1,I-1)
6904           DO 130 J=0,5
6905             SIGT(I,0,J)=CONV*SIGTMP(I1,J)
6906   130     CONTINUE
6907   140   CONTINUE
6908         DO 150 J=0,5
6909           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
6910   150   CONTINUE
6911  
6912 C...Target multiple processes.
6913       ELSEIF(MINT(101).EQ.1.AND.MINT(102).EQ.4) THEN
6914         IF(MINT(108).EQ.2) THEN
6915           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
6916         ELSE
6917           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
6918      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
6919         ENDIF
6920         IF(MSTP(20).GT.0) THEN
6921           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(308)))**MSTP(20)
6922         ENDIF
6923         DO 170 I=1,4
6924           IF(MINT(108).EQ.2) THEN
6925             CONV=(AEM/PARP(160+I))*VINT(317)
6926           ELSEIF(VINT(154).GT.PARP(15)) THEN
6927             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
6928      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
6929           ELSE
6930             CONV=0D0
6931           ENDIF
6932           IV=MAX(1,I-1)
6933           DO 160 J=0,5
6934             SIGT(0,I,J)=CONV*SIGTMP(IV,J)
6935   160     CONTINUE
6936   170   CONTINUE
6937         DO 180 J=0,5
6938           SIGT(0,0,J)=SIGT(0,1,J)+SIGT(0,2,J)+SIGT(0,3,J)+SIGT(0,4,J)
6939   180   CONTINUE
6940  
6941 C...Both beam and target multiple processes.
6942       ELSE
6943         IF(MINT(107).EQ.2) THEN
6944           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
6945         ELSE
6946           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
6947      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
6948         ENDIF
6949         IF(MINT(108).EQ.2) THEN
6950           VINT(317)=VINT(317)*(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
6951         ELSE
6952           VINT(317)=VINT(317)*16D0*PARP(15)**2*VINT(154)**2/
6953      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
6954         ENDIF
6955         IF(MSTP(20).GT.0) THEN
6956           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)+
6957      &    VINT(308)))**MSTP(20)
6958         ENDIF
6959         DO 210 I1=1,4
6960           DO 200 I2=1,4
6961             IF(MINT(107).EQ.2) THEN
6962               CONV=(AEM/PARP(160+I1))*VINT(317)
6963             ELSEIF(VINT(154).GT.PARP(15)) THEN
6964               CONV=(AEM/PARU(1))*(KCHG(I1,1)/3D0)**2*PARP(18)**2*
6965      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
6966             ELSE
6967               CONV=0D0
6968             ENDIF
6969             IF(MINT(108).EQ.2) THEN
6970               CONV=CONV*(AEM/PARP(160+I2))
6971             ELSEIF(VINT(154).GT.PARP(15)) THEN
6972               CONV=CONV*(AEM/PARU(1))*(KCHG(I2,1)/3D0)**2*PARP(18)**2*
6973      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)
6974             ELSE
6975               CONV=0D0
6976             ENDIF
6977             IF(I1.LE.2) THEN
6978               IV=MAX(1,I2-1)
6979             ELSEIF(I2.LE.2) THEN
6980               IV=MAX(1,I1-1)
6981             ELSEIF(I1.EQ.I2) THEN
6982               IV=2*I1-2
6983             ELSE
6984               IV=5
6985             ENDIF
6986             DO 190 J=0,5
6987               JV=J
6988               IF(I2.GT.I1.AND.(J.EQ.2.OR.J.EQ.3)) JV=5-J
6989               SIGT(I1,I2,J)=CONV*SIGTMP(IV,JV)
6990   190       CONTINUE
6991   200     CONTINUE
6992   210   CONTINUE
6993         DO 230 J=0,5
6994           DO 220 I=1,4
6995             SIGT(I,0,J)=SIGT(I,1,J)+SIGT(I,2,J)+SIGT(I,3,J)+SIGT(I,4,J)
6996             SIGT(0,I,J)=SIGT(1,I,J)+SIGT(2,I,J)+SIGT(3,I,J)+SIGT(4,I,J)
6997   220     CONTINUE
6998           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
6999   230   CONTINUE
7000       ENDIF
7001  
7002 C...Scale up uniformly for Donnachie-Landshoff parametrization.
7003       IF(IPROC.EQ.21.OR.IPROC.EQ.23.OR.IPROC.EQ.25) THEN
7004         RFAC=(XPAR(IPROC)*SEPS+YPAR(IPROC)*SETA)/SIGT(0,0,0)
7005         DO 260 I1=0,N1
7006           DO 250 I2=0,N2
7007             DO 240 J=0,5
7008               SIGT(I1,I2,J)=RFAC*SIGT(I1,I2,J)
7009   240       CONTINUE
7010   250     CONTINUE
7011   260   CONTINUE
7012       ENDIF
7013  
7014       RETURN
7015       END
7016  
7017 C*********************************************************************
7018  
7019 C...PYMAXI
7020 C...Finds optimal set of coefficients for kinematical variable selection
7021 C...and the maximum of the part of the differential cross-section used
7022 C...in the event weighting.
7023  
7024       SUBROUTINE PYMAXI
7025  
7026 C...Double precision and integer declarations.
7027       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
7028       IMPLICIT INTEGER(I-N)
7029       INTEGER PYK,PYCHGE,PYCOMP
7030 C...Parameter statement to help give large particle numbers.
7031       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
7032      &KEXCIT=4000000,KDIMEN=5000000)
7033  
7034 C...User process initialization commonblock.
7035       INTEGER MAXPUP
7036       PARAMETER (MAXPUP=100)
7037       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
7038       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
7039       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
7040      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
7041      &LPRUP(MAXPUP)
7042       SAVE /HEPRUP/
7043  
7044 C...Commonblocks.
7045       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
7046       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
7047       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
7048       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
7049       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
7050       COMMON/PYINT1/MINT(400),VINT(400)
7051       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
7052       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
7053       COMMON/PYINT4/MWID(500),WIDS(500,5)
7054       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
7055       COMMON/PYINT6/PROC(0:500)
7056       CHARACTER PROC*28
7057       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
7058       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
7059       COMMON/PYTCCO/COEFX(194:380,2)
7060       COMMON/TCPARA/IRES,JRES,XMAS(3),XWID(3),YMAS(2),YWID(2)
7061       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
7062      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT6/,/PYINT7/,/PYTCCO/,
7063      &/PYTCSM/,/TCPARA/
7064 C...Local arrays, character variables and data.
7065       LOGICAL IOK
7066       CHARACTER CVAR(4)*4
7067       DIMENSION NPTS(4),MVARPT(500,4),VINTPT(500,30),SIGSPT(500),
7068      &NAREL(9),WTREL(9),WTMAT(9,9),WTRELN(9),COEFU(9),COEFO(9),
7069      &IACCMX(4),SIGSMX(4),SIGSSM(3),PMMN(2)
7070       DATA CVAR/'tau ','tau''','y*  ','cth '/
7071       DATA SIGSSM/3*0D0/
7072  
7073 C...Initial values and loop over subprocesses.
7074       NPOSI=0
7075       VINT(143)=1D0
7076       VINT(144)=1D0
7077       XSEC(0,1)=0D0
7078       ITECH=0
7079       DO 460 ISUB=1,500
7080         MINT(1)=ISUB
7081         MINT(51)=0
7082  
7083 C...Find maximum weight factors for photon flux.
7084         IF(MSUB(ISUB).EQ.1.OR.(ISUB.GE.91.AND.ISUB.LE.100)) THEN
7085           IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(2,WTGAGA)
7086         ENDIF
7087  
7088 C...Select subprocess to study: skip cases not applicable.
7089         IF(ISET(ISUB).EQ.11) THEN
7090           IF(MSUB(ISUB).NE.1) GOTO 460
7091 C...User process intialization: cross section model dependent.
7092           IF(IABS(IDWTUP).EQ.1) THEN
7093             IF(IDWTUP.GT.0.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
7094      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
7095             XSEC(ISUB,1)=1.00000001D-9*ABS(XMAXUP(KFPR(ISUB,1)))
7096           ELSE
7097             IF((IDWTUP.EQ.2.OR.IDWTUP.EQ.3).AND.
7098      &      XSECUP(KFPR(ISUB,1)).LT.0D0) CALL
7099      &      PYERRM(26,'(PYMAXI:) Negative XSECUP for user process')
7100             IF(IDWTUP.EQ.2.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
7101      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
7102             XSEC(ISUB,1)=1.00000001D-9*ABS(XSECUP(KFPR(ISUB,1)))
7103           ENDIF
7104           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7105      &    WTGAGA*XSEC(ISUB,1)
7106           NPOSI=NPOSI+1
7107           GOTO 450
7108         ELSEIF(ISUB.GE.91.AND.ISUB.LE.95) THEN
7109           CALL PYSIGH(NCHN,SIGS)
7110           XSEC(ISUB,1)=SIGS
7111           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7112      &    WTGAGA*XSEC(ISUB,1)
7113           IF(MSUB(ISUB).NE.1) GOTO 460
7114           NPOSI=NPOSI+1
7115           GOTO 450
7116         ELSEIF(ISUB.EQ.99.AND.MSUB(ISUB).EQ.1) THEN
7117           CALL PYSIGH(NCHN,SIGS)
7118           XSEC(ISUB,1)=SIGS
7119           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7120      &    WTGAGA*XSEC(ISUB,1)
7121           IF(XSEC(ISUB,1).EQ.0D0) THEN
7122             MSUB(ISUB)=0
7123           ELSE
7124             NPOSI=NPOSI+1
7125           ENDIF
7126           GOTO 450
7127         ELSEIF(ISUB.EQ.96) THEN
7128           IF(MINT(50).EQ.0) GOTO 460
7129           IF(MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0.AND.MSTP(131).LE.0)
7130      &    GOTO 460
7131           IF(MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 460
7132         ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
7133      &    ISUB.EQ.53.OR.ISUB.EQ.68) THEN
7134           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
7135         ELSEIF(ISUB.GE.381.AND.ISUB.LE.386) THEN
7136           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
7137         ELSE
7138           IF(MSUB(ISUB).NE.1) GOTO 460
7139         ENDIF
7140         ISTSB=ISET(ISUB)
7141         IF(ISUB.EQ.96) ISTSB=2
7142         IF(MSTP(122).GE.2) WRITE(MSTU(11),5000) ISUB
7143         MWTXS=0
7144         IF(MSTP(142).GE.1.AND.ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+
7145      &  MSUB(94)+MSUB(95).EQ.0) MWTXS=1
7146  
7147 C...Find resonances (explicit or implicit in cross-section).
7148         MINT(72)=0
7149         KFR1=0
7150         IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
7151           KFR1=KFPR(ISUB,1)
7152         ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165
7153      &    .OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
7154           KFR1=23
7155         ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172
7156      &    .OR.ISUB.EQ.177) THEN
7157           KFR1=24
7158         ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
7159           KFR1=25
7160           IF(MSTP(46).EQ.5) THEN
7161             KFR1=89
7162             PMAS(89,1)=PARP(45)
7163             PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
7164           ENDIF
7165         ENDIF
7166         CKMX=CKIN(2)
7167         IF(CKMX.LE.0D0) CKMX=VINT(1)
7168         KCR1=PYCOMP(KFR1)
7169         IF(KFR1.NE.0) THEN
7170           IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
7171      &    CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
7172         ENDIF
7173         IF(KFR1.NE.0) THEN
7174           TAUR1=PMAS(KCR1,1)**2/VINT(2)
7175           GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
7176           MINT(72)=1
7177           MINT(73)=KFR1
7178           VINT(73)=TAUR1
7179           VINT(74)=GAMR1
7180         ENDIF
7181         KFR2=0
7182         KFR3=0
7183         IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.ISUB.EQ.195.OR.
7184      $  (ISUB.GE.361.AND.ISUB.LE.380))
7185      $  THEN
7186           KFR2=23
7187           IF(ISUB.EQ.141) THEN
7188             KCR2=PYCOMP(KFR2)
7189             IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
7190      &       CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) THEN
7191               KFR2=0
7192             ELSE
7193               TAUR2=PMAS(KCR2,1)**2/VINT(2)            
7194               GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
7195               MINT(72)=2
7196               MINT(74)=KFR2
7197               VINT(75)=TAUR2
7198               VINT(76)=GAMR2
7199             ENDIF
7200           ELSEIF(ITECH.EQ.0) THEN
7201             ALPRHT=2.16D0*(3D0/DBLE(ITCM(1)))
7202             ITECH=1
7203             KFR1=KTECHN+113              
7204             KCR1=PYCOMP(KFR1)
7205             KFR2=KTECHN+223
7206             KCR2=PYCOMP(KFR2)
7207             KFR3=KTECHN+115
7208             KCR3=PYCOMP(KFR3)
7209             IRES=0
7210 C...Order the resonances
7211             IF(PMAS(KCR3,1).LT.PMAS(KCR2,1)) THEN
7212               KCT=KCR3
7213               KCR3=KCR2
7214               KCR2=KCT
7215             ENDIF
7216             IF(PMAS(KCR3,1).LT.PMAS(KCR1,1)) THEN
7217               KCT=KCR3
7218               KCR3=KCR1
7219               KCR1=KCT
7220             ENDIF
7221             IF(PMAS(KCR2,1).LT.PMAS(KCR1,1)) THEN
7222               KCT=KCR2
7223               KCR2=KCR1
7224               KCR1=KCT
7225             ENDIF
7226             DO 101 I=1,3
7227               IF(I.EQ.1) THEN
7228                 SHN0=PMAS(KCR1,1)**2
7229               ELSEIF(I.EQ.2) THEN
7230                 IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LE.1D-6) GOTO 101
7231                 SHN0=PMAS(KCR2,1)**2
7232               ELSEIF(I.EQ.3) THEN
7233                 IF(ABS(PMAS(KCR3,1)-PMAS(KCR3,1)).LE.1D-6) GOTO 101
7234                 SHN0=PMAS(KCR3,1)**2
7235               ENDIF
7236               AEM=PYALEM(SHN0)
7237               FAR=SQRT(AEM/ALPRHT)              
7238               SHN=SHN0*(1D0-FAR)
7239               CALL PYTECM(SHN,S1,WIDO,1)
7240               RES=SHN-S1
7241               SHN=S1*.99D0
7242               SHSTEP=2D0
7243  102          SHN=SHN+SHSTEP
7244               CALL PYTECM(SHN,S1,WIDO,1)
7245               IF(RES.LT.0D0.AND.SHN-S1.GE.0D0) THEN
7246                 IOK=.FALSE.
7247                 IF(IRES.GT.0) THEN
7248                   IF(ABS(SQRT(S1)-XMAS(IRES)).GT.1D-6) IOK=.TRUE.
7249                 ELSEIF(IRES.EQ.0) THEN
7250                   IOK=.TRUE.
7251                 ENDIF
7252                 IF(IOK) THEN
7253                   IRES=IRES+1
7254                   XMAS(IRES)=SQRT(S1)
7255                   XWID(IRES)=WIDO
7256                 ENDIF
7257               ENDIF
7258               RES=SHN-S1
7259               IF(IRES.LT.3.AND.SHN.LT.SHN0*(1D0+FAR)) GOTO 102
7260  101        CONTINUE
7261             JRES=0
7262             KFR1=KTECHN+213              
7263             KCR1=PYCOMP(KFR1)
7264             KFR2=KTECHN+215
7265             KCR2=PYCOMP(KFR2)
7266             IF(PMAS(KCR2,1).LT.PMAS(KCR1,1)) THEN
7267               KCT=KCR2
7268               KCR2=KCR1
7269               KCR1=KCT
7270             ENDIF
7271             DO 103 I=1,2
7272               IF(I.EQ.1) THEN
7273                 SHN0=PMAS(KCR1,1)**2
7274               ELSEIF(I.EQ.2) THEN
7275                 IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LE.1D-6) GOTO 103
7276                 SHN0=PMAS(KCR2,1)**2
7277               ENDIF
7278               AEM=PYALEM(SHN0)
7279               FAR=SQRT(AEM/ALPRHT)              
7280               SHN=SHN0*(1D0-FAR)
7281               CALL PYTECM(SHN,S1,WIDO,2)
7282               RES=SHN-S1
7283               SHN=S1*.99D0
7284               SHSTEP=2D0
7285  104          SHN=SHN+SHSTEP
7286               CALL PYTECM(SHN,S1,WIDO,2)
7287               IF(RES.LT.0D0.AND.SHN-S1.GE.0D0) THEN
7288                 IOK=.FALSE.
7289                 IF(JRES.GT.0) THEN
7290                   IF(ABS(SQRT(S1)-XMAS(IRES)).GT.1D-6) IOK=.TRUE.
7291                 ELSEIF(JRES.EQ.0) THEN
7292                   IOK=.TRUE.
7293                 ENDIF
7294                 IF(IOK) THEN
7295                   JRES=JRES+1
7296                   YMAS(JRES)=SQRT(S1)
7297                   YWID(JRES)=WIDO
7298                 ENDIF
7299               ENDIF
7300               RES=SHN-S1
7301               IF(JRES.LT.2.AND.SHN.LT.SHN0*(1D0+FAR)) GOTO 104
7302  103        CONTINUE
7303           ENDIF
7304           IF(ISUB.EQ.194.OR.(ISUB.GE.361.AND.ISUB.LE.368).OR.
7305      &     ISUB.EQ.379.OR.ISUB.EQ.380) THEN
7306             MINT(72)=IRES
7307             IF(IRES.GE.1) THEN
7308               VINT(73)=XMAS(1)**2/VINT(2)
7309               VINT(74)=XMAS(1)*XWID(1)/VINT(2)
7310               TAUR1=VINT(73)
7311               GAMR1=VINT(74)
7312               XM1=XMAS(1)
7313               XG1=XWID(1)
7314               KFR1=1
7315             ENDIF
7316             IF(IRES.GE.2) THEN
7317               VINT(75)=XMAS(2)**2/VINT(2)
7318               VINT(76)=XMAS(2)*XWID(2)/VINT(2)
7319               TAUR2=VINT(75)
7320               GAMR2=VINT(76)
7321               XM2=XMAS(2)
7322               XG2=XWID(2)
7323               KFR2=2
7324             ENDIF
7325             IF(IRES.EQ.3) THEN
7326               VINT(77)=XMAS(3)**2/VINT(2)
7327               VINT(78)=XMAS(3)*XWID(3)/VINT(2)
7328               TAUR3=VINT(77)
7329               GAMR3=VINT(78)
7330               XM3=XMAS(3)
7331               XG3=XWID(3)
7332               KFR3=3
7333             ENDIF
7334 C...Charged current:  rho+- and a+-
7335           ELSEIF(ISUB.EQ.195.OR.ISUB.GE.370.AND.ISUB.LE.378) THEN
7336             MINT(72)=IRES
7337             IF(JRES.GE.1) THEN
7338               VINT(73)=YMAS(1)**2/VINT(2)
7339               VINT(74)=YMAS(1)*YWID(1)/VINT(2)
7340               KFR1=1
7341               TAUR1=VINT(73)
7342               GAMR1=VINT(74)
7343               XM1=YMAS(1)
7344               XG1=YWID(1)
7345             ENDIF
7346             IF(JRES.GE.2) THEN
7347               VINT(75)=YMAS(2)**2/VINT(2)
7348               VINT(76)=YMAS(2)*YWID(2)/VINT(2)
7349               KFR2=2
7350               TAUR2=VINT(73)
7351               GAMR2=VINT(74)
7352               XM2=YMAS(2)
7353               XG2=YWID(2)
7354             ENDIF
7355             KFR3=0
7356           ENDIF
7357           IF(ISUB.NE.141) THEN
7358             IF(KFR1.NE.0.AND.(CKIN(1).GT.(XM1+20D0*XG1)
7359      &       .OR.CKMX.LT.(XM1-20D0*XG1))) KFR1=0
7360             IF(KFR2.NE.0.AND.(CKIN(1).GT.(XM2+20D0*XG2)
7361      &       .OR.CKMX.LT.(XM2-20D0*XG2))) KFR2=0
7362             IF(KFR3.NE.0.AND.(CKIN(1).GT.(XM3+20D0*XG3)
7363      &       .OR.CKMX.LT.(XM3-20D0*XG3))) KFR3=0
7364             IF(KFR3.NE.0.AND.KFR2.NE.0.AND.KFR1.NE.0) THEN
7365
7366             ELSEIF(KFR1.NE.0.AND.KFR2.NE.0) THEN
7367               MINT(72)=2
7368             ELSEIF(KFR1.NE.0.AND.KFR3.NE.0) THEN
7369               MINT(72)=2
7370               MINT(74)=KFR3
7371               VINT(75)=TAUR3
7372               VINT(76)=GAMR3
7373             ELSEIF(KFR2.NE.0.AND.KFR3.NE.0) THEN
7374               MINT(72)=2
7375               MINT(73)=KFR2
7376               VINT(73)=TAUR2
7377               VINT(74)=GAMR2
7378               MINT(74)=KFR3
7379               VINT(75)=TAUR3
7380               VINT(76)=GAMR3
7381             ELSEIF(KFR1.NE.0) THEN
7382               MINT(72)=1
7383             ELSEIF(KFR2.NE.0) THEN
7384               MINT(72)=1
7385               MINT(73)=KFR2
7386               VINT(73)=TAUR2
7387               VINT(74)=GAMR2
7388             ELSEIF(KFR3.NE.0) THEN
7389               MINT(72)=1
7390               MINT(73)=KFR3
7391               VINT(73)=TAUR3
7392               VINT(74)=GAMR3
7393             ELSE
7394               MINT(72)=0
7395             ENDIF
7396           ELSE
7397             IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
7398
7399             ELSEIF(KFR2.NE.0) THEN
7400               KFR1=KFR2
7401               TAUR1=TAUR2
7402               GAMR1=GAMR2
7403               MINT(72)=1
7404               MINT(73)=KFR1
7405               VINT(73)=TAUR1
7406               VINT(74)=GAMR1
7407               KFR2=0
7408             ELSE
7409               MINT(72)=0
7410             ENDIF
7411           ENDIF
7412         ENDIF
7413  
7414 C...Find product masses and minimum pT of process.
7415         SQM3=0D0
7416         SQM4=0D0
7417         MINT(71)=0
7418         VINT(71)=CKIN(3)
7419         VINT(80)=1D0
7420         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
7421           NBW=0
7422           DO 110 I=1,2
7423             PMMN(I)=0D0
7424             IF(KFPR(ISUB,I).EQ.0) THEN
7425             ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
7426      &        PARP(41)) THEN
7427               IF(I.EQ.1) SQM3=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
7428               IF(I.EQ.2) SQM4=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
7429             ELSE
7430               NBW=NBW+1
7431 C...This prevents SUSY/t particles from becoming too light.
7432               KFLW=KFPR(ISUB,I)
7433               IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
7434                 KCW=PYCOMP(KFLW)
7435                 PMMN(I)=PMAS(KCW,1)
7436                 DO 100 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
7437                   IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
7438                     PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
7439      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
7440                     IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
7441      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
7442                     PMMN(I)=MIN(PMMN(I),PMSUM)
7443                   ENDIF
7444   100           CONTINUE
7445               ELSEIF(KFLW.EQ.6) THEN
7446                 PMMN(I)=PMAS(24,1)+PMAS(5,1)
7447               ENDIF
7448             ENDIF
7449   110     CONTINUE
7450           IF(NBW.GE.1) THEN
7451             CKIN41=CKIN(41)
7452             CKIN43=CKIN(43)
7453             CKIN(41)=MAX(PMMN(1),CKIN(41))
7454             CKIN(43)=MAX(PMMN(2),CKIN(43))
7455             CALL PYOFSH(3,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
7456             CKIN(41)=CKIN41
7457             CKIN(43)=CKIN43
7458             IF(MINT(51).EQ.1) THEN
7459               WRITE(MSTU(11),5100) ISUB
7460               MSUB(ISUB)=0
7461               GOTO 460
7462             ENDIF
7463             SQM3=PQM3**2
7464             SQM4=PQM4**2
7465           ENDIF
7466           IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
7467           IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
7468           IF(ISUB.EQ.96.AND.MSTP(82).LE.1) THEN
7469             VINT(71)=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
7470           ELSEIF(ISUB.EQ.96) THEN
7471             VINT(71)=0.08D0*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
7472           ENDIF
7473         ENDIF
7474         VINT(63)=SQM3
7475         VINT(64)=SQM4
7476  
7477 C...Prepare for additional variable choices in 2 -> 3.
7478         IF(ISTSB.EQ.5) THEN
7479           VINT(201)=0D0
7480           IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
7481           VINT(206)=VINT(201)
7482           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
7483           VINT(204)=PMAS(23,1)
7484           IF(ISUB.EQ.124.OR.ISUB.EQ.351) VINT(204)=PMAS(24,1)
7485           IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
7486           IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182
7487      &    .OR.ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
7488      &         VINT(204)=VINT(201)
7489           VINT(209)=VINT(204)
7490           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
7491         ENDIF
7492  
7493 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
7494         IPEAK7=0
7495         NPTS(1)=2+2*MINT(72)
7496         IF(MINT(47).EQ.1) THEN
7497           IF(ISTSB.EQ.1.OR.ISTSB.EQ.2) NPTS(1)=1
7498         ELSEIF(MINT(47).GE.5) THEN
7499           IF(ISTSB.LE.2.OR.ISTSB.GT.5) THEN
7500             NPTS(1)=NPTS(1)+1
7501             IPEAK7=1
7502           ENDIF
7503         ENDIF
7504         NPTS(2)=1
7505         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
7506           IF(MINT(47).GE.2) NPTS(2)=2
7507           IF(MINT(47).GE.5) NPTS(2)=3
7508         ENDIF
7509         NPTS(3)=1
7510         IF(MINT(47).EQ.4.OR.MINT(47).EQ.5) THEN
7511           NPTS(3)=3
7512           IF(MINT(45).EQ.3) NPTS(3)=NPTS(3)+1
7513           IF(MINT(46).EQ.3) NPTS(3)=NPTS(3)+1
7514         ENDIF
7515         NPTS(4)=1
7516         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5
7517         NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
7518  
7519 C...Reset coefficients of cross-section weighting.
7520         DO 120 J=1,20
7521           COEF(ISUB,J)=0D0
7522   120   CONTINUE
7523         IF(ISUB.EQ.194.OR.ISUB.EQ.195.OR.(ISUB.GE.361
7524      &   .AND.ISUB.LE.380)) THEN
7525           DO 125 J=1,2
7526             COEFX(ISUB,J)=0D0
7527  125      CONTINUE
7528         ENDIF
7529         COEF(ISUB,1)=1D0
7530         COEF(ISUB,8)=0.5D0
7531         COEF(ISUB,9)=0.5D0
7532         COEF(ISUB,13)=1D0
7533         COEF(ISUB,18)=1D0
7534         MCTH=0
7535         MTAUP=0
7536         METAUP=0
7537         VINT(23)=0D0
7538         VINT(26)=0D0
7539         SIGSAM=0D0
7540  
7541 C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
7542 C...in grid of phase space points.
7543         CALL PYKLIM(1)
7544         METAU=MINT(51)
7545         NACC=0
7546         DO 150 ITRY=1,NTRY
7547           MINT(51)=0
7548           IF(METAU.EQ.1) GOTO 150
7549           IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
7550             MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
7551             IF(MINT(72).LE.2.AND.MTAU.GT.2+2*MINT(72)) THEN
7552               MTAU=7
7553             ELSEIF(MINT(72).EQ.3.AND.IPEAK7.EQ.0.AND.MTAU.GE.7) THEN
7554               MTAU=MTAU+1              
7555             ENDIF
7556             RTAU=0.5D0
7557 C...Special case when both resonances have same mass,
7558 C...as is often the case in process 194.
7559 c           IF(MINT(72).GE.2) THEN
7560 c             IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LT.
7561 c    &        0.01D0*(PMAS(KCR2,1)+PMAS(KCR1,1))) THEN
7562 c               IF(MTAU.EQ.3.OR.MTAU.EQ.4) THEN
7563 c                 RTAU=0.4D0
7564 c               ELSEIF(MTAU.EQ.5.OR.MTAU.EQ.6) THEN
7565 c                 RTAU=0.6D0
7566 c               ENDIF
7567 c             ENDIF
7568 c           ENDIF
7569             CALL PYKMAP(1,MTAU,RTAU)
7570             IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
7571             METAUP=MINT(51)
7572           ENDIF
7573           IF(METAUP.EQ.1) GOTO 150
7574           IF(ISTSB.GE.3.AND.ISTSB.LE.5.AND.MOD(ITRY-1,NPTS(3)*NPTS(4))
7575      &    .EQ.0) THEN
7576             MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
7577             CALL PYKMAP(4,MTAUP,0.5D0)
7578           ENDIF
7579           IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) THEN
7580             CALL PYKLIM(2)
7581             MEYST=MINT(51)
7582           ENDIF
7583           IF(MEYST.EQ.1) GOTO 150
7584           IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
7585             MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
7586             IF(MYST.EQ.4.AND.MINT(45).NE.3) MYST=5
7587             CALL PYKMAP(2,MYST,0.5D0)
7588             CALL PYKLIM(3)
7589             MECTH=MINT(51)
7590           ENDIF
7591           IF(MECTH.EQ.1) GOTO 150
7592           IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
7593             MCTH=1+MOD(ITRY-1,NPTS(4))
7594             CALL PYKMAP(3,MCTH,0.5D0)
7595           ENDIF
7596           IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1D0-VINT(23)**2)
7597  
7598 C...Store position and limits.
7599           MINT(51)=0
7600           CALL PYKLIM(0)
7601           IF(MINT(51).EQ.1) GOTO 150
7602           NACC=NACC+1
7603           MVARPT(NACC,1)=MTAU
7604           MVARPT(NACC,2)=MTAUP
7605           MVARPT(NACC,3)=MYST
7606           MVARPT(NACC,4)=MCTH
7607           DO 130 J=1,30
7608             VINTPT(NACC,J)=VINT(10+J)
7609   130     CONTINUE
7610  
7611 C...Normal case: calculate cross-section.
7612           IF(ISTSB.NE.5) THEN
7613             CALL PYSIGH(NCHN,SIGS)
7614             IF(MWTXS.EQ.1) THEN
7615               CALL PYEVWT(WTXS)
7616               SIGS=WTXS*SIGS
7617             ENDIF
7618  
7619 C..2 -> 3: find highest value out of a number of tries.
7620           ELSE
7621             SIGS=0D0
7622             DO 140 IKIN3=1,MSTP(129)
7623               CALL PYKMAP(5,0,0D0)
7624               IF(MINT(51).EQ.1) GOTO 140
7625               CALL PYSIGH(NCHN,SIGTMP)
7626               IF(MWTXS.EQ.1) THEN
7627                 CALL PYEVWT(WTXS)
7628                 SIGTMP=WTXS*SIGTMP
7629               ENDIF
7630               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
7631   140       CONTINUE
7632           ENDIF
7633  
7634 C...Store cross-section.
7635           SIGSPT(NACC)=SIGS
7636           IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
7637           IF(MSTP(122).GE.2) WRITE(MSTU(11),5200) MTAU,MYST,MCTH,MTAUP,
7638      &    VINT(21),VINT(22),VINT(23),VINT(26),SIGS
7639   150   CONTINUE
7640         IF(NACC.EQ.0) THEN
7641           WRITE(MSTU(11),5100) ISUB
7642           MSUB(ISUB)=0
7643           GOTO 460
7644         ELSEIF(SIGSAM.EQ.0D0) THEN
7645           WRITE(MSTU(11),5300) ISUB
7646           MSUB(ISUB)=0
7647           GOTO 460
7648         ENDIF
7649         IF(ISUB.NE.96) NPOSI=NPOSI+1
7650  
7651 C...Calculate integrals in tau over maximal phase space limits.
7652         TAUMIN=VINT(11)
7653         TAUMAX=VINT(31)
7654         ATAU1=LOG(TAUMAX/TAUMIN)
7655         IF(NPTS(1).GE.2) THEN
7656           ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
7657         ENDIF
7658         IF(NPTS(1).GE.4) THEN
7659           ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
7660           ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
7661      &    GAMR1
7662         ENDIF
7663         IF(NPTS(1).GE.6) THEN
7664           ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
7665           ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
7666      &    GAMR2
7667         ENDIF
7668         IF(NPTS(1).GE.8) THEN
7669           ATAU8=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR3)/(TAUMAX+TAUR3))/TAUR3
7670           ATAU9=(ATAN((TAUMAX-TAUR3)/GAMR3)-ATAN((TAUMIN-TAUR3)/GAMR3))/
7671      &    GAMR3
7672         ENDIF
7673         IF(IPEAK7.EQ.1) THEN
7674           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
7675         ENDIF
7676  
7677 C...Reset. Sum up cross-sections in points calculated.
7678         DO 320 IVAR=1,4
7679           IF(NPTS(IVAR).EQ.1) GOTO 320
7680           IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 320
7681           NBIN=NPTS(IVAR)
7682           DO 170 J1=1,NBIN
7683             NAREL(J1)=0
7684             WTREL(J1)=0D0
7685             COEFU(J1)=0D0
7686             DO 160 J2=1,NBIN
7687               WTMAT(J1,J2)=0D0
7688   160       CONTINUE
7689   170     CONTINUE
7690           DO 180 IACC=1,NACC
7691             IBIN=MVARPT(IACC,IVAR)
7692             IF(IVAR.EQ.1) THEN
7693               IF(IBIN.GT.7.AND.IPEAK7.EQ.0) THEN
7694                 IBIN=IBIN-1
7695               ELSEIF(IBIN.EQ.7.AND.IPEAK7.EQ.1.AND.MSTP(72).LT.3) THEN
7696                 IBIN=3+2*MINT(72)
7697               ENDIF
7698             ENDIF
7699             IF(IVAR.EQ.3.AND.IBIN.EQ.5.AND.MINT(45).NE.3) IBIN=4
7700             NAREL(IBIN)=NAREL(IBIN)+1
7701             WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
7702  
7703 C...Sum up tau cross-section pieces in points used.
7704             IF(IVAR.EQ.1) THEN
7705               TAU=VINTPT(IACC,11)
7706               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
7707               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
7708               IF(NBIN.GE.4) THEN
7709                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
7710                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
7711      &          ((TAU-TAUR1)**2+GAMR1**2)
7712               ENDIF
7713               IF(NBIN.GE.6) THEN
7714                 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
7715                 WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
7716      &          ((TAU-TAUR2)**2+GAMR2**2)
7717               ENDIF
7718               IF(MINT(72).LE.2.AND.IPEAK7.EQ.1) THEN
7719                 WTMAT(IBIN,3+2*MINT(72))=WTMAT(IBIN,3+2*MINT(72))
7720      &           +(ATAU1/ATAU7)*TAU/MAX(2D-10,1D0-TAU)
7721               ELSEIF(MINT(72).EQ.3.AND.IPEAK7.EQ.1) THEN
7722                 WTMAT(IBIN,7)=WTMAT(IBIN,7)
7723      &           +(ATAU1/ATAU7)*TAU/MAX(2D-10,1D0-TAU)
7724               ENDIF
7725               IF(MINT(72).EQ.3) THEN
7726                 WTMAT(IBIN,7+IPEAK7)=WTMAT(IBIN,7+IPEAK7)
7727      &           +(ATAU1/ATAU8)/(TAU+TAUR3)
7728                 WTMAT(IBIN,8+IPEAK7)=WTMAT(IBIN,8+IPEAK7)
7729      &           +(ATAU1/ATAU9)*TAU/((TAU-TAUR3)**2+GAMR3**2)
7730               ENDIF
7731 C...Sum up tau' cross-section pieces in points used.
7732             ELSEIF(IVAR.EQ.2) THEN
7733               TAU=VINTPT(IACC,11)
7734               TAUP=VINTPT(IACC,16)
7735               TAUPMN=VINTPT(IACC,6)
7736               TAUPMX=VINTPT(IACC,26)
7737               ATAUP1=LOG(TAUPMX/TAUPMN)
7738               ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
7739               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
7740               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*
7741      &        (1D0-TAU/TAUP)**3/TAUP
7742               IF(NBIN.GE.3) THEN
7743                 ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
7744                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAUP1/ATAUP3)*
7745      &          TAUP/MAX(2D-10,1D0-TAUP)
7746               ENDIF
7747  
7748 C...Sum up y* cross-section pieces in points used.
7749             ELSEIF(IVAR.EQ.3) THEN
7750               YST=VINTPT(IACC,12)
7751               YSTMIN=VINTPT(IACC,2)
7752               YSTMAX=VINTPT(IACC,22)
7753               AYST0=YSTMAX-YSTMIN
7754               AYST1=0.5D0*(YSTMAX-YSTMIN)**2
7755               AYST2=AYST1
7756               AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
7757               WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
7758               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST2)*(YSTMAX-YST)
7759               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
7760               IF(MINT(45).EQ.3) THEN
7761                 TAUE=VINTPT(IACC,11)
7762                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
7763                 YST0=-0.5D0*LOG(TAUE)
7764                 AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
7765      &          MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
7766                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(AYST0/AYST4)/
7767      &          MAX(1D-10,1D0-EXP(YST-YST0))
7768               ENDIF
7769               IF(MINT(46).EQ.3) THEN
7770                 TAUE=VINTPT(IACC,11)
7771                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
7772                 YST0=-0.5D0*LOG(TAUE)
7773                 AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
7774      &          MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
7775                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(AYST0/AYST5)/
7776      &          MAX(1D-10,1D0-EXP(-YST-YST0))
7777               ENDIF
7778  
7779 C...Sum up cos(theta-hat) cross-section pieces in points used.
7780             ELSE
7781               RM34=MAX(1D-20,2D0*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2)
7782               RSQM=1D0+RM34
7783               CTHMAX=SQRT(1D0-4D0*VINT(71)**2/(TAUMAX*VINT(2)))
7784               CTHMIN=-CTHMAX
7785               IF(CTHMAX.GT.0.9999D0) RM34=MAX(RM34,2D0*VINT(71)**2/
7786      &        (TAUMAX*VINT(2)))
7787               ACTH1=CTHMAX-CTHMIN
7788               ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
7789               ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
7790               ACTH4=1D0/MAX(RM34,RSQM-CTHMAX)-1D0/MAX(RM34,RSQM-CTHMIN)
7791               ACTH5=1D0/MAX(RM34,RSQM+CTHMIN)-1D0/MAX(RM34,RSQM+CTHMAX)
7792               CTH=VINTPT(IACC,13)
7793               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
7794               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/
7795      &        MAX(RM34,RSQM-CTH)
7796               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/
7797      &        MAX(RM34,RSQM+CTH)
7798               WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/
7799      &        MAX(RM34,RSQM-CTH)**2
7800               WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/
7801      &        MAX(RM34,RSQM+CTH)**2
7802             ENDIF
7803   180     CONTINUE
7804  
7805 C...Check that equation system solvable.
7806           IF(MSTP(122).GE.2) WRITE(MSTU(11),5400) CVAR(IVAR)
7807           MSOLV=1
7808           WTRELS=0D0
7809           DO 190 IBIN=1,NBIN
7810             IF(MSTP(122).GE.2) WRITE(MSTU(11),5500) (WTMAT(IBIN,IRED),
7811      &      IRED=1,NBIN),WTREL(IBIN)
7812             IF(NAREL(IBIN).EQ.0) MSOLV=0
7813             WTRELS=WTRELS+WTREL(IBIN)
7814   190     CONTINUE
7815           IF(ABS(WTRELS).LT.1D-20) MSOLV=0
7816  
7817 C...Solve to find relative importance of cross-section pieces.
7818           IF(MSOLV.EQ.1) THEN
7819             DO 200 IBIN=1,NBIN
7820               WTRELN(IBIN)=MAX(0.1D0,WTREL(IBIN)/WTRELS)
7821   200       CONTINUE
7822             DO 230 IRED=1,NBIN-1
7823               DO 220 IBIN=IRED+1,NBIN
7824                 IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
7825                   MSOLV=0
7826                   GOTO 260
7827                 ENDIF
7828                 RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
7829                 WTREL(IBIN)=WTREL(IBIN)-RQT*WTREL(IRED)
7830                 DO 210 ICOE=IRED,NBIN
7831                   WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-RQT*WTMAT(IRED,ICOE)
7832   210           CONTINUE
7833   220         CONTINUE
7834   230       CONTINUE
7835             DO 250 IRED=NBIN,1,-1
7836               DO 240 ICOE=IRED+1,NBIN
7837                 WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
7838   240         CONTINUE
7839               COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
7840   250       CONTINUE
7841           ENDIF
7842  
7843 C...Share evenly if failure.
7844   260     IF(MSOLV.EQ.0) THEN
7845             DO 270 IBIN=1,NBIN
7846               COEFU(IBIN)=1D0
7847               WTRELN(IBIN)=0.1D0
7848               IF(WTRELS.GT.0D0) WTRELN(IBIN)=MAX(0.1D0,
7849      &        WTREL(IBIN)/WTRELS)
7850   270       CONTINUE
7851           ENDIF
7852  
7853 C...Normalize coefficients, with piece shared democratically.
7854           COEFSU=0D0
7855           WTRELS=0D0
7856           DO 280 IBIN=1,NBIN
7857             COEFU(IBIN)=MAX(0D0,COEFU(IBIN))
7858             COEFSU=COEFSU+COEFU(IBIN)
7859             WTRELS=WTRELS+WTRELN(IBIN)
7860   280     CONTINUE
7861           IF(COEFSU.GT.0D0) THEN
7862             DO 290 IBIN=1,NBIN
7863               COEFO(IBIN)=PARP(122)/NBIN+(1D0-PARP(122))*0.5D0*
7864      &        (COEFU(IBIN)/COEFSU+WTRELN(IBIN)/WTRELS)
7865   290       CONTINUE
7866           ELSE
7867             DO 300 IBIN=1,NBIN
7868               COEFO(IBIN)=1D0/NBIN
7869   300       CONTINUE
7870           ENDIF
7871           IF(IVAR.EQ.1) IOFF=0
7872           IF(IVAR.EQ.2) IOFF=17
7873           IF(IVAR.EQ.3) IOFF=7
7874           IF(IVAR.EQ.4) IOFF=12
7875           DO 310 IBIN=1,NBIN
7876             ICOF=IOFF+IBIN
7877             IF(IVAR.EQ.1) THEN
7878               IF(IBIN.EQ.NBIN.AND.(MINT(72).LE.2.AND.IPEAK7.EQ.1)) THEN
7879                 ICOF=7
7880               ENDIF
7881             ENDIF
7882             IF(IVAR.EQ.3.AND.IBIN.EQ.4.AND.MINT(45).NE.3) ICOF=ICOF+1
7883             IF(IVAR.EQ.1.AND.IBIN.GE.7+IPEAK7.AND.MINT(72).EQ.3) THEN
7884               COEFX(ISUB,IBIN-6-IPEAK7)=COEFO(IBIN)
7885             ELSE
7886               COEF(ISUB,ICOF)=COEFO(IBIN)
7887             ENDIF
7888   310     CONTINUE
7889           
7890           IF(MSTP(122).GE.2) WRITE(MSTU(11),5600) CVAR(IVAR),
7891      &       (COEFO(IBIN),IBIN=1,NBIN)
7892
7893   320   CONTINUE
7894  
7895 C...Find two most promising maxima among points previously determined.
7896         DO 330 J=1,4
7897           IACCMX(J)=0
7898           SIGSMX(J)=0D0
7899   330   CONTINUE
7900         NMAX=0
7901         DO 390 IACC=1,NACC
7902           DO 340 J=1,30
7903             VINT(10+J)=VINTPT(IACC,J)
7904   340     CONTINUE
7905           IF(ISTSB.NE.5) THEN
7906             CALL PYSIGH(NCHN,SIGS)
7907             IF(MWTXS.EQ.1) THEN
7908               CALL PYEVWT(WTXS)
7909               SIGS=WTXS*SIGS
7910             ENDIF
7911           ELSE
7912             SIGS=0D0
7913             DO 350 IKIN3=1,MSTP(129)
7914               CALL PYKMAP(5,0,0D0)
7915               IF(MINT(51).EQ.1) GOTO 350
7916               CALL PYSIGH(NCHN,SIGTMP)
7917               IF(MWTXS.EQ.1) THEN
7918                 CALL PYEVWT(WTXS)
7919                 SIGTMP=WTXS*SIGTMP
7920               ENDIF
7921               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
7922   350       CONTINUE
7923           ENDIF
7924           IEQ=0
7925           DO 360 IMV=1,NMAX
7926             IF(ABS(SIGS-SIGSMX(IMV)).LT.1D-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
7927   360     CONTINUE
7928           IF(IEQ.EQ.0) THEN
7929             DO 370 IMV=NMAX,1,-1
7930               IIN=IMV+1
7931               IF(SIGS.LE.SIGSMX(IMV)) GOTO 380
7932               IACCMX(IMV+1)=IACCMX(IMV)
7933               SIGSMX(IMV+1)=SIGSMX(IMV)
7934   370       CONTINUE
7935             IIN=1
7936   380       IACCMX(IIN)=IACC
7937             SIGSMX(IIN)=SIGS
7938             IF(NMAX.LE.1) NMAX=NMAX+1
7939           ENDIF
7940   390   CONTINUE
7941  
7942 C...Read out starting position for search.
7943         IF(MSTP(122).GE.2) WRITE(MSTU(11),5700)
7944         SIGSAM=SIGSMX(1)
7945         DO 440 IMAX=1,NMAX
7946           IACC=IACCMX(IMAX)
7947           MTAU=MVARPT(IACC,1)
7948           MTAUP=MVARPT(IACC,2)
7949           MYST=MVARPT(IACC,3)
7950           MCTH=MVARPT(IACC,4)
7951           VTAU=0.5D0
7952           VYST=0.5D0
7953           VCTH=0.5D0
7954           VTAUP=0.5D0
7955  
7956 C...Starting point and step size in parameter space.
7957           DO 430 IRPT=1,2
7958             DO 420 IVAR=1,4
7959               IF(NPTS(IVAR).EQ.1) GOTO 420
7960               IF(IVAR.EQ.1) VVAR=VTAU
7961               IF(IVAR.EQ.2) VVAR=VTAUP
7962               IF(IVAR.EQ.3) VVAR=VYST
7963               IF(IVAR.EQ.4) VVAR=VCTH
7964               IF(IVAR.EQ.1) MVAR=MTAU
7965               IF(IVAR.EQ.2) MVAR=MTAUP
7966               IF(IVAR.EQ.3) MVAR=MYST
7967               IF(IVAR.EQ.4) MVAR=MCTH
7968               IF(IRPT.EQ.1) VDEL=0.1D0
7969               IF(IRPT.EQ.2) VDEL=MAX(0.01D0,MIN(0.05D0,VVAR-0.02D0,
7970      &        0.98D0-VVAR))
7971               IF(IRPT.EQ.1) VMAR=0.02D0
7972               IF(IRPT.EQ.2) VMAR=0.002D0
7973               IMOV0=1
7974               IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
7975               DO 410 IMOV=IMOV0,8
7976  
7977 C...Define new point in parameter space.
7978                 IF(IMOV.EQ.0) THEN
7979                   INEW=2
7980                   VNEW=VVAR
7981                 ELSEIF(IMOV.EQ.1) THEN
7982                   INEW=3
7983                   VNEW=VVAR+VDEL
7984                 ELSEIF(IMOV.EQ.2) THEN
7985                   INEW=1
7986                   VNEW=VVAR-VDEL
7987                 ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
7988      &            VVAR+2D0*VDEL.LT.1D0-VMAR) THEN
7989                   VVAR=VVAR+VDEL
7990                   SIGSSM(1)=SIGSSM(2)
7991                   SIGSSM(2)=SIGSSM(3)
7992                   INEW=3
7993                   VNEW=VVAR+VDEL
7994                 ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
7995      &            VVAR-2D0*VDEL.GT.VMAR) THEN
7996                   VVAR=VVAR-VDEL
7997                   SIGSSM(3)=SIGSSM(2)
7998                   SIGSSM(2)=SIGSSM(1)
7999                   INEW=1
8000                   VNEW=VVAR-VDEL
8001                 ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
8002                   VDEL=0.5D0*VDEL
8003                   VVAR=VVAR+VDEL
8004                   SIGSSM(1)=SIGSSM(2)
8005                   INEW=2
8006                   VNEW=VVAR
8007                 ELSE
8008                   VDEL=0.5D0*VDEL
8009                   VVAR=VVAR-VDEL
8010                   SIGSSM(3)=SIGSSM(2)
8011                   INEW=2
8012                   VNEW=VVAR
8013                 ENDIF
8014  
8015 C...Convert to relevant variables and find derived new limits.
8016                 ILERR=0
8017                 IF(IVAR.EQ.1) THEN
8018                   VTAU=VNEW
8019                   CALL PYKMAP(1,MTAU,VTAU)
8020                   IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
8021                     CALL PYKLIM(4)
8022                     IF(MINT(51).EQ.1) ILERR=1
8023                   ENDIF
8024                 ENDIF
8025                 IF(IVAR.LE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5.AND.
8026      &          ILERR.EQ.0) THEN
8027                   IF(IVAR.EQ.2) VTAUP=VNEW
8028                   CALL PYKMAP(4,MTAUP,VTAUP)
8029                 ENDIF
8030                 IF(IVAR.LE.2.AND.ILERR.EQ.0) THEN
8031                   CALL PYKLIM(2)
8032                   IF(MINT(51).EQ.1) ILERR=1
8033                 ENDIF
8034                 IF(IVAR.LE.3.AND.ILERR.EQ.0) THEN
8035                   IF(IVAR.EQ.3) VYST=VNEW
8036                   CALL PYKMAP(2,MYST,VYST)
8037                   CALL PYKLIM(3)
8038                   IF(MINT(51).EQ.1) ILERR=1
8039                 ENDIF
8040                 IF((ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6).AND.
8041      &          ILERR.EQ.0) THEN
8042                   IF(IVAR.EQ.4) VCTH=VNEW
8043                   CALL PYKMAP(3,MCTH,VCTH)
8044                 ENDIF
8045                 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
8046  
8047 C...Evaluate cross-section. Save new maximum. Final maximum.
8048                 IF(ILERR.NE.0) THEN
8049                    SIGS=0.
8050                 ELSEIF(ISTSB.NE.5) THEN
8051                   CALL PYSIGH(NCHN,SIGS)
8052                   IF(MWTXS.EQ.1) THEN
8053                     CALL PYEVWT(WTXS)
8054                     SIGS=WTXS*SIGS
8055                   ENDIF
8056                 ELSE
8057                   SIGS=0D0
8058                   DO 400 IKIN3=1,MSTP(129)
8059                     CALL PYKMAP(5,0,0D0)
8060                     IF(MINT(51).EQ.1) GOTO 400
8061                     CALL PYSIGH(NCHN,SIGTMP)
8062                     IF(MWTXS.EQ.1) THEN
8063                         CALL PYEVWT(WTXS)
8064                         SIGTMP=WTXS*SIGTMP
8065                     ENDIF
8066                     IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
8067   400             CONTINUE
8068                 ENDIF
8069                 SIGSSM(INEW)=SIGS
8070                 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
8071                 IF(MSTP(122).GE.2) WRITE(MSTU(11),5800) IMAX,IVAR,MVAR,
8072      &          IMOV,VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
8073   410         CONTINUE
8074   420       CONTINUE
8075   430     CONTINUE
8076   440   CONTINUE
8077         IF(MSTP(121).EQ.1) SIGSAM=PARP(121)*SIGSAM
8078         XSEC(ISUB,1)=1.05D0*SIGSAM
8079         IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
8080      &  WTGAGA*XSEC(ISUB,1)
8081   450   CONTINUE
8082         IF(MSTP(173).EQ.1.AND.ISUB.NE.96) XSEC(ISUB,1)=
8083      &  PARP(174)*XSEC(ISUB,1)
8084         IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
8085   460 CONTINUE
8086       MINT(51)=0
8087  
8088 C...Print summary table.
8089       IF(MINT(121).EQ.1.AND.NPOSI.EQ.0) THEN
8090         IF(MSTP(127).NE.1) THEN
8091           WRITE(MSTU(11),5900)
8092           CALL PYSTOP(1)
8093         ELSE
8094           WRITE(MSTU(11),6400)
8095           MSTI(53)=1
8096         ENDIF
8097       ENDIF
8098       IF(MSTP(122).GE.1) THEN
8099         WRITE(MSTU(11),6000)
8100         WRITE(MSTU(11),6100)
8101         DO 470 ISUB=1,500
8102           IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 470
8103           IF(ISUB.EQ.96.AND.MINT(50).EQ.0) GOTO 470
8104           IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0)
8105      &    GOTO 470
8106           IF(ISUB.EQ.96.AND.MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 470
8107           IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13
8108      &    .OR.ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 470
8109           IF(MSUB(95).EQ.1.AND.ISUB.GE.381.AND.ISUB.LE.386) GOTO 470
8110           WRITE(MSTU(11),6200) ISUB,PROC(ISUB),XSEC(ISUB,1)
8111   470   CONTINUE
8112         WRITE(MSTU(11),6300)
8113       ENDIF
8114  
8115 C...Format statements for maximization results.
8116  5000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
8117      &'subprocess no',I4/1X,'Coefficient modes     tau',10X,'y*',9X,
8118      &'cth',9X,'tau''',7X,'sigma')
8119  5100 FORMAT(1X,'Warning: requested subprocess ',I3,' has no allowed ',
8120      &'phase space.'/1X,'Process switched off!')
8121  5200 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,D12.4)
8122  5300 FORMAT(1X,'Warning: requested subprocess ',I3,' has vanishing ',
8123      &'cross-section.'/1X,'Process switched off!')
8124  5400 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
8125  5500 FORMAT(1X,1P,10D11.3)
8126  5600 FORMAT(1X,'Result for ',A4,':',9F9.4)
8127  5700 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
8128      &'MOD MOV   VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
8129  5800 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,D12.4)
8130  5900 FORMAT(1X,'Error: no requested process has non-vanishing ',
8131      &'cross-section.'/1X,'Execution stopped!')
8132  6000 FORMAT(/1X,8('*'),1X,'PYMAXI: summary of differential ',
8133      &'cross-section maximum search',1X,8('*'))
8134  6100 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I  ISUB  ',
8135      &'Subprocess name',15X,'I  Maximum value  I'/11X,'I',38X,'I',
8136      &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
8137  6200 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,D12.4,3X,'I')
8138  6300 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))
8139  6400 FORMAT(1X,'Error: no requested process has non-vanishing ',
8140      &'cross-section.'/
8141      &1X,'Execution will stop if you try to generate events.')
8142  
8143       RETURN
8144       END
8145  
8146 C*********************************************************************
8147  
8148 C...PYPILE
8149 C...Initializes multiplicity distribution and selects mutliplicity
8150 C...of pileup events, i.e. several events occuring at the same
8151 C...beam crossing.
8152  
8153       SUBROUTINE PYPILE(MPILE)
8154  
8155 C...Double precision and integer declarations.
8156       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8157       IMPLICIT INTEGER(I-N)
8158       INTEGER PYK,PYCHGE,PYCOMP
8159 C...Commonblocks.
8160       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8161       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8162       COMMON/PYINT1/MINT(400),VINT(400)
8163       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
8164       SAVE /PYDAT1/,/PYPARS/,/PYINT1/,/PYINT7/
8165 C...Local arrays and saved variables.
8166       DIMENSION WTI(0:200)
8167       SAVE IMIN,IMAX,WTI,WTS
8168  
8169 C...Sum of allowed cross-sections for pileup events.
8170       IF(MPILE.EQ.1) THEN
8171         VINT(131)=SIGT(0,0,5)
8172         IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
8173         IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
8174         IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
8175         IF(MSTP(133).LE.0) RETURN
8176  
8177 C...Initialize multiplicity distribution at maximum.
8178         XNAVE=VINT(131)*PARP(131)
8179         IF(XNAVE.GT.120D0) WRITE(MSTU(11),5000) XNAVE
8180         INAVE=MAX(1,MIN(200,NINT(XNAVE)))
8181         WTI(INAVE)=1D0
8182         WTS=WTI(INAVE)
8183         WTN=WTI(INAVE)*INAVE
8184  
8185 C...Find shape of multiplicity distribution below maximum.
8186         IMIN=INAVE
8187         DO 100 I=INAVE-1,1,-1
8188           IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
8189           IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
8190           IF(WTI(I).LT.1D-6) GOTO 110
8191           WTS=WTS+WTI(I)
8192           WTN=WTN+WTI(I)*I
8193           IMIN=I
8194   100   CONTINUE
8195  
8196 C...Find shape of multiplicity distribution above maximum.
8197   110   IMAX=INAVE
8198         DO 120 I=INAVE+1,200
8199           IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
8200           IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
8201           IF(WTI(I).LT.1D-6) GOTO 130
8202           WTS=WTS+WTI(I)
8203           WTN=WTN+WTI(I)*I
8204           IMAX=I
8205   120   CONTINUE
8206   130   VINT(132)=XNAVE
8207         VINT(133)=WTN/WTS
8208         IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
8209      &  WTS/(WTS+WTI(1)/XNAVE)
8210         IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1D0
8211         IF(MSTP(133).GE.2) VINT(134)=XNAVE
8212  
8213 C...Pick multiplicity of pileup events.
8214       ELSE
8215         IF(MSTP(133).LE.0) THEN
8216           MINT(81)=MAX(1,MSTP(134))
8217         ELSE
8218           WTR=WTS*PYR(0)
8219           DO 140 I=IMIN,IMAX
8220             MINT(81)=I
8221             WTR=WTR-WTI(I)
8222             IF(WTR.LE.0D0) GOTO 150
8223   140     CONTINUE
8224   150     CONTINUE
8225         ENDIF
8226       ENDIF
8227  
8228 C...Format statement for error message.
8229  5000 FORMAT(1X,'Warning: requested average number of events per bunch',
8230      &'crossing too large, ',1P,D12.4)
8231  
8232       RETURN
8233       END
8234  
8235 C*********************************************************************
8236  
8237 C...PYSAVE
8238 C...Saves and restores parameter and cross section values for the
8239 C...3 gamma-p and 6 (or 4, or 9, or 13) gamma-gamma alternatives.
8240 C...Also makes random choice between alternatives.
8241  
8242       SUBROUTINE PYSAVE(ISAVE,IGA)
8243  
8244 C...Double precision and integer declarations.
8245       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8246       IMPLICIT INTEGER(I-N)
8247       INTEGER PYK,PYCHGE,PYCOMP
8248 C...Commonblocks.
8249       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8250       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8251       COMMON/PYINT1/MINT(400),VINT(400)
8252       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
8253       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8254       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
8255       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT7/
8256 C...Local arrays and saved variables.
8257       DIMENSION NCP(15),NSUBCP(15,20),MSUBCP(15,20),COEFCP(15,20,20),
8258      &NGENCP(15,0:20,3),XSECCP(15,0:20,3),SIGTCP(15,0:6,0:6,0:5),
8259      &INTCP(15,20),RECP(15,20)
8260       SAVE NCP,NSUBCP,MSUBCP,COEFCP,NGENCP,XSECCP,SIGTCP,INTCP,RECP
8261  
8262 C...Save list of subprocesses and cross-section information.
8263       IF(ISAVE.EQ.1) THEN
8264         ICP=0
8265         DO 120 I=1,500
8266           IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120
8267           ICP=ICP+1
8268           NSUBCP(IGA,ICP)=I
8269           MSUBCP(IGA,ICP)=MSUB(I)
8270           DO 100 J=1,20
8271             COEFCP(IGA,ICP,J)=COEF(I,J)
8272   100     CONTINUE
8273           DO 110 J=1,3
8274             NGENCP(IGA,ICP,J)=NGEN(I,J)
8275             XSECCP(IGA,ICP,J)=XSEC(I,J)
8276   110     CONTINUE
8277   120   CONTINUE
8278         NCP(IGA)=ICP
8279         DO 130 J=1,3
8280           NGENCP(IGA,0,J)=NGEN(0,J)
8281           XSECCP(IGA,0,J)=XSEC(0,J)
8282   130   CONTINUE
8283         DO 160 I1=0,6
8284           DO 150 I2=0,6
8285             DO 140 J=0,5
8286               SIGTCP(IGA,I1,I2,J)=SIGT(I1,I2,J)
8287   140       CONTINUE
8288   150     CONTINUE
8289   160   CONTINUE
8290  
8291 C...Save various common process variables.
8292         DO 170 J=1,10
8293           INTCP(IGA,J)=MINT(40+J)
8294   170   CONTINUE
8295         INTCP(IGA,11)=MINT(101)
8296         INTCP(IGA,12)=MINT(102)
8297         INTCP(IGA,13)=MINT(107)
8298         INTCP(IGA,14)=MINT(108)
8299         INTCP(IGA,15)=MINT(123)
8300         RECP(IGA,1)=CKIN(3)
8301         RECP(IGA,2)=VINT(318)
8302  
8303 C...Save cross-section information only.
8304       ELSEIF(ISAVE.EQ.2) THEN
8305         DO 190 ICP=1,NCP(IGA)
8306           I=NSUBCP(IGA,ICP)
8307           DO 180 J=1,3
8308             NGENCP(IGA,ICP,J)=NGEN(I,J)
8309             XSECCP(IGA,ICP,J)=XSEC(I,J)
8310   180     CONTINUE
8311   190   CONTINUE
8312         DO 200 J=1,3
8313           NGENCP(IGA,0,J)=NGEN(0,J)
8314           XSECCP(IGA,0,J)=XSEC(0,J)
8315   200   CONTINUE
8316  
8317 C...Choose between allowed alternatives.
8318       ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN
8319         IF(ISAVE.EQ.4) THEN
8320           XSUMCP=0D0
8321           DO 210 IG=1,MINT(121)
8322             XSUMCP=XSUMCP+XSECCP(IG,0,1)
8323   210     CONTINUE
8324           XSUMCP=XSUMCP*PYR(0)
8325           DO 220 IG=1,MINT(121)
8326             IGA=IG
8327             XSUMCP=XSUMCP-XSECCP(IG,0,1)
8328             IF(XSUMCP.LE.0D0) GOTO 230
8329   220     CONTINUE
8330   230     CONTINUE
8331         ENDIF
8332  
8333 C...Restore cross-section information.
8334         DO 240 I=1,500
8335           MSUB(I)=0
8336   240   CONTINUE
8337         DO 270 ICP=1,NCP(IGA)
8338           I=NSUBCP(IGA,ICP)
8339           MSUB(I)=MSUBCP(IGA,ICP)
8340           DO 250 J=1,20
8341             COEF(I,J)=COEFCP(IGA,ICP,J)
8342   250     CONTINUE
8343           DO 260 J=1,3
8344             NGEN(I,J)=NGENCP(IGA,ICP,J)
8345             XSEC(I,J)=XSECCP(IGA,ICP,J)
8346   260     CONTINUE
8347   270   CONTINUE
8348         DO 280 J=1,3
8349           NGEN(0,J)=NGENCP(IGA,0,J)
8350           XSEC(0,J)=XSECCP(IGA,0,J)
8351   280   CONTINUE
8352         DO 310 I1=0,6
8353           DO 300 I2=0,6
8354             DO 290 J=0,5
8355               SIGT(I1,I2,J)=SIGTCP(IGA,I1,I2,J)
8356   290       CONTINUE
8357   300     CONTINUE
8358   310   CONTINUE
8359  
8360 C...Restore various common process variables.
8361         DO 320 J=1,10
8362           MINT(40+J)=INTCP(IGA,J)
8363   320   CONTINUE
8364         MINT(101)=INTCP(IGA,11)
8365         MINT(102)=INTCP(IGA,12)
8366         MINT(107)=INTCP(IGA,13)
8367         MINT(108)=INTCP(IGA,14)
8368         MINT(123)=INTCP(IGA,15)
8369         CKIN(3)=RECP(IGA,1)
8370         CKIN(1)=2D0*CKIN(3)
8371         VINT(318)=RECP(IGA,2)
8372  
8373 C...Sum up cross-section info (for PYSTAT).
8374       ELSEIF(ISAVE.EQ.5) THEN
8375         DO 330 I=1,500
8376           MSUB(I)=0
8377           NGEN(I,1)=0
8378           NGEN(I,3)=0
8379           XSEC(I,3)=0D0
8380   330   CONTINUE
8381         NGEN(0,1)=0
8382         NGEN(0,2)=0
8383         NGEN(0,3)=0
8384         XSEC(0,3)=0
8385         DO 350 IG=1,MINT(121)
8386           DO 340 ICP=1,NCP(IG)
8387             I=NSUBCP(IG,ICP)
8388             IF(MSUBCP(IG,ICP).EQ.1) MSUB(I)=1
8389             NGEN(I,1)=NGEN(I,1)+NGENCP(IG,ICP,1)
8390             NGEN(I,3)=NGEN(I,3)+NGENCP(IG,ICP,3)
8391             XSEC(I,3)=XSEC(I,3)+XSECCP(IG,ICP,3)
8392   340     CONTINUE
8393           NGEN(0,1)=NGEN(0,1)+NGENCP(IG,0,1)
8394           NGEN(0,2)=NGEN(0,2)+NGENCP(IG,0,2)
8395           NGEN(0,3)=NGEN(0,3)+NGENCP(IG,0,3)
8396           XSEC(0,3)=XSEC(0,3)+XSECCP(IG,0,3)
8397   350   CONTINUE
8398       ENDIF
8399  
8400       RETURN
8401       END
8402  
8403 C*********************************************************************
8404  
8405 C...PYGAGA
8406 C...For lepton beams it gives photon-hadron or photon-photon systems
8407 C...to be treated with the ordinary machinery and combines this with a
8408 C...description of the lepton -> lepton + photon branching.
8409  
8410       SUBROUTINE PYGAGA(IGAGA,WTGAGA)
8411  
8412 C...Double precision and integer declarations.
8413       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8414       IMPLICIT INTEGER(I-N)
8415       INTEGER PYK,PYCHGE,PYCOMP
8416 C...Commonblocks.
8417       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
8418       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8419       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
8420       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8421       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8422       COMMON/PYINT1/MINT(400),VINT(400)
8423       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8424       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
8425      &/PYINT5/
8426 C...Local variables and data statement.
8427       DIMENSION PMS(2),XMIN(2),XMAX(2),Q2MIN(2),Q2MAX(2),PMC(3),
8428      &X(2),Q2(2),Y(2),THETA(2),PHI(2),PT(2),BETA(3)
8429       SAVE PMS,XMIN,XMAX,Q2MIN,Q2MAX,PMC,X,Q2,THETA,PHI,PT,W2MIN
8430       DATA EPS/1D-4/
8431  
8432 C...Initialize generation of photons inside leptons.
8433       IF(IGAGA.EQ.1) THEN
8434  
8435 C...Save quantities on incoming lepton system.
8436         VINT(301)=VINT(1)
8437         VINT(302)=VINT(2)
8438         PMS(1)=VINT(303)**2
8439         IF(MINT(141).EQ.0) PMS(1)=SIGN(VINT(3)**2,VINT(3))
8440         PMS(2)=VINT(304)**2
8441         IF(MINT(142).EQ.0) PMS(2)=SIGN(VINT(4)**2,VINT(4))
8442         PMC(3)=VINT(302)-PMS(1)-PMS(2)
8443         W2MIN=MAX(CKIN(77),2D0*CKIN(3),2D0*CKIN(5))**2
8444  
8445 C...Calculate range of x and Q2 values allowed in generation.
8446         DO 100 I=1,2
8447           PMC(I)=VINT(302)+PMS(I)-PMS(3-I)
8448           IF(MINT(140+I).NE.0) THEN
8449             XMIN(I)=MAX(CKIN(59+2*I),EPS)
8450             XMAX(I)=MIN(CKIN(60+2*I),1D0-2D0*VINT(301)*SQRT(PMS(I))/
8451      &      PMC(I),1D0-EPS)
8452             YMIN=MAX(CKIN(71+2*I),EPS)
8453             YMAX=MIN(CKIN(72+2*I),1D0-EPS)
8454             IF(CKIN(64+2*I).GT.0D0) XMIN(I)=MAX(XMIN(I),
8455      &      (YMIN*PMC(3)-CKIN(64+2*I))/PMC(I))
8456             XMAX(I)=MIN(XMAX(I),(YMAX*PMC(3)-CKIN(63+2*I))/PMC(I))
8457             THEMIN=MAX(CKIN(67+2*I),0D0)
8458             THEMAX=MIN(CKIN(68+2*I),PARU(1))
8459             IF(CKIN(68+2*I).LT.0D0) THEMAX=PARU(1)
8460             Q2MIN(I)=MAX(CKIN(63+2*I),XMIN(I)**2*PMS(I)/(1D0-XMIN(I))+
8461      &      ((1D0-XMAX(I))*(VINT(302)-2D0*PMS(3-I))-
8462      &      2D0*PMS(I)/(1D0-XMAX(I)))*SIN(THEMIN/2D0)**2,0D0)
8463             Q2MAX(I)=XMAX(I)**2*PMS(I)/(1D0-XMAX(I))+
8464      &      ((1D0-XMIN(I))*(VINT(302)-2D0*PMS(3-I))-
8465      &      2D0*PMS(I)/(1D0-XMIN(I)))*SIN(THEMAX/2D0)**2
8466             IF(CKIN(64+2*I).GT.0D0) Q2MAX(I)=MIN(CKIN(64+2*I),Q2MAX(I))
8467 C...W limits when lepton on one side only.
8468             IF(MINT(143-I).EQ.0) THEN
8469               XMIN(I)=MAX(XMIN(I),(W2MIN-PMS(3-I))/PMC(I))
8470               IF(CKIN(78).GT.0D0) XMAX(I)=MIN(XMAX(I),
8471      &        (CKIN(78)**2-PMS(3-I))/PMC(I))
8472             ENDIF
8473           ENDIF
8474   100   CONTINUE
8475  
8476 C...W limits when lepton on both sides.
8477         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
8478           IF(CKIN(78).GT.0D0) XMAX(1)=MIN(XMAX(1),
8479      &    (CKIN(78)**2+PMC(3)-PMC(2)*XMIN(2))/PMC(1))
8480           IF(CKIN(78).GT.0D0) XMAX(2)=MIN(XMAX(2),
8481      &    (CKIN(78)**2+PMC(3)-PMC(1)*XMIN(1))/PMC(2))
8482           IF(IABS(MINT(141)).NE.IABS(MINT(142))) THEN
8483             XMIN(1)=MAX(XMIN(1),(PMS(1)-PMS(2)+VINT(302)*(W2MIN-
8484      &      PMS(1)-PMS(2))/(PMC(2)*XMAX(2)+PMS(1)-PMS(2)))/PMC(1))
8485             XMIN(2)=MAX(XMIN(2),(PMS(2)-PMS(1)+VINT(302)*(W2MIN-
8486      &      PMS(1)-PMS(2))/(PMC(1)*XMAX(1)+PMS(2)-PMS(1)))/PMC(2))
8487           ELSE
8488             XMIN(1)=MAX(XMIN(1),W2MIN/(VINT(302)*XMAX(2)))
8489             XMIN(2)=MAX(XMIN(2),W2MIN/(VINT(302)*XMAX(1)))
8490           ENDIF
8491         ENDIF
8492  
8493 C...Q2 and W values and photon flux weight factors for initialization.
8494       ELSEIF(IGAGA.EQ.2) THEN
8495         ISUB=MINT(1)
8496         MINT(15)=0
8497         MINT(16)=0
8498  
8499 C...W value for photon on one or both sides, and for processes
8500 C...with gamma-gamma cross section peaked at small shat.
8501         IF(MINT(141).NE.0.AND.MINT(142).EQ.0) THEN
8502           VINT(2)=VINT(302)+PMS(1)-PMC(1)*(1D0-XMAX(1))
8503         ELSEIF(MINT(141).EQ.0.AND.MINT(142).NE.0) THEN
8504           VINT(2)=VINT(302)+PMS(2)-PMC(2)*(1D0-XMAX(2))
8505         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
8506           VINT(2)=MAX(CKIN(77)**2,12D0*MAX(CKIN(3),CKIN(5))**2)
8507           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
8508         ELSE
8509           VINT(2)=XMAX(1)*XMAX(2)*VINT(302)
8510           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
8511         ENDIF
8512         VINT(1)=SQRT(MAX(0D0,VINT(2)))
8513  
8514 C...Upper estimate of photon flux weight factor.
8515 C...Initialization Q2 scale. Flag incoming unresolved photon.
8516         WTGAGA=1D0
8517         DO 110 I=1,2
8518           IF(MINT(140+I).NE.0) THEN
8519             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
8520      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
8521             IF(ISUB.EQ.99.AND.MINT(106+I).EQ.4.AND.MINT(109-I).EQ.3)
8522      &      THEN
8523               Q2INIT=5D0+Q2MIN(3-I)
8524             ELSEIF(ISUB.EQ.99.AND.MINT(106+I).EQ.4) THEN
8525               Q2INIT=PMAS(PYCOMP(113),1)**2+Q2MIN(3-I)
8526             ELSEIF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
8527               Q2INIT=MAX(CKIN(1),2D0*CKIN(3),2D0*CKIN(5))**2/3D0
8528             ELSEIF((ISUB.EQ.138.AND.I.EQ.2).OR.
8529      &      (ISUB.EQ.139.AND.I.EQ.1)) THEN
8530               Q2INIT=VINT(2)/3D0
8531             ELSEIF(ISUB.EQ.140) THEN
8532               Q2INIT=VINT(2)/2D0
8533             ELSE
8534               Q2INIT=Q2MIN(I)
8535             ENDIF
8536             VINT(2+I)=-SQRT(MAX(Q2MIN(I),MIN(Q2MAX(I),Q2INIT)))
8537             IF(MSTP(14).EQ.0.OR.(ISUB.GE.131.AND.ISUB.LE.140))
8538      &      MINT(14+I)=22
8539             VINT(306+I)=VINT(2+I)**2
8540           ENDIF
8541   110   CONTINUE
8542         VINT(320)=WTGAGA
8543  
8544 C...Update pTmin and cross section information.
8545         IF(MSTP(82).LE.1) THEN
8546           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
8547         ELSE
8548           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
8549         ENDIF
8550         VINT(149)=4D0*PTMN**2/VINT(2)
8551         VINT(154)=PTMN
8552         CALL PYXTOT
8553         VINT(318)=VINT(317)
8554  
8555 C...Generate photons inside leptons and
8556 C...calculate photon flux weight factors.
8557       ELSEIF(IGAGA.EQ.3) THEN
8558         ISUB=MINT(1)
8559         MINT(15)=0
8560         MINT(16)=0
8561  
8562 C...Generate phase space point and check against cuts.
8563         LOOP=0
8564   120   LOOP=LOOP+1
8565         DO 130 I=1,2
8566           IF(MINT(140+I).NE.0) THEN
8567 C...Pick x and Q2
8568             X(I)=XMIN(I)*(XMAX(I)/XMIN(I))**PYR(0)
8569             Q2(I)=Q2MIN(I)*(Q2MAX(I)/Q2MIN(I))**PYR(0)
8570 C...Cuts on internal consistency in x and Q2.
8571             IF(Q2(I).LT.X(I)**2*PMS(I)/(1D0-X(I))) GOTO 120
8572             IF(Q2(I).GT.(1D0-X(I))*(VINT(302)-2D0*PMS(3-I))-
8573      &      (2D0-X(I)**2)*PMS(I)/(1D0-X(I))) GOTO 120
8574 C...Cuts on y and theta.
8575             Y(I)=(PMC(I)*X(I)+Q2(I))/PMC(3)
8576             IF(Y(I).LT.CKIN(71+2*I).OR.Y(I).GT.CKIN(72+2*I)) GOTO 120
8577             RAT=((1D0-X(I))*Q2(I)-X(I)**2*PMS(I))/
8578      &      ((1D0-X(I))**2*(VINT(302)-2D0*PMS(3-I)-2D0*PMS(I)))
8579             THETA(I)=2D0*ASIN(SQRT(MAX(0D0,MIN(1D0,RAT))))
8580             IF(THETA(I).LT.CKIN(67+2*I)) GOTO 120
8581             IF(CKIN(68+2*I).GT.0D0.AND.THETA(I).GT.CKIN(68+2*I))
8582      &      GOTO 120
8583  
8584 C...Phi angle isotropic. Reconstruct pT.
8585             PHI(I)=PARU(2)*PYR(0)
8586             PT(I)=SQRT(((1D0-X(I))*PMC(I))**2/(4D0*VINT(302))-
8587      &      PMS(I))*SIN(THETA(I))
8588  
8589 C...Store info on variables selected, for documentation purposes.
8590             VINT(2+I)=-SQRT(Q2(I))
8591             VINT(304+I)=X(I)
8592             VINT(306+I)=Q2(I)
8593             VINT(308+I)=Y(I)
8594             VINT(310+I)=THETA(I)
8595             VINT(312+I)=PHI(I)
8596           ELSE
8597             VINT(304+I)=1D0
8598             VINT(306+I)=0D0
8599             VINT(308+I)=1D0
8600             VINT(310+I)=0D0
8601             VINT(312+I)=0D0
8602           ENDIF
8603   130   CONTINUE
8604  
8605 C...Cut on W combines info from two sides.
8606         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
8607           W2=-Q2(1)-Q2(2)+0.5D0*X(1)*PMC(1)*X(2)*PMC(2)/VINT(302)-
8608      &    2D0*PT(1)*PT(2)*COS(PHI(1)-PHI(2))+2D0*
8609      &    SQRT((0.5D0*X(1)*PMC(1)/VINT(301))**2+Q2(1)-PT(1)**2)*
8610      &    SQRT((0.5D0*X(2)*PMC(2)/VINT(301))**2+Q2(2)-PT(2)**2)
8611           IF(W2.LT.W2MIN) GOTO 120
8612           IF(CKIN(78).GT.0D0.AND.W2.GT.CKIN(78)**2) GOTO 120
8613           PMS1=-Q2(1)
8614           PMS2=-Q2(2)
8615         ELSEIF(MINT(141).NE.0) THEN
8616           W2=(VINT(302)+PMS(1))*X(1)+PMS(2)*(1D0-X(1))
8617           PMS1=-Q2(1)
8618           PMS2=PMS(2)
8619         ELSEIF(MINT(142).NE.0) THEN
8620           W2=(VINT(302)+PMS(2))*X(2)+PMS(1)*(1D0-X(2))
8621           PMS1=PMS(1)
8622           PMS2=-Q2(2)
8623         ENDIF
8624  
8625 C...Store kinematics info for photon(s) in subsystem cm frame.
8626         VINT(2)=W2
8627         VINT(1)=SQRT(W2)
8628         VINT(291)=0D0
8629         VINT(292)=0D0
8630         VINT(293)=0.5D0*SQRT((W2-PMS1-PMS2)**2-4D0*PMS1*PMS2)/VINT(1)
8631         VINT(294)=0.5D0*(W2+PMS1-PMS2)/VINT(1)
8632         VINT(295)=SIGN(SQRT(ABS(PMS1)),PMS1)
8633         VINT(296)=0D0
8634         VINT(297)=0D0
8635         VINT(298)=-VINT(293)
8636         VINT(299)=0.5D0*(W2+PMS2-PMS1)/VINT(1)
8637         VINT(300)=SIGN(SQRT(ABS(PMS2)),PMS2)
8638  
8639 C...Assign weight for photon flux; different for transverse and
8640 C...longitudinal photons. Flag incoming unresolved photon.
8641         WTGAGA=1D0
8642         DO 140 I=1,2
8643           IF(MINT(140+I).NE.0) THEN
8644             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
8645      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
8646             IF(MSTP(16).EQ.0) THEN
8647               XY=X(I)
8648             ELSE
8649               WTGAGA=WTGAGA*X(I)/Y(I)
8650               XY=Y(I)
8651             ENDIF
8652             IF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
8653               WTGAGA=WTGAGA*(1D0-XY)
8654             ELSEIF(I.EQ.1.AND.(ISUB.EQ.139.OR.ISUB.EQ.140)) THEN
8655               WTGAGA=WTGAGA*(1D0-XY)
8656             ELSEIF(I.EQ.2.AND.(ISUB.EQ.138.OR.ISUB.EQ.140)) THEN
8657               WTGAGA=WTGAGA*(1D0-XY)
8658             ELSE
8659               WTGAGA=WTGAGA*(0.5D0*(1D0+(1D0-XY)**2)-
8660      &        PMS(I)*XY**2/Q2(I))
8661             ENDIF
8662             IF(MINT(106+I).EQ.0) MINT(14+I)=22
8663           ENDIF
8664   140   CONTINUE
8665         VINT(319)=WTGAGA
8666         MINT(143)=LOOP
8667  
8668 C...Update pTmin and cross section information.
8669         IF(MSTP(82).LE.1) THEN
8670           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
8671         ELSE
8672           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
8673         ENDIF
8674         VINT(149)=4D0*PTMN**2/VINT(2)
8675         VINT(154)=PTMN
8676         CALL PYXTOT
8677  
8678 C...Reconstruct kinematics of photons inside leptons.
8679       ELSEIF(IGAGA.EQ.4) THEN
8680  
8681 C...Make place for incoming particles and scattered leptons.
8682         MOVE=3
8683         IF(MINT(141).NE.0.AND.MINT(142).NE.0) MOVE=4
8684         MINT(4)=MINT(4)+MOVE
8685         DO 160 I=MINT(84)-MOVE,MINT(83)+1,-1
8686           IF(K(I,1).EQ.21) THEN
8687             DO 150 J=1,5
8688               K(I+MOVE,J)=K(I,J)
8689               P(I+MOVE,J)=P(I,J)
8690               V(I+MOVE,J)=V(I,J)
8691   150       CONTINUE
8692             IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
8693      &      K(I+MOVE,3)=K(I,3)+MOVE
8694             IF(K(I,4).GT.MINT(83).AND.K(I,4).LE.MINT(84))
8695      &      K(I+MOVE,4)=K(I,4)+MOVE
8696             IF(K(I,5).GT.MINT(83).AND.K(I,5).LE.MINT(84))
8697      &      K(I+MOVE,5)=K(I,5)+MOVE
8698           ENDIF
8699   160   CONTINUE
8700         DO 170 I=MINT(84)+1,N
8701           IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
8702      &    K(I,3)=K(I,3)+MOVE
8703   170   CONTINUE
8704  
8705 C...Fill in incoming particles.
8706         DO 190 I=MINT(83)+1,MINT(83)+MOVE
8707           DO 180 J=1,5
8708             K(I,J)=0
8709             P(I,J)=0D0
8710             V(I,J)=0D0
8711   180     CONTINUE
8712   190   CONTINUE
8713         DO 200 I=1,2
8714           K(MINT(83)+I,1)=21
8715           IF(MINT(140+I).NE.0) THEN
8716             K(MINT(83)+I,2)=MINT(140+I)
8717             P(MINT(83)+I,5)=VINT(302+I)
8718           ELSE
8719             K(MINT(83)+I,2)=MINT(10+I)
8720             P(MINT(83)+I,5)=VINT(2+I)
8721           ENDIF
8722           P(MINT(83)+I,3)=0.5D0*SQRT((PMC(3)**2-4D0*PMS(1)*PMS(2))/
8723      &    VINT(302))*(-1D0)**(I+1)
8724           P(MINT(83)+I,4)=0.5D0*PMC(I)/VINT(301)
8725   200   CONTINUE
8726  
8727 C...New mother-daughter relations in documentation section.
8728         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
8729           K(MINT(83)+1,4)=MINT(83)+3
8730           K(MINT(83)+1,5)=MINT(83)+5
8731           K(MINT(83)+2,4)=MINT(83)+4
8732           K(MINT(83)+2,5)=MINT(83)+6
8733           K(MINT(83)+3,3)=MINT(83)+1
8734           K(MINT(83)+5,3)=MINT(83)+1
8735           K(MINT(83)+4,3)=MINT(83)+2
8736           K(MINT(83)+6,3)=MINT(83)+2
8737         ELSEIF(MINT(141).NE.0) THEN
8738           K(MINT(83)+1,4)=MINT(83)+3
8739           K(MINT(83)+1,5)=MINT(83)+4
8740           K(MINT(83)+2,4)=MINT(83)+5
8741           K(MINT(83)+3,3)=MINT(83)+1
8742           K(MINT(83)+4,3)=MINT(83)+1
8743           K(MINT(83)+5,3)=MINT(83)+2
8744         ELSEIF(MINT(142).NE.0) THEN
8745           K(MINT(83)+1,4)=MINT(83)+4
8746           K(MINT(83)+2,4)=MINT(83)+3
8747           K(MINT(83)+2,5)=MINT(83)+5
8748           K(MINT(83)+3,3)=MINT(83)+2
8749           K(MINT(83)+4,3)=MINT(83)+1
8750           K(MINT(83)+5,3)=MINT(83)+2
8751         ENDIF
8752  
8753 C...Fill scattered lepton(s).
8754         DO 210 I=1,2
8755           IF(MINT(140+I).NE.0) THEN
8756             LSC=MINT(83)+MIN(I+2,MOVE)
8757             K(LSC,1)=21
8758             K(LSC,2)=MINT(140+I)
8759             P(LSC,1)=PT(I)*COS(PHI(I))
8760             P(LSC,2)=PT(I)*SIN(PHI(I))
8761             P(LSC,4)=(1D0-X(I))*P(MINT(83)+I,4)
8762             P(LSC,3)=SQRT(P(LSC,4)**2-PMS(I))*COS(THETA(I))*
8763      &      (-1D0)**(I-1)
8764             P(LSC,5)=VINT(302+I)
8765           ENDIF
8766   210   CONTINUE
8767  
8768 C...Find incoming four-vectors to subprocess.
8769         K(N+1,1)=21
8770         IF(MINT(141).NE.0) THEN
8771           DO 220 J=1,4
8772             P(N+1,J)=P(MINT(83)+1,J)-P(MINT(83)+3,J)
8773   220     CONTINUE
8774         ELSE
8775           DO 230 J=1,4
8776             P(N+1,J)=P(MINT(83)+1,J)
8777   230     CONTINUE
8778         ENDIF
8779         K(N+2,1)=21
8780         IF(MINT(142).NE.0) THEN
8781           DO 240 J=1,4
8782             P(N+2,J)=P(MINT(83)+2,J)-P(MINT(83)+MOVE,J)
8783   240     CONTINUE
8784         ELSE
8785           DO 250 J=1,4
8786             P(N+2,J)=P(MINT(83)+2,J)
8787   250     CONTINUE
8788         ENDIF
8789  
8790 C...Define boost and rotation between hadronic subsystem and
8791 C...collision rest frame; boost hadronic subsystem to this frame.
8792         DO 260 J=1,3
8793           BETA(J)=(P(N+1,J)+P(N+2,J))/(P(N+1,4)+P(N+2,4))
8794   260   CONTINUE
8795         CALL PYROBO(N+1,N+2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
8796         BPHI=PYANGL(P(N+1,1),P(N+1,2))
8797         CALL PYROBO(N+1,N+2,0D0,-BPHI,0D0,0D0,0D0)
8798         BTHETA=PYANGL(P(N+1,3),P(N+1,1))
8799         CALL PYROBO(MINT(83)+MOVE+1,N,BTHETA,BPHI,BETA(1),BETA(2),
8800      &  BETA(3))
8801  
8802 C...Add on scattered leptons to final state.
8803         DO 280 I=1,2
8804           IF(MINT(140+I).NE.0) THEN
8805             LSC=MINT(83)+MIN(I+2,MOVE)
8806             N=N+1
8807             DO 270 J=1,5
8808               K(N,J)=K(LSC,J)
8809               P(N,J)=P(LSC,J)
8810               V(N,J)=V(LSC,J)
8811   270       CONTINUE
8812             K(N,1)=1
8813             K(N,3)=LSC
8814           ENDIF
8815   280   CONTINUE
8816       ENDIF
8817  
8818       RETURN
8819       END
8820  
8821 C*********************************************************************
8822  
8823 C...PYRAND
8824 C...Generates quantities characterizing the high-pT scattering at the
8825 C...parton level according to the matrix elements. Chooses incoming,
8826 C...reacting partons, their momentum fractions and one of the possible
8827 C...subprocesses.
8828  
8829       SUBROUTINE PYRAND
8830  
8831 C...Double precision and integer declarations.
8832       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8833       IMPLICIT INTEGER(I-N)
8834       INTEGER PYK,PYCHGE,PYCOMP
8835 C...Parameter statement to help give large particle numbers.
8836       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
8837      &KEXCIT=4000000,KDIMEN=5000000)
8838  
8839 C...User process initialization and event commonblocks.
8840       INTEGER MAXPUP
8841       PARAMETER (MAXPUP=100)
8842       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
8843       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
8844       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
8845      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
8846      &LPRUP(MAXPUP)
8847       INTEGER MAXNUP
8848       PARAMETER (MAXNUP=500)
8849       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
8850       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
8851       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
8852      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
8853      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
8854       SAVE /HEPRUP/,/HEPEUP/
8855  
8856 C...Commonblocks.
8857       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8858       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
8859       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
8860       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8861       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8862       COMMON/PYINT1/MINT(400),VINT(400)
8863       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
8864       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
8865       COMMON/PYINT4/MWID(500),WIDS(500,5)
8866       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8867       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
8868       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
8869       COMMON/PYTCCO/COEFX(194:380,2)
8870       COMMON/TCPARA/IRES,JRES,XMAS(3),XWID(3),YMAS(2),YWID(2)
8871       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
8872      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,/PYMSSM/,/PYTCCO/,
8873      &/TCPARA/
8874 C...Local arrays.
8875       DIMENSION XPQ(-25:25),PMM(2),PDIF(4),BHAD(4),PMMN(2)
8876  
8877 C...Parameters and data used in elastic/diffractive treatment.
8878       DATA EPS/0.0808D0/, ALP/0.25D0/, CRES/2D0/, PMRC/1.062D0/,
8879      &SMP/0.880D0/, BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
8880  
8881 C...Initial values, specifically for (first) semihard interaction.
8882       MINT(10)=0
8883       MINT(17)=0
8884       MINT(18)=0
8885       VINT(143)=1D0
8886       VINT(144)=1D0
8887       VINT(157)=0D0
8888       VINT(158)=0D0
8889       MFAIL=0
8890       IF(MSTP(171).EQ.1.AND.MSTP(172).EQ.2) MFAIL=1
8891       ISUB=0
8892       ISTSB=0
8893       LOOP=0
8894   100 LOOP=LOOP+1
8895       MINT(51)=0
8896       MINT(143)=1
8897       VINT(97)=1D0
8898  
8899 C...Start by assuming incoming photon is entering subprocess.
8900       IF(MINT(11).EQ.22) THEN
8901          MINT(15)=22
8902          VINT(307)=VINT(3)**2
8903       ENDIF
8904       IF(MINT(12).EQ.22) THEN
8905          MINT(16)=22
8906          VINT(308)=VINT(4)**2
8907       ENDIF
8908       MINT(103)=MINT(11)
8909       MINT(104)=MINT(12)
8910  
8911 C...Choice of process type - first event of pileup.
8912       INMULT=0
8913       IF(MINT(82).EQ.1.AND.ISUB.GE.91.AND.ISUB.LE.96) THEN
8914       ELSEIF(MINT(82).EQ.1) THEN
8915  
8916 C...For gamma-p or gamma-gamma first pick between alternatives.
8917         IGA=0
8918         IF(MINT(121).GT.1) CALL PYSAVE(4,IGA)
8919         MINT(122)=IGA
8920  
8921 C...For real gamma + gamma with different nature, flip at random.
8922         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
8923      &  MSTP(14).LE.10.AND.PYR(0).GT.0.5D0) THEN
8924           MINTSV=MINT(41)
8925           MINT(41)=MINT(42)
8926           MINT(42)=MINTSV
8927           MINTSV=MINT(45)
8928           MINT(45)=MINT(46)
8929           MINT(46)=MINTSV
8930           MINTSV=MINT(107)
8931           MINT(107)=MINT(108)
8932           MINT(108)=MINTSV
8933           IF(MINT(47).EQ.2.OR.MINT(47).EQ.3) MINT(47)=5-MINT(47)
8934         ENDIF
8935  
8936 C...Pick process type, possibly by user process machinery.
8937 C...(If the latter, also event will be picked here.)
8938         IF(MINT(111).GE.11.AND.IABS(IDWTUP).EQ.2.AND.LOOP.GE.2) THEN
8939           CALL UPEVNT
8940           CALL PYUPRE
8941         ELSEIF(MINT(111).GE.11.AND.IABS(IDWTUP).GE.3) THEN
8942           CALL UPEVNT
8943           CALL PYUPRE
8944           ISUB=0
8945   110     ISUB=ISUB+1
8946           IF((ISET(ISUB).NE.11.OR.KFPR(ISUB,2).NE.IDPRUP).AND.
8947      &    ISUB.LT.500) GOTO 110
8948         ELSE
8949           RSUB=XSEC(0,1)*PYR(0)
8950           DO 120 I=1,500
8951             IF(MSUB(I).NE.1.OR.I.EQ.96) GOTO 120
8952             ISUB=I
8953             RSUB=RSUB-XSEC(I,1)
8954             IF(RSUB.LE.0D0) GOTO 130
8955   120     CONTINUE
8956   130     IF(ISUB.EQ.95) ISUB=96
8957           IF(ISUB.EQ.96) INMULT=1
8958           IF(ISET(ISUB).EQ.11) THEN
8959             IDPRUP=KFPR(ISUB,2)
8960             CALL UPEVNT
8961             CALL PYUPRE
8962           ENDIF
8963         ENDIF
8964  
8965 C...Choice of inclusive process type - pileup events.
8966       ELSEIF(MINT(82).GE.2.AND.ISUB.EQ.0) THEN
8967         RSUB=VINT(131)*PYR(0)
8968         ISUB=96
8969         IF(RSUB.GT.SIGT(0,0,5)) ISUB=94
8970         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)) ISUB=93
8971         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)) ISUB=92
8972         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)+SIGT(0,0,2))
8973      &  ISUB=91
8974         IF(ISUB.EQ.96) INMULT=1
8975       ENDIF
8976  
8977 C...Choice of photon energy and flux factor inside lepton.
8978       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
8979         CALL PYGAGA(3,WTGAGA)
8980         IF(ISUB.GE.131.AND.ISUB.LE.140) THEN
8981           CKIN(3)=MAX(VINT(285),VINT(154))
8982           CKIN(1)=2D0*CKIN(3)
8983         ENDIF
8984 C...When necessary set direct/resolved photon by hand.
8985       ELSEIF(MINT(15).EQ.22.OR.MINT(16).EQ.22) THEN
8986         IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
8987         IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
8988       ENDIF
8989  
8990 C...Restrict direct*resolved processes to pTmin >= Q,
8991 C...to avoid doublecounting  with DIS.
8992       IF(MSTP(18).EQ.3.AND.ISUB.GE.131.AND.ISUB.LE.136) THEN
8993         IF(MINT(15).EQ.22) THEN
8994           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(3)))
8995         ELSE
8996           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(4)))
8997         ENDIF
8998         CKIN(1)=2D0*CKIN(3)
8999       ENDIF
9000  
9001 C...Set up for multiple interactions (may include impact parameter).
9002       IF(INMULT.EQ.1) THEN
9003         IF(MINT(35).LE.1) CALL PYMULT(2)
9004         IF(MINT(35).GE.2) CALL PYMIGN(2)
9005       ENDIF
9006  
9007 C...Loopback point for minimum bias in photon physics.
9008       LOOP2=0
9009   140 LOOP2=LOOP2+1
9010       IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)+MINT(143)
9011       IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)+MINT(143)
9012       IF(ISUB.EQ.96.AND.LOOP2.EQ.1.AND.MINT(82).EQ.1)
9013      &NGEN(97,1)=NGEN(97,1)+MINT(143)
9014       MINT(1)=ISUB
9015       ISTSB=ISET(ISUB)
9016  
9017 C...Random choice of flavour for some SUSY processes.
9018       IF(ISUB.GE.201.AND.ISUB.LE.301) THEN
9019 C...~e_L ~nu_e or ~mu_L ~nu_mu.
9020         IF(ISUB.EQ.210) THEN
9021           KFPR(ISUB,1)=KSUSY1+11+2*INT(0.5D0+PYR(0))
9022           KFPR(ISUB,2)=KFPR(ISUB,1)+1
9023 C...~nu_e ~nu_e(bar) or ~nu_mu ~nu_mu(bar).
9024         ELSEIF(ISUB.EQ.213) THEN
9025           KFPR(ISUB,1)=KSUSY1+12+2*INT(0.5D0+PYR(0))
9026           KFPR(ISUB,2)=KFPR(ISUB,1)
9027 C...~q ~chi/~g; ~q = ~d, ~u, ~s, ~c or ~b.
9028         ELSEIF(ISUB.GE.246.AND.ISUB.LE.259.AND.ISUB.NE.255.AND.
9029      &  ISUB.NE.257) THEN
9030           IF(ISUB.GE.258) THEN
9031             RKF=4D0
9032           ELSE
9033             RKF=5D0
9034           ENDIF
9035           IF(MOD(ISUB,2).EQ.0) THEN
9036             KFPR(ISUB,1)=KSUSY1+1+INT(RKF*PYR(0))
9037           ELSE
9038             KFPR(ISUB,1)=KSUSY2+1+INT(RKF*PYR(0))
9039           ENDIF
9040 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
9041         ELSEIF(ISUB.GE.271.AND.ISUB.LE.276) THEN
9042           IF(ISUB.EQ.271.OR.ISUB.EQ.274) THEN
9043             KSU1=KSUSY1
9044             KSU2=KSUSY1
9045           ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.275) THEN
9046             KSU1=KSUSY2
9047             KSU2=KSUSY2
9048           ELSEIF(PYR(0).LT.0.5D0) THEN
9049             KSU1=KSUSY1
9050             KSU2=KSUSY2
9051           ELSE
9052             KSU1=KSUSY2
9053             KSU2=KSUSY1
9054           ENDIF
9055           KFPR(ISUB,1)=KSU1+1+INT(4D0*PYR(0))
9056           KFPR(ISUB,2)=KSU2+1+INT(4D0*PYR(0))
9057 C...~q ~q(bar);  ~q = ~d, ~u, ~s, or ~c.
9058         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.279) THEN
9059           KFPR(ISUB,1)=KSUSY1+1+INT(4D0*PYR(0))
9060           KFPR(ISUB,2)=KFPR(ISUB,1)
9061         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.280) THEN
9062           KFPR(ISUB,1)=KSUSY2+1+INT(4D0*PYR(0))
9063           KFPR(ISUB,2)=KFPR(ISUB,1)
9064 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
9065         ELSEIF(ISUB.GE.281.AND.ISUB.LE.286) THEN
9066           IF(ISUB.EQ.281.OR.ISUB.EQ.284) THEN
9067             KSU1=KSUSY1
9068             KSU2=KSUSY1
9069           ELSEIF(ISUB.EQ.282.OR.ISUB.EQ.285) THEN
9070             KSU1=KSUSY2
9071             KSU2=KSUSY2
9072           ELSEIF(PYR(0).LT.0.5D0) THEN
9073             KSU1=KSUSY1
9074             KSU2=KSUSY2
9075           ELSE
9076             KSU1=KSUSY2
9077             KSU2=KSUSY1
9078           ENDIF
9079           IF(ISUB.EQ.281.OR.ISUB.LE.283) THEN
9080             RKF=5D0
9081           ELSE
9082             RKF=4D0
9083           ENDIF
9084           KFPR(ISUB,2)=KSU2+1+INT(RKF*PYR(0))
9085         ENDIF
9086       ENDIF
9087  
9088 C...Find resonances (explicit or implicit in cross-section).
9089       MINT(72)=0
9090       KFR1=0
9091       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
9092         KFR1=KFPR(ISUB,1)
9093       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165.OR.
9094      &  ISUB.EQ.171.OR.ISUB.EQ.176) THEN
9095         KFR1=23
9096       ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172.OR.
9097      &  ISUB.EQ.177) THEN
9098         KFR1=24
9099       ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
9100         KFR1=25
9101         IF(MSTP(46).EQ.5) THEN
9102           KFR1=89
9103           PMAS(89,1)=PARP(45)
9104           PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
9105         ENDIF
9106       ENDIF
9107       CKMX=CKIN(2)
9108       IF(CKMX.LE.0D0) CKMX=VINT(1)
9109       KCR1=PYCOMP(KFR1)
9110       IF(KFR1.NE.0) THEN
9111         IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
9112      &  CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
9113       ENDIF
9114       IF(KFR1.NE.0) THEN
9115         TAUR1=PMAS(KCR1,1)**2/VINT(2)
9116         GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
9117         MINT(72)=1
9118         MINT(73)=KFR1
9119         VINT(73)=TAUR1
9120         VINT(74)=GAMR1
9121       ENDIF
9122       KFR2=0
9123       KFR3=0
9124       IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.ISUB.EQ.195.OR.
9125      $(ISUB.GE.361.AND.ISUB.LE.380))
9126      $THEN
9127         KFR2=23
9128         IF(ISUB.EQ.141) THEN
9129           KCR2=PYCOMP(KFR2)
9130           IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
9131      &     CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) THEN
9132             KFR2=0
9133           ELSE
9134             TAUR2=PMAS(KCR2,1)**2/VINT(2)            
9135             GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
9136             MINT(72)=2
9137             MINT(74)=KFR2
9138             VINT(75)=TAUR2
9139             VINT(76)=GAMR2
9140           ENDIF
9141 C...3 resonances at work:   rho, omega, a
9142         ELSEIF(ISUB.EQ.194.OR.(ISUB.GE.361.AND.ISUB.LE.368)
9143      &     .OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN
9144           MINT(72)=IRES
9145           IF(IRES.GE.1) THEN
9146             VINT(73)=XMAS(1)**2/VINT(2)
9147             VINT(74)=XMAS(1)*XWID(1)/VINT(2)
9148             TAUR1=VINT(73)
9149             GAMR1=VINT(74)
9150             KFR1=1
9151           ENDIF
9152           IF(IRES.GE.2) THEN
9153             VINT(75)=XMAS(2)**2/VINT(2)
9154             VINT(76)=XMAS(2)*XWID(2)/VINT(2)
9155             TAUR2=VINT(75)
9156             GAMR2=VINT(76)
9157             KFR2=2
9158           ENDIF
9159           IF(IRES.EQ.3) THEN
9160             VINT(77)=XMAS(3)**2/VINT(2)
9161             VINT(78)=XMAS(3)*XWID(3)/VINT(2)
9162             TAUR3=VINT(77)
9163             GAMR3=VINT(78)
9164             KFR3=3
9165           ENDIF
9166 C...Charged current:  rho+- and a+-
9167         ELSEIF(ISUB.EQ.195.OR.ISUB.GE.370.AND.ISUB.LE.378) THEN
9168           MINT(72)=IRES
9169           IF(JRES.GE.1) THEN
9170             VINT(73)=YMAS(1)**2/VINT(2)
9171             VINT(74)=YMAS(1)*YWID(1)/VINT(2)
9172             KFR1=1
9173             TAUR1=VINT(73)
9174             GAMR1=VINT(74)
9175           ENDIF
9176           IF(JRES.GE.2) THEN
9177             VINT(75)=YMAS(2)**2/VINT(2)
9178             VINT(76)=YMAS(2)*YWID(2)/VINT(2)
9179             KFR2=2
9180             TAUR2=VINT(73)
9181             GAMR2=VINT(74)
9182           ENDIF
9183           KFR3=0
9184         ENDIF
9185         IF(ISUB.NE.141) THEN
9186           IF(KFR3.NE.0.AND.KFR2.NE.0.AND.KFR1.NE.0) THEN
9187
9188           ELSEIF(KFR1.NE.0.AND.KFR2.NE.0) THEN
9189             MINT(72)=2
9190           ELSEIF(KFR1.NE.0.AND.KFR3.NE.0) THEN
9191             MINT(72)=2
9192             MINT(74)=KFR3
9193             VINT(75)=TAUR3
9194             VINT(76)=GAMR3
9195           ELSEIF(KFR2.NE.0.AND.KFR3.NE.0) THEN
9196             MINT(72)=2
9197             MINT(73)=KFR2
9198             VINT(73)=TAUR2
9199             VINT(74)=GAMR2
9200             MINT(74)=KFR3
9201             VINT(75)=TAUR3
9202             VINT(76)=GAMR3
9203           ELSEIF(KFR1.NE.0) THEN
9204             MINT(72)=1
9205           ELSEIF(KFR2.NE.0) THEN
9206             MINT(72)=1
9207             MINT(73)=KFR2
9208             VINT(73)=TAUR2
9209             VINT(74)=GAMR2
9210           ELSEIF(KFR3.NE.0) THEN
9211             MINT(72)=1
9212             MINT(73)=KFR3
9213             VINT(73)=TAUR3
9214             VINT(74)=GAMR3
9215           ELSE
9216             MINT(72)=0
9217           ENDIF
9218         ELSE
9219           IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
9220
9221           ELSEIF(KFR2.NE.0) THEN
9222             KFR1=KFR2
9223             TAUR1=TAUR2
9224             GAMR1=GAMR2
9225             MINT(72)=1
9226             MINT(73)=KFR1
9227             VINT(73)=TAUR1
9228             VINT(74)=GAMR1
9229             KFR2=0
9230           ELSE
9231             MINT(72)=0
9232           ENDIF
9233         ENDIF
9234       ENDIF
9235  
9236 C...Find product masses and minimum pT of process,
9237 C...optionally with broadening according to a truncated Breit-Wigner.
9238       VINT(63)=0D0
9239       VINT(64)=0D0
9240       MINT(71)=0
9241       VINT(71)=CKIN(3)
9242       IF(MINT(82).GE.2) VINT(71)=0D0
9243       VINT(80)=1D0
9244       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
9245         NBW=0
9246         DO 160 I=1,2
9247           PMMN(I)=0D0
9248           IF(KFPR(ISUB,I).EQ.0) THEN
9249           ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
9250      &      PARP(41)) THEN
9251             VINT(62+I)=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
9252           ELSE
9253             NBW=NBW+1
9254 C...This prevents SUSY/t particles from becoming too light.
9255             KFLW=KFPR(ISUB,I)
9256             IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
9257               KCW=PYCOMP(KFLW)
9258               PMMN(I)=PMAS(KCW,1)
9259               DO 150 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
9260                 IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
9261                   PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
9262      &            PMAS(PYCOMP(KFDP(IDC,2)),1)
9263                   IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
9264      &            PMAS(PYCOMP(KFDP(IDC,3)),1)
9265                   PMMN(I)=MIN(PMMN(I),PMSUM)
9266                 ENDIF
9267   150         CONTINUE
9268             ELSEIF(KFLW.EQ.6) THEN
9269               PMMN(I)=PMAS(24,1)+PMAS(5,1)
9270             ENDIF
9271           ENDIF
9272   160   CONTINUE
9273         IF(NBW.GE.1) THEN
9274           CKIN41=CKIN(41)
9275           CKIN43=CKIN(43)
9276           CKIN(41)=MAX(PMMN(1),CKIN(41))
9277           CKIN(43)=MAX(PMMN(2),CKIN(43))
9278           CALL PYOFSH(4,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
9279           CKIN(41)=CKIN41
9280           CKIN(43)=CKIN43
9281           IF(MINT(51).EQ.1) THEN
9282             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9283             IF(MFAIL.EQ.1) THEN
9284               MSTI(61)=1
9285               RETURN
9286             ENDIF
9287             GOTO 100
9288           ENDIF
9289           VINT(63)=PQM3**2
9290           VINT(64)=PQM4**2
9291         ENDIF
9292         IF(MIN(VINT(63),VINT(64)).LT.CKIN(6)**2) MINT(71)=1
9293         IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
9294       ENDIF
9295  
9296 C...Prepare for additional variable choices in 2 -> 3.
9297       IF(ISTSB.EQ.5) THEN
9298         VINT(201)=0D0
9299         IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
9300         VINT(206)=VINT(201)
9301         IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
9302         VINT(204)=PMAS(23,1)
9303         IF(ISUB.EQ.124.OR.ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351)
9304      &   VINT(204)=PMAS(24,1) 
9305         IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
9306         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
9307      &    ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
9308      &         VINT(204)=VINT(201)
9309         VINT(209)=VINT(204)
9310           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
9311       ENDIF
9312  
9313 C...Select incoming VDM particle (rho/omega/phi/J/psi).
9314       IF(ISTSB.NE.0.AND.(MINT(101).GE.2.OR.MINT(102).GE.2).AND.
9315      &(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7)) THEN
9316         VRN=PYR(0)*SIGT(0,0,5)
9317         IF(MINT(101).LE.1) THEN
9318           I1MN=0
9319           I1MX=0
9320         ELSE
9321           I1MN=1
9322           I1MX=MINT(101)
9323         ENDIF
9324         IF(MINT(102).LE.1) THEN
9325           I2MN=0
9326           I2MX=0
9327         ELSE
9328           I2MN=1
9329           I2MX=MINT(102)
9330         ENDIF
9331         DO 180 I1=I1MN,I1MX
9332           KFV1=110*I1+3
9333           DO 170 I2=I2MN,I2MX
9334             KFV2=110*I2+3
9335             VRN=VRN-SIGT(I1,I2,5)
9336             IF(VRN.LE.0D0) GOTO 190
9337   170     CONTINUE
9338   180   CONTINUE
9339   190   IF(MINT(101).GE.2) MINT(103)=KFV1
9340         IF(MINT(102).GE.2) MINT(104)=KFV2
9341       ENDIF
9342  
9343       IF(ISTSB.EQ.0) THEN
9344 C...Elastic scattering or single or double diffractive scattering.
9345  
9346 C...Select incoming particle (rho/omega/phi/J/psi for VDM) and mass.
9347         MINT(103)=MINT(11)
9348         MINT(104)=MINT(12)
9349         PMM(1)=VINT(3)
9350         PMM(2)=VINT(4)
9351         IF(MINT(101).GE.2.OR.MINT(102).GE.2) THEN
9352           JJ=ISUB-90
9353           VRN=PYR(0)*SIGT(0,0,JJ)
9354           IF(MINT(101).LE.1) THEN
9355             I1MN=0
9356             I1MX=0
9357           ELSE
9358             I1MN=1
9359             I1MX=MINT(101)
9360           ENDIF
9361           IF(MINT(102).LE.1) THEN
9362             I2MN=0
9363             I2MX=0
9364           ELSE
9365             I2MN=1
9366             I2MX=MINT(102)
9367           ENDIF
9368           DO 210 I1=I1MN,I1MX
9369             KFV1=110*I1+3
9370             DO 200 I2=I2MN,I2MX
9371               KFV2=110*I2+3
9372               VRN=VRN-SIGT(I1,I2,JJ)
9373               IF(VRN.LE.0D0) GOTO 220
9374   200       CONTINUE
9375   210     CONTINUE
9376   220     IF(MINT(101).GE.2) THEN
9377             MINT(103)=KFV1
9378             PMM(1)=PYMASS(KFV1)
9379           ENDIF
9380           IF(MINT(102).GE.2) THEN
9381             MINT(104)=KFV2
9382             PMM(2)=PYMASS(KFV2)
9383           ENDIF
9384         ENDIF
9385         VINT(67)=PMM(1)
9386         VINT(68)=PMM(2)
9387  
9388 C...Select mass for GVMD states (rejecting previous assignment).
9389         Q0S=4D0*PARP(15)**2
9390         Q1S=4D0*VINT(154)**2
9391         LOOP3=0
9392   230   LOOP3=LOOP3+1
9393         DO 240 JT=1,2
9394           IF(MINT(106+JT).EQ.3) THEN
9395             PS=VINT(2+JT)**2
9396             PMM(JT)=(Q0S+PS)*(Q1S+PS)/
9397      &      (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
9398             IF(MINT(102+JT).GE.333) PMM(JT)=PMM(JT)-
9399      &      PMAS(PYCOMP(113),1)+PMAS(PYCOMP(MINT(102+JT)),1)
9400           ENDIF
9401   240   CONTINUE
9402         IF(PMM(1)+PMM(2)+PARP(104).GE.VINT(1)) THEN
9403           IF(LOOP3.LT.100.AND.(MINT(107).EQ.3.OR.MINT(108).EQ.3))
9404      &    GOTO 230
9405           GOTO 100
9406         ENDIF
9407  
9408 C...Side/sides of diffractive system.
9409         MINT(17)=0
9410         MINT(18)=0
9411         IF(ISUB.EQ.92.OR.ISUB.EQ.94) MINT(17)=1
9412         IF(ISUB.EQ.93.OR.ISUB.EQ.94) MINT(18)=1
9413  
9414 C...Find masses of particles and minimal masses of diffractive states.
9415         DO 250 JT=1,2
9416           PDIF(JT)=PMM(JT)
9417           VINT(68+JT)=PDIF(JT)
9418           IF(MINT(16+JT).EQ.1) PDIF(JT)=PDIF(JT)+PARP(102)
9419   250   CONTINUE
9420         SH=VINT(2)
9421         SQM1=PMM(1)**2
9422         SQM2=PMM(2)**2
9423         SQM3=PDIF(1)**2
9424         SQM4=PDIF(2)**2
9425         SMRES1=(PMM(1)+PMRC)**2
9426         SMRES2=(PMM(2)+PMRC)**2
9427  
9428 C...Find elastic slope and lower limit diffractive slope.
9429         IHA=MAX(2,IABS(MINT(103))/110)
9430         IF(IHA.GE.5) IHA=1
9431         IHB=MAX(2,IABS(MINT(104))/110)
9432         IF(IHB.GE.5) IHB=1
9433         IF(ISUB.EQ.91) THEN
9434           BMN=2D0*BHAD(IHA)+2D0*BHAD(IHB)+4D0*SH**EPS-4.2D0
9435         ELSEIF(ISUB.EQ.92) THEN
9436           BMN=MAX(2D0,2D0*BHAD(IHB))
9437         ELSEIF(ISUB.EQ.93) THEN
9438           BMN=MAX(2D0,2D0*BHAD(IHA))
9439         ELSEIF(ISUB.EQ.94) THEN
9440           BMN=2D0*ALP*4D0
9441         ENDIF
9442  
9443 C...Determine maximum possible t range and coefficient of generation.
9444         SQLA12=(SH-SQM1-SQM2)**2-4D0*SQM1*SQM2
9445         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
9446         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
9447         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
9448         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
9449      &  (SQM1*SQM4-SQM2*SQM3)/SH
9450         THL=-0.5D0*(THA+THB)
9451         THU=THC/THL
9452         THRND=EXP(MAX(-50D0,BMN*(THL-THU)))-1D0
9453  
9454 C...Select diffractive mass/masses according to dm^2/m^2.
9455         LOOP3=0
9456   260   LOOP3=LOOP3+1
9457         DO 270 JT=1,2
9458           IF(MINT(16+JT).EQ.0) THEN
9459             PDIF(2+JT)=PDIF(JT)
9460           ELSE
9461             PMMIN=PDIF(JT)
9462             PMMAX=MAX(VINT(2+JT),VINT(1)-PDIF(3-JT))
9463             PDIF(2+JT)=PMMIN*(PMMAX/PMMIN)**PYR(0)
9464           ENDIF
9465   270   CONTINUE
9466         SQM3=PDIF(3)**2
9467         SQM4=PDIF(4)**2
9468  
9469 C..Additional mass factors, including resonance enhancement.
9470         IF(PDIF(3)+PDIF(4).GE.VINT(1)) THEN
9471           IF(LOOP3.LT.100) GOTO 260
9472           GOTO 100
9473         ENDIF
9474         IF(ISUB.EQ.92) THEN
9475           FSD=(1D0-SQM3/SH)*(1D0+CRES*SMRES1/(SMRES1+SQM3))
9476           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
9477         ELSEIF(ISUB.EQ.93) THEN
9478           FSD=(1D0-SQM4/SH)*(1D0+CRES*SMRES2/(SMRES2+SQM4))
9479           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
9480         ELSEIF(ISUB.EQ.94) THEN
9481           FDD=(1D0-(PDIF(3)+PDIF(4))**2/SH)*(SH*SMP/
9482      &    (SH*SMP+SQM3*SQM4))*(1D0+CRES*SMRES1/(SMRES1+SQM3))*
9483      &    (1D0+CRES*SMRES2/(SMRES2+SQM4))
9484           IF(FDD.LT.PYR(0)*(1D0+CRES)**2) GOTO 260
9485         ENDIF
9486  
9487 C...Select t according to exp(Bmn*t) and correct to right slope.
9488         TH=THU+LOG(1D0+THRND*PYR(0))/BMN
9489         IF(ISUB.GE.92) THEN
9490           IF(ISUB.EQ.92) THEN
9491             BADD=2D0*ALP*LOG(SH/SQM3)
9492             IF(BHAD(IHB).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHB)-2D0)
9493           ELSEIF(ISUB.EQ.93) THEN
9494             BADD=2D0*ALP*LOG(SH/SQM4)
9495             IF(BHAD(IHA).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHA)-2D0)
9496           ELSEIF(ISUB.EQ.94) THEN
9497             BADD=2D0*ALP*(LOG(EXP(4D0)+SH/(ALP*SQM3*SQM4))-4D0)
9498           ENDIF
9499           IF(EXP(MAX(-50D0,BADD*(TH-THU))).LT.PYR(0)) GOTO 260
9500         ENDIF
9501  
9502 C...Check whether m^2 and t choices are consistent.
9503         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
9504         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
9505         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
9506         IF(THB.LE.1D-8) GOTO 260
9507         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
9508      &  (SQM1*SQM4-SQM2*SQM3)/SH
9509         THLM=-0.5D0*(THA+THB)
9510         THUM=THC/THLM
9511         IF(TH.LT.THLM.OR.TH.GT.THUM) GOTO 260
9512  
9513 C...Information to output.
9514         VINT(21)=1D0
9515         VINT(22)=0D0
9516         VINT(23)=MIN(1D0,MAX(-1D0,(THA+2D0*TH)/THB))
9517         VINT(45)=TH
9518         VINT(59)=2D0*SQRT(MAX(0D0,-(THC+THA*TH+TH**2)))/THB
9519         VINT(63)=PDIF(3)**2
9520         VINT(64)=PDIF(4)**2
9521         VINT(283)=PMM(1)**2/4D0
9522         VINT(284)=PMM(2)**2/4D0
9523  
9524 C...Note: in the following, by In is meant the integral over the
9525 C...quantity multiplying coefficient cn.
9526 C...Choose tau according to h1(tau)/tau, where
9527 C...h1(tau) = c1 + I1/I2*c2*1/tau + I1/I3*c3*1/(tau+tau_R) +
9528 C...I1/I4*c4*tau/((s*tau-m^2)^2+(m*Gamma)^2) +
9529 C...I1/I5*c5*1/(tau+tau_R') +
9530 C...I1/I6*c6*tau/((s*tau-m'^2)^2+(m'*Gamma')^2) +
9531 C...I1/I7*c7*tau/(1.-tau), and
9532 C...c1 + c2 + c3 + c4 + c5 + c6 + c7 = 1.
9533       ELSEIF(ISTSB.GE.1.AND.ISTSB.LE.5) THEN
9534         CALL PYKLIM(1)
9535         IF(MINT(51).NE.0) THEN
9536           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9537           IF(MFAIL.EQ.1) THEN
9538             MSTI(61)=1
9539             RETURN
9540           ENDIF
9541           GOTO 100
9542         ENDIF
9543         RTAU=PYR(0)
9544         MTAU=1
9545         IF(RTAU.GT.COEF(ISUB,1)) MTAU=2
9546         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)) MTAU=3
9547         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)) MTAU=4
9548         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4))
9549      &  MTAU=5
9550         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
9551      &  COEF(ISUB,5)) MTAU=6
9552         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
9553      &  COEF(ISUB,5)+COEF(ISUB,6)) MTAU=7
9554 C...Additional check to handle techni-processes with extra resonance
9555 C....Only modify tau treatment
9556         IF(ISUB.EQ.194.OR.ISUB.EQ.195.OR.(ISUB.GE.361.AND.ISUB.LE.380))
9557      &   THEN
9558           IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)
9559      &     +COEF(ISUB,4)+COEF(ISUB,5)+COEF(ISUB,6)+COEF(ISUB,7)) MTAU=8
9560           IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)
9561      &     +COEF(ISUB,4)+COEF(ISUB,5)+COEF(ISUB,6)+COEF(ISUB,7)
9562      &     +COEFX(ISUB,1)) MTAU=9
9563         ENDIF
9564         CALL PYKMAP(1,MTAU,PYR(0))
9565  
9566 C...2 -> 3, 4 processes:
9567 C...Choose tau' according to h4(tau,tau')/tau', where
9568 C...h4(tau,tau') = c1 + I1/I2*c2*(1 - tau/tau')^3/tau' +
9569 C...I1/I3*c3*1/(1 - tau'), and c1 + c2 + c3 = 1.
9570         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
9571           CALL PYKLIM(4)
9572           IF(MINT(51).NE.0) THEN
9573             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9574             IF(MFAIL.EQ.1) THEN
9575               MSTI(61)=1
9576               RETURN
9577             ENDIF
9578             GOTO 100
9579           ENDIF
9580           RTAUP=PYR(0)
9581           MTAUP=1
9582           IF(RTAUP.GT.COEF(ISUB,18)) MTAUP=2
9583           IF(RTAUP.GT.COEF(ISUB,18)+COEF(ISUB,19)) MTAUP=3
9584           CALL PYKMAP(4,MTAUP,PYR(0))
9585         ENDIF
9586  
9587 C...Choose y* according to h2(y*), where
9588 C...h2(y*) = I0/I1*c1*(y*-y*min) + I0/I2*c2*(y*max-y*) +
9589 C...I0/I3*c3*1/cosh(y*) + I0/I4*c4*1/(1-exp(y*-y*max)) +
9590 C...I0/I5*c5*1/(1-exp(-y*-y*min)), I0 = y*max-y*min,
9591 C...and c1 + c2 + c3 + c4 + c5 = 1.
9592         CALL PYKLIM(2)
9593         IF(MINT(51).NE.0) THEN
9594           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9595           IF(MFAIL.EQ.1) THEN
9596             MSTI(61)=1
9597             RETURN
9598           ENDIF
9599           GOTO 100
9600         ENDIF
9601         RYST=PYR(0)
9602         MYST=1
9603         IF(RYST.GT.COEF(ISUB,8)) MYST=2
9604         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
9605         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)) MYST=4
9606         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)+
9607      &  COEF(ISUB,11)) MYST=5
9608         CALL PYKMAP(2,MYST,PYR(0))
9609  
9610 C...2 -> 2 processes:
9611 C...Choose cos(theta-hat) (cth) according to h3(cth), where
9612 C...h3(cth) = c0 + I0/I1*c1*1/(A - cth) + I0/I2*c2*1/(A + cth) +
9613 C...I0/I3*c3*1/(A - cth)^2 + I0/I4*c4*1/(A + cth)^2,
9614 C...A = 1 + 2*(m3*m4/sh)^2 (= 1 for massless products),
9615 C...and c0 + c1 + c2 + c3 + c4 = 1.
9616         CALL PYKLIM(3)
9617         IF(MINT(51).NE.0) THEN
9618           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9619           IF(MFAIL.EQ.1) THEN
9620             MSTI(61)=1
9621             RETURN
9622           ENDIF
9623           GOTO 100
9624         ENDIF
9625         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
9626           RCTH=PYR(0)
9627           MCTH=1
9628           IF(RCTH.GT.COEF(ISUB,13)) MCTH=2
9629           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)) MCTH=3
9630           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)) MCTH=4
9631           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)+
9632      &    COEF(ISUB,16)) MCTH=5
9633           CALL PYKMAP(3,MCTH,PYR(0))
9634         ENDIF
9635  
9636 C...2 -> 3 : select pT1, phi1, pT2, phi2, y3 for 3 outgoing.
9637         IF(ISTSB.EQ.5) THEN
9638           CALL PYKMAP(5,0,0D0)
9639           IF(MINT(51).NE.0) THEN
9640             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9641             IF(MFAIL.EQ.1) THEN
9642               MSTI(61)=1
9643               RETURN
9644             ENDIF
9645             GOTO 100
9646           ENDIF
9647         ENDIF
9648  
9649 C...DIS as f + gamma* -> f process: set dummy values.
9650       ELSEIF(ISTSB.EQ.8) THEN
9651         VINT(21)=0.9D0
9652         VINT(22)=0D0
9653         VINT(23)=0D0
9654         VINT(47)=0D0
9655         VINT(48)=0D0
9656  
9657 C...Low-pT or multiple interactions (first semihard interaction).
9658       ELSEIF(ISTSB.EQ.9) THEN
9659         IF(MINT(35).LE.1) CALL PYMULT(3)
9660         IF(MINT(35).GE.2) CALL PYMIGN(3)
9661         ISUB=MINT(1)
9662  
9663 C...Study user-defined process: kinematics plus weight.
9664       ELSEIF(ISTSB.EQ.11) THEN
9665         IF(IDWTUP.GT.0.AND.XWGTUP.LT.0D0) CALL
9666      &  PYERRM(26,'(PYRAND:) Negative XWGTUP for user process')
9667         MSTI(51)=0
9668         IF(NUP.LE.0) THEN
9669           MINT(51)=2
9670           MSTI(51)=1
9671           IF(MINT(82).EQ.1) THEN
9672             NGEN(0,1)=NGEN(0,1)-1
9673             NGEN(ISUB,1)=NGEN(ISUB,1)-1
9674           ENDIF
9675           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9676           RETURN
9677         ENDIF
9678  
9679 C...Extract cross section event weight.
9680         IF(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.4) THEN
9681           SIGS=1D-9*XWGTUP
9682         ELSE
9683           SIGS=1D-9*XSECUP(KFPR(ISUB,1))
9684         ENDIF
9685         IF(IABS(IDWTUP).GE.1.AND.IABS(IDWTUP).LE.3) THEN
9686           VINT(97)=SIGN(1D0,XWGTUP)
9687         ELSE
9688           VINT(97)=1D-9*XWGTUP
9689         ENDIF
9690  
9691 C...Construct 'trivial' kinematical variables needed.
9692         KFL1=IDUP(1)
9693         KFL2=IDUP(2)
9694         VINT(41)=PUP(4,1)/EBMUP(1)
9695         VINT(42)=PUP(4,2)/EBMUP(2)
9696         IF (VINT(41).GT.1.000001.OR.VINT(42).GT.1.000001) THEN
9697           CALL PYERRM(9,'(PYRAND:) x > 1 in external event '//
9698      &        '(listing follows):') 
9699           CALL PYLIST(7)
9700         ENDIF
9701         VINT(21)=VINT(41)*VINT(42)
9702         VINT(22)=0.5D0*LOG(VINT(41)/VINT(42))
9703         VINT(44)=VINT(21)*VINT(2)
9704         VINT(43)=SQRT(MAX(0D0,VINT(44)))
9705         VINT(55)=SCALUP
9706         IF(SCALUP.LE.0D0) VINT(55)=VINT(43)
9707         VINT(56)=VINT(55)**2
9708         VINT(57)=AQEDUP
9709         VINT(58)=AQCDUP
9710  
9711 C...Construct other kinematical variables needed (approximately).
9712         VINT(23)=0D0
9713         VINT(26)=VINT(21)
9714         VINT(45)=-0.5D0*VINT(44)
9715         VINT(46)=-0.5D0*VINT(44)
9716         VINT(49)=VINT(43)
9717         VINT(50)=VINT(44)
9718         VINT(51)=VINT(55)
9719         VINT(52)=VINT(56)
9720         VINT(53)=VINT(55)
9721         VINT(54)=VINT(56)
9722         VINT(25)=0D0
9723         VINT(48)=0D0
9724         IF(ISTUP(1).NE.-1.OR.ISTUP(2).NE.-1) CALL PYERRM(26,
9725      &  '(PYRAND:) unacceptable ISTUP code for incoming particles')
9726         DO 280 IUP=3,NUP
9727           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) CALL PYERRM(26,
9728      &    '(PYRAND:) unacceptable ISTUP code for particles')
9729           IF(ISTUP(IUP).EQ.1) VINT(25)=VINT(25)+2D0*(PUP(5,IUP)**2+
9730      &    PUP(1,IUP)**2+PUP(2,IUP)**2)/VINT(2)
9731           IF(ISTUP(IUP).EQ.1) VINT(48)=VINT(48)+0.5D0*(PUP(1,IUP)**2+
9732      &    PUP(2,IUP)**2)
9733   280   CONTINUE
9734         VINT(47)=SQRT(VINT(48))
9735       ENDIF
9736  
9737 C...Choose azimuthal angle.
9738       VINT(24)=0D0
9739       IF(ISTSB.NE.11) VINT(24)=PARU(2)*PYR(0)
9740  
9741 C...Check against user cuts on kinematics at parton level.
9742       MINT(51)=0
9743       IF((ISUB.LE.90.OR.ISUB.GT.100).AND.ISTSB.LE.10) CALL PYKLIM(0)
9744       IF(MINT(51).NE.0) THEN
9745         IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9746         IF(MFAIL.EQ.1) THEN
9747           MSTI(61)=1
9748           RETURN
9749         ENDIF
9750         GOTO 100
9751       ENDIF
9752       IF(MINT(82).EQ.1.AND.MSTP(141).GE.1.AND.ISTSB.LE.10) THEN
9753         MCUT=0
9754         IF(MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+MSUB(95).EQ.0)
9755      &  CALL PYKCUT(MCUT)
9756         IF(MCUT.NE.0) THEN
9757           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9758           IF(MFAIL.EQ.1) THEN
9759             MSTI(61)=1
9760             RETURN
9761           ENDIF
9762           GOTO 100
9763         ENDIF
9764       ENDIF
9765  
9766 C...Calculate differential cross-section for different subprocesses.
9767       IF(ISTSB.LE.10) CALL PYSIGH(NCHN,SIGS)
9768       SIGSOR=SIGS
9769       SIGLPT=SIGT(0,0,5)*VINT(315)*VINT(316)
9770  
9771 C...Multiply cross section by lepton -> photon flux factor.
9772       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
9773         SIGS=WTGAGA*SIGS
9774         DO 290 ICHN=1,NCHN
9775           SIGH(ICHN)=WTGAGA*SIGH(ICHN)
9776   290   CONTINUE
9777         SIGLPT=WTGAGA*SIGLPT
9778       ENDIF
9779  
9780 C...Multiply cross-section by user-defined weights.
9781       IF(MSTP(173).EQ.1) THEN
9782         SIGS=PARP(173)*SIGS
9783         DO 300 ICHN=1,NCHN
9784           SIGH(ICHN)=PARP(173)*SIGH(ICHN)
9785   300   CONTINUE
9786         SIGLPT=PARP(173)*SIGLPT
9787       ENDIF
9788       WTXS=1D0
9789       SIGSWT=SIGS
9790       VINT(99)=1D0
9791       VINT(100)=1D0
9792       IF(MINT(82).EQ.1.AND.MSTP(142).GE.1) THEN
9793         IF(ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+
9794      &  MSUB(95).EQ.0) CALL PYEVWT(WTXS)
9795         SIGSWT=WTXS*SIGS
9796         VINT(99)=WTXS
9797         IF(MSTP(142).EQ.1) VINT(100)=1D0/WTXS
9798       ENDIF
9799  
9800 C...Calculations for Monte Carlo estimate of all cross-sections.
9801       IF(MINT(82).EQ.1.AND.ISUB.LE.90.OR.ISUB.GE.96) THEN
9802         IF(MSTP(142).LE.1) THEN
9803           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
9804         ELSE
9805           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGSWT
9806         ENDIF
9807       ELSEIF(MINT(82).EQ.1) THEN
9808         XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
9809       ENDIF
9810       IF((ISUB.EQ.95.OR.ISUB.EQ.96).AND.LOOP2.EQ.1.AND.
9811      &MINT(82).EQ.1) XSEC(97,2)=XSEC(97,2)+SIGLPT
9812  
9813 C...Multiple interactions: store results of cross-section calculation.
9814       IF(MINT(50).EQ.1.AND.MSTP(82).GE.3) THEN
9815         VINT(153)=SIGSOR
9816         IF(MINT(35).LE.1) CALL PYMULT(4)
9817         IF(MINT(35).GE.2) CALL PYMIGN(4)
9818       ENDIF
9819  
9820 C...Ratio of actual to maximum cross section.
9821       IF(ISTSB.NE.11) THEN
9822         VIOL=SIGSWT/XSEC(ISUB,1)
9823         IF(ISUB.EQ.96.AND.MSTP(173).EQ.1) VIOL=VIOL/PARP(174)
9824       ELSEIF(IDWTUP.EQ.1.OR.IDWTUP.EQ.2) THEN
9825         VIOL=XWGTUP/XMAXUP(KFPR(ISUB,1))
9826       ELSEIF(IDWTUP.EQ.-1.OR.IDWTUP.EQ.-2) THEN
9827         VIOL=ABS(XWGTUP)/ABS(XMAXUP(KFPR(ISUB,1)))
9828       ELSE
9829         VIOL=1D0
9830       ENDIF
9831  
9832 C...Check that weight not negative.
9833       IF(MSTP(123).LE.0) THEN
9834         IF(VIOL.LT.-1D-3) THEN
9835           WRITE(MSTU(11),5000) VIOL,NGEN(0,3)+1
9836           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
9837      &    VINT(22),VINT(23),VINT(26)
9838           CALL PYSTOP(2)
9839         ENDIF
9840       ELSE
9841         IF(VIOL.LT.MIN(-1D-3,VINT(109))) THEN
9842           VINT(109)=VIOL
9843           IF(MSTP(123).LE.2) WRITE(MSTU(11),5200) VIOL,NGEN(0,3)+1
9844           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
9845      &    VINT(22),VINT(23),VINT(26)
9846         ENDIF
9847       ENDIF
9848  
9849 C...Weighting using estimate of maximum of differential cross-section.
9850       RATND=1D0
9851       IF(MFAIL.EQ.0.AND.ISUB.NE.95.AND.ISUB.NE.96) THEN
9852         IF(VIOL.LT.PYR(0)) THEN
9853           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9854           IF(ISUB.GE.91.AND.ISUB.LE.94) ISUB=0
9855           GOTO 100
9856         ENDIF
9857       ELSEIF(MFAIL.EQ.0) THEN
9858         RATND=SIGLPT/XSEC(95,1)
9859         VIOL=VIOL/RATND
9860         IF(LOOP2.EQ.1.AND.RATND.LT.PYR(0)) THEN
9861           IF(VIOL.GT.PYR(0).AND.MINT(82).EQ.1.AND.MSUB(95).EQ.1.AND.
9862      &    (ISUB.LE.90.OR.ISUB.GE.95)) NGEN(95,1)=NGEN(95,1)+MINT(143)
9863           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9864           ISUB=0
9865           GOTO 100
9866         ENDIF
9867         IF(VIOL.LT.PYR(0)) THEN
9868           GOTO 140
9869         ENDIF
9870       ELSEIF(ISUB.NE.95.AND.ISUB.NE.96) THEN
9871         IF(VIOL.LT.PYR(0)) THEN
9872           MSTI(61)=1
9873           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9874           RETURN
9875         ENDIF
9876       ELSE
9877         RATND=SIGLPT/XSEC(95,1)
9878         IF(LOOP.EQ.1.AND.RATND.LT.PYR(0)) THEN
9879           MSTI(61)=1
9880           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9881           RETURN
9882         ENDIF
9883         VIOL=VIOL/RATND
9884         IF(VIOL.LT.PYR(0)) THEN
9885           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9886           GOTO 100
9887         ENDIF
9888       ENDIF
9889  
9890 C...Check for possible violation of estimated maximum of differential
9891 C...cross-section used in weighting.
9892       IF(MSTP(123).LE.0) THEN
9893         IF(VIOL.GT.1D0) THEN
9894           WRITE(MSTU(11),5300) VIOL,NGEN(0,3)+1
9895           IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
9896      &    VINT(22),VINT(23),VINT(26)
9897           CALL PYSTOP(2)
9898         ENDIF
9899       ELSEIF(MSTP(123).EQ.1) THEN
9900         IF(VIOL.GT.VINT(108)) THEN
9901           VINT(108)=VIOL
9902           IF(VIOL.GT.1.0001D0) THEN
9903             MINT(10)=1
9904             WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
9905             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
9906      &      VINT(22),VINT(23),VINT(26)
9907           ENDIF
9908         ENDIF
9909       ELSEIF(VIOL.GT.VINT(108)) THEN
9910         VINT(108)=VIOL
9911         IF(VIOL.GT.1D0) THEN
9912           MINT(10)=1
9913           IF(MSTP(123).EQ.2) WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
9914           IF(ISTSB.EQ.11.AND.(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.2))
9915      &    THEN
9916             XMAXUP(KFPR(ISUB,1))=VIOL*XMAXUP(KFPR(ISUB,1))
9917             IF(KFPR(ISUB,1).LE.9) THEN
9918               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5800) KFPR(ISUB,1),
9919      &        XMAXUP(KFPR(ISUB,1))
9920             ELSEIF(KFPR(ISUB,1).LE.99) THEN
9921               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5900) KFPR(ISUB,1),
9922      &        XMAXUP(KFPR(ISUB,1))
9923             ELSE
9924               IF(MSTP(123).EQ.2) WRITE(MSTU(11),6000) KFPR(ISUB,1),
9925      &        XMAXUP(KFPR(ISUB,1))
9926             ENDIF
9927           ENDIF
9928           IF(ISTSB.NE.11.OR.IABS(IDWTUP).EQ.1) THEN
9929             XDIF=XSEC(ISUB,1)*(VIOL-1D0)
9930             XSEC(ISUB,1)=XSEC(ISUB,1)+XDIF
9931             IF(MSUB(ISUB).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GT.96))
9932      &      XSEC(0,1)=XSEC(0,1)+XDIF
9933             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
9934      &      VINT(22),VINT(23),VINT(26)
9935             IF(ISUB.LE.9) THEN
9936               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5500) ISUB,XSEC(ISUB,1)
9937             ELSEIF(ISUB.LE.99) THEN
9938               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5600) ISUB,XSEC(ISUB,1)
9939             ELSE
9940               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5700) ISUB,XSEC(ISUB,1)
9941             ENDIF
9942           ENDIF
9943           VINT(108)=1D0
9944         ENDIF
9945       ENDIF
9946  
9947 C...Multiple interactions: choose impact parameter (if not already done).
9948       IF(MINT(39).EQ.0) VINT(148)=1D0
9949       IF(MINT(50).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GE.96).AND.
9950      &MSTP(82).GE.3) THEN
9951         IF(MINT(35).LE.1) CALL PYMULT(5)
9952         IF(MINT(35).GE.2) CALL PYMIGN(5)
9953         IF(VINT(150).LT.PYR(0)) THEN
9954           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9955           IF(MFAIL.EQ.1) THEN
9956             MSTI(61)=1
9957             RETURN
9958           ENDIF
9959           GOTO 100
9960         ENDIF
9961       ENDIF
9962       IF(MINT(82).EQ.1) NGEN(0,2)=NGEN(0,2)+1
9963       IF(MINT(82).EQ.1.AND.MSUB(95).EQ.1) THEN
9964         IF(ISUB.LE.90.OR.ISUB.GE.95) NGEN(95,1)=NGEN(95,1)+MINT(143)
9965         IF(ISUB.LE.90.OR.ISUB.GE.96) NGEN(96,2)=NGEN(96,2)+1
9966       ENDIF
9967       IF(ISUB.LE.90.OR.ISUB.GE.96) MINT(31)=MINT(31)+1
9968  
9969 C...Choose flavour of reacting partons (and subprocess).
9970       IF(ISTSB.GE.11) GOTO 320
9971       RSIGS=SIGS*PYR(0)
9972       QT2=VINT(48)
9973       RQQBAR=PARP(87)*(1D0-(QT2/(QT2+(PARP(88)*PARP(82)*
9974      &(VINT(1)/PARP(89))**PARP(90))**2))**2)
9975       IF(ISUB.NE.95.AND.(ISUB.NE.96.OR.MSTP(82).LE.1.OR.
9976      &PYR(0).GT.RQQBAR)) THEN
9977         DO 310 ICHN=1,NCHN
9978           KFL1=ISIG(ICHN,1)
9979           KFL2=ISIG(ICHN,2)
9980           MINT(2)=ISIG(ICHN,3)
9981           RSIGS=RSIGS-SIGH(ICHN)
9982           IF(RSIGS.LE.0D0) GOTO 320
9983   310   CONTINUE
9984  
9985 C...Multiple interactions: choose qqbar preferentially at small pT.
9986       ELSEIF(ISUB.EQ.96) THEN
9987         MINT(105)=MINT(103)
9988         MINT(109)=MINT(107)
9989         CALL PYSPLI(MINT(11),21,KFL1,KFLDUM)
9990         MINT(105)=MINT(104)
9991         MINT(109)=MINT(108)
9992         CALL PYSPLI(MINT(12),21,KFL2,KFLDUM)
9993         MINT(1)=11
9994         MINT(2)=1
9995         IF(KFL1.EQ.KFL2.AND.PYR(0).LT.0.5D0) MINT(2)=2
9996  
9997 C...Low-pT: choose string drawing configuration.
9998       ELSE
9999         KFL1=21
10000         KFL2=21
10001         RSIGS=6D0*PYR(0)
10002         MINT(2)=1
10003         IF(RSIGS.GT.1D0) MINT(2)=2
10004         IF(RSIGS.GT.2D0) MINT(2)=3
10005       ENDIF
10006  
10007 C...Reassign QCD process. Partons before initial state radiation.
10008   320 IF(MINT(2).GT.10) THEN
10009         MINT(1)=MINT(2)/10
10010         MINT(2)=MOD(MINT(2),10)
10011       ENDIF
10012       IF(MINT(82).EQ.1.AND.MSTP(111).GE.0) NGEN(MINT(1),2)=
10013      &NGEN(MINT(1),2)+1
10014       MINT(15)=KFL1
10015       MINT(16)=KFL2
10016       MINT(13)=MINT(15)
10017       MINT(14)=MINT(16)
10018       VINT(141)=VINT(41)
10019       VINT(142)=VINT(42)
10020       VINT(151)=0D0
10021       VINT(152)=0D0
10022  
10023 C...Calculate x value of photon for parton inside photon inside e.
10024       DO 350 JT=1,2
10025         MINT(18+JT)=0
10026         VINT(154+JT)=0D0
10027         MSPLI=0
10028         IF(JT.EQ.1.AND.MINT(43).LE.2) MSPLI=1
10029         IF(JT.EQ.2.AND.MOD(MINT(43),2).EQ.1) MSPLI=1
10030         IF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) MSPLI=MSPLI+1
10031         IF(MSPLI.EQ.2) THEN
10032           KFLH=MINT(14+JT)
10033           XHRD=VINT(140+JT)
10034           Q2HRD=VINT(54)
10035           MINT(105)=MINT(102+JT)
10036           MINT(109)=MINT(106+JT)
10037           VINT(120)=VINT(2+JT)
10038           IF(MSTP(57).LE.1) THEN
10039             CALL PYPDFU(22,XHRD,Q2HRD,XPQ)
10040           ELSE
10041             CALL PYPDFL(22,XHRD,Q2HRD,XPQ)
10042           ENDIF
10043           WTMX=4D0*XPQ(KFLH)
10044           IF(MSTP(13).EQ.2) THEN
10045             Q2PMS=Q2HRD/PMAS(11,1)**2
10046             WTMX=WTMX*LOG(MAX(2D0,Q2PMS*(1D0-XHRD)/XHRD**2))
10047           ENDIF
10048   330     XE=XHRD**PYR(0)
10049           XG=MIN(1D0-1D-10,XHRD/XE)
10050           IF(MSTP(57).LE.1) THEN
10051             CALL PYPDFU(22,XG,Q2HRD,XPQ)
10052           ELSE
10053             CALL PYPDFL(22,XG,Q2HRD,XPQ)
10054           ENDIF
10055           WT=(1D0+(1D0-XE)**2)*XPQ(KFLH)
10056           IF(MSTP(13).EQ.2) WT=WT*LOG(MAX(2D0,Q2PMS*(1D0-XE)/XE**2))
10057           IF(WT.LT.PYR(0)*WTMX) GOTO 330
10058           MINT(18+JT)=1
10059           VINT(154+JT)=XE
10060           DO 340 KFLS=-25,25
10061             XSFX(JT,KFLS)=XPQ(KFLS)
10062   340     CONTINUE
10063         ENDIF
10064   350 CONTINUE
10065  
10066 C...Pick scale where photon is resolved.
10067       Q0S=PARP(15)**2
10068       Q1S=VINT(154)**2
10069       VINT(283)=0D0
10070       IF(MINT(107).EQ.3) THEN
10071         IF(MSTP(66).EQ.1) THEN
10072           VINT(283)=Q0S*(VINT(54)/Q0S)**PYR(0)
10073         ELSEIF(MSTP(66).EQ.2) THEN
10074           PS=VINT(3)**2
10075           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
10076      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
10077           Q2INT=SQRT(Q0S*Q2EFF)
10078           VINT(283)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
10079         ELSEIF(MSTP(66).EQ.3) THEN
10080           VINT(283)=Q0S*(Q1S/Q0S)**PYR(0)
10081         ELSEIF(MSTP(66).GE.4) THEN
10082           PS=0.25D0*VINT(3)**2
10083           VINT(283)=(Q0S+PS)*(Q1S+PS)/
10084      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
10085         ENDIF
10086       ENDIF
10087       VINT(284)=0D0
10088       IF(MINT(108).EQ.3) THEN
10089         IF(MSTP(66).EQ.1) THEN
10090           VINT(284)=Q0S*(VINT(54)/Q0S)**PYR(0)
10091         ELSEIF(MSTP(66).EQ.2) THEN
10092           PS=VINT(4)**2
10093           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
10094      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
10095           Q2INT=SQRT(Q0S*Q2EFF)
10096           VINT(284)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
10097         ELSEIF(MSTP(66).EQ.3) THEN
10098           VINT(284)=Q0S*(Q1S/Q0S)**PYR(0)
10099         ELSEIF(MSTP(66).GE.4) THEN
10100           PS=0.25D0*VINT(4)**2
10101           VINT(284)=(Q0S+PS)*(Q1S+PS)/
10102      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
10103         ENDIF
10104       ENDIF
10105       IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10106  
10107 C...Format statements for differential cross-section maximum violations.
10108  5000 FORMAT(/1X,'Error: negative cross-section fraction',1P,D11.3,1X,
10109      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
10110  5100 FORMAT(1X,'ISUB = ',I3,'; Point of violation:'/1X,'tau =',1P,
10111      &D11.3,', y* =',D11.3,', cthe = ',0P,F11.7,', tau'' =',1P,D11.3)
10112  5200 FORMAT(/1X,'Warning: negative cross-section fraction',1P,D11.3,1X,
10113      &'in event',1X,I7)
10114  5300 FORMAT(/1X,'Error: maximum violated by',1P,D11.3,1X,
10115      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
10116  5400 FORMAT(/1X,'Advisory warning: maximum violated by',1P,D11.3,1X,
10117      &'in event',1X,I7)
10118  5500 FORMAT(1X,'XSEC(',I1,',1) increased to',1P,D11.3)
10119  5600 FORMAT(1X,'XSEC(',I2,',1) increased to',1P,D11.3)
10120  5700 FORMAT(1X,'XSEC(',I3,',1) increased to',1P,D11.3)
10121  5800 FORMAT(1X,'XMAXUP(',I1,') increased to',1P,D11.3)
10122  5900 FORMAT(1X,'XMAXUP(',I2,') increased to',1P,D11.3)
10123  6000 FORMAT(1X,'XMAXUP(',I3,') increased to',1P,D11.3)
10124  
10125       RETURN
10126       END
10127  
10128 C*********************************************************************
10129  
10130 C...PYSCAT
10131 C...Finds outgoing flavours and event type; sets up the kinematics
10132 C...and colour flow of the hard scattering
10133  
10134       SUBROUTINE PYSCAT
10135  
10136 C...Double precision and integer declarations
10137       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
10138       IMPLICIT INTEGER(I-N)
10139       INTEGER PYK,PYCHGE,PYCOMP
10140 C...Parameter statement to help give large particle numbers.
10141       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
10142      &KEXCIT=4000000,KDIMEN=5000000)
10143 C...Parameter statement for maximum size of showers.
10144       PARAMETER (MAXNUR=1000)
10145  
10146 C...User process event common block.
10147       INTEGER MAXNUP
10148       PARAMETER (MAXNUP=500)
10149       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
10150       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
10151       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
10152      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
10153      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
10154       SAVE /HEPEUP/
10155  
10156 C...Commonblocks.
10157       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
10158       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
10159       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
10160       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
10161       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
10162       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
10163       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
10164       COMMON/PYINT1/MINT(400),VINT(400)
10165       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
10166       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
10167       COMMON/PYINT4/MWID(500),WIDS(500,5)
10168       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
10169       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
10170      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
10171       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
10172       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,
10173      &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYSSMT/,
10174      &/PYTCSM/
10175 C...Local arrays and saved variables
10176       DIMENSION WDTP(0:400),WDTE(0:400,0:5),PMQ(2),Z(2),CTHE(2),
10177      &PHI(2),KUPPO(100),VINTSV(41:66),ILAB(100)
10178       SAVE VINTSV
10179  
10180 C...Read out process
10181       ISUB=MINT(1)
10182       ISUBSV=ISUB
10183  
10184 C...Restore information for low-pT processes
10185       IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN
10186         DO 100 J=41,66
10187   100   VINT(J)=VINTSV(J)
10188       ENDIF
10189  
10190 C...Convert H' or A process into equivalent H one
10191       IHIGG=1
10192       KFHIGG=25
10193       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
10194      &ISUB.LE.190)) THEN
10195         IHIGG=2
10196         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
10197         KFHIGG=33+IHIGG
10198         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
10199         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
10200         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
10201         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
10202         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
10203         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
10204         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
10205         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
10206         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
10207         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
10208         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
10209         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
10210       ENDIF
10211  
10212       IF(ISUB.EQ.401.OR.ISUB.EQ.402) KFHIGG=KFPR(ISUB,1)
10213  
10214 C...Convert bottomonium process into equivalent charmonium ones.
10215       IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40
10216  
10217 C...Choice of subprocess, number of documentation lines
10218       IDOC=6+ISET(ISUB)
10219       IF(ISUB.EQ.95) IDOC=8
10220       IF(ISET(ISUB).EQ.5) IDOC=9
10221       IF(ISET(ISUB).EQ.11) IDOC=4+NUP
10222       MINT(3)=IDOC-6
10223       IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2
10224       MINT(4)=IDOC
10225       IPU1=MINT(84)+1
10226       IPU2=MINT(84)+2
10227       IPU3=MINT(84)+3
10228       IPU4=MINT(84)+4
10229       IPU5=MINT(84)+5
10230       IPU6=MINT(84)+6
10231  
10232 C...Reset K, P and V vectors. Store incoming particles
10233       DO 120 JT=1,MSTP(126)+100
10234         I=MINT(83)+JT
10235         IF(I.GT.MSTU(4)) GOTO 120
10236         DO 110 J=1,5
10237           K(I,J)=0
10238           P(I,J)=0D0
10239           V(I,J)=0D0
10240   110   CONTINUE
10241   120 CONTINUE
10242       DO 140 JT=1,2
10243         I=MINT(83)+JT
10244         K(I,1)=21
10245         K(I,2)=MINT(10+JT)
10246         DO 130 J=1,5
10247           P(I,J)=VINT(285+5*JT+J)
10248   130   CONTINUE
10249   140 CONTINUE
10250       MINT(6)=2
10251       KFRES=0
10252  
10253 C...Store incoming partons in their CM-frame. Save pdf value.
10254       SH=VINT(44)
10255       SHR=SQRT(SH)
10256       SHP=VINT(26)*VINT(2)
10257       SHPR=SQRT(SHP)
10258       SHUSER=SHR
10259       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR
10260       DO 150 JT=1,2
10261         I=MINT(84)+JT
10262         K(I,1)=14
10263         K(I,2)=MINT(14+JT)
10264         K(I,3)=MINT(83)+2+JT
10265         P(I,3)=0.5D0*SHUSER*(-1D0)**(JT-1)
10266         P(I,4)=0.5D0*SHUSER
10267         VINT(38+JT)=XSFX(JT,MINT(14+JT))
10268   150 CONTINUE
10269  
10270 C...Copy incoming partons to documentation lines
10271       DO 170 JT=1,2
10272         I1=MINT(83)+4+JT
10273         I2=MINT(84)+JT
10274         K(I1,1)=21
10275         K(I1,2)=K(I2,2)
10276         K(I1,3)=I1-2
10277         DO 160 J=1,5
10278           P(I1,J)=P(I2,J)
10279   160   CONTINUE
10280   170 CONTINUE
10281  
10282 C...Choose new quark/lepton flavour for relevant annihilation graphs
10283       IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58.OR.
10284      &(ISUB.GE.135.AND.ISUB.LE.140).OR.ISUB.EQ.382.OR.ISUB.EQ.385) THEN
10285         IGLGA=21
10286         IF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) IGLGA=22
10287         CALL PYWIDT(IGLGA,SH,WDTP,WDTE)
10288   180   RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
10289         DO 190 I=1,MDCY(IGLGA,3)
10290           KFLF=KFDP(I+MDCY(IGLGA,2)-1,1)
10291           RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
10292           IF(RKFL.LE.0D0) GOTO 200
10293   190   CONTINUE
10294   200   CONTINUE
10295         IF((ISUB.EQ.53.OR.ISUB.EQ.385).AND.MINT(2).LE.2) THEN
10296           IF(KFLF.GE.4) GOTO 180
10297         ELSEIF((ISUB.EQ.53.OR.ISUB.EQ.385).AND.MINT(2).LE.4) THEN
10298           KFLF=4
10299           MINT(2)=MINT(2)-2
10300         ELSEIF(ISUB.EQ.53.OR.ISUB.EQ.385) THEN
10301           KFLF=5
10302           MINT(2)=MINT(2)-4
10303         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.1.AND.IABS(MINT(15)).LE.2
10304      &  .AND.IABS(KFLF).GE.3) THEN
10305           FACQQB=VINT(58)**2*4D0/9D0*(VINT(45)**2+VINT(46)**2)/
10306      &    VINT(44)**2
10307           FACCIB=VINT(46)**2/RTCM(41)**4
10308           IF(FACQQB/(FACQQB+FACCIB).LT.PYR(0)) GOTO 180
10309         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.2) THEN
10310           KFLF=5
10311           MINT(2)=1
10312         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.1) THEN
10313           IF(KFLF.EQ.5) GOTO 180
10314         ELSEIF(ISUB.EQ.54.OR.ISUB.EQ.135.OR.ISUB.EQ.136) THEN
10315           IF((KCHG(PYCOMP(KFLF),1)/2D0)**2.LT.PYR(0)) GOTO 180
10316         ELSEIF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) THEN
10317           IF((KCHG(PYCOMP(KFLF),1)/3D0)**2.LT.PYR(0)) GOTO 180
10318         ENDIF
10319       ENDIF
10320  
10321 C...Final state flavours and colour flow: default values
10322       JS=1
10323       MINT(21)=MINT(15)
10324       MINT(22)=MINT(16)
10325       MINT(23)=0
10326       MINT(24)=0
10327       KCC=20
10328       KCS=ISIGN(1,MINT(15))
10329  
10330       IF(ISET(ISUB).EQ.11) THEN
10331 C...User-defined processes: find products
10332         MINT(3)=0
10333         DO 210 IUP=3,NUP
10334           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) THEN
10335           ELSEIF(NUP.EQ.5.AND.IUP.GE.4.AND.MOTHUP(1,4).EQ.3) THEN
10336             MINT(21+IUP)=IDUP(IUP)
10337           ELSEIF(ISTUP(IUP).EQ.1.AND.(ISTUP(MOTHUP(1,IUP)).EQ.2.OR.
10338      &    ISTUP(MOTHUP(1,IUP)).EQ.3).AND.IDUP(MOTHUP(1,IUP)).NE.0) THEN
10339           ELSEIF(IDUP(IUP).EQ.0) THEN
10340           ELSE
10341             MINT(3)=MINT(3)+1
10342             IF(MINT(3).LE.6) MINT(20+MINT(3))=IDUP(IUP)
10343           ENDIF
10344   210   CONTINUE
10345  
10346       ELSEIF(ISUB.LE.10) THEN
10347         IF(ISUB.EQ.1) THEN
10348 C...f + fbar -> gamma*/Z0
10349           KFRES=23
10350  
10351         ELSEIF(ISUB.EQ.2) THEN
10352 C...f + fbar' -> W+/-
10353           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10354           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10355           KFRES=ISIGN(24,KCH1+KCH2)
10356  
10357         ELSEIF(ISUB.EQ.3) THEN
10358 C...f + fbar -> h0 (or H0, or A0)
10359           KFRES=KFHIGG
10360  
10361         ELSEIF(ISUB.EQ.4) THEN
10362 C...gamma + W+/- -> W+/-
10363  
10364         ELSEIF(ISUB.EQ.5) THEN
10365 C...Z0 + Z0 -> h0
10366           XH=SH/SHP
10367           MINT(21)=MINT(15)
10368           MINT(22)=MINT(16)
10369           PMQ(1)=PYMASS(MINT(21))
10370           PMQ(2)=PYMASS(MINT(22))
10371   220     JT=INT(1.5D0+PYR(0))
10372           ZMIN=2D0*PMQ(JT)/SHPR
10373           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10374      &    (SHPR*(SHPR-PMQ(3-JT)))
10375           ZMAX=MIN(1D0-XH,ZMAX)
10376           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10377           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10378      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 220
10379           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10380           IF(SQC1.LT.1D-8) GOTO 220
10381           C1=SQRT(SQC1)
10382           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10383           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10384           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10385           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10386           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10387           IF(SQC1.LT.1D-8) GOTO 220
10388           C1=SQRT(SQC1)
10389           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10390           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10391           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10392           PHIR=PARU(2)*PYR(0)
10393           CPHI=COS(PHIR)
10394           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10395      &    SQRT(1D0-CTHE(2)**2)*CPHI
10396           Z1=2D0-Z(JT)
10397           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10398           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10399           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10400      &    PMQ(3-JT)**2/SHP))
10401           ZMIN=2D0*PMQ(3-JT)/SHPR
10402           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10403           ZMAX=MIN(1D0-XH,ZMAX)
10404           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220
10405           KCC=22
10406           KFRES=25
10407  
10408         ELSEIF(ISUB.EQ.6) THEN
10409 C...Z0 + W+/- -> W+/-
10410  
10411         ELSEIF(ISUB.EQ.7) THEN
10412 C...W+ + W- -> Z0
10413  
10414         ELSEIF(ISUB.EQ.8) THEN
10415 C...W+ + W- -> h0
10416           XH=SH/SHP
10417   230     DO 260 JT=1,2
10418             I=MINT(14+JT)
10419             IA=IABS(I)
10420             IF(IA.LE.10) THEN
10421               RVCKM=VINT(180+I)*PYR(0)
10422               DO 240 J=1,MSTP(1)
10423                 IB=2*J-1+MOD(IA,2)
10424                 IPM=(5-ISIGN(1,I))/2
10425                 IDC=J+MDCY(IA,2)+2
10426                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240
10427                 MINT(20+JT)=ISIGN(IB,I)
10428                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10429                 IF(RVCKM.LE.0D0) GOTO 250
10430   240         CONTINUE
10431             ELSE
10432               IB=2*((IA+1)/2)-1+MOD(IA,2)
10433               MINT(20+JT)=ISIGN(IB,I)
10434             ENDIF
10435   250       PMQ(JT)=PYMASS(MINT(20+JT))
10436   260     CONTINUE
10437           JT=INT(1.5D0+PYR(0))
10438           ZMIN=2D0*PMQ(JT)/SHPR
10439           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10440      &    (SHPR*(SHPR-PMQ(3-JT)))
10441           ZMAX=MIN(1D0-XH,ZMAX)
10442           IF(ZMIN.GE.ZMAX) GOTO 230
10443           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10444           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10445      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 230
10446           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10447           IF(SQC1.LT.1D-8) GOTO 230
10448           C1=SQRT(SQC1)
10449           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10450           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10451           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10452           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10453           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10454           IF(SQC1.LT.1D-8) GOTO 230
10455           C1=SQRT(SQC1)
10456           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10457           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10458           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10459           PHIR=PARU(2)*PYR(0)
10460           CPHI=COS(PHIR)
10461           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10462      &    SQRT(1D0-CTHE(2)**2)*CPHI
10463           Z1=2D0-Z(JT)
10464           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10465           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10466           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10467      &    PMQ(3-JT)**2/SHP))
10468           ZMIN=2D0*PMQ(3-JT)/SHPR
10469           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10470           ZMAX=MIN(1D0-XH,ZMAX)
10471           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230
10472           KCC=22
10473           KFRES=25
10474  
10475         ELSEIF(ISUB.EQ.10) THEN
10476 C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2
10477           IF(MINT(2).EQ.1) THEN
10478             KCC=22
10479           ELSE
10480 C...W exchange: need to mix flavours according to CKM matrix
10481             DO 280 JT=1,2
10482               I=MINT(14+JT)
10483               IA=IABS(I)
10484               IF(IA.LE.10) THEN
10485                 RVCKM=VINT(180+I)*PYR(0)
10486                 DO 270 J=1,MSTP(1)
10487                   IB=2*J-1+MOD(IA,2)
10488                   IPM=(5-ISIGN(1,I))/2
10489                   IDC=J+MDCY(IA,2)+2
10490                   IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270
10491                   MINT(20+JT)=ISIGN(IB,I)
10492                   RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10493                   IF(RVCKM.LE.0D0) GOTO 280
10494   270           CONTINUE
10495               ELSE
10496                 IB=2*((IA+1)/2)-1+MOD(IA,2)
10497                 MINT(20+JT)=ISIGN(IB,I)
10498               ENDIF
10499   280       CONTINUE
10500             KCC=22
10501           ENDIF
10502         ENDIF
10503  
10504       ELSEIF(ISUB.LE.20) THEN
10505         IF(ISUB.EQ.11) THEN
10506 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
10507           KCC=MINT(2)
10508           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10509  
10510         ELSEIF(ISUB.EQ.12) THEN
10511 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
10512           MINT(21)=ISIGN(KFLF,MINT(15))
10513           MINT(22)=-MINT(21)
10514           KCC=4
10515  
10516         ELSEIF(ISUB.EQ.13) THEN
10517 C...f + fbar -> g + g; th arbitrary
10518           MINT(21)=21
10519           MINT(22)=21
10520           KCC=MINT(2)+4
10521  
10522         ELSEIF(ISUB.EQ.14) THEN
10523 C...f + fbar -> g + gamma; th arbitrary
10524           IF(PYR(0).GT.0.5D0) JS=2
10525           MINT(20+JS)=21
10526           MINT(23-JS)=22
10527           KCC=17+JS
10528  
10529         ELSEIF(ISUB.EQ.15) THEN
10530 C...f + fbar -> g + Z0; th arbitrary
10531           IF(PYR(0).GT.0.5D0) JS=2
10532           MINT(20+JS)=21
10533           MINT(23-JS)=23
10534           KCC=17+JS
10535  
10536         ELSEIF(ISUB.EQ.16) THEN
10537 C...f + fbar' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10538           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10539           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10540           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10541           MINT(20+JS)=21
10542           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10543           KCC=17+JS
10544  
10545         ELSEIF(ISUB.EQ.17) THEN
10546 C...f + fbar -> g + h0; th arbitrary
10547           IF(PYR(0).GT.0.5D0) JS=2
10548           MINT(20+JS)=21
10549           MINT(23-JS)=25
10550           KCC=17+JS
10551  
10552         ELSEIF(ISUB.EQ.18) THEN
10553 C...f + fbar -> gamma + gamma; th arbitrary
10554           MINT(21)=22
10555           MINT(22)=22
10556  
10557         ELSEIF(ISUB.EQ.19) THEN
10558 C...f + fbar -> gamma + Z0; th arbitrary
10559           IF(PYR(0).GT.0.5D0) JS=2
10560           MINT(20+JS)=22
10561           MINT(23-JS)=23
10562  
10563         ELSEIF(ISUB.EQ.20) THEN
10564 C...f + fbar' -> gamma + W+/-; th = (p(f)-p(W-))**2 or
10565 C...(p(fbar')-p(W+))**2
10566           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10567           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10568           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10569           MINT(20+JS)=22
10570           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10571         ENDIF
10572  
10573       ELSEIF(ISUB.LE.30) THEN
10574         IF(ISUB.EQ.21) THEN
10575 C...f + fbar -> gamma + h0; th arbitrary
10576           IF(PYR(0).GT.0.5D0) JS=2
10577           MINT(20+JS)=22
10578           MINT(23-JS)=25
10579  
10580         ELSEIF(ISUB.EQ.22) THEN
10581 C...f + fbar -> Z0 + Z0; th arbitrary
10582           MINT(21)=23
10583           MINT(22)=23
10584  
10585         ELSEIF(ISUB.EQ.23) THEN
10586 C...f + fbar' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10587           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10588           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10589           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10590           MINT(20+JS)=23
10591           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10592  
10593         ELSEIF(ISUB.EQ.24) THEN
10594 C...f + fbar -> Z0 + h0 (or H0, or A0); th arbitrary
10595           IF(PYR(0).GT.0.5D0) JS=2
10596           MINT(20+JS)=23
10597           MINT(23-JS)=KFHIGG
10598  
10599         ELSEIF(ISUB.EQ.25) THEN
10600 C...f + fbar -> W+ + W-; th = (p(f)-p(W-))**2
10601           MINT(21)=-ISIGN(24,MINT(15))
10602           MINT(22)=-MINT(21)
10603  
10604         ELSEIF(ISUB.EQ.26) THEN
10605 C...f + fbar' -> W+/- + h0 (or H0, or A0);
10606 C...th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10607           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10608           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10609           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10610           MINT(20+JS)=ISIGN(24,KCH1+KCH2)
10611           MINT(23-JS)=KFHIGG
10612  
10613         ELSEIF(ISUB.EQ.27) THEN
10614 C...f + fbar -> h0 + h0
10615  
10616         ELSEIF(ISUB.EQ.28) THEN
10617 C...f + g -> f + g; th = (p(f)-p(f))**2
10618           IF(MINT(15).EQ.21) JS=2
10619           KCC=MINT(2)+6
10620           IF(MINT(15).EQ.21) KCC=KCC+2
10621           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
10622           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
10623  
10624         ELSEIF(ISUB.EQ.29) THEN
10625 C...f + g -> f + gamma; th = (p(f)-p(f))**2
10626           IF(MINT(15).EQ.21) JS=2
10627           MINT(23-JS)=22
10628           KCC=15+JS
10629           KCS=ISIGN(1,MINT(14+JS))
10630  
10631         ELSEIF(ISUB.EQ.30) THEN
10632 C...f + g -> f + Z0; th = (p(f)-p(f))**2
10633           IF(MINT(15).EQ.21) JS=2
10634           MINT(23-JS)=23
10635           KCC=15+JS
10636           KCS=ISIGN(1,MINT(14+JS))
10637         ENDIF
10638  
10639       ELSEIF(ISUB.LE.40) THEN
10640         IF(ISUB.EQ.31) THEN
10641 C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f'
10642           IF(MINT(15).EQ.21) JS=2
10643           I=MINT(14+JS)
10644           IA=IABS(I)
10645           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
10646           RVCKM=VINT(180+I)*PYR(0)
10647           DO 290 J=1,MSTP(1)
10648             IB=2*J-1+MOD(IA,2)
10649             IPM=(5-ISIGN(1,I))/2
10650             IDC=J+MDCY(IA,2)+2
10651             IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290
10652             MINT(20+JS)=ISIGN(IB,I)
10653             RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10654             IF(RVCKM.LE.0D0) GOTO 300
10655   290     CONTINUE
10656   300     KCC=15+JS
10657           KCS=ISIGN(1,MINT(14+JS))
10658  
10659         ELSEIF(ISUB.EQ.32) THEN
10660 C...f + g -> f + h0; th = (p(f)-p(f))**2
10661           IF(MINT(15).EQ.21) JS=2
10662           MINT(23-JS)=25
10663           KCC=15+JS
10664           KCS=ISIGN(1,MINT(14+JS))
10665  
10666         ELSEIF(ISUB.EQ.33) THEN
10667 C...f + gamma -> f + g; th=(p(f)-p(f))**2
10668           IF(MINT(15).EQ.22) JS=2
10669           MINT(23-JS)=21
10670           KCC=24+JS
10671           KCS=ISIGN(1,MINT(14+JS))
10672  
10673         ELSEIF(ISUB.EQ.34) THEN
10674 C...f + gamma -> f + gamma; th=(p(f)-p(f))**2
10675           IF(MINT(15).EQ.22) JS=2
10676           KCC=22
10677           KCS=ISIGN(1,MINT(14+JS))
10678  
10679         ELSEIF(ISUB.EQ.35) THEN
10680 C...f + gamma -> f + Z0; th=(p(f)-p(f))**2
10681           IF(MINT(15).EQ.22) JS=2
10682           MINT(23-JS)=23
10683           KCC=22
10684  
10685         ELSEIF(ISUB.EQ.36) THEN
10686 C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2
10687           IF(MINT(15).EQ.22) JS=2
10688           I=MINT(14+JS)
10689           IA=IABS(I)
10690           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
10691           IF(IA.LE.10) THEN
10692             RVCKM=VINT(180+I)*PYR(0)
10693             DO 310 J=1,MSTP(1)
10694               IB=2*J-1+MOD(IA,2)
10695               IPM=(5-ISIGN(1,I))/2
10696               IDC=J+MDCY(IA,2)+2
10697               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310
10698               MINT(20+JS)=ISIGN(IB,I)
10699               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10700               IF(RVCKM.LE.0D0) GOTO 320
10701   310       CONTINUE
10702           ELSE
10703             IB=2*((IA+1)/2)-1+MOD(IA,2)
10704             MINT(20+JS)=ISIGN(IB,I)
10705           ENDIF
10706   320     KCC=22
10707  
10708         ELSEIF(ISUB.EQ.37) THEN
10709 C...f + gamma -> f + h0
10710  
10711         ELSEIF(ISUB.EQ.38) THEN
10712 C...f + Z0 -> f + g
10713  
10714         ELSEIF(ISUB.EQ.39) THEN
10715 C...f + Z0 -> f + gamma
10716  
10717         ELSEIF(ISUB.EQ.40) THEN
10718 C...f + Z0 -> f + Z0
10719         ENDIF
10720  
10721       ELSEIF(ISUB.LE.50) THEN
10722         IF(ISUB.EQ.41) THEN
10723 C...f + Z0 -> f' + W+/-
10724  
10725         ELSEIF(ISUB.EQ.42) THEN
10726 C...f + Z0 -> f + h0
10727  
10728         ELSEIF(ISUB.EQ.43) THEN
10729 C...f + W+/- -> f' + g
10730  
10731         ELSEIF(ISUB.EQ.44) THEN
10732 C...f + W+/- -> f' + gamma
10733  
10734         ELSEIF(ISUB.EQ.45) THEN
10735 C...f + W+/- -> f' + Z0
10736  
10737         ELSEIF(ISUB.EQ.46) THEN
10738 C...f + W+/- -> f' + W+/-
10739  
10740         ELSEIF(ISUB.EQ.47) THEN
10741 C...f + W+/- -> f' + h0
10742  
10743         ELSEIF(ISUB.EQ.48) THEN
10744 C...f + h0 -> f + g
10745  
10746         ELSEIF(ISUB.EQ.49) THEN
10747 C...f + h0 -> f + gamma
10748  
10749         ELSEIF(ISUB.EQ.50) THEN
10750 C...f + h0 -> f + Z0
10751         ENDIF
10752  
10753       ELSEIF(ISUB.LE.60) THEN
10754         IF(ISUB.EQ.51) THEN
10755 C...f + h0 -> f' + W+/-
10756  
10757         ELSEIF(ISUB.EQ.52) THEN
10758 C...f + h0 -> f + h0
10759  
10760         ELSEIF(ISUB.EQ.53) THEN
10761 C...g + g -> f + fbar; th arbitrary
10762           KCS=(-1)**INT(1.5D0+PYR(0))
10763           MINT(21)=ISIGN(KFLF,KCS)
10764           MINT(22)=-MINT(21)
10765           KCC=MINT(2)+10
10766  
10767         ELSEIF(ISUB.EQ.54) THEN
10768 C...g + gamma -> f + fbar; th arbitrary
10769           KCS=(-1)**INT(1.5D0+PYR(0))
10770           MINT(21)=ISIGN(KFLF,KCS)
10771           MINT(22)=-MINT(21)
10772           KCC=27
10773           IF(MINT(16).EQ.21) KCC=28
10774  
10775         ELSEIF(ISUB.EQ.55) THEN
10776 C...g + Z0 -> f + fbar
10777  
10778         ELSEIF(ISUB.EQ.56) THEN
10779 C...g + W+/- -> f + fbar'
10780  
10781         ELSEIF(ISUB.EQ.57) THEN
10782 C...g + h0 -> f + fbar
10783  
10784         ELSEIF(ISUB.EQ.58) THEN
10785 C...gamma + gamma -> f + fbar; th arbitrary
10786           KCS=(-1)**INT(1.5D0+PYR(0))
10787           MINT(21)=ISIGN(KFLF,KCS)
10788           MINT(22)=-MINT(21)
10789           KCC=21
10790  
10791         ELSEIF(ISUB.EQ.59) THEN
10792 C...gamma + Z0 -> f + fbar
10793  
10794         ELSEIF(ISUB.EQ.60) THEN
10795 C...gamma + W+/- -> f + fbar'
10796         ENDIF
10797  
10798       ELSEIF(ISUB.LE.70) THEN
10799         IF(ISUB.EQ.61) THEN
10800 C...gamma + h0 -> f + fbar
10801  
10802         ELSEIF(ISUB.EQ.62) THEN
10803 C...Z0 + Z0 -> f + fbar
10804  
10805         ELSEIF(ISUB.EQ.63) THEN
10806 C...Z0 + W+/- -> f + fbar'
10807  
10808         ELSEIF(ISUB.EQ.64) THEN
10809 C...Z0 + h0 -> f + fbar
10810  
10811         ELSEIF(ISUB.EQ.65) THEN
10812 C...W+ + W- -> f + fbar
10813  
10814         ELSEIF(ISUB.EQ.66) THEN
10815 C...W+/- + h0 -> f + fbar'
10816  
10817         ELSEIF(ISUB.EQ.67) THEN
10818 C...h0 + h0 -> f + fbar
10819  
10820         ELSEIF(ISUB.EQ.68) THEN
10821 C...g + g -> g + g; th arbitrary
10822           KCC=MINT(2)+12
10823           KCS=(-1)**INT(1.5D0+PYR(0))
10824  
10825         ELSEIF(ISUB.EQ.69) THEN
10826 C...gamma + gamma -> W+ + W-; th arbitrary
10827           MINT(21)=24
10828           MINT(22)=-24
10829           KCC=21
10830  
10831         ELSEIF(ISUB.EQ.70) THEN
10832 C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2
10833           IF(MINT(15).EQ.22) MINT(21)=23
10834           IF(MINT(16).EQ.22) MINT(22)=23
10835           KCC=21
10836         ENDIF
10837  
10838       ELSEIF(ISUB.LE.80) THEN
10839         IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN
10840 C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W-
10841           XH=SH/SHP
10842           MINT(21)=MINT(15)
10843           MINT(22)=MINT(16)
10844           PMQ(1)=PYMASS(MINT(21))
10845           PMQ(2)=PYMASS(MINT(22))
10846   330     JT=INT(1.5D0+PYR(0))
10847           ZMIN=2D0*PMQ(JT)/SHPR
10848           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10849      &    (SHPR*(SHPR-PMQ(3-JT)))
10850           ZMAX=MIN(1D0-XH,ZMAX)
10851           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10852           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10853      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 330
10854           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10855           IF(SQC1.LT.1D-8) GOTO 330
10856           C1=SQRT(SQC1)
10857           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10858           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10859           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10860           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10861           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10862           IF(SQC1.LT.1D-8) GOTO 330
10863           C1=SQRT(SQC1)
10864           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10865           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10866           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10867           PHIR=PARU(2)*PYR(0)
10868           CPHI=COS(PHIR)
10869           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10870      &    SQRT(1D0-CTHE(2)**2)*CPHI
10871           Z1=2D0-Z(JT)
10872           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10873           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10874           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10875      &    PMQ(3-JT)**2/SHP))
10876           ZMIN=2D0*PMQ(3-JT)/SHPR
10877           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10878           ZMAX=MIN(1D0-XH,ZMAX)
10879           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330
10880           KCC=22
10881  
10882         ELSEIF(ISUB.EQ.73) THEN
10883 C...Z0 + W+/- -> Z0 + W+/-
10884           JS=MINT(2)
10885           XH=SH/SHP
10886   340     JT=3-MINT(2)
10887           I=MINT(14+JT)
10888           IA=IABS(I)
10889           IF(IA.LE.10) THEN
10890             RVCKM=VINT(180+I)*PYR(0)
10891             DO 350 J=1,MSTP(1)
10892               IB=2*J-1+MOD(IA,2)
10893               IPM=(5-ISIGN(1,I))/2
10894               IDC=J+MDCY(IA,2)+2
10895               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350
10896               MINT(20+JT)=ISIGN(IB,I)
10897               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10898               IF(RVCKM.LE.0D0) GOTO 360
10899   350       CONTINUE
10900           ELSE
10901             IB=2*((IA+1)/2)-1+MOD(IA,2)
10902             MINT(20+JT)=ISIGN(IB,I)
10903           ENDIF
10904   360     PMQ(JT)=PYMASS(MINT(20+JT))
10905           MINT(23-JT)=MINT(17-JT)
10906           PMQ(3-JT)=PYMASS(MINT(23-JT))
10907           JT=INT(1.5D0+PYR(0))
10908           ZMIN=2D0*PMQ(JT)/SHPR
10909           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10910      &    (SHPR*(SHPR-PMQ(3-JT)))
10911           ZMAX=MIN(1D0-XH,ZMAX)
10912           IF(ZMIN.GE.ZMAX) GOTO 340
10913           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10914           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10915      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 340
10916           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10917           IF(SQC1.LT.1D-8) GOTO 340
10918           C1=SQRT(SQC1)
10919           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10920           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10921           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10922           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10923           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10924           IF(SQC1.LT.1D-8) GOTO 340
10925           C1=SQRT(SQC1)
10926           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10927           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10928           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10929           PHIR=PARU(2)*PYR(0)
10930           CPHI=COS(PHIR)
10931           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10932      &    SQRT(1D0-CTHE(2)**2)*CPHI
10933           Z1=2D0-Z(JT)
10934           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10935           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10936           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10937      &    PMQ(3-JT)**2/SHP))
10938           ZMIN=2D0*PMQ(3-JT)/SHPR
10939           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10940           ZMAX=MIN(1D0-XH,ZMAX)
10941           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340
10942           KCC=22
10943  
10944         ELSEIF(ISUB.EQ.74) THEN
10945 C...Z0 + h0 -> Z0 + h0
10946  
10947         ELSEIF(ISUB.EQ.75) THEN
10948 C...W+ + W- -> gamma + gamma
10949  
10950         ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN
10951 C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W-
10952           XH=SH/SHP
10953   370     DO 400 JT=1,2
10954             I=MINT(14+JT)
10955             IA=IABS(I)
10956             IF(IA.LE.10) THEN
10957               RVCKM=VINT(180+I)*PYR(0)
10958               DO 380 J=1,MSTP(1)
10959                 IB=2*J-1+MOD(IA,2)
10960                 IPM=(5-ISIGN(1,I))/2
10961                 IDC=J+MDCY(IA,2)+2
10962                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380
10963                 MINT(20+JT)=ISIGN(IB,I)
10964                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10965                 IF(RVCKM.LE.0D0) GOTO 390
10966   380         CONTINUE
10967             ELSE
10968               IB=2*((IA+1)/2)-1+MOD(IA,2)
10969               MINT(20+JT)=ISIGN(IB,I)
10970             ENDIF
10971   390       PMQ(JT)=PYMASS(MINT(20+JT))
10972   400     CONTINUE
10973           JT=INT(1.5D0+PYR(0))
10974           ZMIN=2D0*PMQ(JT)/SHPR
10975           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10976      &    (SHPR*(SHPR-PMQ(3-JT)))
10977           ZMAX=MIN(1D0-XH,ZMAX)
10978           IF(ZMIN.GE.ZMAX) GOTO 370
10979           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10980           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10981      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 370
10982           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10983           IF(SQC1.LT.1D-8) GOTO 370
10984           C1=SQRT(SQC1)
10985           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10986           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10987           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10988           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10989           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10990           IF(SQC1.LT.1D-8) GOTO 370
10991           C1=SQRT(SQC1)
10992           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10993           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10994           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10995           PHIR=PARU(2)*PYR(0)
10996           CPHI=COS(PHIR)
10997           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10998      &    SQRT(1D0-CTHE(2)**2)*CPHI
10999           Z1=2D0-Z(JT)
11000           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
11001           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
11002           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
11003      &    PMQ(3-JT)**2/SHP))
11004           ZMIN=2D0*PMQ(3-JT)/SHPR
11005           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
11006           ZMAX=MIN(1D0-XH,ZMAX)
11007           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370
11008           KCC=22
11009  
11010         ELSEIF(ISUB.EQ.78) THEN
11011 C...W+/- + h0 -> W+/- + h0
11012  
11013         ELSEIF(ISUB.EQ.79) THEN
11014 C...h0 + h0 -> h0 + h0
11015  
11016         ELSEIF(ISUB.EQ.80) THEN
11017 C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2
11018           IF(MINT(15).EQ.22) JS=2
11019           I=MINT(14+JS)
11020           IA=IABS(I)
11021           MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I)
11022           IB=3-IA
11023           MINT(20+JS)=ISIGN(IB,I)
11024           KCC=22
11025         ENDIF
11026  
11027       ELSEIF(ISUB.LE.90) THEN
11028         IF(ISUB.EQ.81) THEN
11029 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2
11030           MINT(21)=ISIGN(MINT(55),MINT(15))
11031           MINT(22)=-MINT(21)
11032           KCC=4
11033  
11034         ELSEIF(ISUB.EQ.82) THEN
11035 C...g + g -> Q + Qbar; th arbitrary
11036           KCS=(-1)**INT(1.5D0+PYR(0))
11037           MINT(21)=ISIGN(MINT(55),KCS)
11038           MINT(22)=-MINT(21)
11039           KCC=MINT(2)+10
11040  
11041         ELSEIF(ISUB.EQ.83) THEN
11042 C...f + q -> f' + Q; th = (p(f) - p(f'))**2
11043           KFOLD=MINT(16)
11044           IF(MINT(2).EQ.2) KFOLD=MINT(15)
11045           KFAOLD=IABS(KFOLD)
11046           IF(KFAOLD.GT.10) THEN
11047             KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1
11048           ELSE
11049             RCKM=VINT(180+KFOLD)*PYR(0)
11050             IPM=(5-ISIGN(1,KFOLD))/2
11051             KFANEW=-MOD(KFAOLD+1,2)
11052   410       KFANEW=KFANEW+2
11053             IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2
11054             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN
11055               IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM-
11056      &        VCKM(KFAOLD/2,(KFANEW+1)/2)
11057               IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM-
11058      &        VCKM(KFANEW/2,(KFAOLD+1)/2)
11059             ENDIF
11060             IF(KFANEW.LE.6.AND.RCKM.GT.0D0) GOTO 410
11061           ENDIF
11062           IF(MINT(2).EQ.1) THEN
11063             MINT(21)=ISIGN(MINT(55),MINT(15))
11064             MINT(22)=ISIGN(KFANEW,MINT(16))
11065           ELSE
11066             MINT(21)=ISIGN(KFANEW,MINT(15))
11067             MINT(22)=ISIGN(MINT(55),MINT(16))
11068             JS=2
11069           ENDIF
11070           KCC=22
11071  
11072         ELSEIF(ISUB.EQ.84) THEN
11073 C...g + gamma -> Q + Qbar; th arbitary
11074           KCS=(-1)**INT(1.5D0+PYR(0))
11075           MINT(21)=ISIGN(MINT(55),KCS)
11076           MINT(22)=-MINT(21)
11077           KCC=27
11078           IF(MINT(16).EQ.21) KCC=28
11079  
11080         ELSEIF(ISUB.EQ.85) THEN
11081 C...gamma + gamma -> F + Fbar; th arbitary
11082           KCS=(-1)**INT(1.5D0+PYR(0))
11083           MINT(21)=ISIGN(MINT(56),KCS)
11084           MINT(22)=-MINT(21)
11085           KCC=21
11086  
11087         ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN
11088 C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g
11089           MINT(21)=KFPR(ISUB,1)
11090           MINT(22)=KFPR(ISUB,2)
11091           KCC=24
11092           KCS=(-1)**INT(1.5D0+PYR(0))
11093         ENDIF
11094  
11095       ELSEIF(ISUB.LE.100) THEN
11096         IF(ISUB.EQ.95) THEN
11097 C...Low-pT ( = energyless g + g -> g + g)
11098           KCC=MINT(2)+12
11099           KCS=(-1)**INT(1.5D0+PYR(0))
11100  
11101         ELSEIF(ISUB.EQ.96) THEN
11102 C...Multiple interactions (should be reassigned to QCD process)
11103         ENDIF
11104  
11105       ELSEIF(ISUB.LE.110) THEN
11106         IF(ISUB.EQ.101) THEN
11107 C...g + g -> gamma*/Z0
11108           KCC=21
11109           KFRES=22
11110  
11111         ELSEIF(ISUB.EQ.102) THEN
11112 C...g + g -> h0 (or H0, or A0)
11113           KCC=21
11114           KFRES=KFHIGG
11115  
11116         ELSEIF(ISUB.EQ.103) THEN
11117 C...gamma + gamma -> h0 (or H0, or A0)
11118           KCC=21
11119           KFRES=KFHIGG
11120  
11121         ELSEIF(ISUB.EQ.104.OR.ISUB.EQ.105) THEN
11122 C...g + g -> chi_0c or chi_2c.
11123           KCC=21
11124           KFRES=KFPR(ISUB,1)
11125  
11126         ELSEIF(ISUB.EQ.106) THEN
11127 C...g + g -> J/Psi + gamma
11128           MINT(21)=KFPR(ISUB,1)
11129           MINT(22)=KFPR(ISUB,2)
11130           KCC=21
11131  
11132         ELSEIF(ISUB.EQ.107) THEN
11133 C...g + gamma -> J/Psi + g
11134           MINT(21)=KFPR(ISUB,1)
11135           MINT(22)=KFPR(ISUB,2)
11136           KCC=22
11137           IF(MINT(16).EQ.22) KCC=33
11138  
11139         ELSEIF(ISUB.EQ.108) THEN
11140 C...gamma + gamma -> J/Psi + gamma
11141           MINT(21)=KFPR(ISUB,1)
11142           MINT(22)=KFPR(ISUB,2)
11143  
11144         ELSEIF(ISUB.EQ.110) THEN
11145 C...f + fbar -> gamma + h0; th arbitrary
11146           IF(PYR(0).GT.0.5D0) JS=2
11147           MINT(20+JS)=22
11148           MINT(23-JS)=KFHIGG
11149         ENDIF
11150  
11151       ELSEIF(ISUB.LE.120) THEN
11152         IF(ISUB.EQ.111) THEN
11153 C...f + fbar -> g + h0; th arbitrary
11154           IF(PYR(0).GT.0.5D0) JS=2
11155           MINT(20+JS)=21
11156           MINT(23-JS)=KFHIGG
11157           KCC=17+JS
11158  
11159         ELSEIF(ISUB.EQ.112) THEN
11160 C...f + g -> f + h0; th = (p(f) - p(f))**2
11161           IF(MINT(15).EQ.21) JS=2
11162           MINT(23-JS)=KFHIGG
11163           KCC=15+JS
11164           KCS=ISIGN(1,MINT(14+JS))
11165  
11166         ELSEIF(ISUB.EQ.113) THEN
11167 C...g + g -> g + h0; th arbitrary
11168           IF(PYR(0).GT.0.5D0) JS=2
11169           MINT(23-JS)=KFHIGG
11170           KCC=22+JS
11171           KCS=(-1)**INT(1.5D0+PYR(0))
11172  
11173         ELSEIF(ISUB.EQ.114) THEN
11174 C...g + g -> gamma + gamma; th arbitrary
11175           IF(PYR(0).GT.0.5D0) JS=2
11176           MINT(21)=22
11177           MINT(22)=22
11178           KCC=21
11179  
11180         ELSEIF(ISUB.EQ.115) THEN
11181 C...g + g -> g + gamma; th arbitrary
11182           IF(PYR(0).GT.0.5D0) JS=2
11183           MINT(23-JS)=22
11184           KCC=22+JS
11185           KCS=(-1)**INT(1.5D0+PYR(0))
11186  
11187         ELSEIF(ISUB.EQ.116) THEN
11188 C...g + g -> gamma + Z0
11189  
11190         ELSEIF(ISUB.EQ.117) THEN
11191 C...g + g -> Z0 + Z0
11192  
11193         ELSEIF(ISUB.EQ.118) THEN
11194 C...g + g -> W+ + W-
11195         ENDIF
11196  
11197       ELSEIF(ISUB.LE.140) THEN
11198         IF(ISUB.EQ.121) THEN
11199 C...g + g -> Q + Qbar + h0
11200           KCS=(-1)**INT(1.5D0+PYR(0))
11201           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
11202           MINT(22)=-MINT(21)
11203           KCC=11+INT(0.5D0+PYR(0))
11204           KFRES=KFHIGG
11205  
11206         ELSEIF(ISUB.EQ.122) THEN
11207 C...q + qbar -> Q + Qbar + h0
11208           MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15))
11209           MINT(22)=-MINT(21)
11210           KCC=4
11211           KFRES=KFHIGG
11212  
11213         ELSEIF(ISUB.EQ.123) THEN
11214 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
11215 C...inner process)
11216           KCC=22
11217           KFRES=KFHIGG
11218  
11219         ELSEIF(ISUB.EQ.124) THEN
11220 C...f + f' -> f" + f"' + h0 (or H0, or A) (W+ + W- -> h0 as
11221 C...inner process)
11222           DO 430 JT=1,2
11223             I=MINT(14+JT)
11224             IA=IABS(I)
11225             IF(IA.LE.10) THEN
11226               RVCKM=VINT(180+I)*PYR(0)
11227               DO 420 J=1,MSTP(1)
11228                 IB=2*J-1+MOD(IA,2)
11229                 IPM=(5-ISIGN(1,I))/2
11230                 IDC=J+MDCY(IA,2)+2
11231                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420
11232                 MINT(20+JT)=ISIGN(IB,I)
11233                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11234                 IF(RVCKM.LE.0D0) GOTO 430
11235   420         CONTINUE
11236             ELSE
11237               IB=2*((IA+1)/2)-1+MOD(IA,2)
11238               MINT(20+JT)=ISIGN(IB,I)
11239             ENDIF
11240   430     CONTINUE
11241           KCC=22
11242           KFRES=KFHIGG
11243  
11244         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
11245 C...f + gamma*_(T,L) -> f + g; th=(p(f)-p(f))**2
11246           IF(MINT(15).EQ.22) JS=2
11247           MINT(23-JS)=21
11248           KCC=24+JS
11249           KCS=ISIGN(1,MINT(14+JS))
11250  
11251         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
11252 C...f + gamma*_(T,L) -> f + gamma; th=(p(f)-p(f))**2
11253           IF(MINT(15).EQ.22) JS=2
11254           KCC=22
11255           KCS=ISIGN(1,MINT(14+JS))
11256  
11257         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
11258 C...g + gamma*_(T,L) -> f + fbar; th arbitrary
11259           KCS=(-1)**INT(1.5D0+PYR(0))
11260           MINT(21)=ISIGN(KFLF,KCS)
11261           MINT(22)=-MINT(21)
11262           KCC=27
11263           IF(MINT(16).EQ.21) KCC=28
11264  
11265         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
11266 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar; th arbitrary
11267           KCS=(-1)**INT(1.5D0+PYR(0))
11268           MINT(21)=ISIGN(KFLF,KCS)
11269           MINT(22)=-MINT(21)
11270           KCC=21
11271  
11272         ENDIF
11273  
11274       ELSEIF(ISUB.LE.160) THEN
11275         IF(ISUB.EQ.141) THEN
11276 C...f + fbar -> gamma*/Z0/Z'0
11277           KFRES=32
11278  
11279         ELSEIF(ISUB.EQ.142) THEN
11280 C...f + fbar' -> W'+/-
11281           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11282           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11283           KFRES=ISIGN(34,KCH1+KCH2)
11284  
11285         ELSEIF(ISUB.EQ.143) THEN
11286 C...f + fbar' -> H+/-
11287           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11288           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11289           KFRES=ISIGN(37,KCH1+KCH2)
11290  
11291         ELSEIF(ISUB.EQ.144) THEN
11292 C...f + fbar' -> R
11293           KFRES=ISIGN(41,MINT(15)+MINT(16))
11294  
11295         ELSEIF(ISUB.EQ.145) THEN
11296 C...q + l -> LQ (leptoquark)
11297           IF(IABS(MINT(16)).LE.8) JS=2
11298           KFRES=ISIGN(42,MINT(14+JS))
11299           KCC=28+JS
11300           KCS=ISIGN(1,MINT(14+JS))
11301  
11302         ELSEIF(ISUB.EQ.146) THEN
11303 C...e + gamma -> e* (excited lepton)
11304           IF(MINT(15).EQ.22) JS=2
11305           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
11306           KCC=22
11307  
11308         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
11309 C...q + g -> q* (excited quark)
11310           IF(MINT(15).EQ.21) JS=2
11311           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
11312           KCC=30+JS
11313           KCS=ISIGN(1,MINT(14+JS))
11314  
11315         ELSEIF(ISUB.EQ.149) THEN
11316 C...g + g -> eta_tc
11317           KFRES=KTECHN+331
11318           KCC=23
11319           KCS=(-1)**INT(1.5D0+PYR(0))
11320         ENDIF
11321  
11322       ELSEIF(ISUB.LE.200) THEN
11323         IF(ISUB.EQ.161) THEN
11324 C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2
11325           IF(MINT(15).EQ.21) JS=2
11326           I=MINT(14+JS)
11327           IA=IABS(I)
11328           MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I)
11329           IB=IA+MOD(IA,2)-MOD(IA+1,2)
11330           MINT(20+JS)=ISIGN(IB,I)
11331           KCC=15+JS
11332           KCS=ISIGN(1,MINT(14+JS))
11333  
11334         ELSEIF(ISUB.EQ.162) THEN
11335 C...q + g -> LQ + lbar; LQ=leptoquark; th=(p(q)-p(LQ))^2
11336           IF(MINT(15).EQ.21) JS=2
11337           MINT(20+JS)=ISIGN(42,MINT(14+JS))
11338           KFLQL=KFDP(MDCY(42,2),2)
11339           MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS))
11340           KCC=15+JS
11341           KCS=ISIGN(1,MINT(14+JS))
11342  
11343         ELSEIF(ISUB.EQ.163) THEN
11344 C...g + g -> LQ + LQbar; LQ=leptoquark; th arbitrary
11345           KCS=(-1)**INT(1.5D0+PYR(0))
11346           MINT(21)=ISIGN(42,KCS)
11347           MINT(22)=-MINT(21)
11348           KCC=MINT(2)+10
11349  
11350         ELSEIF(ISUB.EQ.164) THEN
11351 C...q + qbar -> LQ + LQbar; LQ=leptoquark; th=(p(q)-p(LQ))**2
11352           MINT(21)=ISIGN(42,MINT(15))
11353           MINT(22)=-MINT(21)
11354           KCC=4
11355  
11356         ELSEIF(ISUB.EQ.165) THEN
11357 C...q + qbar -> l- + l+; th=(p(q)-p(l-))**2
11358           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11359           MINT(22)=-MINT(21)
11360  
11361         ELSEIF(ISUB.EQ.166) THEN
11362 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
11363           IF(MOD(MINT(15),2).EQ.0) THEN
11364             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
11365             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
11366           ELSE
11367             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11368             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
11369           ENDIF
11370  
11371         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
11372 C...q + q' -> q" + q* (excited quark)
11373           KFQSTR=KFPR(ISUB,2)
11374           KFQEXC=MOD(KFQSTR,KEXCIT)
11375           JS=MINT(2)
11376           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
11377           IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC)
11378      &    MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
11379           KCC=22
11380           JS=3-JS
11381  
11382         ELSEIF(ISUB.EQ.169) THEN
11383 C...q + qbar -> e + e* (excited lepton)
11384           KFQSTR=KFPR(ISUB,2)
11385           KFQEXC=MOD(KFQSTR,KEXCIT)
11386           JS=MINT(2)
11387           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
11388           MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
11389           JS=3-JS
11390  
11391         ELSEIF(ISUB.EQ.191) THEN
11392 C...f + fbar -> rho_tc0.
11393           KFRES=KTECHN+113
11394  
11395         ELSEIF(ISUB.EQ.192) THEN
11396 C...f + fbar' -> rho_tc+/-
11397           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11398           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11399           KFRES=ISIGN(KTECHN+213,KCH1+KCH2)
11400  
11401         ELSEIF(ISUB.EQ.193) THEN
11402 C...f + fbar -> omega_tc0.
11403           KFRES=KTECHN+223
11404  
11405         ELSEIF(ISUB.EQ.194) THEN
11406 C...f + fbar -> f' + fbar' via mixture of s-channel
11407 C...rho_tc and omega_tc; th=(p(f)-p(f'))**2
11408           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11409           MINT(22)=-MINT(21)
11410  
11411         ELSEIF(ISUB.EQ.195) THEN
11412 C...f + fbar' -> f'' + fbar''' via s-channel
11413 C...rho_tc+ th=(p(f)-p(f'))**2
11414 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
11415           IF(MOD(MINT(15),2).EQ.0) THEN
11416             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
11417             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
11418           ELSE
11419             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11420             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
11421           ENDIF
11422         ENDIF
11423  
11424 CMRENNA++
11425       ELSEIF(ISUB.LE.215) THEN
11426         IF(ISUB.EQ.201) THEN
11427 C...f + fbar -> ~e_L + ~e_Lbar
11428           MINT(21)=ISIGN(KSUSY1+11,KCS)
11429           MINT(22)=-MINT(21)
11430  
11431         ELSEIF(ISUB.EQ.202) THEN
11432 C...f + fbar -> ~e_R + ~e_Rbar
11433           MINT(21)=ISIGN(KSUSY2+11,KCS)
11434           MINT(22)=-MINT(21)
11435  
11436         ELSEIF(ISUB.EQ.203) THEN
11437 C...f + fbar -> ~e_L + ~e_Rbar
11438           IF(MINT(15).LT.0) JS=2
11439           IF(MINT(2).EQ.1) THEN
11440             MINT(20+JS)=KFPR(ISUB,1)
11441             MINT(23-JS)=-KFPR(ISUB,2)
11442           ELSE
11443             MINT(20+JS)=-KFPR(ISUB,1)
11444             MINT(23-JS)=KFPR(ISUB,2)
11445           ENDIF
11446  
11447         ELSEIF(ISUB.EQ.204) THEN
11448 C...f + fbar -> ~mu_L + ~mu_Lbar
11449           MINT(21)=ISIGN(KSUSY1+13,KCS)
11450           MINT(22)=-MINT(21)
11451  
11452         ELSEIF(ISUB.EQ.205) THEN
11453 C...f + fbar -> ~mu_R + ~mu_Rbar
11454           MINT(21)=ISIGN(KSUSY2+13,KCS)
11455           MINT(22)=-MINT(21)
11456  
11457         ELSEIF(ISUB.EQ.206) THEN
11458 C...f + fbar -> ~mu_L + ~mu_Rbar
11459           IF(MINT(15).LT.0) JS=2
11460           IF(MINT(2).EQ.1) THEN
11461             MINT(20+JS)=KFPR(ISUB,1)
11462             MINT(23-JS)=-KFPR(ISUB,2)
11463           ELSE
11464             MINT(20+JS)=-KFPR(ISUB,1)
11465             MINT(23-JS)=KFPR(ISUB,2)
11466           ENDIF
11467  
11468         ELSEIF(ISUB.EQ.207) THEN
11469 C...f + fbar -> ~tau_1 + ~tau_1bar
11470           MINT(21)=ISIGN(KSUSY1+15,KCS)
11471           MINT(22)=-MINT(21)
11472  
11473         ELSEIF(ISUB.EQ.208) THEN
11474 C...f + fbar -> ~tau_2 + ~tau_2bar
11475           MINT(21)=ISIGN(KSUSY2+15,KCS)
11476           MINT(22)=-MINT(21)
11477  
11478         ELSEIF(ISUB.EQ.209) THEN
11479 C...f + fbar -> ~tau_1 + ~tau_2bar
11480           IF(MINT(15).LT.0) JS=2
11481           IF(MINT(2).EQ.1) THEN
11482             MINT(20+JS)=KFPR(ISUB,1)
11483             MINT(23-JS)=-KFPR(ISUB,2)
11484           ELSE
11485             MINT(20+JS)=-KFPR(ISUB,1)
11486             MINT(23-JS)=KFPR(ISUB,2)
11487           ENDIF
11488  
11489         ELSEIF(ISUB.EQ.210) THEN
11490 C...q + qbar' -> ~l_L + ~nulbar; th arbitrary
11491           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11492           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11493           MINT(21)=-ISIGN(KFPR(ISUB,1),KCH1+KCH2)
11494           MINT(22)=ISIGN(KFPR(ISUB,2),KCH1+KCH2)
11495  
11496         ELSEIF(ISUB.EQ.211) THEN
11497 C...q + qbar'-> ~tau_1 + ~nutaubar; th arbitrary
11498           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11499           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11500           MINT(21)=-ISIGN(KSUSY1+15,KCH1+KCH2)
11501           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
11502  
11503         ELSEIF(ISUB.EQ.212) THEN
11504 C...q + qbar'-> ~tau_2 + ~nutaubar; th arbitrary
11505           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11506           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11507           MINT(21)=-ISIGN(KSUSY2+15,KCH1+KCH2)
11508           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
11509  
11510         ELSEIF(ISUB.EQ.213) THEN
11511 C...f + fbar -> ~nul + ~nulbar
11512           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11513           MINT(22)=-MINT(21)
11514  
11515         ELSEIF(ISUB.EQ.214) THEN
11516 C...f + fbar -> ~nutau + ~nutaubar
11517           MINT(21)=ISIGN(KSUSY1+16,KCS)
11518           MINT(22)=-MINT(21)
11519         ENDIF
11520  
11521       ELSEIF(ISUB.LE.225) THEN
11522         IF(ISUB.EQ.216) THEN
11523 C...f + fbar -> ~chi01 + ~chi01
11524           MINT(21)=KSUSY1+22
11525           MINT(22)=KSUSY1+22
11526  
11527         ELSEIF(ISUB.EQ.217) THEN
11528 C...f + fbar -> ~chi02 + ~chi02
11529           MINT(21)=KSUSY1+23
11530           MINT(22)=KSUSY1+23
11531  
11532         ELSEIF(ISUB.EQ.218 ) THEN
11533 C...f + fbar -> ~chi03 + ~chi03
11534           MINT(21)=KSUSY1+25
11535           MINT(22)=KSUSY1+25
11536  
11537         ELSEIF(ISUB.EQ.219 ) THEN
11538 C...f + fbar -> ~chi04 + ~chi04
11539           MINT(21)=KSUSY1+35
11540           MINT(22)=KSUSY1+35
11541  
11542         ELSEIF(ISUB.EQ.220 ) THEN
11543 C...f + fbar -> ~chi01 + ~chi02
11544           IF(MINT(15).LT.0) JS=2
11545 C          IF(PYR(0).GT.0.5D0) JS=2
11546           MINT(20+JS)=KSUSY1+22
11547           MINT(23-JS)=KSUSY1+23
11548  
11549         ELSEIF(ISUB.EQ.221 ) THEN
11550 C...f + fbar -> ~chi01 + ~chi03
11551           IF(MINT(15).LT.0) JS=2
11552 C          IF(PYR(0).GT.0.5D0) JS=2
11553           MINT(20+JS)=KSUSY1+22
11554           MINT(23-JS)=KSUSY1+25
11555  
11556         ELSEIF(ISUB.EQ.222) THEN
11557 C...f + fbar -> ~chi01 + ~chi04
11558           IF(MINT(15).LT.0) JS=2
11559 C          IF(PYR(0).GT.0.5D0) JS=2
11560           MINT(20+JS)=KSUSY1+22
11561           MINT(23-JS)=KSUSY1+35
11562  
11563         ELSEIF(ISUB.EQ.223) THEN
11564 C...f + fbar -> ~chi02 + ~chi03
11565           IF(MINT(15).LT.0) JS=2
11566 C          IF(PYR(0).GT.0.5D0) JS=2
11567           MINT(20+JS)=KSUSY1+23
11568           MINT(23-JS)=KSUSY1+25
11569  
11570         ELSEIF(ISUB.EQ.224) THEN
11571 C...f + fbar -> ~chi02 + ~chi04
11572           IF(MINT(15).LT.0) JS=2
11573 C          IF(PYR(0).GT.0.5D0) JS=2
11574           MINT(20+JS)=KSUSY1+23
11575           MINT(23-JS)=KSUSY1+35
11576  
11577         ELSEIF(ISUB.EQ.225) THEN
11578 C...f + fbar -> ~chi03 + ~chi04
11579           IF(MINT(15).LT.0) JS=2
11580 C          IF(PYR(0).GT.0.5D0) JS=2
11581           MINT(20+JS)=KSUSY1+25
11582           MINT(23-JS)=KSUSY1+35
11583         ENDIF
11584  
11585       ELSEIF(ISUB.LE.236) THEN
11586         IF(ISUB.EQ.226) THEN
11587 C...f + fbar -> ~chi+-1 + ~chi-+1
11588 C...th=(p(q)-p(chi+))**2 or (p(qbar)-p(chi-))**2
11589           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11590           MINT(21)=ISIGN(KSUSY1+24,KCH1)
11591           MINT(22)=-MINT(21)
11592  
11593         ELSEIF(ISUB.EQ.227) THEN
11594 C...f + fbar -> ~chi+-2 + ~chi-+2
11595           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11596           MINT(21)=ISIGN(KSUSY1+37,KCH1)
11597           MINT(22)=-MINT(21)
11598  
11599         ELSEIF(ISUB.EQ.228) THEN
11600 C...f + fbar -> ~chi+-1 + ~chi-+2
11601 C...th=(p(q)-p(chi1+))**2 or th=(p(qbar)-p(chi1-))**2
11602 C...js=1 if pyr<.5, js=2 if pyr>.5
11603 C...if 15=q, 16=qbar and js=1, chi1+ + chi2-, th=(q-chi1+)**2
11604 C...if 15=qbar, 16=q and js=1, chi2- + chi1+, th=(q-chi1+)**2
11605 C...if 15=q, 16=qbar and js=2, chi1- + chi2+, th=(qbar-chi1-)**2
11606 C...if 15=qbar, 16=q and js=2, chi2+ + chi1-, th=(q-chi1-)**2
11607           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11608           KCH2=INT(1-KCH1)/2
11609           IF(MINT(2).EQ.1) THEN
11610             MINT(21)= ISIGN(KSUSY1+24,KCH1)
11611             MINT(22)= -ISIGN(KSUSY1+37,KCH1)
11612 c            IF(KCH2.EQ.0) JS=2
11613           ELSE
11614             MINT(21)= ISIGN(KSUSY1+37,KCH1)
11615             MINT(22)= -ISIGN(KSUSY1+24,KCH1)
11616             JS=2
11617 c            IF(KCH2.EQ.1) JS=2
11618           ENDIF
11619  
11620         ELSEIF(ISUB.EQ.229) THEN
11621 C...q + qbar' -> ~chi01 + ~chi+-1
11622 C...th=(p(u)-p(chi+))**2 or (p(ubar)-p(chi-))**2
11623           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11624           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11625 C...CHECK THIS
11626           IF(MOD(MINT(15),2).EQ.0) JS=2
11627           MINT(20+JS)=KSUSY1+22
11628           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11629  
11630         ELSEIF(ISUB.EQ.230) THEN
11631 C...q + qbar' -> ~chi02 + ~chi+-1
11632           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11633           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11634           IF(MOD(MINT(15),2).EQ.0) JS=2
11635           MINT(20+JS)=KSUSY1+23
11636           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11637  
11638         ELSEIF(ISUB.EQ.231) THEN
11639 C...q + qbar' -> ~chi03 + ~chi+-1
11640           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11641           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11642           IF(MOD(MINT(15),2).EQ.0) JS=2
11643           MINT(20+JS)=KSUSY1+25
11644           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11645  
11646         ELSEIF(ISUB.EQ.232) THEN
11647 C...q + qbar' -> ~chi04 + ~chi+-1
11648           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11649           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11650           IF(MOD(MINT(15),2).EQ.0) JS=2
11651           MINT(20+JS)=KSUSY1+35
11652           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11653  
11654         ELSEIF(ISUB.EQ.233) THEN
11655 C...q + qbar' -> ~chi01 + ~chi+-2
11656           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11657           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11658           IF(MOD(MINT(15),2).EQ.0) JS=2
11659           MINT(20+JS)=KSUSY1+22
11660           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11661  
11662         ELSEIF(ISUB.EQ.234) THEN
11663 C...q + qbar' -> ~chi02 + ~chi+-2
11664           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11665           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11666           IF(MOD(MINT(15),2).EQ.0) JS=2
11667           MINT(20+JS)=KSUSY1+23
11668           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11669  
11670         ELSEIF(ISUB.EQ.235) THEN
11671 C...q + qbar' -> ~chi03 + ~chi+-2
11672           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11673           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11674           IF(MOD(MINT(15),2).EQ.0) JS=2
11675           MINT(20+JS)=KSUSY1+25
11676           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11677  
11678         ELSEIF(ISUB.EQ.236) THEN
11679 C...q + qbar' -> ~chi04 + ~chi+-2
11680           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11681           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11682           IF(MOD(MINT(15),2).EQ.0) JS=2
11683           MINT(20+JS)=KSUSY1+35
11684           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11685         ENDIF
11686  
11687       ELSEIF(ISUB.LE.245) THEN
11688         IF(ISUB.EQ.237) THEN
11689 C...q + qbar -> ~chi01 + ~g
11690 C...th arbitrary
11691           IF(PYR(0).GT.0.5D0) JS=2
11692           MINT(20+JS)=KSUSY1+21
11693           MINT(23-JS)=KSUSY1+22
11694           KCC=17+JS
11695  
11696         ELSEIF(ISUB.EQ.238) THEN
11697 C...q + qbar -> ~chi02 + ~g
11698 C...th arbitrary
11699           IF(PYR(0).GT.0.5D0) JS=2
11700           MINT(20+JS)=KSUSY1+21
11701           MINT(23-JS)=KSUSY1+23
11702           KCC=17+JS
11703  
11704         ELSEIF(ISUB.EQ.239) THEN
11705 C...q + qbar -> ~chi03 + ~g
11706 C...th arbitrary
11707           IF(PYR(0).GT.0.5D0) JS=2
11708           MINT(20+JS)=KSUSY1+21
11709           MINT(23-JS)=KSUSY1+25
11710           KCC=17+JS
11711  
11712         ELSEIF(ISUB.EQ.240) THEN
11713 C...q + qbar -> ~chi04 + ~g
11714 C...th arbitrary
11715           IF(PYR(0).GT.0.5D0) JS=2
11716           MINT(20+JS)=KSUSY1+21
11717           MINT(23-JS)=KSUSY1+35
11718           KCC=17+JS
11719  
11720         ELSEIF(ISUB.EQ.241) THEN
11721 C...q + qbar' -> ~chi+-1 + ~g
11722 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
11723 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
11724 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
11725 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
11726 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
11727           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11728           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11729           JS=1
11730           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
11731           MINT(20+JS)=KSUSY1+21
11732           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11733           KCC=17+JS
11734  
11735         ELSEIF(ISUB.EQ.242) THEN
11736 C...q + qbar' -> ~chi+-2 + ~g
11737 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
11738 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
11739 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
11740 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
11741 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
11742           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11743           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11744           JS=1
11745           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
11746           MINT(20+JS)=KSUSY1+21
11747           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11748           KCC=17+JS
11749  
11750         ELSEIF(ISUB.EQ.243) THEN
11751 C...q + qbar -> ~g + ~g ; th arbitrary
11752           MINT(21)=KSUSY1+21
11753           MINT(22)=KSUSY1+21
11754           KCC=MINT(2)+4
11755  
11756         ELSEIF(ISUB.EQ.244) THEN
11757 C...g + g -> ~g + ~g ; th arbitrary
11758           KCC=MINT(2)+12
11759           KCS=(-1)**INT(1.5D0+PYR(0))
11760           MINT(21)=KSUSY1+21
11761           MINT(22)=KSUSY1+21
11762         ENDIF
11763  
11764       ELSEIF(ISUB.LE.260) THEN
11765         IF(ISUB.EQ.246) THEN
11766 C...qj + g -> ~qj_L + ~chi01
11767           IF(MINT(15).EQ.21) JS=2
11768           I=MINT(14+JS)
11769           IA=IABS(I)
11770           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11771           MINT(23-JS)=KSUSY1+22
11772           KCC=15+JS
11773           KCS=ISIGN(1,MINT(14+JS))
11774  
11775         ELSEIF(ISUB.EQ.247) THEN
11776 C...qj + g -> ~qj_R + ~chi01
11777           IF(MINT(15).EQ.21) JS=2
11778           I=MINT(14+JS)
11779           IA=IABS(I)
11780           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11781           MINT(23-JS)=KSUSY1+22
11782           KCC=15+JS
11783           KCS=ISIGN(1,MINT(14+JS))
11784  
11785         ELSEIF(ISUB.EQ.248) THEN
11786 C...qj + g -> ~qj_L + ~chi02
11787           IF(MINT(15).EQ.21) JS=2
11788           I=MINT(14+JS)
11789           IA=IABS(I)
11790           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11791           MINT(23-JS)=KSUSY1+23
11792           KCC=15+JS
11793           KCS=ISIGN(1,MINT(14+JS))
11794  
11795         ELSEIF(ISUB.EQ.249) THEN
11796 C...qj + g -> ~qj_R + ~chi02
11797           IF(MINT(15).EQ.21) JS=2
11798           I=MINT(14+JS)
11799           IA=IABS(I)
11800           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11801           MINT(23-JS)=KSUSY1+23
11802           KCC=15+JS
11803           KCS=ISIGN(1,MINT(14+JS))
11804  
11805         ELSEIF(ISUB.EQ.250) THEN
11806 C...qj + g -> ~qj_L + ~chi03
11807           IF(MINT(15).EQ.21) JS=2
11808           I=MINT(14+JS)
11809           IA=IABS(I)
11810           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11811           MINT(23-JS)=KSUSY1+25
11812           KCC=15+JS
11813           KCS=ISIGN(1,MINT(14+JS))
11814  
11815         ELSEIF(ISUB.EQ.251) THEN
11816 C...qj + g -> ~qj_R + ~chi03
11817           IF(MINT(15).EQ.21) JS=2
11818           I=MINT(14+JS)
11819           IA=IABS(I)
11820           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11821           MINT(23-JS)=KSUSY1+25
11822           KCC=15+JS
11823           KCS=ISIGN(1,MINT(14+JS))
11824  
11825         ELSEIF(ISUB.EQ.252) THEN
11826 C...qj + g -> ~qj_L + ~chi04
11827           IF(MINT(15).EQ.21) JS=2
11828           I=MINT(14+JS)
11829           IA=IABS(I)
11830           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11831           MINT(23-JS)=KSUSY1+35
11832           KCC=15+JS
11833           KCS=ISIGN(1,MINT(14+JS))
11834  
11835         ELSEIF(ISUB.EQ.253) THEN
11836 C...qj + g -> ~qj_R + ~chi04
11837           IF(MINT(15).EQ.21) JS=2
11838           I=MINT(14+JS)
11839           IA=IABS(I)
11840           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11841           MINT(23-JS)=KSUSY1+35
11842           KCC=15+JS
11843           KCS=ISIGN(1,MINT(14+JS))
11844  
11845         ELSEIF(ISUB.EQ.254) THEN
11846 C...qj + g -> ~qk_L + ~chi+-1
11847           IF(MINT(15).EQ.21) JS=2
11848           I=MINT(14+JS)
11849           IA=IABS(I)
11850           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
11851           IB=-IA+INT((IA+1)/2)*4-1
11852           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
11853           KCC=15+JS
11854           KCS=ISIGN(1,MINT(14+JS))
11855  
11856         ELSEIF(ISUB.EQ.255) THEN
11857 C...qj + g -> ~qk_L + ~chi+-1
11858           IF(MINT(15).EQ.21) JS=2
11859           I=MINT(14+JS)
11860           IA=IABS(I)
11861           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
11862           IB=-IA+INT((IA+1)/2)*4-1
11863           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
11864           KCC=15+JS
11865           KCS=ISIGN(1,MINT(14+JS))
11866  
11867         ELSEIF(ISUB.EQ.256) THEN
11868 C...qj + g -> ~qk_L + ~chi+-2
11869           IF(MINT(15).EQ.21) JS=2
11870           I=MINT(14+JS)
11871           IA=IABS(I)
11872           IB=-IA+INT((IA+1)/2)*4-1
11873           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
11874           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
11875           KCC=15+JS
11876           KCS=ISIGN(1,MINT(14+JS))
11877  
11878         ELSEIF(ISUB.EQ.257) THEN
11879 C...qj + g -> ~qk_R + ~chi+-2
11880           IF(MINT(15).EQ.21) JS=2
11881           I=MINT(14+JS)
11882           IA=IABS(I)
11883           IB=-IA+INT((IA+1)/2)*4-1
11884           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
11885           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
11886           KCC=15+JS
11887           KCS=ISIGN(1,MINT(14+JS))
11888  
11889         ELSEIF(ISUB.EQ.258) THEN
11890 C...qj + g -> ~qj_L + ~g
11891           IF(MINT(15).EQ.21) JS=2
11892           I=MINT(14+JS)
11893           IA=IABS(I)
11894           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11895           MINT(23-JS)=KSUSY1+21
11896           KCC=MINT(2)+6
11897           IF(JS.EQ.2) KCC=KCC+2
11898           KCS=ISIGN(1,I)
11899  
11900         ELSEIF(ISUB.EQ.259) THEN
11901 C...qj + g -> ~qj_R + ~g
11902           IF(MINT(15).EQ.21) JS=2
11903           I=MINT(14+JS)
11904           IA=IABS(I)
11905           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11906           MINT(23-JS)=KSUSY1+21
11907           KCC=MINT(2)+6
11908           IF(JS.EQ.2) KCC=KCC+2
11909           KCS=ISIGN(1,I)
11910         ENDIF
11911  
11912       ELSEIF(ISUB.LE.270) THEN
11913         IF(ISUB.EQ.261) THEN
11914 C...f + fbar -> ~t_1 + ~t_1bar; th = (p(q)-p(sq))**2
11915           ISGN=1
11916           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
11917           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
11918           MINT(22)=-MINT(21)
11919 C...Correct color combination
11920           IF(MINT(43).EQ.4) KCC=4
11921  
11922         ELSEIF(ISUB.EQ.262) THEN
11923 C...f + fbar -> ~t_2 + ~t_2bar; th = (p(q)-p(sq))**2
11924           ISGN=1
11925           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
11926           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
11927           MINT(22)=-MINT(21)
11928 C...Correct color combination
11929           IF(MINT(43).EQ.4) KCC=4
11930  
11931         ELSEIF(ISUB.EQ.263) THEN
11932 C...f + fbar -> ~t_1 + ~t_2bar; th = (p(q)-p(sq))**2
11933           IF((KCS.GT.0.AND.MINT(2).EQ.1).OR.
11934      &    (KCS.LT.0.AND.MINT(2).EQ.2)) THEN
11935             MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11936             MINT(22)=-ISIGN(KFPR(ISUB,2),KCS)
11937           ELSE
11938             JS=2
11939             MINT(21)=ISIGN(KFPR(ISUB,2),KCS)
11940             MINT(22)=-ISIGN(KFPR(ISUB,1),KCS)
11941           ENDIF
11942 C...Correct color combination
11943           IF(MINT(43).EQ.4) KCC=4
11944  
11945         ELSEIF(ISUB.EQ.264) THEN
11946 C...g + g -> ~t_1 + ~t_1bar; th arbitrary
11947           KCS=(-1)**INT(1.5D0+PYR(0))
11948           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11949           MINT(22)=-MINT(21)
11950           KCC=MINT(2)+10
11951  
11952         ELSEIF(ISUB.EQ.265) THEN
11953 C...g + g -> ~t_2 + ~t_2bar; th arbitrary
11954           KCS=(-1)**INT(1.5D0+PYR(0))
11955           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11956           MINT(22)=-MINT(21)
11957           KCC=MINT(2)+10
11958         ENDIF
11959  
11960       ELSEIF(ISUB.LE.296) THEN
11961         IF(ISUB.EQ.271.OR.ISUB.EQ.281.OR.ISUB.EQ.291) THEN
11962 C...qi + qj -> ~qi_L + ~qj_L
11963           KCC=MINT(2)
11964           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11965           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
11966           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
11967  
11968         ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.282.OR.ISUB.EQ.292) THEN
11969 C...qi + qj -> ~qi_R + ~qj_R
11970           KCC=MINT(2)
11971           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11972           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
11973           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
11974  
11975         ELSEIF(ISUB.EQ.273.OR.ISUB.EQ.283.OR.ISUB.EQ.293) THEN
11976 C...qi + qj -> ~qi_L + ~qj_R
11977           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11978           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
11979           KCC=MINT(2)
11980           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11981  
11982         ELSEIF(ISUB.EQ.274.OR.ISUB.EQ.284) THEN
11983 C...qi + qjbar -> ~qi_L + ~qj_Lbar; th = (p(f)-p(sf'))**2
11984           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
11985           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
11986           KCC=MINT(2)
11987           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11988  
11989         ELSEIF(ISUB.EQ.275.OR.ISUB.EQ.285) THEN
11990 C...qi + qjbar -> ~qi_R + ~qj_Rbar ; th = (p(f)-p(sf'))**2
11991           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
11992           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
11993           KCC=MINT(2)
11994           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11995  
11996         ELSEIF(ISUB.EQ.276.OR.ISUB.EQ.286.OR.ISUB.EQ.296) THEN
11997 C...qi + qjbar -> ~qi_L + ~qj_Rbar ; th = (p(f)-p(sf'))**2
11998           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11999           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
12000           KCC=MINT(2)
12001           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12002  
12003         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.287) THEN
12004 C...f + fbar -> ~qi_L + ~qi_Lbar ; th = (p(q)-p(sq))**2
12005           ISGN=1
12006           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12007           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12008           MINT(22)=-MINT(21)
12009           IF(MINT(43).EQ.4) KCC=4
12010  
12011         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.288) THEN
12012 C...f + fbar -> ~qi_R + ~qi_Rbar; th = (p(q)-p(sq))**2
12013           ISGN=1
12014           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12015           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12016           MINT(22)=-MINT(21)
12017           IF(MINT(43).EQ.4) KCC=4
12018  
12019         ELSEIF(ISUB.EQ.279.OR.ISUB.EQ.289) THEN
12020 C...g + g -> ~qi_L + ~qi_Lbar ; th arbitrary
12021 C...pure LL + RR
12022           KCS=(-1)**INT(1.5D0+PYR(0))
12023           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12024           MINT(22)=-MINT(21)
12025           KCC=MINT(2)+10
12026  
12027         ELSEIF(ISUB.EQ.280.OR.ISUB.EQ.290) THEN
12028 C...g + g -> ~qi_R + ~qi_Rbar ; th arbitrary
12029           KCS=(-1)**INT(1.5D0+PYR(0))
12030           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12031           MINT(22)=-MINT(21)
12032           KCC=MINT(2)+10
12033  
12034         ELSEIF(ISUB.EQ.294) THEN
12035 C...qj + g -> ~qj_L + ~g
12036           IF(MINT(15).EQ.21) JS=2
12037           I=MINT(14+JS)
12038           IA=IABS(I)
12039           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12040           MINT(23-JS)=KSUSY1+21
12041           KCC=MINT(2)+6
12042           IF(JS.EQ.2) KCC=KCC+2
12043           KCS=ISIGN(1,I)
12044  
12045         ELSEIF(ISUB.EQ.295) THEN
12046 C...qj + g -> ~qj_R + ~g
12047           IF(MINT(15).EQ.21) JS=2
12048           I=MINT(14+JS)
12049           IA=IABS(I)
12050           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12051           MINT(23-JS)=KSUSY1+21
12052           KCC=MINT(2)+6
12053           IF(JS.EQ.2) KCC=KCC+2
12054           KCS=ISIGN(1,I)
12055         ENDIF
12056  
12057       ELSEIF(ISUB.LE.340) THEN
12058  
12059         IF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
12060 C...q + qbar' -> H+ + H0
12061           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12062           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12063           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12064           MINT(20+JS)=ISIGN(37,KCH1+KCH2)
12065           MINT(23-JS)=KFPR(ISUB,2)
12066         ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
12067 C...f + fbar -> A0 + H0; th arbitrary
12068           IF(PYR(0).GT.0.5D0) JS=2
12069           MINT(20+JS)=KFPR(ISUB,1)
12070           MINT(23-JS)=KFPR(ISUB,2)
12071         ELSEIF(ISUB.EQ.301) THEN
12072 C...f + fbar -> H+ H-
12073           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12074           MINT(22)=-MINT(21)
12075         ENDIF
12076 CMRENNA--
12077  
12078       ELSEIF(ISUB.LE.360) THEN
12079  
12080         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
12081 C...l + l -> H_L++/--, H_R++/--
12082           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12083           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12084           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
12085  
12086         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
12087 C...l + gamma -> l' + H++/--; th=(p(l)-p(H))**2
12088           IF(MINT(15).EQ.22) JS=2
12089           MINT(20+JS)=ISIGN(KFPR(ISUB,1),-MINT(14+JS))
12090           MINT(23-JS)=ISIGN(KFPR(ISUB,2),-MINT(14+JS))
12091           KCC=22
12092  
12093         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
12094 C...f + fbar -> H++ + H--; th = (p(f)-p(H--))**2
12095           MINT(21)=-ISIGN(KFPR(ISUB,1),MINT(15))
12096           MINT(22)=-MINT(21)
12097  
12098         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
12099 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/--
12100 C...as inner process).
12101           DO 450 JT=1,2
12102             I=MINT(14+JT)
12103             IA=IABS(I)
12104             IF(IA.LE.10) THEN
12105               RVCKM=VINT(180+I)*PYR(0)
12106               DO 440 J=1,MSTP(1)
12107                 IB=2*J-1+MOD(IA,2)
12108                 IPM=(5-ISIGN(1,I))/2
12109                 IDC=J+MDCY(IA,2)+2
12110                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 440
12111                 MINT(20+JT)=ISIGN(IB,I)
12112                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
12113                 IF(RVCKM.LE.0D0) GOTO 450
12114   440         CONTINUE
12115             ELSE
12116               IB=2*((IA+1)/2)-1+MOD(IA,2)
12117               MINT(20+JT)=ISIGN(IB,I)
12118             ENDIF
12119   450     CONTINUE
12120           KCC=22
12121           KFRES=ISIGN(KFPR(ISUB,1),MINT(15))
12122           IF(MOD(MINT(15),2).EQ.1) KFRES=-KFRES
12123  
12124         ELSEIF(ISUB.EQ.353) THEN
12125 C...f + fbar -> Z_R0
12126           KFRES=KFPR(ISUB,1)
12127  
12128         ELSEIF(ISUB.EQ.354) THEN
12129 C...f + fbar' -> W+/-
12130           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12131           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12132           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
12133  
12134         ENDIF
12135  
12136       ELSEIF(ISUB.LE.380) THEN
12137  
12138         IF(ISUB.LE.363.OR.ISUB.EQ.368) THEN
12139 C...f + fbar -> charged+ charged- technicolor
12140           KSW=(-1)**INT(1.5D0+PYR(0))
12141           MINT(21)=ISIGN(KFPR(ISUB,1),KSW)
12142           MINT(22)=-ISIGN(KFPR(ISUB,2),KSW)
12143  
12144         ELSEIF(ISUB.LE.367.OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN
12145 C...f + fbar -> neutral neutral technicolor
12146           MINT(21)=KFPR(ISUB,1)
12147           MINT(22)=KFPR(ISUB,2)
12148  
12149         ELSEIF(ISUB.EQ.374.OR.ISUB.EQ.375.OR.ISUB.EQ.378) THEN
12150 C...f + fbar' -> neutral charged technicolor
12151           IN=1
12152           IC=2
12153           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12154           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12155           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
12156           MINT(23-JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
12157           MINT(20+JS)=KFPR(ISUB,IN)
12158  
12159         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
12160 C...f + fbar' -> charged neutral technicolor
12161           IN=2
12162           IC=1
12163           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12164           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12165           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12166           MINT(20+JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
12167           MINT(23-JS)=KFPR(ISUB,IN)
12168         ENDIF
12169  
12170       ELSEIF(ISUB.LE.400) THEN
12171         IF(ISUB.EQ.381) THEN
12172 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2, TC extensions
12173           KCC=MINT(2)
12174           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12175  
12176         ELSEIF(ISUB.EQ.382) THEN
12177 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2, TC extensions
12178           MINT(21)=ISIGN(KFLF,MINT(15))
12179           MINT(22)=-MINT(21)
12180           KCC=4
12181  
12182         ELSEIF(ISUB.EQ.383) THEN
12183 C...f + fbar -> g + g; th arbitrary, TC extensions
12184           MINT(21)=21
12185           MINT(22)=21
12186           KCC=MINT(2)+4
12187  
12188         ELSEIF(ISUB.EQ.384) THEN
12189 C...f + g -> f + g; th = (p(f)-p(f))**2, TC extensions
12190           IF(MINT(15).EQ.21) JS=2
12191           KCC=MINT(2)+6
12192           IF(MINT(15).EQ.21) KCC=KCC+2
12193           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
12194           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
12195  
12196         ELSEIF(ISUB.EQ.385) THEN
12197 C...g + g -> f + fbar; th arbitrary, TC extensions
12198           KCS=(-1)**INT(1.5D0+PYR(0))
12199           MINT(21)=ISIGN(KFLF,KCS)
12200           MINT(22)=-MINT(21)
12201           KCC=MINT(2)+10
12202  
12203         ELSEIF(ISUB.EQ.386) THEN
12204 C...g + g -> g + g; th arbitrary, TC extensions
12205           KCC=MINT(2)+12
12206           KCS=(-1)**INT(1.5D0+PYR(0))
12207  
12208         ELSEIF(ISUB.EQ.387) THEN
12209 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2, TC extensions
12210           MINT(21)=ISIGN(MINT(55),MINT(15))
12211           MINT(22)=-MINT(21)
12212           KCC=4
12213  
12214         ELSEIF(ISUB.EQ.388) THEN
12215 C...g + g -> Q + Qbar; th arbitrary, TC extensions
12216           KCS=(-1)**INT(1.5D0+PYR(0))
12217           MINT(21)=ISIGN(MINT(55),KCS)
12218           MINT(22)=-MINT(21)
12219           KCC=MINT(2)+10
12220  
12221         ELSEIF(ISUB.EQ.391) THEN
12222 C...f + fbar -> G*.
12223           KFRES=KFPR(ISUB,1)
12224  
12225         ELSEIF(ISUB.EQ.392) THEN
12226 C...g + g -> G*.
12227           KCC=21
12228           KFRES=KFPR(ISUB,1)
12229  
12230         ELSEIF(ISUB.EQ.393) THEN
12231 C...q + qbar -> g + G*;  th arbitrary.
12232           IF(PYR(0).GT.0.5D0) JS=2
12233           MINT(20+JS)=KFPR(ISUB,1)
12234           MINT(23-JS)=KFPR(ISUB,2)
12235           KCC=17+JS
12236  
12237         ELSEIF(ISUB.EQ.394) THEN
12238 C...q + g -> q + G*;  th = (p(f) - p(f))**2
12239           IF(MINT(15).EQ.21) JS=2
12240           MINT(23-JS)=KFPR(ISUB,2)
12241           KCC=15+JS
12242           KCS=ISIGN(1,MINT(14+JS))
12243  
12244         ELSEIF(ISUB.EQ.395) THEN
12245 C...g + g -> G* + g;  th arbitrary.
12246           IF(PYR(0).GT.0.5D0) JS=2
12247           MINT(23-JS)=KFPR(ISUB,2)
12248           KCC=22+JS
12249         ENDIF
12250  
12251       ELSEIF(ISUB.LE.420) THEN
12252         IF(ISUB.EQ.401) THEN
12253 C...g + g -> t + b + H+/-
12254           KCS=(-1)**INT(1.5D0+PYR(0))
12255           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
12256           MINT(22)=ISIGN(5,-KCS)
12257           KCC=11+INT(0.5D0+PYR(0))
12258           KFRES=ISIGN(KFHIGG,-KCS)
12259  
12260         ELSEIF(ISUB.EQ.402) THEN
12261 C...q + qbar -> t + b + H+/-
12262           KFL=(-1)**INT(1.5D0+PYR(0))
12263           MINT(21)=ISIGN(INT(6.+.5*KFL),KCS)
12264           MINT(22)=ISIGN(INT(6.-.5*KFL),-KCS)
12265           KCC=4
12266           KFRES=ISIGN(KFHIGG,-KFL*KCS)
12267         ENDIF
12268  
12269 C...QUARKONIA+++
12270 C...Additional code by Stefan Wolf
12271       ELSEIF(ISUB.LE.430) THEN
12272         IF(ISUB.GE.421.AND.ISUB.LE.424) THEN
12273 C...g + g -> QQ~[n] + g
12274 C...MINT(21), MINT(22) copied from ISUB.EQ.86-89
12275 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12276 C...KCC and KCS copied from ISUB.EQ.86-89 (for ISUB.EQ.421)
12277 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12278 C...or from ISUB.EQ.68 (for ISUB.NE.421)
12279 C...[g + g -> g + g; th arbitrary]
12280           MINT(21)=KFPR(ISUBSV,1)
12281           MINT(22)=KFPR(ISUBSV,2)
12282           IF(ISUB.EQ.421) THEN
12283              KCC=24
12284              KCS=(-1)**INT(1.5D0+PYR(0))
12285           ELSE
12286              KCC=MINT(2)+12
12287              KCS=(-1)**INT(1.5D0+PYR(0))
12288           ENDIF
12289  
12290         ELSEIF(ISUB.GE.425.AND.ISUB.LE.427) THEN
12291 C...q + g -> q + QQ~[n]
12292 C...MINT(21), MINT(22) "copied" from ISUB.EQ.112
12293 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12294 C...KCC copied from ISUB.EQ.28
12295 C...[f + g -> f + g;  th = (p(f)-p(f))**2; (q + g -> q + g  only)]
12296           IF(MINT(15).EQ.21) JS=2
12297           MINT(23-JS)=KFPR(ISUBSV,2)
12298           KCC=MINT(2)+6
12299           IF(MINT(15).EQ.21) KCC=KCC+2
12300           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
12301           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
12302  
12303         ELSEIF(ISUB.GE.428.AND.ISUB.LE.430) THEN
12304 C...q + q~ -> g + QQ~[n]
12305 C...MINT(21), MINT(22) "copied" from ISUB.EQ.111
12306 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12307 C...KCC copied from ISUB.EQ.13
12308 C...[f + fbar -> g + g;  th arbitrary; (q + qbar -> g + g  only)]
12309           IF(PYR(0).GT.0.5) JS=2
12310           MINT(20+JS)=21
12311           MINT(23-JS)=KFPR(ISUBSV,2)
12312           KCC=MINT(2)+4
12313         ENDIF
12314  
12315       ELSEIF(ISUB.LE.440) THEN
12316         IF(ISUB.GE.431.AND.ISUB.LE.433) THEN
12317 C...g + g -> QQ~[n] + g
12318 C...MINT(21), MINT(22) copied from ISUB.EQ.86-89
12319 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12320 C...KCC and KCS copied from ISUB.EQ.86-89
12321 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12322           MINT(21)=KFPR(ISUBSV,1)
12323           MINT(22)=KFPR(ISUBSV,2)
12324           KCC=24
12325           KCS=(-1)**INT(1.5D0+PYR(0))
12326  
12327         ELSEIF(ISUB.GE.434.AND.ISUB.LE.436) THEN
12328 C...q + g -> q + QQ~[n]
12329 C...MINT(21), MINT(22) "copied" from ISUB.EQ.112
12330 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12331 C...KCC and KCS copied from ISUB.EQ.112
12332 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12333           IF(MINT(15).EQ.21) JS=2
12334           MINT(23-JS)=KFPR(ISUBSV,2)
12335           KCC=15+JS
12336           KCS=ISIGN(1,MINT(14+JS))
12337  
12338         ELSEIF(ISUB.GE.437.AND.ISUB.LE.439) THEN
12339 C...q + q~ -> g + QQ~[n]
12340 C...MINT(21), MINT(22) "copied" from ISUB.EQ.111
12341 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12342 C...KCC copied from ISUB.EQ.111
12343 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12344           IF(PYR(0).GT.0.5) JS=2
12345           MINT(20+JS)=21
12346           MINT(23-JS)=KFPR(ISUBSV,2)
12347           KCC=17+JS
12348         ENDIF
12349 C...QUARKONIA---
12350  
12351       ENDIF
12352  
12353       IF(ISET(ISUB).EQ.11) THEN
12354 C...Store documentation for user-defined processes
12355         BEZUP=(PUP(3,1)+PUP(3,2))/(PUP(4,1)+PUP(4,2))
12356         KUPPO(1)=MINT(83)+5
12357         KUPPO(2)=MINT(83)+6
12358         I=MINT(83)+6
12359         DO 470 IUP=3,NUP
12360           KUPPO(IUP)=0
12361           IF(MSTP(128).GE.2.AND.MOTHUP(1,IUP).GE.3) THEN
12362             IDOC=IDOC-1
12363             MINT(4)=MINT(4)-1
12364             GOTO 470
12365           ENDIF
12366           I=I+1
12367           KUPPO(IUP)=I
12368           K(I,1)=21
12369           K(I,2)=IDUP(IUP)
12370           IF(IDUP(IUP).EQ.0) K(I,2)=90
12371           K(I,3)=0
12372           IF(MOTHUP(1,IUP).GE.3) K(I,3)=KUPPO(MOTHUP(1,IUP))
12373           K(I,4)=0
12374           K(I,5)=0
12375           DO 460 J=1,5
12376             P(I,J)=PUP(J,IUP)
12377   460     CONTINUE
12378           V(I,5)=VTIMUP(IUP)
12379   470   CONTINUE
12380         CALL PYROBO(MINT(83)+7,MINT(83)+4+NUP,0D0,VINT(24),0D0,0D0,
12381      &  -BEZUP)
12382  
12383 C...Store final state partons for user-defined processes
12384         N=IPU2
12385         DO 490 IUP=3,NUP
12386           N=N+1
12387           K(N,1)=1
12388           IF(ISTUP(IUP).EQ.2.OR.ISTUP(IUP).EQ.3) K(N,1)=11
12389           K(N,2)=IDUP(IUP)
12390           IF(IDUP(IUP).EQ.0) K(N,2)=90
12391           IF(MSTP(128).LE.0.OR.MOTHUP(1,IUP).EQ.0) THEN
12392             K(N,3)=KUPPO(IUP)
12393           ELSE
12394             K(N,3)=MINT(84)+MOTHUP(1,IUP)
12395           ENDIF
12396           K(N,4)=0
12397           K(N,5)=0
12398 C...Search for daughters of intermediate colourless particles.
12399           IF(K(N,1).EQ.11.AND.KCHG(PYCOMP(K(N,2)),2).EQ.0) THEN
12400             DO 475 IUPDAU=IUP+1,NUP
12401               IF(MOTHUP(1,IUPDAU).EQ.IUP.AND.K(N,4).EQ.0) K(N,4)=
12402      &        N+IUPDAU-IUP
12403               IF(MOTHUP(1,IUPDAU).EQ.IUP) K(N,5)=N+IUPDAU-IUP
12404   475       CONTINUE
12405           ENDIF
12406           DO 480 J=1,5
12407             P(N,J)=PUP(J,IUP)
12408   480     CONTINUE
12409           V(N,5)=VTIMUP(IUP)
12410   490   CONTINUE
12411         CALL PYROBO(IPU3,N,0D0,VINT(24),0D0,0D0,-BEZUP)
12412  
12413 C...Arrange colour flow for user-defined processes
12414         NLBL=0
12415         DO 540 IUP1=1,NUP
12416           I1=MINT(84)+IUP1
12417           IF(KCHG(PYCOMP(K(I1,2)),2).EQ.0) GOTO 540
12418           IF(K(I1,1).EQ.1) K(I1,1)=3
12419           IF(K(I1,1).EQ.11) K(I1,1)=14
12420 C...Find a not yet considered colour/anticolour line.
12421           DO 530 ISDE1=1,2
12422             IF(ICOLUP(ISDE1,IUP1).EQ.0) GOTO 530
12423             NMAT=0
12424             DO 500 ILBL=1,NLBL
12425               IF(ICOLUP(ISDE1,IUP1).EQ.ILAB(ILBL)) NMAT=1
12426   500       CONTINUE
12427             IF(NMAT.EQ.0) THEN
12428               NLBL=NLBL+1
12429               ILAB(NLBL)=ICOLUP(ISDE1,IUP1)
12430 C...Find all others belonging to same line.
12431               I3=I1
12432               I4=0
12433               DO 520 IUP2=IUP1+1,NUP
12434                 I2=MINT(84)+IUP2
12435                 DO 510 ISDE2=1,2
12436                   IF(ICOLUP(ISDE2,IUP2).EQ.ICOLUP(ISDE1,IUP1)) THEN
12437                     IF(ISDE2.EQ.ISDE1) THEN
12438                       K(I3,3+ISDE2)=K(I3,3+ISDE2)+I2
12439                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I3
12440                       I3=I2
12441                     ELSEIF(I4.NE.0) THEN
12442                       K(I4,3+ISDE2)=K(I4,3+ISDE2)+I2
12443                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I4
12444                       I4=I2
12445                     ELSEIF(IUP2.LE.2) THEN
12446                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+I2
12447                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+I1
12448                       I4=I2
12449                     ELSE
12450                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+MSTU(5)*I2
12451                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I1
12452                       I4=I2
12453                     ENDIF
12454                   ENDIF
12455   510           CONTINUE
12456   520         CONTINUE
12457             ENDIF
12458   530     CONTINUE
12459   540   CONTINUE
12460  
12461       ELSEIF(IDOC.EQ.7) THEN
12462 C...Resonance not decaying; store kinematics
12463         I=MINT(83)+7
12464         K(IPU3,1)=1
12465         K(IPU3,2)=KFRES
12466         K(IPU3,3)=I
12467         P(IPU3,4)=SHUSER
12468         P(IPU3,5)=SHUSER
12469         K(I,1)=21
12470         K(I,2)=KFRES
12471         P(I,4)=SHUSER
12472         P(I,5)=SHUSER
12473         N=IPU3
12474         MINT(21)=KFRES
12475         MINT(22)=0
12476  
12477 C...Special cases: colour flow in coloured resonances
12478         KCRES=PYCOMP(KFRES)
12479         IF(KCHG(KCRES,2).NE.0) THEN
12480           K(IPU3,1)=3
12481           DO 550 J=1,2
12482             JC=J
12483             IF(KCS.EQ.-1) JC=3-J
12484             IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
12485      &      MINT(84)+ICOL(KCC,1,JC)
12486             IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
12487      &      MINT(84)+ICOL(KCC,2,JC)
12488             IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
12489      &      MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
12490   550     CONTINUE
12491         ELSE
12492           K(IPU1,4)=IPU2
12493           K(IPU1,5)=IPU2
12494           K(IPU2,4)=IPU1
12495           K(IPU2,5)=IPU1
12496         ENDIF
12497  
12498       ELSEIF(IDOC.EQ.8) THEN
12499 C...2 -> 2 processes: store outgoing partons in their CM-frame
12500         DO 560 JT=1,2
12501           I=MINT(84)+2+JT
12502           KCA=PYCOMP(MINT(20+JT))
12503           K(I,1)=1
12504           IF(KCHG(KCA,2).NE.0) K(I,1)=3
12505           K(I,2)=MINT(20+JT)
12506           K(I,3)=MINT(83)+IDOC+JT-2
12507           KFAA=IABS(K(I,2))
12508           IF(KFPR(ISUBSV,1+MOD(JS+JT,2)).NE.0) THEN
12509             P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
12510           ELSE
12511             P(I,5)=PYMASS(K(I,2))
12512           ENDIF
12513           IF((KFAA.EQ.6.OR.KFAA.EQ.7.OR.KFAA.EQ.8).AND.
12514      &    P(I,5).LT.PARP(42)) P(I,5)=PYMASS(K(I,2))
12515   560   CONTINUE
12516         IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN
12517           KFA1=IABS(MINT(21))
12518           KFA2=IABS(MINT(22))
12519           IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21))
12520      &    THEN
12521             MINT(51)=1
12522             RETURN
12523           ENDIF
12524           P(IPU3,5)=0D0
12525           P(IPU4,5)=0D0
12526         ENDIF
12527         P(IPU3,4)=0.5D0*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR)
12528         P(IPU3,3)=SQRT(MAX(0D0,P(IPU3,4)**2-P(IPU3,5)**2))
12529         P(IPU4,4)=SHR-P(IPU3,4)
12530         P(IPU4,3)=-P(IPU3,3)
12531         N=IPU4
12532         MINT(7)=MINT(83)+7
12533         MINT(8)=MINT(83)+8
12534  
12535 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
12536         CALL PYROBO(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
12537  
12538       ELSEIF(IDOC.EQ.9) THEN
12539 C...2 -> 3 processes: store outgoing partons in their CM frame
12540         DO 570 JT=1,2
12541           I=MINT(84)+2+JT
12542           KCA=PYCOMP(MINT(20+JT))
12543           K(I,1)=1
12544           IF(KCHG(KCA,2).NE.0) K(I,1)=3
12545           K(I,2)=MINT(20+JT)
12546           K(I,3)=MINT(83)+IDOC+JT-3
12547           JTA=JT
12548 C...t and b in opposide order in event list as compared to
12549 C...matrix element?
12550           IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) JTA=3-JT
12551           IF(IABS(K(I,2)).LE.22) THEN
12552             P(I,5)=PYMASS(K(I,2))
12553           ELSE
12554             P(I,5)=SQRT(VINT(63+MOD(JS+JTA,2)))
12555           ENDIF
12556           PT=SQRT(MAX(0D0,VINT(197+5*JTA)-P(I,5)**2+VINT(196+5*JTA)**2))
12557           P(I,1)=PT*COS(VINT(198+5*JTA))
12558           P(I,2)=PT*SIN(VINT(198+5*JTA))
12559   570   CONTINUE
12560         K(IPU5,1)=1
12561         K(IPU5,2)=KFRES
12562         K(IPU5,3)=MINT(83)+IDOC
12563         P(IPU5,5)=SHR
12564         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
12565         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
12566         PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
12567         PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2
12568         PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2
12569         PMT3=SQRT(PMS3)
12570         P(IPU5,3)=PMT3*SINH(VINT(211))
12571         P(IPU5,4)=PMT3*COSH(VINT(211))
12572         PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2
12573         SQL12=(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2
12574         IF(SQL12.LE.0D0) THEN
12575           MINT(51)=1
12576           RETURN
12577         ENDIF
12578         P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+
12579      &  VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
12580         P(IPU4,3)=-P(IPU3,3)-P(IPU5,3)
12581         IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) THEN
12582 C...t and b in opposide order in event list as compared to
12583 C...matrix element
12584           P(IPU4,3)=(-P(IPU5,3)*(PMS12+PMS2-PMS1)+
12585      &    VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
12586           P(IPU3,3)=-P(IPU4,3)-P(IPU5,3)
12587         END IF
12588         P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2)
12589         P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2)
12590         MINT(23)=KFRES
12591         N=IPU5
12592         MINT(7)=MINT(83)+7
12593         MINT(8)=MINT(83)+8
12594  
12595       ELSEIF(IDOC.EQ.11) THEN
12596 C...Z0 + Z0 -> h0, W+ + W- -> h0: store Higgs and outgoing partons
12597         PHI(1)=PARU(2)*PYR(0)
12598         PHI(2)=PHI(1)-PHIR
12599         DO 580 JT=1,2
12600           I=MINT(84)+2+JT
12601           K(I,1)=1
12602           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
12603           K(I,2)=MINT(20+JT)
12604           K(I,3)=MINT(83)+IDOC+JT-2
12605           P(I,5)=PYMASS(K(I,2))
12606           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) THEN
12607             MINT(51)=1
12608             RETURN
12609           ENDIF
12610           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
12611           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
12612           P(I,1)=PTABS*COS(PHI(JT))
12613           P(I,2)=PTABS*SIN(PHI(JT))
12614           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
12615           P(I,4)=0.5D0*SHPR*Z(JT)
12616           IZW=MINT(83)+6+JT
12617           K(IZW,1)=21
12618           K(IZW,2)=23
12619           IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT)))
12620           K(IZW,3)=IZW-2
12621           P(IZW,1)=-P(I,1)
12622           P(IZW,2)=-P(I,2)
12623           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
12624           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
12625           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
12626   580   CONTINUE
12627         I=MINT(83)+9
12628         K(IPU5,1)=1
12629         K(IPU5,2)=KFRES
12630         K(IPU5,3)=I
12631         P(IPU5,5)=SHR
12632         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
12633         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
12634         P(IPU5,3)=-P(IPU3,3)-P(IPU4,3)
12635         P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4)
12636         K(I,1)=21
12637         K(I,2)=KFRES
12638         DO 590 J=1,5
12639           P(I,J)=P(IPU5,J)
12640   590   CONTINUE
12641         N=IPU5
12642         MINT(23)=KFRES
12643  
12644       ELSEIF(IDOC.EQ.12) THEN
12645 C...Z0 and W+/- scattering: store bosons and outgoing partons
12646         PHI(1)=PARU(2)*PYR(0)
12647         PHI(2)=PHI(1)-PHIR
12648         JTRAN=INT(1.5D0+PYR(0))
12649         DO 600 JT=1,2
12650           I=MINT(84)+2+JT
12651           K(I,1)=1
12652           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
12653           K(I,2)=MINT(20+JT)
12654           K(I,3)=MINT(83)+IDOC+JT-2
12655           P(I,5)=PYMASS(K(I,2))
12656           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0D0
12657           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
12658           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
12659           P(I,1)=PTABS*COS(PHI(JT))
12660           P(I,2)=PTABS*SIN(PHI(JT))
12661           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
12662           P(I,4)=0.5D0*SHPR*Z(JT)
12663           IZW=MINT(83)+6+JT
12664           K(IZW,1)=21
12665           IF(MINT(14+JT).EQ.MINT(20+JT)) THEN
12666             K(IZW,2)=23
12667           ELSE
12668             K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT))-PYCHGE(MINT(20+JT)))
12669           ENDIF
12670           K(IZW,3)=IZW-2
12671           P(IZW,1)=-P(I,1)
12672           P(IZW,2)=-P(I,2)
12673           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
12674           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
12675           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
12676           IPU=MINT(84)+4+JT
12677           K(IPU,1)=3
12678           K(IPU,2)=KFPR(ISUB,JT)
12679           IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2)
12680           IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2)
12681           K(IPU,3)=MINT(83)+8+JT
12682           IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN
12683             P(IPU,5)=PYMASS(K(IPU,2))
12684           ELSE
12685             P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2)))
12686           ENDIF
12687           MINT(22+JT)=K(IPU,2)
12688   600   CONTINUE
12689 C...Find rotation and boost for hard scattering subsystem
12690         I1=MINT(83)+7
12691         I2=MINT(83)+8
12692         BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4))
12693         BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4))
12694         BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4))
12695         GAMCM=(P(I1,4)+P(I2,4))/SHR
12696         BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3)
12697         PX=P(I1,1)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEXCM
12698         PY=P(I1,2)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEYCM
12699         PZ=P(I1,3)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEZCM
12700         THECM=PYANGL(PZ,SQRT(PX**2+PY**2))
12701         PHICM=PYANGL(PX,PY)
12702 C...Store hard scattering subsystem. Rotate and boost it
12703         SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4D0*P(IPU5,5)**2*
12704      &  P(IPU6,5)**2
12705         PABS=SQRT(MAX(0D0,SQLAM/(4D0*SH)))
12706         CTHWZ=VINT(23)
12707         STHWZ=SQRT(MAX(0D0,1D0-CTHWZ**2))
12708         PHIWZ=VINT(24)-PHICM
12709         P(IPU5,1)=PABS*STHWZ*COS(PHIWZ)
12710         P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ)
12711         P(IPU5,3)=PABS*CTHWZ
12712         P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2)
12713         P(IPU6,1)=-P(IPU5,1)
12714         P(IPU6,2)=-P(IPU5,2)
12715         P(IPU6,3)=-P(IPU5,3)
12716         P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2)
12717         CALL PYROBO(IPU5,IPU6,THECM,PHICM,BEXCM,BEYCM,BEZCM)
12718         DO 620 JT=1,2
12719           I1=MINT(83)+8+JT
12720           I2=MINT(84)+4+JT
12721           K(I1,1)=21
12722           K(I1,2)=K(I2,2)
12723           DO 610 J=1,5
12724             P(I1,J)=P(I2,J)
12725   610     CONTINUE
12726   620   CONTINUE
12727         N=IPU6
12728         MINT(7)=MINT(83)+9
12729         MINT(8)=MINT(83)+10
12730       ENDIF
12731  
12732       IF(ISET(ISUB).EQ.11) THEN
12733       ELSEIF(IDOC.GE.8) THEN
12734 C...Store colour connection indices
12735         DO 630 J=1,2
12736           JC=J
12737           IF(KCS.EQ.-1) JC=3-J
12738           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
12739      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)
12740           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
12741      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)
12742           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
12743      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
12744           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
12745      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
12746   630   CONTINUE
12747  
12748 C...Copy outgoing partons to documentation lines
12749         IMAX=2
12750         IF(IDOC.EQ.9) IMAX=3
12751         DO 650 I=1,IMAX
12752           I1=MINT(83)+IDOC-IMAX+I
12753           I2=MINT(84)+2+I
12754           K(I1,1)=21
12755           K(I1,2)=K(I2,2)
12756           IF(IDOC.LE.9) K(I1,3)=0
12757           IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I
12758           DO 640 J=1,5
12759             P(I1,J)=P(I2,J)
12760   640     CONTINUE
12761   650   CONTINUE
12762  
12763       ELSEIF(IDOC.EQ.9) THEN
12764 C...Store colour connection indices
12765         DO 660 J=1,2
12766           JC=J
12767           IF(KCS.EQ.-1) JC=3-J
12768           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
12769      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+
12770      &    MAX(0,MIN(1,ICOL(KCC,1,JC)-2))
12771           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
12772      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+
12773      &    MAX(0,MIN(1,ICOL(KCC,2,JC)-2))
12774           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
12775      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
12776           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)=
12777      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
12778   660   CONTINUE
12779  
12780 C...Copy outgoing partons to documentation lines
12781         DO 680 I=1,3
12782           I1=MINT(83)+IDOC-3+I
12783           I2=MINT(84)+2+I
12784           K(I1,1)=21
12785           K(I1,2)=K(I2,2)
12786           K(I1,3)=0
12787           DO 670 J=1,5
12788             P(I1,J)=P(I2,J)
12789   670     CONTINUE
12790   680   CONTINUE
12791       ENDIF
12792  
12793 C...Copy outgoing partons to list of allowed radiators.
12794       NPART=0
12795       IF(MINT(35).GE.2.AND.ISET(ISUB).NE.0) THEN
12796         DO 690 I=MINT(84)+3,N
12797           NPART=NPART+1
12798           IPART(NPART)=I
12799           PTPART(NPART)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2)
12800   690   CONTINUE
12801       ENDIF
12802  
12803 C...Low-pT events: remove gluons used for string drawing purposes
12804       IF(ISUB.EQ.95) THEN
12805         IF(MINT(35).LE.1) THEN
12806           K(IPU3,1)=K(IPU3,1)+10
12807           K(IPU4,1)=K(IPU4,1)+10
12808         ENDIF
12809         DO 700 J=41,66
12810           VINTSV(J)=VINT(J)
12811           VINT(J)=0D0
12812   700   CONTINUE
12813         DO 720 I=MINT(83)+5,MINT(83)+8
12814           DO 710 J=1,5
12815             P(I,J)=0D0
12816   710     CONTINUE
12817   720   CONTINUE
12818       ENDIF
12819  
12820       RETURN
12821       END
12822  
12823 C***********************************************************************
12824  
12825 C...PYEVOL
12826 C...Handles intertwined pT-ordered spacelike initial-state parton
12827 C...and multiple interactions.
12828  
12829       SUBROUTINE PYEVOL(MODE,PT2MAX,PT2MIN)
12830 C...Mode = -1 : Initialize first time. Determine MAX and MIN scales.
12831 C...MODE =  0 : (Re-)initialize ISR/MI evolution.
12832 C...Mode =  1 : Evolve event from PT2MAX to PT2MIN.
12833  
12834 C...Double precision and integer declarations.
12835       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12836       IMPLICIT INTEGER(I-N)
12837       INTEGER PYK,PYCHGE,PYCOMP
12838 C...External
12839       EXTERNAL PYALPS
12840       DOUBLE PRECISION PYALPS
12841 C...Parameter statement for maximum size of showers.
12842       PARAMETER (MAXNUR=1000)
12843 C...Commonblocks.
12844       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
12845       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12846       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12847       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
12848       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12849       COMMON/PYINT1/MINT(400),VINT(400)
12850       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
12851       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
12852       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
12853      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
12854      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
12855       COMMON/PYCTAG/NCT,MCT(4000,2)
12856       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
12857      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
12858       COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
12859 C...Local arrays and saved variables.
12860       DIMENSION VINTSV(11:80),KSAV(4,5),PSAV(4,5),VSAV(4,5),SHAT(240)
12861       SAVE NSAV,NPARTS,M15SV,M16SV,M21SV,M22SV,VINTSV,SHAT,ISUBHD,ALAM3
12862      &     ,PSAV,KSAV,VSAV
12863  
12864       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
12865      &     /PYINT2/,/PYINT3/,/PYINTM/,/PYCTAG/,/PYISMX/,/PYISJN/
12866  
12867 C----------------------------------------------------------------------
12868 C...MODE=-1: Pre-initialization. Store info on hard scattering etc,
12869 C...done only once per event, while MODE=0 is repeated each time the
12870 C...evolution needs to be restarted.
12871       IF (MODE.EQ.-1) THEN
12872         ISUBHD=MINT(1)
12873         NSAV=N
12874         NPARTS=NPART
12875 C...Store hard scattering variables
12876         M15SV=MINT(15)
12877         M16SV=MINT(16)
12878         M21SV=MINT(21)
12879         M22SV=MINT(22)
12880         DO 100 J=11,80
12881           VINTSV(J)=VINT(J)
12882   100   CONTINUE
12883         DO 120 J=1,5
12884           DO 110 IS=1,4
12885             I=IS+MINT(84)
12886             PSAV(IS,J)=P(I,J)
12887             KSAV(IS,J)=K(I,J)
12888             VSAV(IS,J)=V(I,J)
12889   110     CONTINUE
12890   120   CONTINUE
12891  
12892 C...Set shat for hardest scattering
12893         SHAT(1)=VINT(44)
12894         IF(ISET(ISUBHD).GE.3.AND.ISET(ISUBHD).LE.5) SHAT(1)=VINT(26)
12895      &       *VINT(2)
12896  
12897 C...Compute 3-Flavour Lambda_QCD (sets absolute lowest PT scale below)
12898         RMC=PMAS(4,1)
12899         RMB=PMAS(5,1)
12900         ALAM4=PARP(61)
12901         IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
12902         IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
12903         ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
12904  
12905 C----------------------------------------------------------------------
12906 C...MODE= 0: Initialize ISR/MI evolution, i.e. begin from hardest
12907 C...interaction initiators, with no previous evolution. Check the input
12908 C...PT2MAX and PT2MIN and impose extra constraints on minimum PT2 (e.g.
12909 C...must be larger than Lambda_QCD) and maximum PT2 (e.g. must be
12910 C...smaller than the CM energy / 2.)
12911       ELSEIF (MODE.EQ.0) THEN
12912 C...Reset counters and switches
12913         N=NSAV
12914         NPART=NPARTS
12915         MINT(30)=0
12916         MINT(31)=1
12917         MINT(36)=1
12918 C...Reset hard scattering variables
12919         MINT(1)=ISUBHD
12920         DO 130 J=11,80
12921           VINT(J)=VINTSV(J)
12922   130   CONTINUE
12923         DO 150 J=1,5
12924           DO 140 IS=1,4
12925             I=IS+MINT(84)
12926             P(I,J)=PSAV(IS,J)
12927             K(I,J)=KSAV(IS,J)
12928             V(I,J)=VSAV(IS,J)
12929             P(MINT(83)+4+IS,J)=PSAV(IS,J)
12930             V(MINT(83)+4+IS,J)=VSAV(IS,J)
12931   140     CONTINUE
12932   150   CONTINUE
12933 C...Reset statistics on activity in event.
12934         DO 160 J=351,359
12935           MINT(J)=0
12936           VINT(J)=0D0
12937   160   CONTINUE
12938 C...Reset extra companion reweighting factor
12939         VINT(140)=1D0
12940  
12941 C...We do not generate MI for soft process (ISUB=95), but the
12942 C...initialization must be done regardless, for later purposes.
12943         MINT(36)=1
12944  
12945 C...Initialize multiple interactions.
12946         CALL PYPTMI(-1,PTDUM1,PTDUM2,PTDUM3,IDUM)
12947         IF(MINT(51).NE.0) RETURN
12948  
12949 C...Decide whether quarks in hard scattering were valence or sea
12950         PT2HD=VINT(54)
12951         DO 170 JS=1,2
12952           MINT(30)=JS
12953           CALL PYPTMI(2,PT2HD,PTDUM2,PTDUM3,IDUM)
12954           IF(MINT(51).NE.0) RETURN
12955   170   CONTINUE
12956  
12957 C...Set lower cutoff for PT2 iteration and colour interference PT2 scale
12958         VINT(18)=0D0
12959         IF(MSTP(70).EQ.0) THEN
12960           PT20=PARP(62)**2
12961           PT2MIN=MAX(PT2MIN,PT20,(1.1D0*ALAM3)**2)
12962         ELSEIF(MSTP(70).EQ.1) THEN
12963           PT20=(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2
12964           PT2MIN=MAX(PT2MIN,PT20,(1.1D0*ALAM3)**2)
12965         ELSE
12966           VINT(18)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
12967           PT2MIN=MAX(PT2MIN,(1.1D0*ALAM3)**2)
12968         ENDIF
12969 C...Also store PT2MIN in VINT(17).
12970   180   VINT(17)=PT2MIN
12971  
12972 C...Set FS masses zero now.
12973         VINT(63)=0D0
12974         VINT(64)=0D0
12975  
12976 C...Initialize IS showers with VINT(56) as max scale.
12977         PT2ISR=VINT(56)
12978         CALL PYPTIS(-1,PT2ISR,PT2MIN,PT2DUM,IFAIL)
12979         IF(MINT(51).NE.0) RETURN
12980  
12981         RETURN
12982  
12983 C----------------------------------------------------------------------
12984 C...MODE= 1: Evolve event from PTMAX to PTMIN.
12985       ELSEIF (MODE.EQ.1) THEN
12986  
12987 C...Skip if no phase space.
12988   190   IF (PT2MAX.LE.PT2MIN) GOTO 330
12989  
12990 C...Starting pT2 max scale (to be udpated successively).
12991         PT2CMX=PT2MAX
12992  
12993 C...Evolve two sides of the event to find which branches at highest pT.
12994   200   JSMX=-1
12995         MIMX=0
12996         PT2MX=0D0
12997  
12998 C...Loop over current shower initiators.
12999         IF (MSTP(61).GE.1) THEN
13000           DO 230 MI=1,MINT(31)
13001             IF (MI.GE.2.AND.MSTP(84).LE.0) GOTO 230
13002             ISUB=96
13003             IF (MI.EQ.1) ISUB=ISUBHD
13004             MINT(1)=ISUB
13005             MINT(36)=MI
13006 C...Set up shat, initiator x values, and x remaining in BR.
13007             VINT(44)=SHAT(MI)
13008             VINT(141)=XMI(1,MI)
13009             VINT(142)=XMI(2,MI)
13010             VINT(143)=1D0
13011             VINT(144)=1D0
13012             DO 210 JI=1,MINT(31)
13013               IF (JI.EQ.MINT(36)) GOTO 210
13014               VINT(143)=VINT(143)-XMI(1,JI)
13015               VINT(144)=VINT(144)-XMI(2,JI)
13016   210       CONTINUE
13017 C...Loop over sides.
13018 C...Generate trial branchings for this interaction. The hardest
13019 C...branching so far is automatically updated if necessary in /PYISMX/.
13020             DO 220 JS=1,2
13021               MINT(30)=JS
13022               CALL PYPTIS(0,PT2CMX,PT2MIN,PT2NEW,IFAIL)
13023               IF (MINT(51).NE.0) RETURN
13024   220       CONTINUE
13025   230     CONTINUE
13026         ENDIF
13027  
13028 C...Generate trial additional interaction.
13029         MINT(36)=MINT(31)+1
13030   240   IF (MOD(MSTP(81),10).GE.1) THEN
13031           MINT(1)=96
13032 C...Set up X remaining in BR.
13033           VINT(143)=1D0
13034           VINT(144)=1D0
13035           DO 250 JI=1,MINT(31)
13036             VINT(143)=VINT(143)-XMI(1,JI)
13037             VINT(144)=VINT(144)-XMI(2,JI)
13038   250     CONTINUE
13039 C...Generate trial interaction
13040   260     CALL PYPTMI(0,PT2CMX,PT2MIN,PT2NEW,IFAIL)
13041           IF (MINT(51).EQ.1) RETURN
13042         ENDIF
13043  
13044 C...And the winner is:
13045         IF (PT2MX.LT.PT2MIN) THEN
13046           GOTO 330
13047         ELSEIF (JSMX.EQ.0) THEN
13048 C...Accept additional interaction (may still fail).
13049           CALL PYPTMI(1,PT2NEW,PT2MIN,PT2DUM,IFAIL)
13050           IF(MINT(51).NE.0) RETURN
13051           IF (IFAIL.EQ.0) THEN
13052             SHAT(MINT(36))=VINT(44)
13053 C...Decide on flavours (valence/sea/companion).
13054             DO 270 JS=1,2
13055               MINT(30)=JS
13056               CALL PYPTMI(2,PT2NEW,PT2MIN,PT2DUM,IFAIL)
13057               IF(MINT(51).NE.0) RETURN
13058   270       CONTINUE
13059           ENDIF
13060         ELSEIF (JSMX.EQ.1.OR.JSMX.EQ.2) THEN
13061 C...Reconstruct kinematics of acceptable ISR branching.
13062 C...Set up shat, initiator x values, and x remaining in BR.
13063           MINT(30)=JSMX
13064           MINT(36)=MIMX
13065           VINT(44)=SHAT(MINT(36))
13066           VINT(141)=XMI(1,MINT(36))
13067           VINT(142)=XMI(2,MINT(36))
13068           VINT(143)=1D0
13069           VINT(144)=1D0
13070           DO 280 JI=1,MINT(31)
13071             IF (JI.EQ.MINT(36)) GOTO 280
13072             VINT(143)=VINT(143)-XMI(1,JI)
13073             VINT(144)=VINT(144)-XMI(2,JI)
13074   280     CONTINUE
13075           PT2NEW=PT2MX
13076           CALL PYPTIS(1,PT2NEW,PT2DM1,PT2DM2,IFAIL)
13077           IF (MINT(51).EQ.1) RETURN
13078         ELSEIF (JSMX.EQ.3.OR.JSMX.EQ.4) THEN
13079 C...Bookeep joining. Cannot (yet) be constructed kinematically.
13080           MINT(354)=MINT(354)+1
13081           VINT(354)=VINT(354)+SQRT(PT2MX)
13082           IF (MINT(354).EQ.1) VINT(359)=SQRT(PT2MX)
13083           MJOIND(JSMX-2,MJN1MX)=MJN2MX
13084           MJOIND(JSMX-2,MJN2MX)=MJN1MX
13085         ENDIF
13086  
13087 C...Update PT2 iteration scale.
13088         PT2CMX=PT2MX
13089  
13090 C...Loop back to continue evolution.
13091         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
13092           CALL PYERRM(11,'(PYEVOL:) no more memory left in PYJETS')
13093         ELSE
13094           IF (JSMX.GE.0.AND.PT2CMX.GE.PT2MIN) GOTO 200
13095         ENDIF
13096  
13097 C----------------------------------------------------------------------
13098 C...MODE= 2: (Re-)store user information on hardest interaction etc.
13099       ELSEIF (MODE.EQ.2) THEN
13100  
13101 C...Revert to "ordinary" meanings of some parameters.
13102   290   DO 310 JS=1,2
13103           MINT(12+JS)=K(IMI(JS,1,1),2)
13104           VINT(140+JS)=XMI(JS,1)
13105           IF(MINT(18+JS).EQ.1) VINT(140+JS)=VINT(154+JS)*XMI(JS,1)
13106           VINT(142+JS)=1D0
13107           DO 300 MI=1,MINT(31)
13108             VINT(142+JS)=VINT(142+JS)-XMI(JS,MI)
13109   300     CONTINUE
13110   310   CONTINUE
13111  
13112 C...Restore saved quantities for hardest interaction.
13113         MINT(1)=ISUBHD
13114         MINT(15)=M15SV
13115         MINT(16)=M16SV
13116         MINT(21)=M21SV
13117         MINT(22)=M22SV
13118         DO 320 J=11,80
13119           VINT(J)=VINTSV(J)
13120   320   CONTINUE
13121  
13122       ENDIF
13123  
13124   330 RETURN
13125       END
13126  
13127 C*********************************************************************
13128  
13129 C...PYSSPA
13130 C...Generates spacelike parton showers.
13131  
13132       SUBROUTINE PYSSPA(IPU1,IPU2)
13133  
13134 C...Double precision and integer declarations.
13135       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
13136       IMPLICIT INTEGER(I-N)
13137       INTEGER PYK,PYCHGE,PYCOMP
13138 C...Commonblocks.
13139       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
13140       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
13141       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
13142       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
13143       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
13144       COMMON/PYINT1/MINT(400),VINT(400)
13145       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
13146       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
13147       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
13148      &/PYINT2/,/PYINT3/
13149 C...Local arrays and data.
13150       DIMENSION KFLS(4),IS(2),XS(2),ZS(2),Q2S(2),TEVCSV(2),TEVESV(2),
13151      &XFS(2,-25:25),XFA(-25:25),XFB(-25:25),XFN(-25:25),WTAPC(-25:25),
13152      &WTAPE(-25:25),WTSF(-25:25),THE2(2),ALAM(2),DQ2(3),DPC(3),DPD(4),
13153      &DPB(4),ROBO(5),MORE(2),KFBEAM(2),Q2MNCS(2),KCFI(2),NFIS(2),
13154      &THEFIS(2,2),ISFI(2),DPHI(2),MCESV(2)
13155       DATA IS/2*0/
13156  
13157 C...Read out basic information; set global Q^2 scale.
13158       IPUS1=IPU1
13159       IPUS2=IPU2
13160       ISUB=MINT(1)
13161       Q2MX=VINT(56)
13162       VINT2R=VINT(2)*VINT(143)*VINT(144)
13163       IF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.9.OR.ISET(ISUB).EQ.11) Q2MX=
13164      &MIN(VINT2R,PARP(67)*VINT(56))
13165       FCQ2MX=1D0
13166  
13167 C...Define which processes ME corrections have been implemented for.
13168       MECOR=0
13169       IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
13170         IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ.142.OR.
13171      &  ISUB.EQ.144) MECOR=1
13172         IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
13173         IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
13174       ENDIF
13175  
13176 C...Initialize QCD evolution and check phase space.
13177       Q2MNC=PARP(62)**2
13178       Q2MNCS(1)=Q2MNC
13179       Q2MNCS(2)=Q2MNC
13180       IF(MINT(107).EQ.2.AND.MSTP(66).EQ.2) THEN
13181         Q0S=PARP(15)**2
13182         PS=VINT(3)**2
13183         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
13184      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
13185         Q2INT=SQRT(Q0S*Q2EFF)
13186         Q2MNCS(1)=MAX(Q2MNC,Q2INT)
13187       ELSEIF(MINT(107).EQ.3.AND.MSTP(66).GE.1) THEN
13188         Q2MNCS(1)=MAX(Q2MNC,VINT(283))
13189       ENDIF
13190       IF(MINT(108).EQ.2.AND.MSTP(66).EQ.2) THEN
13191         Q0S=PARP(15)**2
13192         PS=VINT(4)**2
13193         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
13194      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
13195         Q2INT=SQRT(Q0S*Q2EFF)
13196         Q2MNCS(2)=MAX(Q2MNC,Q2INT)
13197       ELSEIF(MINT(108).EQ.3.AND.MSTP(66).GE.1) THEN
13198         Q2MNCS(2)=MAX(Q2MNC,VINT(284))
13199       ENDIF
13200       MCEV=0
13201       ALAMS=PARU(112)
13202       PARU(112)=PARP(61)
13203       FQ2C=1D0
13204       TCMX=0D0
13205       IF(MINT(47).GE.2.AND.(MINT(47).LT.5.OR.MSTP(12).GE.1)) THEN
13206         MCEV=1
13207         IF(MSTP(64).EQ.1) FQ2C=PARP(63)
13208         IF(MSTP(64).EQ.2) FQ2C=PARP(64)
13209         TCMX=LOG(FQ2C*Q2MX/PARP(61)**2)
13210         IF(Q2MX.LT.MAX(Q2MNC,2D0*PARP(61)**2).OR.TCMX.LT.0.2D0)
13211      &  MCEV=0
13212       ENDIF
13213  
13214 C...Initialize QED evolution and check phase space.
13215       MEEV=0
13216       XEE=1D-10
13217       SPME=PMAS(11,1)**2
13218       IF(IABS(MINT(11)).EQ.13.OR.IABS(MINT(12)).EQ.13)
13219      &SPME=PMAS(13,1)**2
13220       IF(IABS(MINT(11)).EQ.15.OR.IABS(MINT(12)).EQ.15)
13221      &SPME=PMAS(15,1)**2
13222       Q2MNE=MAX(PARP(68)**2,2D0*SPME)
13223       TEMX=0D0
13224       FWTE=10D0
13225       IF(MINT(45).EQ.3.OR.MINT(46).EQ.3) THEN
13226         MEEV=1
13227         TEMX=LOG(Q2MX/SPME)
13228         IF(Q2MX.LE.Q2MNE.OR.TEMX.LT.0.2D0) MEEV=0
13229       ENDIF
13230       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0) THEN
13231         MEEV=2
13232         TEMX=TCMX
13233         FWTE=1D0
13234       ENDIF
13235       IF(MCEV.EQ.0.AND.MEEV.EQ.0) RETURN
13236  
13237 C...Loopback point in case of failure to reconstruct kinematics.
13238       NS=N
13239       LOOP=0
13240       MNT352=MINT(352)
13241       MNT353=MINT(353)
13242       VNT352=VINT(352)
13243       VNT353=VINT(353)
13244   100 LOOP=LOOP+1
13245       IF(LOOP.GT.100) THEN
13246         MINT(51)=1
13247         RETURN
13248       ENDIF
13249       N=NS
13250       MINT(352)=MNT352
13251       MINT(353)=MNT353
13252       VINT(352)=VNT352
13253       VINT(353)=VNT353
13254  
13255 C...Initial values: flavours, momenta, virtualities.
13256       DO 120 JT=1,2
13257         MORE(JT)=1
13258         KFBEAM(JT)=MINT(10+JT)
13259         IF(MINT(18+JT).EQ.1)KFBEAM(JT)=22
13260         KFLS(JT)=MINT(14+JT)
13261         KFLS(JT+2)=KFLS(JT)
13262         XS(JT)=VINT(40+JT)
13263         IF(MINT(18+JT).EQ.1) XS(JT)=VINT(40+JT)/VINT(154+JT)
13264         IF(MINT(31).GE.2) XS(JT)=XS(JT)/VINT(142+JT)
13265         ZS(JT)=1D0
13266         Q2S(JT)=FCQ2MX*Q2MX
13267         DQ2(JT)=0D0
13268         TEVCSV(JT)=TCMX
13269         ALAM(JT)=PARP(61)
13270         THE2(JT)=1D0
13271         TEVESV(JT)=TEMX
13272         MCESV(JT)=0
13273 C...Calculate initial parton distribution weights.
13274         MINT(105)=MINT(102+JT)
13275         MINT(109)=MINT(106+JT)
13276         VINT(120)=VINT(2+JT)
13277 C.... ALICE
13278 C.... Store side in MINT(124)
13279         MINT(124) = JT
13280 C....
13281         IF(XS(JT).LT.1D0-XEE) THEN
13282           IF(MINT(31).GE.2) MINT(30)=JT
13283           IF(MSTP(57).LE.1) THEN
13284             CALL PYPDFU(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
13285           ELSE
13286             CALL PYPDFL(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
13287           ENDIF
13288         ENDIF
13289         DO 110 KFL=-25,25
13290           XFS(JT,KFL)=XFB(KFL)
13291   110   CONTINUE
13292 C...Special kinematics check for c/b quarks (that g -> c cbar or
13293 C...b bbar kinematically possible).
13294       KFLCB=IABS(KFLS(JT))
13295       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
13296         IF(XS(JT).GT.0.9D0*Q2S(JT)/(PMAS(KFLCB,1)**2+Q2S(JT))) THEN
13297           MINT(51)=1
13298           RETURN
13299         ENDIF
13300       ENDIF
13301   120 CONTINUE
13302       DSH=VINT(44)
13303       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) DSH=VINT(26)*VINT(2)
13304  
13305 C...Find if interference with final state partons.
13306       MFIS=0
13307       IF(MSTP(67).GE.1.AND.MSTP(67).LE.3) MFIS=MSTP(67)
13308       IF(MFIS.NE.0) THEN
13309         DO 140 I=1,2
13310           KCFI(I)=0
13311           KCA=PYCOMP(IABS(KFLS(I)))
13312           IF(KCA.NE.0) KCFI(I)=KCHG(KCA,2)*ISIGN(1,KFLS(I))
13313           NFIS(I)=0
13314           IF(KCFI(I).NE.0) THEN
13315             IF(I.EQ.1) IPFS=IPUS1
13316             IF(I.EQ.2) IPFS=IPUS2
13317             DO 130 J=1,2
13318               ICSI=MOD(K(IPFS,3+J),MSTU(5))
13319               IF(ICSI.GT.0.AND.ICSI.NE.IPUS1.AND.ICSI.NE.IPUS2.AND.
13320      &        (KCFI(I).EQ.(-1)**(J+1).OR.KCFI(I).EQ.2)) THEN
13321                 NFIS(I)=NFIS(I)+1
13322                 THEFIS(I,NFIS(I))=PYANGL(P(ICSI,3),SQRT(P(ICSI,1)**2+
13323      &          P(ICSI,2)**2))
13324                 IF(I.EQ.2) THEFIS(I,NFIS(I))=PARU(1)-THEFIS(I,NFIS(I))
13325               ENDIF
13326   130       CONTINUE
13327           ENDIF
13328   140   CONTINUE
13329         IF(NFIS(1)+NFIS(2).EQ.0) MFIS=0
13330       ENDIF
13331  
13332 C...Pick up leg with highest virtuality.
13333       JTOLD=1
13334   150 N=N+1
13335       JT=1
13336       IF(N.GT.NS+1.AND.Q2S(2).GT.Q2S(1)) JT=2
13337       IF(N.EQ.NS+2.AND.JT.EQ.JTOLD) JT=3-JT
13338       IF(MORE(JT).EQ.0) JT=3-JT
13339       JTOLD=JT
13340       KFLB=KFLS(JT)
13341       XB=XS(JT)
13342       DO 160 KFL=-25,25
13343         XFB(KFL)=XFS(JT,KFL)
13344   160 CONTINUE
13345       DSHR=2D0*SQRT(DSH)
13346       DSHZ=DSH/ZS(JT)
13347  
13348 C...Check if allowed to branch.
13349       MCEV=0
13350       IF(IABS(KFLB).LE.10.OR.KFLB.EQ.21) THEN
13351         MCEV=1
13352         XEC=MAX(PARP(65)*DSHR/VINT2R,XB*(1D0/(1D0-PARP(66))-1D0))
13353         IF(XB.GE.1D0-2D0*XEC) MCEV=0
13354       ENDIF
13355       MEEV=0
13356       IF(MINT(44+JT).EQ.3) THEN
13357         MEEV=1
13358         IF(XB.GE.1D0-2D0*XEE) MEEV=0
13359         IF((IABS(KFLB).LE.10.OR.KFLB.EQ.21).AND.XB.GE.1D0-2D0*XEC)
13360      &  MEEV=0
13361 C***Currently kill QED shower for resolved photoproduction.
13362         IF(MINT(18+JT).EQ.1) MEEV=0
13363 C***Currently kill shower for W inside electron.
13364         IF(IABS(KFLB).EQ.24) THEN
13365           MCEV=0
13366           MEEV=0
13367         ENDIF
13368       ENDIF
13369       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0.AND.IABS(KFLB).LE.10)
13370      &MEEV=2
13371       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
13372         Q2B=0D0
13373         GOTO 260
13374       ENDIF
13375  
13376 C...Maximum Q2 with or without Q2 ordering. Effective Lambda and n_f.
13377       Q2B=Q2S(JT)
13378       TEVCB=TEVCSV(JT)
13379       TEVEB=TEVESV(JT)
13380       IF(MSTP(62).LE.1) THEN
13381         IF(ZS(JT).GT.0.99999D0) THEN
13382           Q2B=Q2S(JT)
13383         ELSE
13384           Q2B=0.5D0*(1D0/ZS(JT)+1D0)*Q2S(JT)+0.5D0*(1D0/ZS(JT)-1D0)*
13385      &    (Q2S(3-JT)-DSH+SQRT((DSH+Q2S(1)+Q2S(2))**2+
13386      &    8D0*Q2S(1)*Q2S(2)*ZS(JT)/(1D0-ZS(JT))))
13387         ENDIF
13388         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13389         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
13390       ENDIF
13391       IF(MCEV.EQ.1) THEN
13392         ALSDUM=PYALPS(FQ2C*Q2B)
13393         TEVCB=TEVCB+2D0*LOG(ALAM(JT)/PARU(117))
13394         ALAM(JT)=PARU(117)
13395         B0=(33D0-2D0*MSTU(118))/6D0
13396       ENDIF
13397       IF(MEEV.EQ.2) TEVEB=TEVCB
13398       TEVCBS=TEVCB
13399       TEVEBS=TEVEB
13400  
13401 C...Select side for interference with final state partons.
13402       IF(MFIS.GE.1.AND.N.LE.NS+2) THEN
13403         IFI=N-NS
13404         ISFI(IFI)=0
13405         IF(IABS(KCFI(IFI)).EQ.1.AND.NFIS(IFI).EQ.1) THEN
13406           ISFI(IFI)=1
13407         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.1) THEN
13408           IF(PYR(0).GT.0.5D0) ISFI(IFI)=1
13409         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.2) THEN
13410           ISFI(IFI)=1
13411           IF(PYR(0).GT.0.5D0) ISFI(IFI)=2
13412         ENDIF
13413       ENDIF
13414  
13415 C...Calculate preweighting factor for ME-corrected processes.
13416       IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
13417  
13418 C...Calculate Altarelli-Parisi weights.
13419       DO 170 KFL=-25,25
13420         WTAPC(KFL)=0D0
13421         WTAPE(KFL)=0D0
13422         WTSF(KFL)=0D0
13423   170 CONTINUE
13424 C...q -> q (g or gamma emission), g -> q.
13425       IF(IABS(KFLB).LE.10) THEN
13426         WTAPC(KFLB)=(8D0/3D0)*LOG((1D0-XEC-XB)*(XB+XEC)/(XEC*(1D0-XEC)))
13427         WTAPC(21)=0.5D0*(XB/(XB+XEC)-XB/(1D0-XEC))
13428         EQ2=1D0/9D0
13429         IF(MOD(IABS(KFLB),2).EQ.0) EQ2=4D0*EQ2
13430         IF(MEEV.EQ.2) WTAPE(KFLB)=2.*EQ2*LOG((1D0-XEC-XB)*(XB+XEC)/
13431      &  (XEC*(1D0-XEC)))
13432         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13433           WTAPC(KFLB)=WTFF*WTAPC(KFLB)
13434           WTAPC(21)=WTGF*WTAPC(21)
13435           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
13436         ENDIF
13437 C...f -> f, gamma -> f.
13438       ELSEIF(IABS(KFLB).LE.20) THEN
13439         WTAPF1=LOG((1D0-XEE-XB)*(XB+XEE)/(XEE*(1D0-XEE)))
13440         WTAPF2=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))
13441         WTAPE(KFLB)=2D0*(WTAPF1+WTAPF2)
13442         IF(MSTP(12).GE.1) WTAPE(22)=XB/(XB+XEE)-XB/(1D0-XEE)
13443         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13444           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
13445           WTAPE(22)=WTGF*WTAPE(22)
13446         ENDIF
13447 C...f -> g, g -> g.
13448       ELSEIF(KFLB.EQ.21) THEN
13449         WTAPQ=(16D0/3D0)*(SQRT((1D0-XEC)/XB)-SQRT((XB+XEC)/XB))
13450         DO 180 KFL=1,MSTP(58)
13451           WTAPC(KFL)=WTAPQ
13452           WTAPC(-KFL)=WTAPQ
13453   180   CONTINUE
13454         WTAPC(21)=6D0*LOG((1D0-XEC-XB)/XEC)
13455         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13456           DO 190 KFL=1,MSTP(58)
13457             WTAPC(KFL)=WTFG*WTAPC(KFL)
13458             WTAPC(-KFL)=WTFG*WTAPC(-KFL)
13459   190     CONTINUE
13460           WTAPC(21)=WTGG*WTAPC(21)
13461         ENDIF
13462 C...f -> gamma, W+, W-.
13463       ELSEIF(KFLB.EQ.22) THEN
13464         WTAPF=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))/XB
13465         WTAPE(11)=WTAPF
13466         WTAPE(-11)=WTAPF
13467         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13468           WTAPE(11)=WTFG*WTAPE(11)
13469           WTAPE(-11)=WTFG*WTAPE(-11)
13470         ENDIF
13471       ELSEIF(KFLB.EQ.24) THEN
13472         WTAPE(-11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
13473      &  (XEE*(XB+XEE)))/XB
13474       ELSEIF(KFLB.EQ.-24) THEN
13475         WTAPE(11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
13476      &  (XEE*(XB+XEE)))/XB
13477       ENDIF
13478  
13479 C...Calculate parton distribution weights and sum.
13480       NTRY=0
13481   200 NTRY=NTRY+1
13482       IF(NTRY.GT.500) THEN
13483         MINT(51)=1
13484         RETURN
13485       ENDIF
13486       WTSUMC=0D0
13487       WTSUME=0D0
13488       XFBO=MAX(1D-10,XFB(KFLB))
13489       DO 210 KFL=-25,25
13490         WTSF(KFL)=XFB(KFL)/XFBO
13491         WTSUMC=WTSUMC+WTAPC(KFL)*WTSF(KFL)
13492         WTSUME=WTSUME+WTAPE(KFL)*WTSF(KFL)
13493   210 CONTINUE
13494       WTSUMC=MAX(0.0001D0,WTSUMC)
13495       WTSUME=MAX(0.0001D0/FWTE,WTSUME)
13496  
13497 C...Choose new t: fix alpha_s, alpha_s(Q^2), alpha_s(k_T^2).
13498       NTRY2=0
13499   220 NTRY2=NTRY2+1
13500       IF(NTRY2.GT.500) THEN
13501         MINT(51)=1
13502         RETURN
13503       ENDIF
13504       IF(MCEV.EQ.1) THEN
13505         IF(MSTP(64).LE.0) THEN
13506           TEVCB=TEVCB+LOG(PYR(0))*PARU(2)/(PARU(111)*WTSUMC)
13507         ELSEIF(MSTP(64).EQ.1) THEN
13508           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/WTSUMC))
13509         ELSE
13510           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/(5D0*WTSUMC)))
13511         ENDIF
13512       ENDIF
13513       IF(MEEV.EQ.1) THEN
13514         TEVEB=TEVEB*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
13515      &  (PARU(101)*FWTE*WTSUME*TEMX)))
13516       ELSEIF(MEEV.EQ.2) THEN
13517         TEVEB=TEVEB+LOG(PYR(0))*PARU(2)/(PARU(101)*WTSUME)
13518       ENDIF
13519  
13520 C...Translate t into Q2 scale; choose between QCD and QED evolution.
13521   230 IF(MCEV.EQ.1) Q2CB=ALAM(JT)**2*EXP(MAX(-50D0,TEVCB))/FQ2C
13522       IF(MEEV.EQ.1) Q2EB=SPME*EXP(MAX(-50D0,TEVEB))
13523       IF(MEEV.EQ.2) Q2EB=ALAM(JT)**2*EXP(MAX(-50D0,TEVEB))/FQ2C
13524 C...Ensure that Q2 is above threshold for charm/bottom.
13525       KFLCB=IABS(KFLB)
13526       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
13527      &MCEV.EQ.1) THEN
13528         IF(Q2CB.LT.PMAS(KFLCB,1)**2) THEN
13529           Q2CB=1.1D0*PMAS(KFLCB,1)**2
13530           TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13531           FCQ2MX=MIN(2D0,1.05D0*FCQ2MX)
13532         ENDIF
13533       ENDIF
13534       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
13535      &MEEV.EQ.2) THEN
13536         IF(Q2EB.LT.PMAS(KFLCB,1)**2) MEEV=0
13537       ENDIF
13538       MCE=0
13539       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
13540       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.0) THEN
13541         IF(Q2CB.GT.Q2MNCS(JT)) MCE=1
13542       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.1) THEN
13543         IF(Q2EB.GT.Q2MNE) MCE=2
13544       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.2) THEN
13545         IF(Q2EB.GT.Q2MNCS(JT)) MCE=2
13546       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.2) THEN
13547         IF(Q2CB.GT.Q2EB.AND.Q2CB.GT.Q2MNCS(JT)) MCE=1
13548         IF(Q2EB.GT.Q2CB.AND.Q2EB.GT.Q2MNCS(JT)) MCE=2
13549       ELSEIF(Q2MNCS(JT).GT.Q2MNE) THEN
13550         MCE=1
13551         IF(Q2EB.GT.Q2CB.OR.Q2CB.LE.Q2MNCS(JT)) MCE=2
13552         IF(MCE.EQ.2.AND.Q2EB.LE.Q2MNE) MCE=0
13553       ELSE
13554         MCE=2
13555         IF(Q2CB.GT.Q2EB.OR.Q2EB.LE.Q2MNE) MCE=1
13556         IF(MCE.EQ.1.AND.Q2CB.LE.Q2MNCS(JT)) MCE=0
13557       ENDIF
13558  
13559 C...Evolution possibly ended. Update t values.
13560       IF(MCE.EQ.0) THEN
13561         Q2B=0D0
13562         GOTO 260
13563       ELSEIF(MCE.EQ.1) THEN
13564         Q2B=Q2CB
13565         Q2REF=FQ2C*Q2B
13566         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
13567         IF(MEEV.EQ.2) TEVEB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13568       ELSE
13569         Q2B=Q2EB
13570         Q2REF=Q2B
13571         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13572       ENDIF
13573  
13574 C...Select flavour for branching parton.
13575       IF(MCE.EQ.1) WTRAN=PYR(0)*WTSUMC
13576       IF(MCE.EQ.2) WTRAN=PYR(0)*WTSUME
13577       KFLA=-25
13578   240 KFLA=KFLA+1
13579       IF(MCE.EQ.1) WTRAN=WTRAN-WTAPC(KFLA)*WTSF(KFLA)
13580       IF(MCE.EQ.2) WTRAN=WTRAN-WTAPE(KFLA)*WTSF(KFLA)
13581       IF(KFLA.LE.24.AND.WTRAN.GT.0D0) GOTO 240
13582       IF(KFLA.EQ.25) THEN
13583         Q2B=0D0
13584         GOTO 260
13585       ENDIF
13586  
13587 C...Choose z value and corrective weight.
13588       WTZ=0D0
13589 C...q -> q + g or q -> q + gamma.
13590       IF(IABS(KFLA).LE.10.AND.IABS(KFLB).LE.10) THEN
13591         Z=1D0-((1D0-XB-XEC)/(1D0-XEC))*
13592      &  (XEC*(1D0-XEC)/((XB+XEC)*(1D0-XB-XEC)))**PYR(0)
13593         WTZ=0.5D0*(1D0+Z**2)
13594 C...q -> g + q.
13595       ELSEIF(IABS(KFLA).LE.10.AND.KFLB.EQ.21) THEN
13596         Z=XB/(SQRT(XB+XEC)+PYR(0)*(SQRT(1D0-XEC)-SQRT(XB+XEC)))**2
13597         WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
13598 C...f -> f + gamma.
13599       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
13600         IF(WTAPF1.GT.PYR(0)*(WTAPF1+WTAPF2)) THEN
13601           Z=1D0-((1D0-XB-XEE)/(1D0-XEE))*
13602      &    (XEE*(1D0-XEE)/((XB+XEE)*(1D0-XB-XEE)))**PYR(0)
13603         ELSE
13604           Z=XB+XB*(XEE/(1D0-XEE))*
13605      &    ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
13606         ENDIF
13607         WTZ=0.5D0*(1D0+Z**2)*(Z-XB)/(1D0-XB)
13608 C...f -> gamma + f.
13609       ELSEIF(IABS(KFLA).LE.20.AND.KFLB.EQ.22) THEN
13610         Z=XB+XB*(XEE/(1D0-XEE))*
13611      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
13612         WTZ=0.5D0*(1D0+(1D0-Z)**2)*XB*(Z-XB)/Z
13613 C...f -> W+- + f.
13614       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).EQ.24) 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      &  (Q2B/(Q2B+PMAS(24,1)**2))
13619 C...g -> q + qbar.
13620       ELSEIF(KFLA.EQ.21.AND.IABS(KFLB).LE.10) THEN
13621         Z=XB/(1D0-XEC)+PYR(0)*(XB/(XB+XEC)-XB/(1D0-XEC))
13622         WTZ=1D0-2D0*Z*(1D0-Z)
13623 C...g -> g + g.
13624       ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
13625         Z=1D0/(1D0+((1D0-XEC-XB)/XB)*(XEC/(1D0-XEC-XB))**PYR(0))
13626         WTZ=(1D0-Z*(1D0-Z))**2
13627 C...gamma -> f + fbar.
13628       ELSEIF(KFLA.EQ.22.AND.IABS(KFLB).LE.20) THEN
13629         Z=XB/(1D0-XEE)+PYR(0)*(XB/(XB+XEE)-XB/(1D0-XEE))
13630         WTZ=1D0-2D0*Z*(1D0-Z)
13631       ENDIF
13632       IF(MCE.EQ.2.AND.MEEV.EQ.1) WTZ=(WTZ/FWTE)*(TEVEB/TEMX)
13633  
13634 C...Option with resummation of soft gluon emission as effective z shift.
13635       IF(MCE.EQ.1) THEN
13636         IF(MSTP(65).GE.1) THEN
13637           RSOFT=6D0
13638           IF(KFLB.NE.21) RSOFT=8D0/3D0
13639           Z=Z*(TEVCB/TEVCSV(JT))**(RSOFT*XEC/((XB+XEC)*B0))
13640           IF(Z.LE.XB) GOTO 220
13641         ENDIF
13642  
13643 C...Option with alpha_s(k_T^2): demand k_T^2 > cutoff, reweight.
13644         IF(MSTP(64).GE.2) THEN
13645           IF((1D0-Z)*Q2B.LT.Q2MNCS(JT)) GOTO 220
13646           ALPRAT=TEVCB/(TEVCB+LOG(1D0-Z))
13647           IF(ALPRAT.LT.5D0*PYR(0)) GOTO 220
13648           IF(ALPRAT.GT.5D0) WTZ=WTZ*ALPRAT/5D0
13649         ENDIF
13650       ENDIF
13651  
13652 C...Remove kinematically impossible branchings.
13653       UHAT=Q2B-DSH*(1D0-Z)/Z
13654       IF(MSTP(68).GE.0.AND.UHAT.GT.0D0) GOTO 220
13655  
13656 C...Select phi angle of branching at random.
13657       PHIBR=PARU(2)*PYR(0)
13658  
13659 C...Matrix-element corrections for some processes.
13660       IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13661         IF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
13662           CALL PYMEWT(MECOR,1,Q2B,Z,PHIBR,WTME)
13663           WTZ=WTZ*WTME/WTFF
13664         ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.IABS(KFLB).LE.20) THEN
13665           CALL PYMEWT(MECOR,2,Q2B,Z,PHIBR,WTME)
13666           WTZ=WTZ*WTME/WTGF
13667         ELSEIF(IABS(KFLA).LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
13668           CALL PYMEWT(MECOR,3,Q2B,Z,PHIBR,WTME)
13669           WTZ=WTZ*WTME/WTFG
13670         ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
13671           CALL PYMEWT(MECOR,4,Q2B,Z,PHIBR,WTME)
13672           WTZ=WTZ*WTME/WTGG
13673         ENDIF
13674       ENDIF
13675  
13676 C...Impose angular constraint in first branching from interference
13677 C...with final state partons.
13678       IF(MCE.EQ.1) THEN
13679         IF(MFIS.GE.1.AND.N.LE.NS+2.AND.NTRY2.LT.200) THEN
13680           THE2D=(4D0*Q2B)/(DSH*(1D0-Z))
13681           IF(N.EQ.NS+1.AND.ISFI(1).GE.1) THEN
13682             IF(THE2D.GT.THEFIS(1,ISFI(1))**2) GOTO 220
13683           ELSEIF(N.EQ.NS+2.AND.ISFI(2).GE.1) THEN
13684             IF(THE2D.GT.THEFIS(2,ISFI(2))**2) GOTO 220
13685           ENDIF
13686         ENDIF
13687  
13688 C...Option with angular ordering requirement.
13689         IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THEN
13690           THE2T=(4D0*Z**2*Q2B)/(4D0*Z**2*Q2B+(1D0-Z)*XB**2*VINT2R)
13691           IF(THE2T.GT.THE2(JT)) GOTO 220
13692         ENDIF
13693       ENDIF
13694  
13695 C...Weighting with new parton distributions.
13696       MINT(105)=MINT(102+JT)
13697       MINT(109)=MINT(106+JT)
13698       VINT(120)=VINT(2+JT)
13699 C.... ALICE
13700 C.... Store side in MINT(124)
13701       MINT(124)=JT
13702 C....
13703       IF(MINT(31).GE.2) MINT(30)=JT
13704       IF(MSTP(57).LE.1) THEN
13705         CALL PYPDFU(KFBEAM(JT),XB,Q2REF,XFN)
13706       ELSE
13707         CALL PYPDFL(KFBEAM(JT),XB,Q2REF,XFN)
13708       ENDIF
13709       XFBN=XFN(KFLB)
13710       IF(XFBN.LT.1D-20) THEN
13711         IF(KFLA.EQ.KFLB) THEN
13712           TEVCB=TEVCBS
13713           TEVEB=TEVEBS
13714           WTAPC(KFLB)=0D0
13715           WTAPE(KFLB)=0D0
13716           GOTO 200
13717         ELSEIF(MCE.EQ.1.AND.TEVCBS-TEVCB.GT.0.2D0) THEN
13718           TEVCB=0.5D0*(TEVCBS+TEVCB)
13719           GOTO 230
13720         ELSEIF(MCE.EQ.2.AND.TEVEBS-TEVEB.GT.0.2D0) THEN
13721           TEVEB=0.5D0*(TEVEBS+TEVEB)
13722           GOTO 230
13723         ELSE
13724           XFBN=1D-10
13725           XFN(KFLB)=XFBN
13726         ENDIF
13727       ENDIF
13728       DO 250 KFL=-25,25
13729         XFB(KFL)=XFN(KFL)
13730   250 CONTINUE
13731       XA=XB/Z
13732 C.... ALICE
13733 C.... Store side in MINT(124)
13734       MINT(124) = JT
13735 C....
13736       IF(MINT(31).GE.2) MINT(30)=JT
13737       IF(MSTP(57).LE.1) THEN
13738         CALL PYPDFU(KFBEAM(JT),XA,Q2REF,XFA)
13739       ELSE
13740         CALL PYPDFL(KFBEAM(JT),XA,Q2REF,XFA)
13741       ENDIF
13742       XFAN=XFA(KFLA)
13743       IF(XFAN.LT.1D-20) GOTO 200
13744       WTSFA=WTSF(KFLA)
13745       IF(WTZ*XFAN/XFBN.LT.PYR(0)*WTSFA) GOTO 200
13746  
13747 C...Define two hard scatterers in their CM-frame.
13748   260 IF(N.EQ.NS+2) THEN
13749         DQ2(JT)=Q2B
13750         DPLCM=SQRT((DSH+DQ2(1)+DQ2(2))**2-4D0*DQ2(1)*DQ2(2))/DSHR
13751         DO 280 JR=1,2
13752           I=NS+JR
13753           IF(JR.EQ.1) IPO=IPUS1
13754           IF(JR.EQ.2) IPO=IPUS2
13755           DO 270 J=1,5
13756             K(I,J)=0
13757             P(I,J)=0D0
13758             V(I,J)=0D0
13759   270     CONTINUE
13760           K(I,1)=14
13761           K(I,2)=KFLS(JR+2)
13762           K(I,4)=IPO
13763           K(I,5)=IPO
13764           P(I,3)=DPLCM*(-1)**(JR+1)
13765           P(I,4)=(DSH+DQ2(3-JR)-DQ2(JR))/DSHR
13766           P(I,5)=-SQRT(DQ2(JR))
13767           K(IPO,1)=14
13768           K(IPO,3)=I
13769           K(IPO,4)=MOD(K(IPO,4),MSTU(5))+MSTU(5)*I
13770           K(IPO,5)=MOD(K(IPO,5),MSTU(5))+MSTU(5)*I
13771   280   CONTINUE
13772  
13773 C...Find maximum allowed mass of timelike parton.
13774       ELSEIF(N.GT.NS+2) THEN
13775         JR=3-JT
13776         DQ2(3)=Q2B
13777         DPC(1)=P(IS(1),4)
13778         DPC(2)=P(IS(2),4)
13779         DPC(3)=0.5D0*(ABS(P(IS(1),3))+ABS(P(IS(2),3)))
13780         DPD(1)=DSH+DQ2(JR)+DQ2(JT)
13781         DPD(2)=DSHZ+DQ2(JR)+DQ2(3)
13782         DPD(3)=SQRT(DPD(1)**2-4D0*DQ2(JR)*DQ2(JT))
13783         DPD(4)=SQRT(DPD(2)**2-4D0*DQ2(JR)*DQ2(3))
13784         IKIN=0
13785         IF(Q2S(JR).GE.0.25D0*Q2MNC.AND.DPD(1)-DPD(3).GE.
13786      &  1D-10*DPD(1)) IKIN=1
13787         IF(IKIN.EQ.0) DMSMA=(DQ2(JT)/ZS(JT)-DQ2(3))*
13788      &  (DSH/(DSH+DQ2(JT))-DSH/(DSHZ+DQ2(3)))
13789         IF(IKIN.EQ.1) DMSMA=(DPD(1)*DPD(2)-DPD(3)*DPD(4))/
13790      &  (2D0*DQ2(JR))-DQ2(JT)-DQ2(3)
13791  
13792 C...Generate timelike parton shower (if required).
13793         IT=N
13794         DO 290 J=1,5
13795           K(IT,J)=0
13796           P(IT,J)=0D0
13797           V(IT,J)=0D0
13798   290   CONTINUE
13799 C...f -> f + g (gamma).
13800         IF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).LE.20) THEN
13801           K(IT,2)=21
13802           IF(MCESV(JT).EQ.2.OR.IABS(KFLB).GE.11) K(IT,2)=22
13803 C...f -> g (gamma, W+-) + f.
13804         ELSEIF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).GT.20) THEN
13805           K(IT,2)=KFLB
13806           IF(KFLS(JT+2).EQ.24) THEN
13807             K(IT,2)=-12
13808           ELSEIF(KFLS(JT+2).EQ.-24) THEN
13809             K(IT,2)=12
13810           ENDIF
13811 C...g (gamma) -> f + fbar, g + g.
13812         ELSE
13813           K(IT,2)=-KFLS(JT+2)
13814           IF(KFLS(JT+2).GT.20) K(IT,2)=KFLS(JT+2)
13815         ENDIF
13816         K(IT,1)=3
13817         IF((IABS(K(IT,2)).GE.11.AND.IABS(K(IT,2)).LE.18).OR.
13818      &  IABS(K(IT,2)).EQ.22) K(IT,1)=1
13819         P(IT,5)=PYMASS(K(IT,2))
13820         IF(DMSMA.LE.P(IT,5)**2) GOTO 100
13821         IF(MSTP(63).GE.1.AND.MCESV(JT).EQ.1) THEN
13822           MSTJ48=MSTJ(48)
13823           PARJ85=PARJ(85)
13824           P(IT,4)=(DSHZ-DSH-P(IT,5)**2)/DSHR
13825           P(IT,3)=SQRT(P(IT,4)**2-P(IT,5)**2)
13826           IF(MSTP(63).EQ.1) THEN
13827             Q2TIM=DMSMA
13828           ELSEIF(MSTP(63).EQ.2) THEN
13829             Q2TIM=MIN(DMSMA,PARP(71)*Q2S(JT))
13830           ELSE
13831             Q2TIM=DMSMA
13832             MSTJ(48)=1
13833             IF(IKIN.EQ.0) DPT2=DMSMA*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
13834             IF(IKIN.EQ.1) DPT2=DMSMA*(0.5D0*DPD(1)*DPD(2)+0.5D0*DPD(3)*
13835      &      DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)))/(4D0*DSH*DPC(3)**2)
13836             PARJ(85)=SQRT(MAX(0D0,DPT2))*
13837      &      (1D0/P(IT,4)+1D0/P(IS(JT),4))
13838           ENDIF
13839           CALL PYSHOW(IT,0,SQRT(Q2TIM))
13840           MSTJ(48)=MSTJ48
13841           PARJ(85)=PARJ85
13842           IF(N.GE.IT+1) P(IT,5)=P(IT+1,5)
13843         ENDIF
13844  
13845 C...Reconstruct kinematics of branching: timelike parton shower.
13846         DMS=P(IT,5)**2
13847         IF(IKIN.EQ.0) DPT2=(DMSMA-DMS)*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
13848         IF(IKIN.EQ.1) DPT2=(DMSMA-DMS)*(0.5D0*DPD(1)*DPD(2)+
13849      &  0.5D0*DPD(3)*DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)+DMS))/
13850      &  (4D0*DSH*DPC(3)**2)
13851         IF(DPT2.LT.0D0) GOTO 100
13852         DPB(1)=(0.5D0*DPD(2)-DPC(JR)*(DSHZ+DQ2(JR)-DQ2(JT)-DMS)/
13853      &  DSHR)/DPC(3)-DPC(3)
13854         P(IT,1)=SQRT(DPT2)
13855         P(IT,3)=DPB(1)*(-1)**(JT+1)
13856         P(IT,4)=SQRT(DPT2+DPB(1)**2+DMS)
13857         IF(N.GE.IT+1) THEN
13858           DPB(1)=SQRT(DPB(1)**2+DPT2)
13859           DPB(2)=SQRT(DPB(1)**2+DMS)
13860           DPB(3)=P(IT+1,3)
13861           DPB(4)=SQRT(DPB(3)**2+DMS)
13862           DBEZ=(DPB(4)*DPB(1)-DPB(3)*DPB(2))/(DPB(4)*DPB(2)-DPB(3)*
13863      &    DPB(1))
13864           CALL PYROBO(IT+1,N,0D0,0D0,0D0,0D0,DBEZ)
13865           THE=PYANGL(P(IT,3),P(IT,1))
13866           CALL PYROBO(IT+1,N,THE,0D0,0D0,0D0,0D0)
13867         ENDIF
13868  
13869 C...Reconstruct kinematics of branching: spacelike parton.
13870         DO 300 J=1,5
13871           K(N+1,J)=0
13872           P(N+1,J)=0D0
13873           V(N+1,J)=0D0
13874   300   CONTINUE
13875         K(N+1,1)=14
13876         K(N+1,2)=KFLB
13877         P(N+1,1)=P(IT,1)
13878         P(N+1,3)=P(IT,3)+P(IS(JT),3)
13879         P(N+1,4)=P(IT,4)+P(IS(JT),4)
13880         P(N+1,5)=-SQRT(DQ2(3))
13881  
13882 C...Define colour flow of branching.
13883         K(IS(JT),3)=N+1
13884         K(IT,3)=N+1
13885         IM1=N+1
13886         IM2=N+1
13887 C...f -> f + gamma (Z, W).
13888         IF(IABS(K(IT,2)).GE.22) THEN
13889           K(IT,1)=1
13890           ID1=IS(JT)
13891           ID2=IS(JT)
13892 C...f -> gamma (Z, W) + f.
13893         ELSEIF(IABS(K(IS(JT),2)).GE.22) THEN
13894           ID1=IT
13895           ID2=IT
13896 C...gamma -> q + qbar, g + g.
13897         ELSEIF(K(N+1,2).EQ.22) THEN
13898           ID1=IS(JT)
13899           ID2=IT
13900           IM1=ID2
13901           IM2=ID1
13902 C...q -> q + g.
13903         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21.AND.K(IT,2).EQ.21) THEN
13904           ID1=IT
13905           ID2=IS(JT)
13906 C...q -> g + q.
13907         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21) THEN
13908           ID1=IS(JT)
13909           ID2=IT
13910 C...qbar -> qbar + g.
13911         ELSEIF(K(N+1,2).LT.0.AND.K(IT,2).EQ.21) THEN
13912           ID1=IS(JT)
13913           ID2=IT
13914 C...qbar -> g + qbar.
13915         ELSEIF(K(N+1,2).LT.0) THEN
13916           ID1=IT
13917           ID2=IS(JT)
13918 C...g -> g + g; g -> q + qbar.
13919         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
13920           ID1=IS(JT)
13921           ID2=IT
13922         ELSE
13923           ID1=IT
13924           ID2=IS(JT)
13925         ENDIF
13926         IF(IM1.EQ.N+1) K(IM1,4)=K(IM1,4)+ID1
13927         IF(IM2.EQ.N+1) K(IM2,5)=K(IM2,5)+ID2
13928         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
13929         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
13930         IF(ID1.NE.ID2) THEN
13931           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
13932           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
13933         ENDIF
13934         N=N+1
13935         IF(K(IT,1).EQ.1) THEN
13936           K(IT,4)=0
13937           K(IT,5)=0
13938         ENDIF
13939  
13940 C...Boost to new CM-frame.
13941         DBSVX=(P(N,1)+P(IS(JR),1))/(P(N,4)+P(IS(JR),4))
13942         DBSVZ=(P(N,3)+P(IS(JR),3))/(P(N,4)+P(IS(JR),4))
13943         IF(DBSVX**2+DBSVZ**2.GE.1D0) GOTO 100
13944         CALL PYROBO(NS+1,N,0D0,0D0,-DBSVX,0D0,-DBSVZ)
13945         IR=N+(JT-1)*(IS(1)-N)
13946         CALL PYROBO(NS+1,N,-PYANGL(P(IR,3),P(IR,1)),DPHI(JT),
13947      &  0D0,0D0,0D0)
13948  
13949 C...Global statistics.
13950         MINT(352)=MINT(352)+1
13951         VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
13952         IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
13953       ENDIF
13954  
13955 C...Update kinematics variables.
13956       IS(JT)=N
13957       DQ2(JT)=Q2B
13958       IF(MSTP(62).GE.3.AND.NTRY2.LT.200.AND.MCE.EQ.1) THE2(JT)=THE2T
13959       DSH=DSHZ
13960  
13961 C...Save quantities; loop back.
13962       Q2S(JT)=Q2B
13963       DPHI(JT)=PHIBR
13964       MCESV(JT)=MCE
13965       IF((MCEV.EQ.1.AND.Q2B.GE.0.25D0*Q2MNC).OR.
13966      &(MEEV.EQ.1.AND.Q2B.GE.Q2MNE)) THEN
13967         KFLS(JT+2)=KFLS(JT)
13968         KFLS(JT)=KFLA
13969         XS(JT)=XA
13970         ZS(JT)=Z
13971         DO 310 KFL=-25,25
13972           XFS(JT,KFL)=XFA(KFL)
13973   310   CONTINUE
13974         TEVCSV(JT)=TEVCB
13975         TEVESV(JT)=TEVEB
13976       ELSE
13977         MORE(JT)=0
13978         IF(JT.EQ.1) IPU1=N
13979         IF(JT.EQ.2) IPU2=N
13980       ENDIF
13981       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
13982         CALL PYERRM(11,'(PYSSPA:) no more memory left in PYJETS')
13983         IF(MSTU(21).GE.1) N=NS
13984         IF(MSTU(21).GE.1) RETURN
13985       ENDIF
13986       IF(MORE(1).EQ.1.OR.MORE(2).EQ.1) GOTO 150
13987  
13988 C...Boost hard scattering partons to frame of shower initiators.
13989       DO 320 J=1,3
13990         ROBO(J+2)=(P(NS+1,J)+P(NS+2,J))/(P(NS+1,4)+P(NS+2,4))
13991   320 CONTINUE
13992       K(N+2,1)=1
13993       DO 330 J=1,5
13994         P(N+2,J)=P(NS+1,J)
13995   330 CONTINUE
13996       CALL PYROBO(N+2,N+2,0D0,0D0,-ROBO(3),-ROBO(4),-ROBO(5))
13997       ROBO(2)=PYANGL(P(N+2,1),P(N+2,2))
13998       ROBO(1)=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
13999       IMIN=MINT(83)+5
14000       IF(MINT(31).GE.2) IMIN=MIN(IPUS1,IPUS2)
14001       CALL PYROBO(IMIN,NS,0D0,-ROBO(2),0D0,0D0,0D0)
14002       CALL PYROBO(IMIN,NS,ROBO(1),ROBO(2),ROBO(3),ROBO(4),ROBO(5))
14003  
14004 C...Store user information. Reset Lambda value.
14005       IF(MINT(31).LE.1) THEN
14006         K(IPU1,3)=MINT(83)+3
14007         K(IPU2,3)=MINT(83)+4
14008       ELSE
14009         K(IPU1,3)=MINT(83)+1
14010         K(IPU2,3)=MINT(83)+2
14011       ENDIF
14012       DO 340 JT=1,2
14013         MINT(12+JT)=KFLS(JT)
14014         VINT(140+JT)=XS(JT)
14015         IF(MINT(18+JT).EQ.1) VINT(140+JT)=VINT(154+JT)*XS(JT)
14016         IF(MINT(31).GE.2) VINT(140+JT)=VINT(140+JT)*VINT(142+JT)
14017   340 CONTINUE
14018       PARU(112)=ALAMS
14019  
14020       RETURN
14021       END
14022 C*********************************************************************
14023  
14024 C...PYPTIS
14025 C...Generates pT-ordered spacelike initial-state parton showers and
14026 C...trial joinings.
14027 C...MODE=-1: Initialize ISR from scratch, starting from the hardest
14028 C...         interaction initiators at PT2NOW.
14029 C...MODE= 0: Generate a trial branching on interaction MINT(36), side
14030 C...         MINT(30). Start evolution at PT2NOW, solve Sudakov for PT2.
14031 C...         Store in /PYISMX/ if PT2 is largest so far. Abort if PT2
14032 C...         is below PT2CUT.
14033 C...         (Also generate test joinings if MSTP(96)=1.)
14034 C...MODE= 1: Accept stored shower branching. Update event record etc.
14035 C...PT2NOW : Starting (max) PT2 scale for evolution.
14036 C...PT2CUT : Lower limit for evolution.
14037 C...PT2    : Result of evolution. Generated PT2 for trial emission.
14038 C...IFAIL  : Status return code. IFAIL=0 when all is well.
14039  
14040       SUBROUTINE PYPTIS(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
14041  
14042 C...Double precision and integer declarations.
14043       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
14044       IMPLICIT INTEGER(I-N)
14045       INTEGER PYK,PYCHGE,PYCOMP
14046 C...Parameter statement for maximum size of showers.
14047       PARAMETER (MAXNUR=1000)
14048 C...Commonblocks.
14049       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
14050       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
14051       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
14052       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
14053       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14054       COMMON/PYINT1/MINT(400),VINT(400)
14055       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
14056       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
14057      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
14058      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
14059       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
14060      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
14061       COMMON/PYCTAG/NCT,MCT(4000,2)
14062       COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
14063       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
14064      &     /PYINT2/,/PYINTM/,/PYISMX/,/PYCTAG/,/PYISJN/
14065 C...Local variables
14066       DIMENSION ZSAV(2,240),PT2SAV(2,240),
14067      &     XFB(-25:25),XFA(-25:25),XFN(-25:25),XFJ(-25:25),
14068      &     WTAP(-25:25),WTPDF(-25:25),SHTNOW(240),
14069      &     WTAPJ(240),WTPDFJ(240),X1(240),Y(240)
14070       SAVE ZSAV,PT2SAV,XFB,XFA,XFN,WTAP,WTPDF,XMXC,SHTNOW,
14071      &     RMB2,RMC2,ALAM3,ALAM4,ALAM5,TMIN,PTEMAX,WTEMAX,AEM2PI
14072 C...For check on excessive weights.
14073       CHARACTER CHWT*12
14074
14075 C...Only give errors for very large weights, otherwise just warnings
14076       DATA WTEMAX /1.5D0/
14077 C...Only give errors for large pT, otherwise just warnings
14078       DATA PTEMAX /5D0/
14079  
14080       IFAIL=-1
14081  
14082 C----------------------------------------------------------------------
14083 C...MODE=-1: Initialize initial state showers from scratch, i.e.
14084 C...starting from the hardest interaction initiators.
14085       IF (MODE.EQ.-1) THEN
14086 C...Set hard scattering SHAT.
14087         SHTNOW(1)=VINT(44)
14088 C...Mass thresholds and Lambda for QCD evolution.
14089         AEM2PI=PARU(101)/PARU(2)
14090         RMB=PMAS(5,1)
14091         RMC=PMAS(4,1)
14092         ALAM4=PARP(61)
14093         IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
14094         IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
14095         ALAM5=ALAM4*(ALAM4/RMB)**(2D0/23D0)
14096         ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
14097         RMB2=RMB**2
14098         RMC2=RMC**2
14099 C...Massive quark forced creation threshold (in M**2).
14100         TMIN=1.01D0
14101 C...Set upper limit for X (ensures some X left for beam remnant).
14102         XMXC=1D0-2D0*PARP(111)/VINT(1)
14103  
14104         IF (MSTP(61).GE.1) THEN
14105 C...Initial values: flavours, momenta, virtualities.
14106           DO 100 JS=1,2
14107             NISGEN(JS,1)=0
14108  
14109 C...Special kinematics check for c/b quarks (that g -> c cbar or
14110 C...b bbar kinematically possible).
14111             KFLB=K(IMI(JS,1,1),2)
14112             KFLCB=IABS(KFLB)
14113             IF(KFBEAM(JS).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
14114 C...Check PT2MAX > mQ^2
14115               IF (VINT(56).LT.1.05D0*PMAS(PYCOMP(KFLCB),1)**2) THEN
14116                 CALL PYERRM(9,'(PYPTIS:) PT2MAX < 1.05 * MQ**2. '//
14117      &               'No Q creation possible.')
14118                 MINT(51)=1
14119                 RETURN
14120               ELSE
14121 C...Check for physical z values (m == MQ / sqrt(s))
14122 C...For creation diagram, x < z < (1-m)/(1+m(1-m))
14123                 FMQ=PMAS(KFLCB,1)/SQRT(SHTNOW(1))
14124                 ZMXCR=(1D0-FMQ)/(1D0+FMQ*(1D0-FMQ))
14125                 IF (XMI(JS,1).GT.0.9D0*ZMXCR) THEN
14126                   CALL PYERRM(9,'(PYPTIS:) No physical z value for '//
14127      &                 'Q creation.')
14128                   MINT(51)=1
14129                   RETURN
14130                 ENDIF
14131               ENDIF
14132             ENDIF
14133   100     CONTINUE
14134         ENDIF
14135  
14136         MINT(354)=0
14137 C...Zero joining array
14138         DO 110 MJ=1,240
14139           MJOIND(1,MJ)=0
14140           MJOIND(2,MJ)=0
14141   110   CONTINUE
14142  
14143 C----------------------------------------------------------------------
14144 C...MODE= 0: Generate a trial branching on interaction MINT(36) side
14145 C...MINT(30). Store if emission PT2 scale is largest so far.
14146 C...Also generate test joinings if MSTP(96)=1.
14147       ELSEIF(MODE.EQ.0) THEN
14148         IFAIL=-1
14149         MECOR=0
14150         ISUB=MINT(1)
14151         JS=MINT(30)
14152 C...No shower for structureless beam
14153         IF (MINT(44+JS).EQ.1) RETURN
14154         MI=MINT(36)
14155         SHAT=VINT(44)
14156 C...Absolute shower max scale = VINT(56)
14157         PT2=MIN(PT2NOW,VINT(56))
14158         IF (NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) SHTNOW(MI)=SHAT
14159 C...Define for which processes ME corrections have been implemented.
14160         IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
14161           IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ
14162      &         .142.OR.ISUB.EQ.144) MECOR=1
14163           IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
14164           IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
14165 C...Calculate preweighting factor for ME-corrected processes.
14166           IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
14167         ENDIF
14168 C...Basic info on daughter for which to find mother.
14169         KFLB=K(IMI(JS,MI,1),2)
14170         KFLBA=IABS(KFLB)
14171 C...KSVCB: -1 for sea or first companion, 0 for valence or gluon, >1 for
14172 C...second companion.
14173         KSVCB=MAX(-1,IMI(JS,MI,2))
14174 C...Treat "first" companion of a pair like an ordinary sea quark
14175 C...(except that creation diagram is not allowed)
14176         IF(IMI(JS,MI,2).GT.IMISEP(MI)) KSVCB=-1
14177 C...X (rescaled to [0,1])
14178         XB=XMI(JS,MI)/VINT(142+JS)
14179 C...Massive quarks (use physical masses.)
14180         RMQ2=0D0
14181         MQMASS=0
14182         IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
14183           RMQ2=RMC2
14184           IF (KFLBA.EQ.5) RMQ2=RMB2
14185 C...Special threshold treatment for non-photon beams
14186           IF (KFBEAM(JS).NE.22) MQMASS=KFLBA
14187         ENDIF
14188  
14189 C...Flags for parton distribution calls.
14190         MINT(105)=MINT(102+JS)
14191         MINT(109)=MINT(106+JS)
14192         VINT(120)=VINT(2+JS)
14193
14194 C...Calculate initial parton distribution weights.
14195         IF(XB.GE.XMXC) THEN
14196           RETURN
14197         ELSEIF(MQMASS.EQ.0) THEN
14198           CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
14199         ELSE
14200 C...Initialize massive quark PT2 dependent pdf underestimate.
14201           PT20=PT2
14202           CALL PYPDFU(KFBEAM(JS),XB,PT20,XFB)
14203 C.!.Tentative treatment of massive valence quarks.
14204           XQ0=MAX(1D-10,XPSVC(KFLB,KSVCB))
14205           XG0=XFB(21)
14206           TPM0=LOG(PT20/RMQ2)
14207           WPDF0=TPM0*XG0/XQ0
14208         ENDIF
14209         IF (KFLBA.LE.6) THEN
14210 C...For quarks, only include respective sea, val, or cmp part.
14211           IF (KSVCB.LE.0) THEN
14212             XFB(KFLB)=XPSVC(KFLB,KSVCB)
14213           ELSE
14214 C...Find companion's companion
14215             MISEA=0
14216   120       MISEA=MISEA+1
14217             IF (IMI(JS,MISEA,2).NE.IMI(JS,MI,1)) GOTO 120
14218             XS=XMI(JS,MISEA)
14219             XREM=VINT(142+JS)
14220             YS=XS/(XREM+XS)
14221 C...Momentum fraction of the companion quark.
14222 C...Rescale from XB = x/XREM to YB = x/(1-Sum_rest) -> factor (1-YS).
14223             YB=XB*(1D0-YS)
14224             XFB(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
14225           ENDIF
14226         ENDIF
14227  
14228 C...Determine overestimated z range: switch at c and b masses.
14229   130   IF (PT2.GT.TMIN*RMB2) THEN
14230           IZRG=3
14231           PT2MNE=MAX(TMIN*RMB2,PT2CUT)
14232           B0=23D0/6D0
14233           ALAM2=ALAM5**2
14234         ELSEIF(PT2.GT.TMIN*RMC2) THEN
14235           IZRG=2
14236           PT2MNE=MAX(TMIN*RMC2,PT2CUT)
14237           B0=25D0/6D0
14238           ALAM2=ALAM4**2
14239         ELSE
14240           IZRG=1
14241           PT2MNE=PT2CUT
14242           B0=27D0/6D0
14243           ALAM2=ALAM3**2
14244         ENDIF
14245 C...Divide Lambda by PARP(64) (equivalent to mult pT2 by PARP(64))
14246         ALAM2=ALAM2/PARP(64)
14247 C...Overestimated ZMAX:
14248         IF (MQMASS.EQ.0) THEN
14249 C...Massless
14250           ZMAX=1D0-0.5D0*(PT2MNE/SHTNOW(MI))*(SQRT(1D0+4D0*SHTNOW(MI)
14251      &         /PT2MNE)-1D0)
14252         ELSE
14253 C...Massive (limit for bremsstrahlung diagram > creation)
14254           FMQ=SQRT(RMQ2/SHTNOW(MI))
14255           ZMAX=1D0/(1D0+FMQ)
14256         ENDIF
14257         ZMIN=XB/XMXC
14258  
14259 C...If kinematically impossible then do not evolve.
14260         IF(PT2.LT.PT2CUT.OR.ZMAX.LE.ZMIN) RETURN
14261  
14262 C...Reset Altarelli-Parisi and PDF weights.
14263         DO 140 KFL=-5,5
14264           WTAP(KFL)=0D0
14265           WTPDF(KFL)=0D0
14266   140   CONTINUE
14267         WTAP(21)=0D0
14268         WTPDF(21)=0D0
14269 C...Zero joining weights and compute X(partner) and X(mother) values.
14270         IF (MSTP(96).NE.0) THEN
14271           NJN=0
14272           DO 150 MJ=1,MINT(31)
14273             WTAPJ(MJ)=0D0
14274             WTPDFJ(MJ)=0D0
14275             X1(MJ)=XMI(JS,MJ)/(VINT(142+JS)+XMI(JS,MJ))
14276             Y(MJ)=(XMI(JS,MI)+XMI(JS,MJ))/(VINT(142+JS)+XMI(JS,MJ)
14277      &           +XMI(JS,MI))
14278   150     CONTINUE
14279         ENDIF
14280  
14281 C...Approximate Altarelli-Parisi weights (integrated AP dz).
14282 C...q -> q, g -> q or q -> q + gamma (already set which).
14283         IF(KFLBA.LE.5) THEN
14284 C...Val and cmp quarks get an extra sqrt(z) to smooth their bumps.
14285           IF (KSVCB.LT.0) THEN
14286             WTAP(KFLB)=(8D0/3D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
14287           ELSE
14288             RMIN=(1+SQRT(ZMIN))/(1-SQRT(ZMIN))
14289             RMAX=(1+SQRT(ZMAX))/(1-SQRT(ZMAX))
14290             WTAP(KFLB)=(8D0/3D0)*LOG(RMAX/RMIN)
14291           ENDIF
14292           WTAP(21)=0.5D0*(ZMAX-ZMIN)
14293           WTAPE=(2D0/9D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
14294           IF(MOD(KFLBA,2).EQ.0) WTAPE=4D0*WTAPE
14295           IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
14296             WTAP(KFLB)=WTFF*WTAP(KFLB)
14297             WTAP(21)=WTGF*WTAP(21)
14298             WTAPE=WTFF*WTAPE
14299           ENDIF
14300           IF (KSVCB.GE.1) THEN
14301 C...Kill normal creation but add joining diagrams for cmp quark.
14302             WTAP(21)=0D0
14303             IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
14304               CALL PYERRM(9,'(PYPTIS:) Sorry, I got a heavy companion'//
14305      &             " quark here. Not handled yet, giving up!")
14306               PT2=0D0
14307               MINT(51)=1
14308               RETURN
14309             ENDIF
14310 C...Check for possible joinings
14311             IF (MSTP(96).NE.0.AND.MJOIND(JS,MI).EQ.0) THEN
14312 C...Find companion's companion.
14313               MJ=0
14314   160         MJ=MJ+1
14315               IF (IMI(JS,MJ,2).NE.IMI(JS,MI,1)) GOTO 160
14316               IF (MJOIND(JS,MJ).EQ.0) THEN
14317                 Y(MI)=YB+YS
14318                 Z=YB/Y(MI)
14319                 WTAPJ(MJ)=Z*(1D0-Z)*0.5D0*(Z**2+(1D0-Z)**2)
14320                 IF (WTAPJ(MJ).GT.1D-6) THEN
14321                   NJN=1
14322                 ELSE
14323                   WTAPJ(MJ)=0D0
14324                 ENDIF
14325               ENDIF
14326 C...Add trial gluon joinings.
14327               DO 170 MJ=1,MINT(31)
14328                 KFLC=K(IMI(JS,MJ,1),2)
14329                 IF (KFLC.NE.21.OR.MJOIND(JS,MJ).NE.0) GOTO 170
14330                 Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
14331                 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
14332                 IF (WTAPJ(MJ).GT.1D-6) THEN
14333                   NJN=NJN+1
14334                 ELSE
14335                   WTAPJ(MJ)=0D0
14336                 ENDIF
14337   170         CONTINUE
14338             ENDIF
14339           ELSEIF (IMI(JS,MI,2).GE.0) THEN
14340 C...Kill creation diagram for val quarks and sea quarks with companions.
14341             WTAP(21)=0D0
14342           ELSEIF (MQMASS.EQ.0) THEN
14343 C...Extra safety factor for massless sea quark creation.
14344             WTAP(21)=WTAP(21)*1.25D0
14345           ENDIF
14346  
14347 C...  q -> g, g -> g.
14348         ELSEIF(KFLB.EQ.21) THEN
14349 C...Here we decide later whether a quark picked up is valence or
14350 C...sea, so we maintain the extra factor sqrt(z) since we deal
14351 C...with the *sum* of sea and valence in this context.
14352           WTAPQ=(16D0/3D0)*(SQRT(1D0/ZMIN)-SQRT(1D0/ZMAX))
14353 C...new: do not allow backwards evol to pick up heavy flavour.
14354           DO 180 KFL=1,MIN(3,MSTP(58))
14355             WTAP(KFL)=WTAPQ
14356             WTAP(-KFL)=WTAPQ
14357   180     CONTINUE
14358           WTAP(21)=6D0*LOG(ZMAX*(1D0-ZMIN)/(ZMIN*(1D0-ZMAX)))
14359           IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
14360             WTAPQ=WTFG*WTAPQ
14361             WTAP(21)=WTGG*WTAP(21)
14362           ENDIF
14363 C...Check for possible joinings (companions handled separately above)
14364           IF (MSTP(96).NE.0.AND.MINT(31).GE.2.AND.MJOIND(JS,MI).EQ.0)
14365      &         THEN
14366             DO 190 MJ=1,MINT(31)
14367               IF (MJ.EQ.MI.OR.MJOIND(JS,MJ).NE.0) GOTO 190
14368               KSVCC=IMI(JS,MJ,2)
14369               IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
14370               IF (KSVCC.GE.1) GOTO 190
14371               KFLC=K(IMI(JS,MJ,1),2)
14372 C...Only try g -> g + g once.
14373               IF (MJ.GT.MI.AND.KFLC.EQ.21) GOTO 190
14374               Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
14375               IF (KFLC.EQ.21) THEN
14376                 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
14377               ELSE
14378                 WTAPJ(MJ)=Z*4D0/3D0*(1D0+Z**2)
14379               ENDIF
14380               IF (WTAPJ(MJ).GT.1D-6) THEN
14381                 NJN=NJN+1
14382               ELSE
14383                 WTAPJ(MJ)=0D0
14384               ENDIF
14385   190       CONTINUE
14386           ENDIF
14387         ENDIF
14388  
14389 C...Initialize massive quark evolution
14390         IF (MQMASS.NE.0) THEN
14391           RML=(RMQ2+VINT(18))/ALAM2
14392           TML=LOG(RML)
14393           TPL=LOG((PT2+VINT(18))/ALAM2)
14394           TPM=LOG((PT2+VINT(18))/RMQ2)
14395           WN=WTAP(21)*WPDF0/B0
14396         ENDIF
14397  
14398  
14399 C...Loopback point for iteration
14400         NTRY=0
14401         NTHRES=0
14402   200   NTRY=NTRY+1
14403         IF(NTRY.GT.500) THEN
14404           CALL PYERRM(9,'(PYPTIS:) failed to evolve shower.')
14405           MINT(51)=1
14406           RETURN
14407         ENDIF
14408  
14409 C...  Calculate PDF weights and sum for evolution rate.
14410         WTSUM=0D0
14411         XFBO=MAX(1D-10,XFB(KFLB))
14412         DO 210 KFL=-5,5
14413           WTPDF(KFL)=XFB(KFL)/XFBO
14414           WTSUM=WTSUM+WTAP(KFL)*WTPDF(KFL)
14415   210   CONTINUE
14416 C...Only add gluon mother diagram for massless KFLB.
14417         IF(MQMASS.EQ.0) THEN
14418           WTPDF(21)=XFB(21)/XFBO
14419           WTSUM=WTSUM+WTAP(21)*WTPDF(21)
14420         ENDIF
14421         WTSUM=MAX(0.0001D0,WTSUM)
14422         WTSUMS=WTSUM
14423 C...Add joining diagrams where applicable.
14424         WTJOIN=0D0
14425         IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
14426           DO 220 MJ=1,MINT(31)
14427             IF (WTAPJ(MJ).LT.1D-3) GOTO 220
14428             WTPDFJ(MJ)=1D0/XFBO
14429 C...x and x*pdf (+ sea/val) for parton C.
14430             KFLC=K(IMI(JS,MJ,1),2)
14431             KFLCA=IABS(KFLC)
14432             KSVCC=MAX(-1,IMI(JS,MJ,2))
14433             IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
14434             MINT(30)=JS
14435             MINT(36)=MJ
14436             CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
14437             MINT(36)=MI
14438             IF (KFLCA.LE.6.AND.KSVCC.LE.0) THEN
14439               XFJ(KFLC)=XPSVC(KFLC,KSVCC)
14440             ELSEIF (KSVCC.GE.1) THEN
14441               print*, 'error! parton C is companion!'
14442             ENDIF
14443             WTPDFJ(MJ)=WTPDFJ(MJ)/XFJ(KFLC)
14444 C...x and x*pdf (+ sea/val) for parton A.
14445             KFLA=21
14446             KSVCA=0
14447             IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
14448               KFLA=KFLB
14449               KSVCA=KSVCB
14450             ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
14451               KFLA=KFLC
14452               KSVCA=KSVCC
14453             ENDIF
14454             MINT(30)=JS
14455             IF (KSVCA.LE.0) THEN
14456 C...Consider C the "evolved" parton if B is gluon. Val/sea
14457 C...counting will then be done correctly in PYPDFU.
14458               IF (KFLBA.EQ.21) MINT(36)=MJ
14459               CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
14460               MINT(36)=MI
14461               IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
14462             ELSE
14463 C...If parton A is companion, use Y(MI) and YS in call to PYFCMP.
14464               XFJ(KFLA)=PYFCMP(Y(MI)/VINT(140),YS/VINT(140),MSTP(87))
14465             ENDIF
14466             WTPDFJ(MJ)=XFJ(KFLA)*WTPDFJ(MJ)
14467             WTJOIN=WTJOIN+WTAPJ(MJ)*WTPDFJ(MJ)
14468   220     CONTINUE
14469         ENDIF
14470  
14471 C...Pick normal pT2 (in overestimated z range).
14472   230   PT2OLD=PT2
14473         WTSUM=WTSUMS
14474         PT2=ALAM2*((PT2+VINT(18))/ALAM2)**(PYR(0)**(B0/WTSUM))-VINT(18)
14475         KFLC=21
14476  
14477 C...Evolve q -> q gamma separately, pick it if larger pT.
14478         IF(KFLBA.LE.5) THEN
14479           PT2QED=(PT2OLD+VINT(18))*PYR(0)**(1D0/(AEM2PI*WTAPE))-VINT(18)
14480           IF(PT2QED.GT.PT2) THEN
14481             PT2=PT2QED
14482             KFLC=22
14483             KFLA=KFLB
14484           ENDIF
14485         ENDIF
14486  
14487 C...  Evolve massive quark creation separately.
14488         MCRQQ=0
14489         IF (MQMASS.NE.0) THEN
14490           PT2CR=(RMQ2+VINT(18))*(RML**(TPM/(TPL*PYR(0)**(-TML/WN)-TPM)))
14491      &         -VINT(18)
14492 C...  Ensure mininimum PT2CR and force creation near threshold.
14493           IF (PT2CR.LT.TMIN*RMQ2) THEN
14494             NTHRES=NTHRES+1
14495             IF (NTHRES.GT.50) THEN
14496               CALL PYERRM(9,'(PYPTIS:) no phase space left for '//
14497      &             'massive quark creation. Gave up trying.')
14498               MINT(51)=1
14499               RETURN
14500             ENDIF
14501             PT2=0D0
14502             PT2CR=TMIN*RMQ2
14503             MCRQQ=2
14504           ENDIF
14505 C...  Select largest PT2 (brems or creation):
14506           IF (PT2CR.GT.PT2) THEN
14507             MCRQQ=MAX(MCRQQ,1)
14508             WTSUM=0D0
14509             PT2=PT2CR
14510             KFLA=21
14511           ELSE
14512             MCRQQ=0
14513             KFLA=KFLB
14514           ENDIF
14515 C...  Compute logarithms for this PT2
14516           TPL=LOG((PT2+VINT(18))/ALAM2)
14517           TPM=LOG((PT2+VINT(18))/(RMQ2+VINT(18)))
14518           WTCRQQ=TPM/LOG(PT2/RMQ2)
14519         ENDIF
14520  
14521 C...Evolve joining separately
14522         MJOIN=0
14523         IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
14524           PT2JN=ALAM2*((PT2OLD+VINT(18))/ALAM2)**(PYR(0)**(B0/WTJOIN))
14525      &         -VINT(18)
14526           IF (PT2JN.GE.PT2) THEN
14527             MJOIN=1
14528             PT2=PT2JN
14529           ENDIF
14530         ENDIF
14531  
14532 C...Loopback if crossed c/b mass thresholds.
14533         IF(IZRG.EQ.3.AND.PT2.LT.RMB2) THEN
14534           PT2=RMB2
14535          GOTO 130
14536         ELSEIF(IZRG.EQ.2.AND.PT2.LT.RMC2) THEN
14537           PT2=RMC2
14538           GOTO 130
14539         ENDIF
14540  
14541 C...Speed up shower. Skip if higher-PT acceptable branching
14542 C...already found somewhere else.
14543 C...Also finish if below lower cutoff.
14544  
14545         IF (PT2.LT.PT2MX.OR.PT2.LT.PT2CUT) RETURN
14546  
14547 C...Select parton A flavour (massive Q handled above.)
14548         IF (MQMASS.EQ.0.AND.KFLC.NE.22.AND.MJOIN.EQ.0) THEN
14549           WTRAN=PYR(0)*WTSUM
14550           KFLA=-6
14551   240     KFLA=KFLA+1
14552           WTRAN=WTRAN-WTAP(KFLA)*WTPDF(KFLA)
14553           IF(KFLA.LE.5.AND.WTRAN.GT.0D0) GOTO 240
14554           IF(KFLA.EQ.6) KFLA=21
14555         ELSEIF (MJOIN.EQ.1) THEN
14556 C...Tentative joining accept/reject.
14557           WTRAN=PYR(0)*WTJOIN
14558           MJ=0
14559   250     MJ=MJ+1
14560           WTRAN=WTRAN-WTAPJ(MJ)*WTPDFJ(MJ)
14561           IF(MJ.LE.MINT(31)-1.AND.WTRAN.GT.0D0) GOTO 250
14562           IF(MJOIND(JS,MJ).NE.0.OR.MJOIND(JS,MI).NE.0) THEN
14563             CALL PYERRM(9,'(PYPTIS:) Attempted double joining.'//
14564      &           ' Rejected.')
14565             GOTO 230
14566           ENDIF
14567 C...x*pdf (+ sea/val) at new pT2 for parton B.
14568           IF (KSVCB.LE.0) THEN
14569             MINT(30)=JS
14570             CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
14571             IF (KFLBA.LE.6) XFB(KFLB)=XPSVC(KFLB,KSVCB)
14572           ELSE
14573 C...Companion distributions do not evolve.
14574             XFB(KFLB)=XFBO
14575           ENDIF
14576           WTVETO=1D0/WTPDFJ(MJ)/XFB(KFLB)
14577           KFLC=K(IMI(JS,MJ,1),2)
14578           KFLCA=IABS(KFLC)
14579           KSVCC=MAX(-1,IMI(JS,MJ,2))
14580           IF (KSVCB.GE.1) KSVCC=-1
14581 C...x*pdf (+ sea/val) at new pT2 for parton C.
14582           MINT(30)=JS
14583           MINT(36)=MJ
14584           CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
14585           MINT(36)=MI
14586           IF (KFLCA.LE.6.AND.KSVCC.LE.0) XFJ(KFLC)=XPSVC(KFLC,KSVCC)
14587           WTVETO=WTVETO/XFJ(KFLC)
14588 C...x and x*pdf (+ sea/val) at new pT2 for parton A.
14589           KFLA=21
14590           KSVCA=0
14591           IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
14592             KFLA=KFLB
14593             KSVCA=KSVCB
14594           ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
14595             KFLA=KFLC
14596             KSVCA=KSVCC
14597           ENDIF
14598           IF (KSVCA.LE.0) THEN
14599             MINT(30)=JS
14600             IF (KFLB.EQ.21) MINT(36)=MJ
14601             CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
14602             MINT(36)=MI
14603             IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
14604           ELSE
14605             XFJ(KFLA)=PYFCMP(Y(MJ)/VINT(140),YS/VINT(140),MSTP(87))
14606           ENDIF
14607           WTVETO=WTVETO*XFJ(KFLA)
14608 C...Monte Carlo veto.
14609           IF (WTVETO.LT.PYR(0)) GOTO 200
14610 C...If accept, save PT2 of this joining.
14611           IF (PT2.GT.PT2MX) THEN
14612             PT2MX=PT2
14613             JSMX=2+JS
14614             MJN1MX=MJ
14615             MJN2MX=MI
14616             WTAPJ(MJ)=0D0
14617             NJN=0
14618           ENDIF
14619 C...Exit and continue evolution.
14620           GOTO 380
14621         ENDIF
14622         KFLAA=IABS(KFLA)
14623  
14624 C...Choose z value (still in overestimated range) and corrective weight.
14625 C...Unphysical z will be rejected below when Q2 has is computed.
14626         WTZ=0D0
14627  
14628 C...Note: ME and MQ>0 give corrections to overall weights, not shapes.
14629 C...q -> q + g or q -> q + gamma (already set which).
14630         IF (KFLAA.LE.5.AND.KFLBA.LE.5) THEN
14631           IF (KSVCB.LT.0) THEN
14632             Z=1D0-(1D0-ZMIN)*((1D0-ZMAX)/(1D0-ZMIN))**PYR(0)
14633           ELSE
14634             ZFAC=RMIN*(RMAX/RMIN)**PYR(0)
14635             Z=((1-ZFAC)/(1+ZFAC))**2
14636           ENDIF
14637           WTZ=0.5D0*(1D0+Z**2)
14638 C...Massive weight correction.
14639           IF (KFLBA.GE.4) WTZ=WTZ-Z*(1D0-Z)**2*RMQ2/PT2
14640 C...Valence quark weight correction (extra sqrt)
14641           IF (KSVCB.GE.0) WTZ=WTZ*SQRT(Z)
14642  
14643 C...q -> g + q.
14644 C...NB: MQ>0 not yet implemented. Forced absent above.
14645         ELSEIF (KFLAA.LE.5.AND.KFLB.EQ.21) THEN
14646           KFLC=KFLA
14647           Z=ZMAX/(1D0+PYR(0)*(SQRT(ZMAX/ZMIN)-1D0))**2
14648           WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
14649  
14650 C...g -> q + qbar.
14651         ELSEIF (KFLA.EQ.21.AND.KFLBA.LE.5) THEN
14652           KFLC=-KFLB
14653           Z=ZMIN+PYR(0)*(ZMAX-ZMIN)
14654           WTZ=Z**2+(1D0-Z)**2
14655 C...Massive correction
14656           IF (MQMASS.NE.0) THEN
14657             WTZ=WTZ+2D0*Z*(1D0-Z)*RMQ2/PT2
14658 C...Extra safety margin for light sea quark creation
14659           ELSEIF (KSVCB.LT.0) THEN
14660             WTZ=WTZ/1.25D0
14661           ENDIF
14662  
14663 C...g -> g + g.
14664         ELSEIF (KFLA.EQ.21.AND.KFLB.EQ.21) THEN
14665           KFLC=21
14666           Z=1D0/(1D0+((1D0-ZMIN)/ZMIN)*((1D0-ZMAX)*ZMIN/
14667      &         (ZMAX*(1D0-ZMIN)))**PYR(0))
14668           WTZ=(1D0-Z*(1D0-Z))**2
14669         ENDIF
14670  
14671 C...Derive Q2 from pT2.
14672         Q2B=PT2/(1D0-Z)
14673         IF (KFLBA.GE.4) Q2B=Q2B-RMQ2
14674  
14675 C...Loopback if outside allowed z range for given pT2.
14676         RM2C=PYMASS(KFLC)**2
14677         PT2ADJ=Q2B-Z*(SHTNOW(MI)+Q2B)*(Q2B+RM2C)/SHTNOW(MI)
14678         IF (PT2ADJ.LT.1D-6) GOTO 230
14679  
14680 C...Loopback if nonordered in angle/rapidity.
14681         IF (MSTP(62).GE.3.AND.NISGEN(JS,MI).GE.1) THEN
14682           IF(PT2.GT.((1D0-Z)/(Z*(1D0-ZSAV(JS,MI))))**2*PT2SAV(JS,MI))
14683      &         GOTO 230
14684         ENDIF
14685  
14686 C...Select phi angle of branching at random.
14687         PHI=PARU(2)*PYR(0)
14688  
14689 C...Matrix-element corrections for some processes.
14690         IF (MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
14691           IF (KFLAA.LE.20.AND.KFLBA.LE.20) THEN
14692             CALL PYMEWT(MECOR,1,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
14693             WTZ=WTZ*WTME/WTFF
14694           ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.KFLBA.LE.20) THEN
14695             CALL PYMEWT(MECOR,2,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
14696             WTZ=WTZ*WTME/WTGF
14697           ELSEIF(KFLAA.LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
14698             CALL PYMEWT(MECOR,3,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
14699             WTZ=WTZ*WTME/WTFG
14700           ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
14701             CALL PYMEWT(MECOR,4,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
14702             WTZ=WTZ*WTME/WTGG
14703           ENDIF
14704         ENDIF
14705  
14706 C...Parton distributions at new pT2 but old x.
14707         MINT(30)=JS
14708         CALL PYPDFU(KFBEAM(JS),XB,PT2,XFN)
14709 C...Treat val and cmp separately
14710         IF (KFLBA.LE.6.AND.KSVCB.LE.0) XFN(KFLB)=XPSVC(KFLB,KSVCB)
14711         IF (KSVCB.GE.1)
14712      &       XFN(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
14713         XFBN=XFN(KFLB)
14714         IF(XFBN.LT.1D-20) THEN
14715           IF(KFLA.EQ.KFLB) THEN
14716             WTAP(KFLB)=0D0
14717             GOTO 200
14718           ELSE
14719             XFBN=1D-10
14720             XFN(KFLB)=XFBN
14721           ENDIF
14722         ENDIF
14723         DO 260 KFL=-5,5
14724           XFB(KFL)=XFN(KFL)
14725   260   CONTINUE
14726         XFB(21)=XFN(21)
14727  
14728 C...Parton distributions at new pT2 and new x.
14729         XA=XB/Z
14730         MINT(30)=JS
14731         CALL PYPDFU(KFBEAM(JS),XA,PT2,XFA)
14732         IF (KFLBA.LE.5.AND.KFLAA.LE.5) THEN
14733 C...q -> q + g: only consider respective sea, val, or cmp content.
14734           IF (KSVCB.LE.0) THEN
14735             XFA(KFLA)=XPSVC(KFLA,KSVCB)
14736           ELSE
14737             YA=XA*(1D0-YS)
14738             XFA(KFLB)=PYFCMP(YA/VINT(140),YS/VINT(140),MSTP(87))
14739           ENDIF
14740         ENDIF
14741         XFAN=XFA(KFLA)
14742         IF(XFAN.LT.1D-20) THEN
14743           GOTO 200
14744         ENDIF
14745  
14746 C...If weighting fails continue evolution.
14747         WTTOT=0D0
14748         IF (MCRQQ.EQ.0) THEN
14749           WTPDFA=1D0/WTPDF(KFLA)
14750           WTTOT=WTZ*XFAN/XFBN*WTPDFA
14751         ELSEIF(MCRQQ.EQ.1) THEN
14752           WTPDFA=TPM/WPDF0
14753           WTTOT=WTCRQQ*WTZ*XFAN/XFBN*WTPDFA
14754           XBEST=TPM/TPM0*XQ0
14755         ELSEIF(MCRQQ.EQ.2) THEN
14756 C...Force massive quark creation.
14757           WTTOT=1D0
14758         ENDIF
14759  
14760 C...Loop back if trial emission fails.
14761         IF(WTTOT.GE.0D0.AND.WTTOT.LT.PYR(0)) GOTO 200
14762         WTACC=((1D0+PT2)/(0.25D0+PT2))**2
14763         IF(WTTOT.LT.0D0) THEN
14764           WRITE(CHWT,'(1P,E12.4)') WTTOT
14765           CALL PYERRM(19,'(PYPTIS:) Weight '//CHWT//' negative')
14766         ELSEIF(WTTOT.GT.WTACC) THEN
14767           WRITE(CHWT,'(1P,E12.4)') WTTOT
14768           IF (PT2.GT.PTEMAX.OR.WTTOT.GE.WTEMAX) THEN
14769 C...Too high weight: write out as error, but do not update error counter.
14770             IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)-1
14771             CALL PYERRM(19,
14772      &         '(PYPTIS:) Weight '//CHWT//' above unity')
14773             IF (PT2.GT.PTEMAX) PTEMAX=PT2
14774             IF (WTTOT.GT.WTEMAX) WTEMAX=WTTOT
14775           ELSE
14776             CALL PYERRM(9,
14777      &         '(PYPTIS:) Weight '//CHWT//' above unity')
14778           ENDIF
14779 C...Useful for debugging but commented out for distribution:
14780 C          print*, 'JS, MI',JS, MI
14781 C          print*, 'PT:',SQRT(PT2), ' MCRQQ',MCRQQ
14782 C          print*, 'A -> B C',KFLA, KFLB, KFLC
14783 C          XFAO=XFBO/WTPDFA
14784 C          print*, 'WT(Z,XFA,XFB)',WTZ, XFAN/XFAO, XFBO/XFBN
14785         ENDIF
14786  
14787 C...Save acceptable branching.
14788         IF(PT2.GT.PT2MX) THEN
14789           MIMX=MINT(36)
14790           JSMX=JS
14791           PT2MX=PT2
14792           KFLAMX=KFLA
14793           KFLCMX=KFLC
14794           RM2CMX=RM2C
14795           Q2BMX=Q2B
14796           ZMX=Z
14797           PT2AMX=PT2ADJ
14798           PHIMX=PHI
14799         ENDIF
14800  
14801 C----------------------------------------------------------------------
14802 C...MODE= 1: Accept stored shower branching. Update event record etc.
14803       ELSEIF (MODE.EQ.1) THEN
14804         MI=MIMX
14805         JS=JSMX
14806         SHAT=SHTNOW(MI)
14807         SIDE=3D0-2D0*JS
14808 C...Shift down rest of event record to make room for insertion.
14809         IT=IMISEP(MI)+1
14810         IM=IT+1
14811         IS=IMI(JS,MI,1)
14812         DO 280 I=N,IT,-1
14813           IF (K(I,3).GE.IT) K(I,3)=K(I,3)+2
14814           KT1=K(I,4)/MSTU(5)**2
14815           KT2=K(I,5)/MSTU(5)**2
14816           ID1=MOD(K(I,4),MSTU(5))
14817           ID2=MOD(K(I,5),MSTU(5))
14818           IM1=MOD(K(I,4)/MSTU(5),MSTU(5))
14819           IM2=MOD(K(I,5)/MSTU(5),MSTU(5))
14820           IF (ID1.GE.IT) ID1=ID1+2
14821           IF (ID2.GE.IT) ID2=ID2+2
14822           IF (IM1.GE.IT) IM1=IM1+2
14823           IF (IM2.GE.IT) IM2=IM2+2
14824           K(I,4)=KT1*MSTU(5)**2+IM1*MSTU(5)+ID1
14825           K(I,5)=KT2*MSTU(5)**2+IM2*MSTU(5)+ID2
14826           DO 270 IX=1,5
14827             K(I+2,IX)=K(I,IX)
14828             P(I+2,IX)=P(I,IX)
14829             V(I+2,IX)=V(I,IX)
14830   270     CONTINUE
14831           MCT(I+2,1)=MCT(I,1)
14832           MCT(I+2,2)=MCT(I,2)
14833   280   CONTINUE
14834         N=N+2
14835 C...Also update shifted-down pointers in IMI, IMISEP, and IPART.
14836         DO 290 JI=1,MINT(31)
14837           IF (IMI(1,JI,1).GE.IT) IMI(1,JI,1)=IMI(1,JI,1)+2
14838           IF (IMI(1,JI,2).GE.IT) IMI(1,JI,2)=IMI(1,JI,2)+2
14839           IF (IMI(2,JI,1).GE.IT) IMI(2,JI,1)=IMI(2,JI,1)+2
14840           IF (IMI(2,JI,2).GE.IT) IMI(2,JI,2)=IMI(2,JI,2)+2
14841           IF (JI.GE.MI) IMISEP(JI)=IMISEP(JI)+2
14842 C...Also update companion pointers to the present mother.
14843           IF (IMI(JS,JI,2).EQ.IS) IMI(JS,JI,2)=IM
14844   290   CONTINUE
14845         DO 300 IFS=1,NPART
14846           IF (IPART(IFS).GE.IT) IPART(IFS)=IPART(IFS)+2
14847   300   CONTINUE
14848 C...Zero entries dedicated for new timelike and mother partons.
14849         DO 320 I=IT,IT+1
14850           DO 310 J=1,5
14851             K(I,J)=0
14852             P(I,J)=0D0
14853             V(I,J)=0D0
14854   310     CONTINUE
14855           MCT(I,1)=0
14856           MCT(I,2)=0
14857   320   CONTINUE
14858  
14859 C...Define timelike and new mother partons. History.
14860         K(IT,1)=3
14861         K(IT,2)=KFLCMX
14862         K(IM,1)=14
14863         K(IM,2)=KFLAMX
14864         K(IS,3)=IM
14865         K(IT,3)=IM
14866 C...Set mother origin = side.
14867         K(IM,3)=MINT(83)+JS+2
14868         IF(MI.GE.2) K(IM,3)=MINT(83)+JS
14869  
14870 C...Define colour flow of branching.
14871         IM1=IM
14872         IM2=IM
14873 C...q -> q + gamma.
14874         IF(K(IT,2).EQ.22) THEN
14875           K(IT,1)=1
14876           ID1=IS
14877           ID2=IS
14878 C...q -> q + g.
14879         ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5.AND.K(IT,2).EQ.21) THEN
14880           ID1=IT
14881           ID2=IS
14882 C...q -> g + q.
14883         ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5) THEN
14884           ID1=IS
14885           ID2=IT
14886 C...qbar -> qbar + g.
14887         ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5.AND.K(IT,2).EQ.21) THEN
14888           ID1=IS
14889           ID2=IT
14890 C...qbar -> g + qbar.
14891         ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5) THEN
14892           ID1=IT
14893           ID2=IS
14894 C...g -> g + g; g -> q + qbar..
14895         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
14896           ID1=IS
14897           ID2=IT
14898         ELSE
14899           ID1=IT
14900           ID2=IS
14901         ENDIF
14902         IF(IM1.EQ.IM) K(IM1,4)=K(IM1,4)+ID1
14903         IF(IM2.EQ.IM) K(IM2,5)=K(IM2,5)+ID2
14904         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
14905         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
14906         IF(ID1.NE.ID2) THEN
14907           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
14908           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
14909         ENDIF
14910         IF(K(IT,1).EQ.1) THEN
14911           K(IT,4)=0
14912           K(IT,5)=0
14913         ENDIF
14914 C...Update IMI and colour tag arrays.
14915         IMI(JS,MI,1)=IM
14916         DO 330 MC=1,2
14917           MCT(IT,MC)=0
14918           MCT(IM,MC)=0
14919   330   CONTINUE
14920         DO 340 JCS=4,5
14921           KCS=JCS
14922 C...If mother flag not yet set for spacelike parton, trace it.
14923           IF (K(IS,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IS,-KCS,IM)
14924           IF(MINT(51).NE.0) RETURN
14925   340   CONTINUE
14926         DO 350 JCS=4,5
14927           KCS=JCS
14928 C...If mother flag not yet set for timelike parton, trace it.
14929           IF (K(IT,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IT,KCS,IM)
14930           IF(MINT(51).NE.0) RETURN
14931   350   CONTINUE
14932  
14933 C...Boost recoiling parton to compensate for Q2 scale.
14934         BETAZ=SIDE*(1D0-(1D0+Q2BMX/SHAT)**2)/
14935      &  (1D0+(1D0+Q2BMX/SHAT)**2)
14936         IR=IMI(3-JS,MI,1)
14937         CALL PYROBO(IR,IR,0D0,0D0,0D0,0D0,BETAZ)
14938  
14939 C...Define system to be rotated and boosted
14940 C...(not including the 2 just added partons)
14941 C...(but including the docu lines for first interaction)
14942         IMIN=IMISEP(MI-1)+1
14943         IF (MI.EQ.1) IMIN=MINT(83)+5
14944         IMAX=IMISEP(MI)-2
14945
14946 C...Rotate back system in phi to compensate for subsequent rotation.
14947         CALL PYROBO(IMIN,IMAX,0D0,-PHIMX,0D0,0D0,0D0)
14948  
14949 C...Define kinematics of new partons in old frame.
14950         IMAX=IMISEP(MI)
14951         P(IM,1)=SQRT(PT2AMX)*SHAT/(ZMX*(SHAT+Q2BMX))
14952         P(IM,3)=0.5D0*SQRT(SHAT)*((SHAT-Q2BMX)/((SHAT
14953      &       +Q2BMX)*ZMX)+(Q2BMX+RM2CMX)/SHAT)*SIDE
14954         P(IM,4)=SQRT(P(IM,1)**2+P(IM,3)**2)
14955         P(IT,1)=P(IM,1)
14956         P(IT,3)=P(IM,3)-0.5D0*(SHAT+Q2BMX)/SQRT(SHAT)*SIDE
14957         P(IT,4)=SQRT(P(IT,1)**2+P(IT,3)**2+RM2CMX)
14958         P(IT,5)=SQRT(RM2CMX)
14959
14960 C...Update internal line, now spacelike
14961         P(IS,1)=P(IM,1)-P(IT,1)
14962         P(IS,2)=P(IM,2)-P(IT,2)
14963         P(IS,3)=P(IM,3)-P(IT,3)
14964         P(IS,4)=P(IM,4)-P(IT,4)
14965         P(IS,5)=P(IS,4)**2-P(IS,1)**2-P(IS,2)**2-P(IS,3)**2
14966 C...Represent spacelike virtualities as -sqrt(abs(Q2)) .
14967         IF (P(IS,5).LT.0D0) THEN 
14968           P(IS,5)=-SQRT(ABS(P(IS,5)))
14969         ELSE
14970           P(IS,5)=SQRT(P(IS,5))
14971         ENDIF        
14972
14973 C...Boost entire system and rotate to new frame.
14974 C...(including docu lines)
14975         BETAX=(P(IM,1)+P(IR,1))/(P(IM,4)+P(IR,4))
14976         BETAZ=(P(IM,3)+P(IR,3))/(P(IM,4)+P(IR,4))
14977         IF(BETAX**2+BETAZ**2.GE.1D0) THEN
14978           CALL PYERRM(1,'(PYPTIS:) boost bigger than unity')
14979           MINT(51)=1
14980           IFAIL=-1
14981           RETURN
14982         ENDIF
14983         CALL PYROBO(IMIN,IMAX,0D0,0D0,-BETAX,0D0,-BETAZ)
14984         I1=IMI(1,MI,1)
14985         THETA=PYANGL(P(I1,3),P(I1,1))
14986         CALL PYROBO(IMIN,IMAX,-THETA,PHIMX,0D0,0D0,0D0)
14987  
14988 C...Global statistics.
14989         MINT(352)=MINT(352)+1
14990         VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
14991         IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
14992  
14993 C...Add parton with relevant pT scale for timelike shower.
14994         IF (K(IT,2).NE.22) THEN
14995           NPART=NPART+1
14996           IPART(NPART)=IT
14997           PTPART(NPART)=SQRT(PT2AMX)
14998         ENDIF
14999  
15000 C...Update saved variables.
15001         SHTNOW(MIMX)=SHTNOW(MIMX)/ZMX
15002         NISGEN(JSMX,MIMX)=NISGEN(JSMX,MIMX)+1
15003         XMI(JSMX,MIMX)=XMI(JSMX,MIMX)/ZMX
15004         PT2SAV(JSMX,MIMX)=PT2MX
15005         ZSAV(JS,MIMX)=ZMX
15006  
15007         KSA=IABS(K(IS,2))
15008         KMA=IABS(K(IM,2))
15009         IF (KSA.EQ.21.AND.KMA.GE.1.AND.KMA.LE.5) THEN
15010 C...Gluon reconstructs to quark.
15011 C...Decide whether newly created quark is valence or sea:
15012           MINT(30)=JS
15013           CALL PYPTMI(2,PT2NOW,PTDUM1,PTDUM2,IFAIL)
15014           IF(MINT(51).NE.0) RETURN
15015         ENDIF
15016         IF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.EQ.21) THEN
15017 C...Quark reconstructs to gluon.
15018 C...Now some guy may have lost his companion. Check.
15019           ICMP=IMI(JS,MI,2)
15020           IF (ICMP.GT.0) THEN
15021             CALL PYERRM(9,'(PYPTIS:) Sorry, companion quark radiated'
15022      &           //' away. Cannot handle that yet. Giving up.')
15023             MINT(51)=1
15024             RETURN
15025           ELSEIF(ICMP.LT.0) THEN
15026 C...A sea quark with companion still in BR was reconstructed to a gluon.
15027 C...Companion should now be removed from the beam remnant.
15028 C...(Momentum integral is automatically updated in next call to PYPDFU.)
15029             ICMP=-ICMP
15030             IFL=-K(IS,2)
15031             DO 370 JCMP=ICMP,NVC(JS,IFL)-1
15032               XASSOC(JS,IFL,JCMP)=XASSOC(JS,IFL,JCMP+1)
15033               DO 360 JI=1,MINT(31)
15034                 KMI=-IMI(JS,JI,2)
15035                 JFL=-K(IMI(JS,JI,1),2)
15036                 IF (KMI.EQ.JCMP+1.AND.JFL.EQ.IFL) IMI(JS,JI,2)=IMI(JS,JI
15037      &               ,2)+1
15038   360         CONTINUE
15039   370       CONTINUE
15040             NVC(JS,IFL)=NVC(JS,IFL)-1
15041           ENDIF
15042 C...Set gluon IMI(JS,MI,2) = 0.
15043           IMI(JS,MI,2)=0
15044         ELSEIF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.NE.21) THEN
15045 C...Quark reconstructing to quark. If sea with companion still in BR
15046 C...then update associated x value.
15047 C...(Momentum integral is automatically updated in next call to PYPDFU.)
15048           IF (IMI(JS,MI,2).LT.0) THEN
15049             ICMP=-IMI(JS,MI,2)
15050             IFL=-K(IS,2)
15051             XASSOC(JS,IFL,ICMP)=XMI(JSMX,MIMX)
15052           ENDIF
15053         ENDIF
15054  
15055       ENDIF
15056  
15057 C...If reached this point, normal exit.
15058   380 IFAIL=0
15059  
15060       RETURN
15061       END
15062  
15063 C*********************************************************************
15064  
15065 C...PYMEMX
15066 C...Generates maximum ME weight in some initial-state showers.
15067 C...Inparameter MECOR: kind of hard scattering process
15068 C...Outparameter WTFF: maximum weight for fermion -> fermion
15069 C...             WTGF: maximum weight for gluon/photon -> fermion
15070 C...             WTFG: maximum weight for fermion -> gluon/photon
15071 C...             WTGG: maximum weight for gluon -> gluon
15072  
15073       SUBROUTINE PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
15074  
15075 C...Double precision and integer declarations.
15076       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15077       IMPLICIT INTEGER(I-N)
15078       INTEGER PYK,PYCHGE,PYCOMP
15079 C...Commonblocks.
15080       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15081       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15082       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15083       COMMON/PYINT1/MINT(400),VINT(400)
15084       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15085       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
15086  
15087 C...Default maximum weight.
15088       WTFF=1D0
15089       WTGF=1D0
15090       WTFG=1D0
15091       WTGG=1D0
15092  
15093 C...Select maximum weight by process.
15094       IF(MECOR.EQ.1) THEN
15095         WTFF=1D0
15096         WTGF=3D0
15097       ELSEIF(MECOR.EQ.2) THEN
15098         WTFG=1D0
15099         WTGG=1D0
15100       ENDIF
15101  
15102       RETURN
15103       END
15104  
15105 C*********************************************************************
15106  
15107 C...PYMEWT
15108 C...Calculates actual ME weight in some initial-state showers.
15109 C...Inparameter MECOR: kind of hard scattering process
15110 C...            IFLCB: flavour combination of branching,
15111 C...                   1 for fermion -> fermion,
15112 C...                   2 for gluon/photon -> fermion
15113 C...                   3 for fermion -> gluon/photon,
15114 C...                   4 for gluon -> gluon
15115 C...            Q2:    Q2 value of shower branching
15116 C...            Z:     Z value of branching
15117 C...In+outparameter PHIBR: azimuthal angle of branching
15118 C...Outparameter WTME: actual ME weight
15119  
15120       SUBROUTINE PYMEWT(MECOR,IFLCB,Q2,Z,PHIBR,WTME)
15121  
15122 C...Double precision and integer declarations.
15123       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15124       IMPLICIT INTEGER(I-N)
15125       INTEGER PYK,PYCHGE,PYCOMP
15126 C...Commonblocks.
15127       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15128       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15129       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15130       COMMON/PYINT1/MINT(400),VINT(400)
15131       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15132       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
15133  
15134 C...Default output.
15135       WTME=1D0
15136  
15137 C...Define kinematics of shower branching in Mandelstam variables.
15138       SQM=VINT(44)
15139       SH=SQM/Z
15140       TH=-Q2
15141       UH=Q2-SQM*(1D0-Z)/Z
15142  
15143 C...Matrix-element corrections for f + fbar -> s-channel vector boson.
15144       IF(MECOR.EQ.1) THEN
15145         IF(IFLCB.EQ.1) THEN
15146           WTME=(TH**2+UH**2+2D0*SQM*SH)/(SH**2+SQM**2)
15147         ELSEIF(IFLCB.EQ.2) THEN
15148           WTME=(SH**2+TH**2+2D0*SQM*UH)/((SH-SQM)**2+SQM**2)
15149         ENDIF
15150  
15151 C...Matrix-element corrections for g + g -> Higgs (h0, H0, A0).
15152       ELSEIF(MECOR.EQ.2) THEN
15153         IF(IFLCB.EQ.3) THEN
15154           WTME=(SH**2+UH**2)/(SH**2+(SH-SQM)**2)
15155         ELSEIF(IFLCB.EQ.4) THEN
15156           WTME=0.5D0*(SH**4+UH**4+TH**4+SQM**4)/(SH**2-SQM*(SH-SQM))**2
15157         ENDIF
15158
15159 C...Matrix-element corrections for q + qbar -> Higgs (h0)
15160       ELSEIF(MECOR.EQ.3) THEN
15161         IF(IFLCB.EQ.2) THEN
15162           WTME=(SH**2+TH**2+2D0*(SQM-TH)*(SQM-SH))/
15163      1      (SH**2+2D0*SQM*(SQM-SH))
15164         ENDIF
15165       ENDIF
15166  
15167       RETURN
15168       END
15169  
15170 C*********************************************************************
15171  
15172 C...PYPTMI
15173 C...Handles the generation of additional interactions in the new
15174 C...multiple interactions framework.
15175 C...MODE=-1 : Initalize MI from scratch.
15176 C...MODE= 0 : Generate trial interaction. Start at PT2NOW, solve
15177 C...         Sudakov for PT2, abort if below PT2CUT.
15178 C...MODE= 1 : Accept interaction at PT2NOW and store variables.
15179 C...MODE= 2 : Decide sea/val/cmp for kicked-out quark at PT2NOW
15180 C...PT2NOW  : Starting (max) PT2 scale for evolution.
15181 C...PT2CUT  : Lower limit for evolution.
15182 C...PT2     : Result of evolution. Generated PT2 for trial interaction.
15183 C...IFAIL   : Status return code.
15184 C...         = 0: All is well.
15185 C...         < 0: Phase space exhausted, generation to be terminated.
15186 C...         > 0: Additional interaction vetoed, but continue evolution.
15187  
15188       SUBROUTINE PYPTMI(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
15189 C...Double precision and integer declarations.
15190       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15191       IMPLICIT INTEGER(I-N)
15192       INTEGER PYK,PYCHGE,PYCOMP
15193 C...Parameter statement for maximum size of showers.
15194       PARAMETER (MAXNUR=1000)
15195 C...Commonblocks.
15196       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
15197       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15198       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15199       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
15200       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
15201       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15202       COMMON/PYINT1/MINT(400),VINT(400)
15203       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15204       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
15205       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
15206       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
15207       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
15208      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
15209      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
15210       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
15211      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
15212       COMMON/PYCTAG/NCT,MCT(4000,2)
15213 C...Local arrays and saved variables.
15214       DIMENSION WDTP(0:400),WDTE(0:400,0:5),XPQ(-25:25)
15215  
15216       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,
15217      &     /PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/,/PYINTM/,
15218      &     /PYISMX/,/PYCTAG/
15219       SAVE XT2FAC,SIGS
15220  
15221       IFAIL=0
15222 C...Set MI subprocess = QCD 2 -> 2.
15223       ISUB=96
15224  
15225 C----------------------------------------------------------------------
15226 C...MODE=-1: Initialize from scratch
15227       IF (MODE.EQ.-1) THEN
15228 C...Initialize PT2 array.
15229         PT2MI(1)=VINT(54)
15230 C...Initialize list of incoming beams and partons from two sides.
15231         DO 110 JS=1,2
15232           DO 100 MI=1,240
15233             IMI(JS,MI,1)=0
15234             IMI(JS,MI,2)=0
15235   100     CONTINUE
15236           NMI(JS)=1
15237           IMI(JS,1,1)=MINT(84)+JS
15238           IMI(JS,1,2)=0
15239           XMI(JS,1)=VINT(40+JS)
15240 C...Rescale x values to fractions of photon energy.
15241           IF(MINT(18+JS).EQ.1) XMI(JS,1)=VINT(40+JS)/VINT(154+JS)
15242 C...Hard reset: hard interaction initiators motherless by definition.
15243           K(MINT(84)+JS,3)=2+JS
15244           K(MINT(84)+JS,4)=MOD(K(MINT(84)+JS,4),MSTU(5))
15245           K(MINT(84)+JS,5)=MOD(K(MINT(84)+JS,5),MSTU(5))
15246   110   CONTINUE
15247         IMISEP(0)=MINT(84)
15248         IMISEP(1)=N
15249         IF (MOD(MSTP(81),10).GE.1) THEN
15250           IF(MSTP(82).LE.1) THEN
15251             SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0
15252      &           ,5))
15253             IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
15254      &           VINT(317)/(VINT(318)*VINT(320))
15255             XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
15256           ELSE
15257             XT2FAC=VINT(146)*VINT(148)*XSEC(ISUB,1)/
15258      &           MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
15259           ENDIF
15260         ENDIF
15261 C...Zero entries relating to scatterings beyond the first.
15262         DO 120 MI=2,240
15263           IMI(1,MI,1)=0
15264           IMI(2,MI,1)=0
15265           IMI(1,MI,2)=0
15266           IMI(2,MI,2)=0
15267           IMISEP(MI)=IMISEP(1)
15268           PT2MI(MI)=0D0
15269           XMI(1,MI)=0D0
15270           XMI(2,MI)=0D0
15271   120   CONTINUE
15272 C...Initialize factors for PDF reshaping.
15273         DO 140 JS=1,2
15274           KFBEAM(JS)=MINT(10+JS)
15275           IF(MINT(18+JS).EQ.1) KFBEAM(JS)=22
15276           KFABM=IABS(KFBEAM(JS))
15277           KFSBM=ISIGN(1,KFBEAM(JS))
15278  
15279 C...Zero flavour content of incoming beam particle.
15280           KFIVAL(JS,1)=0
15281           KFIVAL(JS,2)=0
15282           KFIVAL(JS,3)=0
15283 C...  Flavour content of baryon.
15284           IF(KFABM.GT.1000) THEN
15285             KFIVAL(JS,1)=KFSBM*MOD(KFABM/1000,10)
15286             KFIVAL(JS,2)=KFSBM*MOD(KFABM/100,10)
15287             KFIVAL(JS,3)=KFSBM*MOD(KFABM/10,10)
15288 C...  Flavour content of pi+-, K+-.
15289           ELSEIF(KFABM.EQ.211) THEN
15290             KFIVAL(JS,1)=KFSBM*2
15291             KFIVAL(JS,2)=-KFSBM
15292           ELSEIF(KFABM.EQ.321) THEN
15293             KFIVAL(JS,1)=-KFSBM*3
15294             KFIVAL(JS,2)=KFSBM*2
15295 C...  Flavour content of pi0, gamma, K0S, K0L not defined yet.
15296           ENDIF
15297  
15298 C...Zero initial valence and companion content.
15299           DO 130 IFL=-6,6
15300             NVC(JS,IFL)=0
15301   130     CONTINUE
15302   140   CONTINUE
15303 C...Set up colour line tags starting from hard interaction initiators.
15304         NCT=0
15305 C...Reset colour tag array and colour processing flags.
15306         DO 150 I=IMISEP(0)+1,N
15307           MCT(I,1)=0
15308           MCT(I,2)=0
15309           K(I,4)=MOD(K(I,4),MSTU(5)**2)
15310           K(I,5)=MOD(K(I,5),MSTU(5)**2)
15311   150   CONTINUE
15312 C...  Consider each side in turn.
15313         DO 170 JS=1,2
15314           I1=IMI(JS,1,1)
15315           I2=IMI(3-JS,1,1)
15316           DO 160 JCS=4,5
15317             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
15318      &           GOTO 160
15319             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 160
15320             KCS=JCS
15321             CALL PYCTTR(I1,KCS,I2)
15322             IF(MINT(51).NE.0) RETURN
15323   160     CONTINUE
15324   170   CONTINUE
15325  
15326 C...Range checking for companion quark pdf large-x param.
15327         IF (MSTP(87).LT.0) THEN
15328           CALL PYERRM(19,'(PYPTMI:) MSTP(87) out of range. Forced'//
15329      &         ' MSTP(87)=0')
15330           MSTP(87)=0
15331         ELSEIF (MSTP(87).GT.4) THEN
15332           CALL PYERRM(19,'(PYPTMI:) MSTP(87) out of range. Forced'//
15333      &         ' MSTP(87)=4')
15334           MSTP(87)=4
15335         ENDIF
15336  
15337 C----------------------------------------------------------------------
15338 C...MODE=0: Generate trial interaction. Return codes:
15339 C...IFAIL < 0: Phase space exhausted, generation to be terminated.
15340 C...IFAIL = 0: Additional interaction generated at PT2.
15341 C...IFAIL > 0: Additional interaction vetoed, but continue evolution.
15342       ELSEIF (MODE.EQ.0) THEN
15343 C...Abolute MI max scale = VINT(62)
15344         XT2=4D0*MIN(PT2NOW,VINT(62))/VINT(2)
15345   180   IF(MSTP(82).LE.1) THEN
15346           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
15347           IF(XT2.LT.VINT(149)) IFAIL=-2
15348         ELSE
15349           IF(XT2.LE.0.01001D0*VINT(149)) THEN
15350             IFAIL=-3
15351           ELSE
15352             XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
15353      &           LOG(PYR(0)))-VINT(149)
15354           ENDIF
15355         ENDIF
15356 C...Also exit if below lower limit or if higher trial branching
15357 C...already found.
15358         PT2=0.25D0*VINT(2)*XT2
15359         IF (PT2.LE.PT2CUT) IFAIL=-4
15360         IF (PT2.LE.PT2MX) IFAIL=-5
15361         IF (IFAIL.NE.0) THEN
15362           PT2=0D0
15363           RETURN
15364         ENDIF
15365         IF(MSTP(82).GE.2) PT2=MAX(0.25D0*VINT(2)*0.01D0*VINT(149),PT2)
15366         VINT(25)=4D0*PT2/VINT(2)
15367         XT2=VINT(25)
15368  
15369 C...Choose tau and y*. Calculate cos(theta-hat).
15370         IF(PYR(0).LE.COEF(ISUB,1)) THEN
15371           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
15372           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
15373         ELSE
15374           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
15375         ENDIF
15376         VINT(21)=TAU
15377 C...New: require shat > 1.
15378         IF(TAU*VINT(2).LT.1D0) GOTO 180
15379         CALL PYKLIM(2)
15380         RYST=PYR(0)
15381         MYST=1
15382         IF(RYST.GT.COEF(ISUB,8)) MYST=2
15383         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
15384         CALL PYKMAP(2,MYST,PYR(0))
15385         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
15386  
15387 C...Check that x not used up. Accept or reject kinematical variables.
15388         X1M=SQRT(TAU)*EXP(VINT(22))
15389         X2M=SQRT(TAU)*EXP(-VINT(22))
15390         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 180
15391         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
15392         CALL PYSIGH(NCHN,SIGS)
15393         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
15394         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 180
15395         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS/VINT(320)
15396  
15397 C...Save if highest PT so far.
15398         IF (PT2.GT.PT2MX) THEN
15399           JSMX=0
15400           MIMX=MINT(31)+1
15401           PT2MX=PT2
15402         ENDIF
15403  
15404 C----------------------------------------------------------------------
15405 C...MODE=1: Generate and save accepted scattering.
15406       ELSEIF (MODE.EQ.1) THEN
15407         PT2=PT2NOW
15408 C...Reset K, P, V, and MCT vectors.
15409         DO 200 I=N+1,N+4
15410           DO 190 J=1,5
15411             K(I,J)=0
15412             P(I,J)=0D0
15413             V(I,J)=0D0
15414   190     CONTINUE
15415           MCT(I,1)=0
15416           MCT(I,2)=0
15417   200   CONTINUE
15418  
15419         NTRY=0
15420 C...Choose flavour of reacting partons (and subprocess).
15421   210   NTRY=NTRY+1
15422         IF (NTRY.GT.50) THEN
15423           CALL PYERRM(9,'(PYPTMI:) Unable to generate additional '
15424      &               //'interaction. Giving up!')
15425           MINT(51)=1
15426           RETURN
15427         ENDIF
15428         RSIGS=SIGS*PYR(0)
15429         DO 220 ICHN=1,NCHN
15430           KFL1=ISIG(ICHN,1)
15431           KFL2=ISIG(ICHN,2)
15432           ICONMI=ISIG(ICHN,3)
15433           RSIGS=RSIGS-SIGH(ICHN)
15434           IF(RSIGS.LE.0D0) GOTO 230
15435   220   CONTINUE
15436  
15437 C...Reassign to appropriate process codes.
15438   230   ISUBMI=ICONMI/10
15439         ICONMI=MOD(ICONMI,10)
15440  
15441 C...Choose new quark flavour for annihilation graphs
15442         IF(ISUBMI.EQ.12.OR.ISUBMI.EQ.53) THEN
15443           SH=VINT(21)*VINT(2)
15444           CALL PYWIDT(21,SH,WDTP,WDTE)
15445   240     RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
15446           DO 250 I=1,MDCY(21,3)
15447             KFLF=KFDP(I+MDCY(21,2)-1,1)
15448             RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
15449             IF(RKFL.LE.0D0) GOTO 260
15450   250     CONTINUE
15451   260     IF(ISUBMI.EQ.53.AND.ICONMI.LE.2) THEN
15452             IF(KFLF.GE.4) GOTO 240
15453           ELSEIF(ISUBMI.EQ.53.AND.ICONMI.LE.4) THEN
15454             KFLF=4
15455             ICONMI=ICONMI-2
15456           ELSEIF(ISUBMI.EQ.53) THEN
15457             KFLF=5
15458             ICONMI=ICONMI-4
15459           ENDIF
15460         ENDIF
15461  
15462 C...Final state flavours and colour flow: default values
15463         JS=1
15464         KFL3=KFL1
15465         KFL4=KFL2
15466         KCC=20
15467         KCS=ISIGN(1,KFL1)
15468  
15469         IF(ISUBMI.EQ.11) THEN
15470 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
15471           KCC=ICONMI
15472           IF(KFL1*KFL2.LT.0) KCC=KCC+2
15473  
15474         ELSEIF(ISUBMI.EQ.12) THEN
15475 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
15476           KFL3=ISIGN(KFLF,KFL1)
15477           KFL4=-KFL3
15478           KCC=4
15479  
15480         ELSEIF(ISUBMI.EQ.13) THEN
15481 C...f + fbar -> g + g; th arbitrary
15482           KFL3=21
15483           KFL4=21
15484           KCC=ICONMI+4
15485  
15486         ELSEIF(ISUBMI.EQ.28) THEN
15487 C...f + g -> f + g; th = (p(f)-p(f))**2
15488           IF(KFL1.EQ.21) JS=2
15489           KCC=ICONMI+6
15490           IF(KFL1.EQ.21) KCC=KCC+2
15491           IF(KFL1.NE.21) KCS=ISIGN(1,KFL1)
15492           IF(KFL2.NE.21) KCS=ISIGN(1,KFL2)
15493  
15494         ELSEIF(ISUBMI.EQ.53) THEN
15495 C...g + g -> f + fbar; th arbitrary
15496           KCS=(-1)**INT(1.5D0+PYR(0))
15497           KFL3=ISIGN(KFLF,KCS)
15498           KFL4=-KFL3
15499           KCC=ICONMI+10
15500  
15501         ELSEIF(ISUBMI.EQ.68) THEN
15502 C...g + g -> g + g; th arbitrary
15503           KCC=ICONMI+12
15504           KCS=(-1)**INT(1.5D0+PYR(0))
15505         ENDIF
15506  
15507 C...Check that massive sea quarks have non-zero phase space for g -> Q Q
15508         IF (IABS(KFL3).EQ.4.OR.IABS(KFL4).EQ.4.OR.IABS(KFL3).EQ.5
15509      &       .OR.IABS(KFL4).EQ.5) THEN
15510           RMMAX2=MAX(PMAS(PYCOMP(KFL3),1),PMAS(PYCOMP(KFL4),1))**2
15511           IF (PT2.LE.1.05*RMMAX2) THEN
15512             IF (NTRY.EQ.1) CALL PYERRM(9,'(PYPTMI:) Heavy quarks'
15513      &           //' created below threshold. Rejected.')
15514             GOTO 210
15515           ENDIF
15516         ENDIF
15517  
15518 C...Store flavours of scattering.
15519         MINT(13)=KFL1
15520         MINT(14)=KFL2
15521         MINT(15)=KFL1
15522         MINT(16)=KFL2
15523         MINT(21)=KFL3
15524         MINT(22)=KFL4
15525  
15526 C...Set flavours and mothers of scattering partons.
15527         K(N+1,1)=14
15528         K(N+2,1)=14
15529         K(N+3,1)=3
15530         K(N+4,1)=3
15531         K(N+1,2)=KFL1
15532         K(N+2,2)=KFL2
15533         K(N+3,2)=KFL3
15534         K(N+4,2)=KFL4
15535         K(N+1,3)=MINT(83)+1
15536         K(N+2,3)=MINT(83)+2
15537         K(N+3,3)=N+1
15538         K(N+4,3)=N+2
15539  
15540 C...Store colour connection indices.
15541         DO 270 J=1,2
15542           JC=J
15543           IF(KCS.EQ.-1) JC=3-J
15544           IF(ICOL(KCC,1,JC).NE.0) K(N+1,J+3)=N+ICOL(KCC,1,JC)
15545           IF(ICOL(KCC,2,JC).NE.0) K(N+2,J+3)=N+ICOL(KCC,2,JC)
15546           IF(ICOL(KCC,3,JC).NE.0) K(N+3,J+3)=MSTU(5)*(N+ICOL(KCC,3,JC))
15547           IF(ICOL(KCC,4,JC).NE.0) K(N+4,J+3)=MSTU(5)*(N+ICOL(KCC,4,JC))
15548   270   CONTINUE
15549  
15550 C...Store incoming and outgoing partons in their CM-frame.
15551         SHR=SQRT(VINT(21))*VINT(1)
15552         P(N+1,3)=0.5D0*SHR
15553         P(N+1,4)=0.5D0*SHR
15554         P(N+2,3)=-0.5D0*SHR
15555         P(N+2,4)=0.5D0*SHR
15556         P(N+3,5)=PYMASS(K(N+3,2))
15557         P(N+4,5)=PYMASS(K(N+4,2))
15558         IF(P(N+3,5)+P(N+4,5).GE.SHR) THEN
15559           IFAIL=1
15560           RETURN
15561         ENDIF
15562         P(N+3,4)=0.5D0*(SHR+(P(N+3,5)**2-P(N+4,5)**2)/SHR)
15563         P(N+3,3)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,5)**2))
15564         P(N+4,4)=SHR-P(N+3,4)
15565         P(N+4,3)=-P(N+3,3)
15566  
15567 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
15568         PHI=PARU(2)*PYR(0)
15569         CALL PYROBO(N+3,N+4,ACOS(VINT(23)),PHI,0D0,0D0,0D0)
15570  
15571 C...Global statistics.
15572         MINT(351)=MINT(351)+1
15573         VINT(351)=VINT(351)+SQRT(P(N+3,1)**2+P(N+3,2)**2)
15574         IF (MINT(351).EQ.1) VINT(356)=SQRT(P(N+3,1)**2+P(N+3,2)**2)
15575  
15576 C...Keep track of loose colour ends and information on scattering.
15577         MINT(31)=MINT(31)+1
15578         MINT(36)=MINT(31)
15579         PT2MI(MINT(36))=PT2
15580         IMISEP(MINT(31))=N+4
15581         DO 280 JS=1,2
15582           IMI(JS,MINT(31),1)=N+JS
15583           IMI(JS,MINT(31),2)=0
15584           XMI(JS,MINT(31))=VINT(40+JS)
15585           NMI(JS)=NMI(JS)+1
15586 C...Update cumulative counters
15587           VINT(142+JS)=VINT(142+JS)-VINT(40+JS)
15588           VINT(150+JS)=VINT(150+JS)+VINT(40+JS)
15589   280   CONTINUE
15590  
15591 C...Add to list of final state partons
15592         IPART(NPART+1)=N+3
15593         IPART(NPART+2)=N+4
15594         PTPART(NPART+1)=SQRT(PT2)
15595         PTPART(NPART+2)=SQRT(PT2)
15596         NPART=NPART+2
15597  
15598 C...Initialize ISR
15599         NISGEN(1,MINT(31))=0
15600         NISGEN(2,MINT(31))=0
15601  
15602 C...Update ER
15603         N=N+4
15604         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
15605           CALL PYERRM(11,'(PYMIGN:) no more memory left in PYJETS')
15606           MINT(51)=1
15607           RETURN
15608         ENDIF
15609  
15610 C...Finally, assign colour tags to new partons
15611         DO 300 JS=1,2
15612           I1=IMI(JS,MINT(31),1)
15613           I2=IMI(3-JS,MINT(31),1)
15614           DO 290 JCS=4,5
15615             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
15616      &           GOTO 290
15617             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 290
15618             KCS=JCS
15619             CALL PYCTTR(I1,KCS,I2)
15620             IF(MINT(51).NE.0) RETURN
15621   290     CONTINUE
15622   300   CONTINUE
15623  
15624 C----------------------------------------------------------------------
15625 C...MODE=2: Decide whether quarks in last scattering were valence,
15626 C...companion, or sea.
15627       ELSEIF (MODE.EQ.2) THEN
15628         JS=MINT(30)
15629         MI=MINT(36)
15630         PT2=PT2NOW
15631         KFSBM=ISIGN(1,MINT(10+JS))
15632         IFL=K(IMI(JS,MI,1),2)
15633         IMI(JS,MI,2)=0
15634         IF (IABS(IFL).GE.6) THEN
15635           IF (IABS(IFL).EQ.6) THEN
15636             CALL PYERRM(29,'(PYPTMI:) top in initial state!')
15637           ENDIF
15638           RETURN
15639         ENDIF
15640 C...Get PDFs at X(rescaled) and PT2 of the current initiator.
15641 C...(Do not include the parton itself in the X rescaling.)
15642         X=XMI(JS,MI)
15643         XRSC=X/(VINT(142+JS)+X)
15644 C...Note: XPSVC = x*pdf.
15645         MINT(30)=JS
15646         CALL PYPDFU(KFBEAM(JS),XRSC,PT2,XPQ)
15647         SEA=XPSVC(IFL,-1)
15648         VAL=XPSVC(IFL,0)
15649         CMP=0D0
15650         DO 310 IVC=1,NVC(JS,IFL)
15651           CMP=CMP+XPSVC(IFL,IVC)
15652   310   CONTINUE
15653  
15654 C...Decide (Extra factor x cancels in the dvision).
15655   320   RVCS=PYR(0)*(SEA+VAL+CMP)
15656         IVNOW=1
15657   330   IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
15658 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
15659           IVNOW=0
15660           IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
15661           IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
15662           IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
15663           IF(KFIVAL(JS,1).EQ.0) THEN
15664             IF(KFBEAM(JS).EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
15665             IF(KFBEAM(JS).EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
15666             IF((KFBEAM(JS).EQ.130.OR.KFBEAM(JS).EQ.310).AND.
15667      &           (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
15668           ELSE
15669 C...Count down valence remaining. Do not count current scattering.
15670             DO 340 I1=1,NMI(JS)
15671               IF (I1.EQ.MINT(36)) GOTO 340
15672               IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
15673      &             IVNOW=IVNOW-1
15674   340       CONTINUE
15675           ENDIF
15676           IF(IVNOW.EQ.0) GOTO 330
15677 C...Mark valence.
15678           IMI(JS,MI,2)=0
15679 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
15680           IF(KFIVAL(JS,1).EQ.0) THEN
15681             IF(KFBEAM(JS).EQ.111.OR.KFBEAM(JS).EQ.22) THEN
15682               KFIVAL(JS,1)=IFL
15683               KFIVAL(JS,2)=-IFL
15684             ELSEIF(KFBEAM(JS).EQ.130.OR.KFBEAM(JS).EQ.310) THEN
15685               KFIVAL(JS,1)=IFL
15686               IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
15687               IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
15688             ENDIF
15689           ENDIF
15690  
15691         ELSEIF (RVCS.LE.VAL+SEA) THEN
15692 C...If sea, add opposite sign companion parton. Store X and I.
15693           NVC(JS,-IFL)=NVC(JS,-IFL)+1
15694           XASSOC(JS,-IFL,NVC(JS,-IFL))=XMI(JS,MI)
15695 C...Set pointer to companion
15696           IMI(JS,MI,2)=-NVC(JS,-IFL)
15697  
15698         ELSE
15699 C...If companion, decide which one.
15700           IF (NVC(JS,IFL).EQ.0) THEN
15701             CMP=0D0
15702             CALL PYERRM(9,'(PYPTMI:) No cmp quark, but pdf != 0!')
15703             GOTO 320
15704           ENDIF
15705           CMPSUM=VAL+SEA
15706           ISEL=0
15707   350     ISEL=ISEL+1
15708           CMPSUM=CMPSUM+XPSVC(IFL,ISEL)
15709           IF (RVCS.GT.CMPSUM.AND.ISEL.LT.NVC(JS,IFL)) GOTO 350
15710 C...Find original sea (anti-)quark. Do not consider current scattering.
15711           IASSOC=0
15712           DO 360 I1=1,NMI(JS)
15713             IF (I1.EQ.MINT(36)) GOTO 360
15714             IF (K(IMI(JS,I1,1),2).NE.-IFL) GOTO 360
15715             IF (-IMI(JS,I1,2).EQ.ISEL) THEN
15716               IMI(JS,MI,2)=IMI(JS,I1,1)
15717               IMI(JS,I1,2)=IMI(JS,MI,1)
15718             ENDIF
15719   360     CONTINUE
15720 C...Mark companion "out-kicked".
15721           XASSOC(JS,IFL,ISEL)=-XASSOC(JS,IFL,ISEL)
15722         ENDIF
15723  
15724       ENDIF
15725       RETURN
15726       END
15727  
15728 C*********************************************************************
15729  
15730 C...PYFCMP: Auxiliary to PYPDFU and PYPTIS.
15731 C...Giving the x*f pdf of a companion quark, with its partner at XS,
15732 C...using an approximate gluon density like (1-X)^NPOW/X. The value
15733 C...corresponds to an unrescaled range between 0 and 1-X.
15734  
15735       FUNCTION PYFCMP(XC,XS,NPOW)
15736       IMPLICIT NONE
15737       DOUBLE PRECISION XC, XS, Y, PYFCMP,FAC
15738       INTEGER NPOW
15739  
15740       PYFCMP=0D0
15741 C...Parent gluon momentum fraction
15742       Y=XC+XS
15743       IF (Y.GE.1D0) RETURN
15744 C...Common factor (includes factor XC, since PYFCMP=x*f)
15745       FAC=3D0*XC*XS*(XC**2+XS**2)/(Y**4)
15746 C...Store normalized companion x*f distribution.
15747       IF (NPOW.LE.0) THEN
15748         PYFCMP=FAC/(2D0-XS*(3D0-XS*(3D0-2D0*XS)))
15749       ELSEIF (NPOW.EQ.1) THEN
15750         PYFCMP=FAC*(1D0-Y)/(2D0+XS**2*(-3D0+XS)+3D0*XS*LOG(XS))
15751       ELSEIF (NPOW.EQ.2) THEN
15752         PYFCMP=FAC*(1D0-Y)**2/(2D0*((1D0-XS)*(1D0+XS*(4D0+XS))
15753      &       +3D0*XS*(1D0+XS)*LOG(XS)))
15754       ELSEIF (NPOW.EQ.3) THEN
15755         PYFCMP=FAC*(1D0-Y)**3*2D0/(4D0+27D0*XS-31D0*XS**3
15756      &       +6D0*XS*LOG(XS)*(3D0+2D0*XS*(3D0+XS)))
15757       ELSEIF (NPOW.GE.4) THEN
15758         PYFCMP=FAC*(1D0-Y)**4/(2D0*(1D0+2D0*XS)*((1D0-XS)*(1D0+
15759      &       XS*(10D0+XS))+6D0*XS*LOG(XS)*(1D0+XS)))
15760       ENDIF
15761       RETURN
15762       END
15763  
15764 C*********************************************************************
15765  
15766 C...PYPCMP: Auxiliary to PYPDFU.
15767 C...Giving the momentum integral of a companion quark, with its
15768 C...partner at XS, using an approximate gluon density like (1-x)^NPOW/x.
15769 C...The value corresponds to an unrescaled range between 0 and 1-XS.
15770  
15771       FUNCTION PYPCMP(XS,NPOW)
15772       IMPLICIT NONE
15773       DOUBLE PRECISION XS, PYPCMP
15774       INTEGER NPOW
15775       IF (XS.GE.1D0.OR.XS.LE.0D0) THEN
15776         PYPCMP=0D0
15777       ELSEIF (NPOW.LE.0) THEN
15778         PYPCMP=XS*(5D0+XS*(-9D0-2D0*XS*(-3D0+XS))+3D0*LOG(XS))
15779         PYPCMP=PYPCMP/((-1D0+XS)*(2D0+XS*(-1D0+2D0*XS)))
15780       ELSEIF (NPOW.EQ.1) THEN
15781         PYPCMP=-1D0-3D0*XS+(2D0*(-1D0+XS)**2*(1D0+XS+XS**2))
15782      &       /(2D0+XS**2*(XS-3D0)+3D0*XS*LOG(XS))
15783       ELSEIF (NPOW.EQ.2) THEN
15784         PYPCMP=XS*((1D0-XS)*(19D0+XS*(43D0+4D0*XS))
15785      &       +6D0*LOG(XS)*(1D0+6D0*XS+4D0*XS**2))
15786         PYPCMP=PYPCMP/(4D0*((XS-1D0)*(1D0+XS*(4D0+XS))
15787      &       -3D0*XS*LOG(XS)*(1+XS)))
15788       ELSEIF (NPOW.EQ.3) THEN
15789         PYPCMP=3D0*XS*((XS-1)*(7D0+XS*(28D0+13D0*XS))
15790      &       -2D0*LOG(XS)*(1D0+XS*(9D0+2D0*XS*(6D0+XS))))
15791         PYPCMP=PYPCMP/(4D0+27D0*XS-31D0*XS**3
15792      &       +6D0*XS*LOG(XS)*(3D0+2D0*XS*(3D0+XS)))
15793       ELSE
15794         PYPCMP=(-9D0*XS*(XS**2-1D0)*(5D0+XS*(24D0+XS))+12D0*XS*LOG(XS)
15795      &       *(1D0+2D0*XS)*(1D0+2D0*XS*(5D0+2D0*XS)))
15796         PYPCMP=PYPCMP/(8D0*(1D0+2D0*XS)*((XS-1D0)*(1D0+XS*(10D0+XS))
15797      &       -6D0*XS*LOG(XS)*(1D0+XS)))
15798       ENDIF
15799       RETURN
15800       END
15801  
15802 C*********************************************************************
15803  
15804 C...PYUPRE
15805 C...Rearranges contents of the HEPEUP commonblock so that
15806 C...mothers precede daughters and daughters of a decay are
15807 C...listed consecutively.
15808  
15809       SUBROUTINE PYUPRE
15810  
15811 C...Double precision and integer declarations.
15812       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15813       IMPLICIT INTEGER(I-N)
15814  
15815 C...User process event common block.
15816       INTEGER MAXNUP
15817       PARAMETER (MAXNUP=500)
15818       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
15819       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
15820       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
15821      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
15822      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
15823       SAVE /HEPEUP/
15824  
15825 C...Local arrays.
15826       DIMENSION NEWPOS(0:MAXNUP),IDUPT(MAXNUP),ISTUPT(MAXNUP),
15827      &MOTUPT(2,MAXNUP),ICOUPT(2,MAXNUP),PUPT(5,MAXNUP),
15828      &VTIUPT(MAXNUP),SPIUPT(MAXNUP)
15829  
15830 C...Check whether a rearrangement is required.
15831       NEED=0
15832       DO 100 IUP=1,NUP
15833         IF(MOTHUP(1,IUP).GT.IUP) NEED=NEED+1
15834   100 CONTINUE
15835       DO 110 IUP=2,NUP
15836         IF(MOTHUP(1,IUP).LT.MOTHUP(1,IUP-1)) NEED=NEED+1
15837   110 CONTINUE
15838  
15839       IF(NEED.NE.0) THEN
15840 C...Find the new order that particles should have.
15841         NEWPOS(0)=0
15842         NNEW=0
15843         INEW=-1
15844   120   INEW=INEW+1
15845         DO 130 IUP=1,NUP
15846           IF(MOTHUP(1,IUP).EQ.NEWPOS(INEW)) THEN
15847             NNEW=NNEW+1
15848             NEWPOS(NNEW)=IUP
15849           ENDIF
15850   130   CONTINUE
15851         IF(INEW.LT.NNEW.AND.INEW.LT.NUP) GOTO 120
15852         IF(NNEW.NE.NUP) THEN
15853           CALL PYERRM(2,
15854      &    '(PYUPRE:) failed to make sense of mother pointers in HEPEUP')
15855           RETURN
15856         ENDIF
15857  
15858 C...Copy old info into temporary storage.
15859         DO 150 I=1,NUP
15860           IDUPT(I)=IDUP(I)
15861           ISTUPT(I)=ISTUP(I)
15862           MOTUPT(1,I)=MOTHUP(1,I)
15863           MOTUPT(2,I)=MOTHUP(2,I)
15864           ICOUPT(1,I)=ICOLUP(1,I)
15865           ICOUPT(2,I)=ICOLUP(2,I)
15866           DO 140 J=1,5
15867             PUPT(J,I)=PUP(J,I)
15868   140     CONTINUE
15869           VTIUPT(I)=VTIMUP(I)
15870           SPIUPT(I)=SPINUP(I)
15871   150   CONTINUE
15872  
15873 C...Copy info back into HEPEUP in right order.
15874         DO 180 I=1,NUP
15875           IOLD=NEWPOS(I)
15876           IDUP(I)=IDUPT(IOLD)
15877           ISTUP(I)=ISTUPT(IOLD)
15878           MOTHUP(1,I)=0
15879           MOTHUP(2,I)=0
15880           DO 160 IMOT=1,I-1
15881             IF(MOTUPT(1,IOLD).EQ.NEWPOS(IMOT)) MOTHUP(1,I)=IMOT
15882             IF(MOTUPT(2,IOLD).EQ.NEWPOS(IMOT)) MOTHUP(2,I)=IMOT
15883   160     CONTINUE
15884           IF(MOTHUP(2,I).GT.0.AND.MOTHUP(2,I).LT.MOTHUP(1,I)) THEN
15885             MOTHSW=MOTHUP(1,I)
15886             MOTHUP(1,I)=MOTHUP(2,I)
15887             MOTHUP(2,I)=MOTHSW
15888           ENDIF
15889           ICOLUP(1,I)=ICOUPT(1,IOLD)
15890           ICOLUP(2,I)=ICOUPT(2,IOLD)
15891           DO 170 J=1,5
15892             PUP(J,I)=PUPT(J,IOLD)
15893   170     CONTINUE
15894           VTIMUP(I)=VTIUPT(IOLD)
15895           SPINUP(I)=SPIUPT(IOLD)
15896   180   CONTINUE
15897       ENDIF
15898  
15899 c...If incoming particles are massive recalculate to put them massless.
15900       IF(PUP(5,1).NE.0D0.OR.PUP(5,2).NE.0D0) THEN
15901         PPLUS=(PUP(4,1)+PUP(3,1))+(PUP(4,2)+PUP(3,2))
15902         PMINUS=(PUP(4,1)-PUP(3,1))+(PUP(4,2)-PUP(3,2))
15903         PUP(4,1)=0.5D0*PPLUS
15904         PUP(3,1)=PUP(4,1)
15905         PUP(5,1)=0D0
15906         PUP(4,2)=0.5D0*PMINUS
15907         PUP(3,2)=-PUP(4,2)
15908         PUP(5,2)=0D0
15909       ENDIF
15910  
15911       RETURN
15912       END
15913  
15914 C*********************************************************************
15915  
15916 C...PYADSH
15917 C...Administers the generation of successive final-state showers
15918 C...in external processes.
15919  
15920       SUBROUTINE PYADSH(NFIN)
15921  
15922 C...Double precision and integer declarations.
15923       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15924       IMPLICIT INTEGER(I-N)
15925       INTEGER PYK,PYCHGE,PYCOMP
15926 C...Parameter statement for maximum size of showers.
15927       PARAMETER (MAXNUR=1000)
15928 C...Commonblocks.
15929       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
15930       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15931       COMMON/PYCTAG/NCT,MCT(4000,2)
15932       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15933       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15934       COMMON/PYINT1/MINT(400),VINT(400)
15935       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYPARS/,/PYINT1/
15936 C...Local array.
15937       DIMENSION IBEG(100),KSAV(100,5),PSUM(4),BETA(3)
15938  
15939 C...Set primary vertex.
15940       DO 100 J=1,5
15941         V(MINT(83)+5,J)=0D0
15942         V(MINT(83)+6,J)=0D0
15943         V(MINT(84)+1,J)=0D0
15944         V(MINT(84)+2,J)=0D0
15945   100 CONTINUE
15946  
15947 C...Isolate systems of particles with the same mother.
15948       NSYS=0
15949       IMS=-1
15950       DO 140 I=MINT(84)+3,NFIN
15951         IM=K(I,3)
15952         IF(IM.GT.0.AND.IM.LE.MINT(84)) IM=K(IM,3)
15953         IF(IM.NE.IMS) THEN
15954           NSYS=NSYS+1
15955           IBEG(NSYS)=I
15956           IMS=IM
15957         ENDIF
15958  
15959 C...Set production vertices.
15960         IF(IM.LE.MINT(83)+6.OR.(IM.GT.MINT(84).AND.IM.LE.MINT(84)+2))
15961      &  THEN
15962           DO 110 J=1,4
15963             V(I,J)=0D0
15964   110     CONTINUE
15965         ELSE
15966           DO 120 J=1,4
15967             V(I,J)=V(IM,J)+V(IM,5)*P(IM,J)/P(IM,5)
15968   120     CONTINUE
15969         ENDIF
15970         IF(MSTP(125).GE.1) THEN
15971           IDOC=I-MSTP(126)+4
15972           DO 130 J=1,5
15973             V(IDOC,J)=V(I,J)
15974   130     CONTINUE
15975         ENDIF
15976   140 CONTINUE
15977  
15978 C...End loop over systems. Return if no showers to be performed.
15979       IBEG(NSYS+1)=NFIN+1
15980       IF(MSTP(71).LE.0) RETURN
15981  
15982 C...Loop through systems of particles; check that sensible size.
15983       DO 270 ISYS=1,NSYS
15984         NSIZ=IBEG(ISYS+1)-IBEG(ISYS)
15985         IF(MINT(35).LE.1) THEN
15986           IF(NSIZ.EQ.1.AND.ISYS.EQ.1) THEN
15987             GOTO 270
15988           ELSEIF(NSIZ.LE.1) THEN
15989             CALL PYERRM(2,'(PYADSH:) only one particle in system')
15990             GOTO 270
15991           ELSEIF(NSIZ.GT.80) THEN
15992             CALL PYERRM(2,'(PYADSH:) more than 80 particles in system')
15993             GOTO 270
15994           ENDIF
15995         ENDIF
15996  
15997 C...Save status codes and daughters of showering particles; reset them.
15998         DO 150 J=1,4
15999           PSUM(J)=0D0
16000   150   CONTINUE
16001         DO 170 II=1,NSIZ
16002           I=IBEG(ISYS)-1+II
16003           KSAV(II,1)=K(I,1)
16004           IF(K(I,1).GT.10) THEN
16005             K(I,1)=1
16006             IF(KSAV(II,1).EQ.14) K(I,1)=3
16007           ENDIF
16008           IF(KSAV(II,1).LE.10) THEN
16009           ELSEIF(K(I,1).EQ.1) THEN
16010             KSAV(II,4)=K(I,4)
16011             KSAV(II,5)=K(I,5)
16012             K(I,4)=0
16013             K(I,5)=0
16014           ELSE
16015             KSAV(II,4)=MOD(K(I,4),MSTU(5))
16016             KSAV(II,5)=MOD(K(I,5),MSTU(5))
16017             K(I,4)=K(I,4)-KSAV(II,4)
16018             K(I,5)=K(I,5)-KSAV(II,5)
16019           ENDIF
16020           DO 160 J=1,4
16021             PSUM(J)=PSUM(J)+P(I,J)
16022   160     CONTINUE
16023   170   CONTINUE
16024  
16025 C...Perform shower.
16026         QMAX=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
16027      &  PSUM(3)**2))
16028         IF(ISYS.EQ.1) QMAX=MIN(QMAX,SQRT(PARP(71))*VINT(55))
16029         NSAV=N
16030         IF(MINT(35).LE.1) THEN
16031           IF(NSIZ.EQ.2) THEN
16032             CALL PYSHOW(IBEG(ISYS),IBEG(ISYS)+1,QMAX)
16033           ELSE
16034             CALL PYSHOW(IBEG(ISYS),-NSIZ,QMAX)
16035           ENDIF
16036  
16037 C...For external processes, first call, also ISR partons radiate.
16038 C...Can use existing PYPART list, removing partons that radiate later.
16039         ELSEIF(ISYS.EQ.1) THEN
16040           NPARTN=0
16041           DO 175 II=1,NPART
16042             IF(IPART(II).LT.IBEG(2).OR.IPART(II).GE.IBEG(NSYS+1)) THEN
16043               NPARTN=NPARTN+1
16044               IPART(NPARTN)=IPART(II)
16045               PTPART(NPARTN)=PTPART(II)
16046             ENDIF
16047  175      CONTINUE
16048           NPART=NPARTN
16049           CALL PYPTFS(1,0.5D0*QMAX,0D0,PTGEN)
16050         ELSE
16051 C...For subsequent calls use the systems excluded above.
16052           NPART=NSIZ
16053           NPARTD=0
16054           DO 180 II=1,NSIZ
16055             I=IBEG(ISYS)-1+II
16056             IPART(II)=I
16057             PTPART(II)=0.5D0*QMAX
16058   180     CONTINUE
16059           CALL PYPTFS(2,0.5D0*QMAX,0D0,PTGEN)
16060         ENDIF
16061  
16062 C...Look up showered copies of original showering particles.
16063         DO 260 II=1,NSIZ
16064           I=IBEG(ISYS)-1+II
16065           IMV=I
16066 C...Particles without daughters need not be studied.
16067           IF(KSAV(II,1).LE.10) GOTO 260
16068           IF(N.EQ.NSAV.OR.K(I,1).LE.10) THEN
16069           ELSEIF(K(I,1).EQ.11) THEN
16070   190       IMV=MOD(K(IMV,4),MSTU(5))
16071             IF(K(IMV,1).EQ.11) GOTO 190
16072           ELSE
16073             KDA1=MOD(K(I,4),MSTU(5))
16074             IF(KDA1.GT.0) THEN
16075               IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16076             ENDIF
16077             KDA2=MOD(K(I,5),MSTU(5))
16078             IF(KDA2.GT.0) THEN
16079               IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16080             ENDIF
16081             DO 200 I3=I+1,N
16082               IF(K(I3,2).EQ.K(I,2).AND.(I3.EQ.KDA1.OR.I3.EQ.KDA2))
16083      &        THEN
16084                 IMV=I3
16085                 KDA1=MOD(K(I3,4),MSTU(5))
16086                 IF(KDA1.GT.0) THEN
16087                   IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16088                 ENDIF
16089                 KDA2=MOD(K(I3,5),MSTU(5))
16090                 IF(KDA2.GT.0) THEN
16091                   IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16092                 ENDIF
16093               ENDIF
16094   200       CONTINUE
16095           ENDIF
16096  
16097 C...Restore daughter info of original partons to showered copies.
16098           IF(KSAV(II,1).GT.10) K(IMV,1)=KSAV(II,1)
16099           IF(KSAV(II,1).LE.10) THEN
16100           ELSEIF(K(I,1).EQ.1) THEN
16101             K(IMV,4)=KSAV(II,4)
16102             K(IMV,5)=KSAV(II,5)
16103           ELSE
16104             K(IMV,4)=K(IMV,4)+KSAV(II,4)
16105             K(IMV,5)=K(IMV,5)+KSAV(II,5)
16106           ENDIF
16107  
16108 C...Reset mother info of existing daughters to showered copies.
16109           DO 210 I3=IBEG(ISYS+1),NFIN
16110             IF(K(I3,3).EQ.I) K(I3,3)=IMV
16111             IF(K(I3,1).EQ.3.OR.K(I3,1).EQ.14) THEN
16112               IF(K(I3,4)/MSTU(5).EQ.I) K(I3,4)=K(I3,4)+MSTU(5)*(IMV-I)
16113               IF(K(I3,5)/MSTU(5).EQ.I) K(I3,5)=K(I3,5)+MSTU(5)*(IMV-I)
16114             ENDIF
16115   210     CONTINUE
16116  
16117 C...Boost all original daughters to new frame of showered copy.
16118 C...Also update their colour tags.
16119           IF(IMV.NE.I) THEN
16120             DO 220 J=1,3
16121               BETA(J)=(P(IMV,J)-P(I,J))/(P(IMV,4)+P(I,4))
16122   220       CONTINUE
16123             FAC=2D0/(1D0+BETA(1)**2+BETA(2)**2+BETA(3)**2)
16124             DO 230 J=1,3
16125               BETA(J)=FAC*BETA(J)
16126   230       CONTINUE
16127             DO 250 I3=IBEG(ISYS+1),NFIN
16128               IMO=I3
16129   240         IMO=K(IMO,3)
16130               IF(MSTP(128).LE.0) THEN
16131                 IF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) GOTO 240
16132                 IF(IMO.EQ.I.OR.(K(I,3).LE.MINT(84).AND.IMO.EQ.K(I,3)))
16133      &          THEN
16134                   CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
16135                   IF(MCT(I3,1).EQ.MCT(I,1)) MCT(I3,1)=MCT(IMV,1)
16136                   IF(MCT(I3,2).EQ.MCT(I,2)) MCT(I3,2)=MCT(IMV,2)
16137                 ENDIF
16138               ELSE
16139                 IF(IMO.EQ.IMV) THEN
16140                   CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
16141                   IF(MCT(I3,1).EQ.MCT(I,1)) MCT(I3,1)=MCT(IMV,1)
16142                   IF(MCT(I3,2).EQ.MCT(I,2)) MCT(I3,2)=MCT(IMV,2)
16143                 ELSEIF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) THEN
16144                   GOTO 240
16145                 ENDIF
16146               ENDIF
16147   250       CONTINUE
16148           ENDIF
16149   260   CONTINUE
16150  
16151 C...End of loop over showering systems
16152   270 CONTINUE
16153  
16154       RETURN
16155       END
16156  
16157 C*********************************************************************
16158  
16159 C...PYVETO
16160 C...Interface to UPVETO, which allows user to veto event generation
16161 C...on the parton level, after parton showers but before multiple
16162 C...interactions, beam remnants and hadronization is added.
16163  
16164       SUBROUTINE PYVETO(IVETO)
16165  
16166 C...All real arithmetic in double precision.
16167       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16168 C...Three Pythia functions return integers, so need declaring.
16169       INTEGER PYK,PYCHGE,PYCOMP
16170  
16171 C...PYTHIA commonblocks.
16172       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
16173       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16174       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16175       COMMON/PYINT1/MINT(400),VINT(400)
16176       SAVE /PYJETS/,/PYPARS/,/PYINT1/
16177 C...HEPEVT commonblock.
16178       PARAMETER (NMXHEP=4000)
16179       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
16180      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
16181       DOUBLE PRECISION PHEP,VHEP
16182       SAVE /HEPEVT/
16183 C...Local array.
16184       DIMENSION IRESO(100)
16185  
16186 C...Define longitudinal boost from initiator rest frame to cm frame.
16187       IF(MINT(35).EQ.3) THEN
16188 C...The last frame is different depending upon old and new shower
16189         GAMMA=1D0
16190         GABEZ=0D0
16191       ELSE
16192         GAMMA=0.5D0*(VINT(141)+VINT(142))/SQRT(VINT(141)*VINT(142))
16193         GABEZ=0.5D0*(VINT(141)-VINT(142))/SQRT(VINT(141)*VINT(142))
16194       ENDIF
16195  
16196 C... Reset counters.
16197       NEVHEP=0
16198       NHEP=0
16199       NRESO=0
16200       
16201 C...Oth pass: identify beam and incoming partons
16202       DO 140 I=MINT(83)+1,MINT(83)+6
16203         ISTORE=0
16204 C       IF(K(I,2).EQ.94.OR.K(I,2).EQ.0) THEN
16205         IF(K(I,2).EQ.94) THEN
16206
16207         ELSE
16208           ISTORE=1
16209           NHEP=NHEP+1
16210           II=NHEP
16211           NRESO=NRESO+1
16212           IRESO(NRESO)=I
16213           IMOTH=K(I,3)
16214         ENDIF
16215         IF(ISTORE.EQ.1) THEN
16216 C...Copy parton info, boosting momenta along z axis to cm frame.
16217           ISTHEP(II)=2
16218           IDHEP(II)=K(I,2)
16219           PHEP(1,II)=P(I,1)
16220           PHEP(2,II)=P(I,2)
16221           IF(II.GT.2) THEN
16222             PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
16223             PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
16224           ELSE
16225             PHEP(3,II)=P(I,3)
16226             PHEP(4,II)=P(I,4)
16227           ENDIF
16228           PHEP(5,II)=P(I,5)
16229 C...Store one mother. Rest of history and vertex info zeroed.
16230           JMOHEP(1,II)=IMOTH
16231           JMOHEP(2,II)=0
16232           JDAHEP(1,II)=0
16233           JDAHEP(2,II)=0
16234           VHEP(1,II)=0D0
16235           VHEP(2,II)=0D0
16236           VHEP(3,II)=0D0
16237           VHEP(4,II)=0D0
16238         ENDIF
16239  140  CONTINUE
16240
16241 C...First pass: identify final locations of resonances
16242 C...and of their daughters before showering.
16243       DO 150 I=MINT(84)+3,N
16244         ISTORE=0
16245         IMOTH=0
16246  
16247 C...Skip shower CM frame documentation lines.
16248         IF(K(I,2).EQ.94) THEN
16249  
16250 C...  Store a new intermediate product, when mother in documentation.
16251         ELSEIF(MSTP(128).EQ.0.AND.K(I,3).GT.MINT(83)+6.AND.
16252      &  K(I,3).LE.MINT(84)) THEN
16253           ISTORE=1
16254           NHEP=NHEP+1
16255           II=NHEP
16256           NRESO=NRESO+1
16257           IRESO(NRESO)=I
16258           IMOTH=K(K(I,3),3)
16259  
16260 C...  Store a new intermediate product, when mother in main section.
16261         ELSEIF(MSTP(128).EQ.1.AND.K(I-MINT(84)+MINT(83)+4,1).EQ.21.AND.
16262      &  K(I-MINT(84)+MINT(83)+4,2).EQ.K(I,2)) THEN
16263           ISTORE=1
16264           NHEP=NHEP+1
16265           II=NHEP
16266           NRESO=NRESO+1
16267           IRESO(NRESO)=I
16268           IMOTH=MAX(0,K(I-MINT(84)+MINT(83)+4,3))
16269         ENDIF
16270   
16271         IF(ISTORE.EQ.1) THEN
16272 C...Copy parton info, boosting momenta along z axis to cm frame.
16273           ISTHEP(II)=2
16274           IDHEP(II)=K(I,2)
16275           PHEP(1,II)=P(I,1)
16276           PHEP(2,II)=P(I,2)
16277           PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
16278           PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
16279           PHEP(5,II)=P(I,5)
16280 C...Store one mother. Rest of history and vertex info zeroed.
16281           JMOHEP(1,II)=IMOTH
16282           JMOHEP(2,II)=0
16283           JDAHEP(1,II)=I
16284           JDAHEP(2,II)=0
16285           VHEP(1,II)=0D0
16286           VHEP(2,II)=0D0
16287           VHEP(3,II)=0D0
16288           VHEP(4,II)=0D0
16289         ENDIF
16290  150  CONTINUE
16291
16292 C...Second pass: identify current set of "final" partons.
16293       DO 200 I=MINT(84)+3,N
16294         ISTORE=0
16295         IMOTH=0
16296  
16297 C...Store a final parton.
16298         IF(K(I,1).GE.1.AND.K(I,1).LE.10) THEN
16299           ISTORE=1
16300           NHEP=NHEP+1
16301           II=NHEP
16302 C..Trace it back through shower, to check if from documented particle.
16303           IHIST=I
16304           ISAVE=IHIST
16305   160     CONTINUE
16306           IF(IHIST.GT.MINT(84)) THEN
16307             IF(K(IHIST,2).EQ.94) IHIST=K(IHIST,3)+(ISAVE-1-IHIST)
16308             DO 170 IRI=1,NRESO
16309               IF(IHIST.EQ.IRESO(IRI)) IMOTH=IRI
16310   170       CONTINUE
16311             ISAVE=IHIST
16312             IHIST=K(IHIST,3)
16313             IF(IMOTH.EQ.0) GOTO 160
16314           ELSEIF(IHIST.LE.4) THEN
16315             IF(IHIST.EQ.1.OR.IHIST.EQ.2) THEN
16316               ISTORE=0
16317               NHEP=NHEP-1
16318             ELSE
16319               IMOTH=IHIST
16320             ENDIF
16321           ENDIF
16322         ENDIF
16323  
16324         IF(ISTORE.EQ.1) THEN
16325 C...Copy parton info, boosting momenta along z axis to cm frame.
16326           ISTHEP(II)=1
16327           IDHEP(II)=K(I,2)
16328           PHEP(1,II)=P(I,1)
16329           PHEP(2,II)=P(I,2)
16330           PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
16331           PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
16332           PHEP(5,II)=P(I,5)
16333 C...Store one mother. Rest of history and vertex info zeroed.
16334           JMOHEP(1,II)=IMOTH
16335           JMOHEP(2,II)=0
16336           JDAHEP(1,II)=0
16337           JDAHEP(2,II)=0
16338           VHEP(1,II)=0D0
16339           VHEP(2,II)=0D0
16340           VHEP(3,II)=0D0
16341           VHEP(4,II)=0D0
16342         ENDIF
16343   200 CONTINUE
16344
16345 C...Call user-written routine to decide whether to keep events.
16346       CALL UPVETO(IVETO)
16347  
16348       RETURN
16349       END
16350 C*********************************************************************
16351  
16352 C...PYRESD
16353 C...Allows resonances to decay (including parton showers for hadronic
16354 C...channels).
16355  
16356       SUBROUTINE PYRESD(IRES)
16357  
16358 C...Double precision and integer declarations.
16359       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16360       IMPLICIT INTEGER(I-N)
16361       INTEGER PYK,PYCHGE,PYCOMP
16362 C...Parameter statement to help give large particle numbers.
16363       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
16364      &KEXCIT=4000000,KDIMEN=5000000)
16365 C...Parameter statement for maximum size of showers.
16366       PARAMETER (MAXNUR=1000)
16367 C...Commonblocks.
16368       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
16369       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
16370       COMMON/PYCTAG/NCT,MCT(4000,2)
16371       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16372       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
16373       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
16374       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
16375       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16376       COMMON/PYINT1/MINT(400),VINT(400)
16377       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
16378       COMMON/PYINT4/MWID(500),WIDS(500,5)
16379       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,
16380      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/
16381 C...Local arrays and complex and character variables.
16382       DIMENSION IREF(50,8),KDCY(3),KFL1(3),KFL2(3),KFL3(3),KEQL(3),
16383      &KCQM(3),KCQ1(3),KCQ2(3),KCQ3(3),NSD(3),PMMN(3),ILIN(6),
16384      &HGZ(3,3),COUP(6,4),CORL(2,2,2),PK(6,4),PKK(6,6),CTHE(3),
16385      &PHI(3),WDTP(0:400),WDTE(0:400,0:5),DPMO(5),XM(5),VDCY(4),
16386      &ITJUNC(3),CTM2(3),KCQ(0:10),IANT(3),ITRI(3),IOCT(3)
16387       COMPLEX FGK,HA(6,6),HC(6,6)
16388       REAL TIR,UIR
16389       CHARACTER CODE*9,MASS*9
16390  
16391 C...The F, Xi and Xj functions of Gunion and Kunszt
16392 C...(Phys. Rev. D33, 665, plus errata from the authors).
16393       FGK(I1,I2,I3,I4,I5,I6)=4.*HA(I1,I3)*HC(I2,I6)*(HA(I1,I5)*
16394      &HC(I1,I4)+HA(I3,I5)*HC(I3,I4))
16395       DIGK(DT,DU)=-4D0*D34*D56+DT*(3D0*DT+4D0*DU)+DT**2*(DT*DU/
16396      &(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+2D0*(D34/D56+D56/D34))
16397       DJGK(DT,DU)=8D0*(D34+D56)**2-8D0*(D34+D56)*(DT+DU)-6D0*DT*DU-
16398      &2D0*DT*DU*(DT*DU/(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+
16399      &2D0*(D34/D56+D56/D34))
16400  
16401 C...Some general constants.
16402       XW=PARU(102)
16403       XWV=XW
16404       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
16405       XW1=1D0-XW
16406       SQMZ=PMAS(23,1)**2
16407  
16408       GMMZ=PMAS(23,1)*PMAS(23,2)
16409       SQMW=PMAS(24,1)**2
16410       GMMW=PMAS(24,1)*PMAS(24,2)
16411       SH=VINT(44)
16412  
16413 C...Boost and rotate to rest frame of incoming partons,
16414 C...to get proper amount of smearing of decay angles.
16415       IBST=0
16416       IF(IRES.EQ.0) THEN
16417         IBST=1
16418         ETOTIN=P(MINT(84)+1,4)+P(MINT(84)+2,4)
16419         BEXIN=(P(MINT(84)+1,1)+P(MINT(84)+2,1))/ETOTIN
16420         BEYIN=(P(MINT(84)+1,2)+P(MINT(84)+2,2))/ETOTIN
16421         BEZIN=(P(MINT(84)+1,3)+P(MINT(84)+2,3))/ETOTIN
16422         CALL PYROBO(MINT(83)+7,N,0D0,0D0,-BEXIN,-BEYIN,-BEZIN)
16423         PHIIN=PYANGL(P(MINT(84)+1,1),P(MINT(84)+1,2))
16424         CALL PYROBO(MINT(83)+7,N,0D0,-PHIIN,0D0,0D0,0D0)
16425         THEIN=PYANGL(P(MINT(84)+1,3),P(MINT(84)+1,1))
16426         CALL PYROBO(MINT(83)+7,N,-THEIN,0D0,0D0,0D0,0D0)
16427       ENDIF
16428  
16429 C...Reset original resonance configuration.
16430       DO 100 JT=1,8
16431         IREF(1,JT)=0
16432   100 CONTINUE
16433  
16434 C...Define initial one, two or three objects for subprocess.
16435       IHDEC=0
16436       IF(IRES.EQ.0) THEN
16437         ISUB=MINT(1)
16438         IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
16439           IREF(1,1)=MINT(84)+2+ISET(ISUB)
16440           IREF(1,4)=MINT(83)+6+ISET(ISUB)
16441           JTMAX=1
16442         ELSEIF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.4) THEN
16443           IREF(1,1)=MINT(84)+1+ISET(ISUB)
16444           IREF(1,2)=MINT(84)+2+ISET(ISUB)
16445           IREF(1,4)=MINT(83)+5+ISET(ISUB)
16446           IREF(1,5)=MINT(83)+6+ISET(ISUB)
16447           JTMAX=2
16448         ELSEIF(ISET(ISUB).EQ.5) THEN
16449           IREF(1,1)=MINT(84)+3
16450           IREF(1,2)=MINT(84)+4
16451           IREF(1,3)=MINT(84)+5
16452           IREF(1,4)=MINT(83)+7
16453           IREF(1,5)=MINT(83)+8
16454           IREF(1,6)=MINT(83)+9
16455           JTMAX=3
16456         ENDIF
16457  
16458 C...Define original resonance for odd cases.
16459       ELSE
16460         ISUB=0
16461         IF(K(IRES,2).EQ.25.OR.K(IRES,2).EQ.35.OR.K(IRES,2).EQ.36)
16462      &  IHDEC=1
16463         IF(IHDEC.EQ.1) ISUB=3
16464         IREF(1,1)=IRES
16465         IREF(1,4)=K(IRES,3)
16466         IRESTM=IRES
16467         IF(IREF(1,4).GT.MINT(84)) THEN
16468   110     ITMPMO=IREF(1,4)
16469           IF(K(ITMPMO,2).EQ.94) THEN
16470             IREF(1,4)=K(ITMPMO,3)+(IRESTM-ITMPMO-1)
16471             IF(K(IREF(1,4),3).LE.MINT(84)) IREF(1,4)=K(IREF(1,4),3)
16472           ELSEIF(K(ITMPMO,2).EQ.K(IRES,2)) THEN
16473             IRESTM=ITMPMO
16474 C...Explicitly check that reference particle exists, otherwise stop recursion
16475             IF(ITMPMO.GT.0.AND.K(ITMPMO,3).GT.0) THEN
16476               IREF(1,4)=K(ITMPMO,3)
16477               GOTO 110
16478             ENDIF
16479           ENDIF
16480         ENDIF
16481         IF(IREF(1,4).GT.MINT(84)) THEN
16482           EMATCH=1D10
16483           IREF14=IREF(1,4)
16484           DO 120 II=MINT(83)+7,MINT(83)+MINT(4)
16485             IF(K(II,2).EQ.K(IRES,2).AND.ABS(P(II,4)-P(IREF14,4)).LT.
16486      &      EMATCH) THEN
16487               IREF(1,4)=II
16488               EMATCH=ABS(P(II,4)-P(IREF14,4))
16489             ENDIF
16490   120     CONTINUE
16491         ENDIF
16492         JTMAX=1
16493       ENDIF
16494  
16495 C...Check if initial resonance has been moved (in resonance + jet).
16496       DO 140 JT=1,3
16497         IF(IREF(1,JT).GT.0) THEN
16498           IF(K(IREF(1,JT),1).GT.10) THEN
16499             KFA=IABS(K(IREF(1,JT),2))
16500             IF(KFA.GE.6.AND.KCHG(PYCOMP(KFA),2).NE.0) THEN
16501               KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
16502               KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
16503               IF(KDA1.GT.IREF(1,JT).AND.KDA1.LE.N) THEN
16504                 IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16505               ENDIF
16506               IF(KDA2.GT.IREF(1,JT).AND.KDA2.LE.N) THEN
16507                 IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16508               ENDIF
16509               DO 130 I=IREF(1,JT)+1,N
16510                 IF(K(I,2).EQ.K(IREF(1,JT),2).AND.(I.EQ.KDA1.OR.
16511      &          I.EQ.KDA2)) THEN
16512                   IREF(1,JT)=I
16513                   KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
16514                   KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
16515                   IF(KDA1.GT.IREF(1,JT).AND.KDA1.LE.N) THEN
16516                     IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16517                   ENDIF
16518                   IF(KDA2.GT.IREF(1,JT).AND.KDA2.LE.N) THEN
16519                     IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16520                   ENDIF
16521                 ENDIF
16522   130         CONTINUE
16523             ELSE
16524               KDA=MOD(K(IREF(1,JT),4),MSTU(5))
16525               IF(MWID(PYCOMP(KFA)).NE.0.AND.KDA.GT.1) IREF(1,JT)=KDA
16526             ENDIF
16527           ENDIF
16528         ENDIF
16529   140 CONTINUE
16530  
16531 C...Set decay vertex for initial resonances
16532       DO 160 JT=1,JTMAX
16533         DO 150 I=1,4
16534           V(IREF(1,JT),I)=0D0
16535   150   CONTINUE
16536   160 CONTINUE
16537  
16538 C...Loop over decay history.
16539       NP=1
16540       IP=0
16541   170 IP=IP+1
16542       NINH=0
16543       JTMAX=2
16544       IF(IREF(IP,2).EQ.0) JTMAX=1
16545       IF(IREF(IP,3).NE.0) JTMAX=3
16546       IT4=0
16547       NSAV=N
16548  
16549 C...Check for Higgs which appears as decay product of user-process.
16550       IF(ISUB.EQ.0) THEN
16551         IHDEC=0
16552         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
16553      &  .EQ.36) IHDEC=1
16554         IF(IHDEC.EQ.1) ISUB=3
16555       ENDIF
16556  
16557 C...Start treatment of one, two or three resonances in parallel.
16558   180 N=NSAV
16559       DO 340 JT=1,JTMAX
16560         ID=IREF(IP,JT)
16561         KDCY(JT)=0
16562         KFL1(JT)=0
16563         KFL2(JT)=0
16564         KFL3(JT)=0
16565         KEQL(JT)=0
16566         NSD(JT)=ID
16567         ITJUNC(JT)=0
16568  
16569 C...Check whether particle can/is allowed to decay.
16570         IF(ID.EQ.0) GOTO 330
16571         KFA=IABS(K(ID,2))
16572         KCA=PYCOMP(KFA)
16573         IF(MWID(KCA).EQ.0) GOTO 330
16574         IF(K(ID,1).GT.10.OR.MDCY(KCA,1).EQ.0) GOTO 330
16575         IF(KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8.OR.KFA.EQ.17.OR.
16576      &  KFA.EQ.18) IT4=IT4+1
16577         K(ID,4)=MSTU(5)*(K(ID,4)/MSTU(5))
16578         K(ID,5)=MSTU(5)*(K(ID,5)/MSTU(5))
16579  
16580 C...Choose lifetime and determine decay vertex.
16581         IF(K(ID,1).EQ.5) THEN
16582           V(ID,5)=0D0
16583         ELSEIF(K(ID,1).NE.4) THEN
16584           V(ID,5)=-PMAS(KCA,4)*LOG(PYR(0))
16585         ENDIF
16586         DO 190 J=1,4
16587           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
16588   190   CONTINUE
16589  
16590 C...Determine whether decay allowed or not.
16591         MOUT=0
16592         IF(MSTJ(22).EQ.2) THEN
16593           IF(PMAS(KCA,4).GT.PARJ(71)) MOUT=1
16594         ELSEIF(MSTJ(22).EQ.3) THEN
16595           IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
16596         ELSEIF(MSTJ(22).EQ.4) THEN
16597           IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
16598           IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
16599         ENDIF
16600         IF(MOUT.EQ.1.AND.K(ID,1).NE.5) THEN
16601           K(ID,1)=4
16602           GOTO 330
16603         ENDIF
16604  
16605 C...Info for selection of decay channel: sign, pairings.
16606         IF(KCHG(KCA,3).EQ.0) THEN
16607           IPM=2
16608         ELSE
16609           IPM=(5-ISIGN(1,K(ID,2)))/2
16610         ENDIF
16611         KFB=0
16612         IF(JTMAX.EQ.2) THEN
16613           KFB=IABS(K(IREF(IP,3-JT),2))
16614         ELSEIF(JTMAX.EQ.3) THEN
16615           JT2=JT+1-3*(JT/3)
16616           KFB=IABS(K(IREF(IP,JT2),2))
16617           IF(KFB.NE.KFA) THEN
16618             JT2=JT+2-3*((JT+1)/3)
16619             KFB=IABS(K(IREF(IP,JT2),2))
16620           ENDIF
16621         ENDIF
16622  
16623 C...Select decay channel.
16624         IF(ISUB.EQ.1.OR.ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.
16625      &  ISUB.EQ.30.OR.ISUB.EQ.35.OR.ISUB.EQ.141) MINT(61)=1
16626         CALL PYWIDT(KFA,P(ID,5)**2,WDTP,WDTE)
16627         WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
16628         IF(KFB.EQ.KFA) WDTE0S=WDTE0S+WDTE(0,5)
16629         IF(WDTE0S.LE.0D0) GOTO 330
16630         RKFL=WDTE0S*PYR(0)
16631         IDL=0
16632   200   IDL=IDL+1
16633         IDC=IDL+MDCY(KCA,2)-1
16634         RKFL=RKFL-(WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4))
16635         IF(KFB.EQ.KFA) RKFL=RKFL-WDTE(IDL,5)
16636         IF(IDL.LT.MDCY(KCA,3).AND.RKFL.GT.0D0) GOTO 200
16637  
16638 C...Read out flavours and colour charges of decay channel chosen.
16639         KCQM(JT)=KCHG(KCA,2)*ISIGN(1,K(ID,2))
16640         IF(KCQM(JT).EQ.-2) KCQM(JT)=2
16641         KFL1(JT)=KFDP(IDC,1)*ISIGN(1,K(ID,2))
16642         KFC1A=PYCOMP(IABS(KFL1(JT)))
16643         IF(KCHG(KFC1A,3).EQ.0) KFL1(JT)=IABS(KFL1(JT))
16644         KCQ1(JT)=KCHG(KFC1A,2)*ISIGN(1,KFL1(JT))
16645         IF(KCQ1(JT).EQ.-2) KCQ1(JT)=2
16646         KFL2(JT)=KFDP(IDC,2)*ISIGN(1,K(ID,2))
16647         KFC2A=PYCOMP(IABS(KFL2(JT)))
16648         IF(KCHG(KFC2A,3).EQ.0) KFL2(JT)=IABS(KFL2(JT))
16649         KCQ2(JT)=KCHG(KFC2A,2)*ISIGN(1,KFL2(JT))
16650         IF(KCQ2(JT).EQ.-2) KCQ2(JT)=2
16651         KFL3(JT)=KFDP(IDC,3)*ISIGN(1,K(ID,2))
16652         KCQ3(JT)=0
16653         IF(KFL3(JT).NE.0) THEN
16654           KFC3A=PYCOMP(IABS(KFL3(JT)))
16655           IF(KCHG(KFC3A,3).EQ.0) KFL3(JT)=IABS(KFL3(JT))
16656           KCQ3(JT)=KCHG(KFC3A,2)*ISIGN(1,KFL3(JT))
16657           IF(KCQ3(JT).EQ.-2) KCQ3(JT)=2
16658         ENDIF
16659  
16660 C...Set/save further info on channel.
16661         KDCY(JT)=1
16662         IF(KFB.EQ.KFA) KEQL(JT)=MDME(IDC,1)
16663         NSD(JT)=N
16664         HGZ(JT,1)=VINT(111)
16665         HGZ(JT,2)=VINT(112)
16666         HGZ(JT,3)=VINT(114)
16667         JTZ=JT
16668  
16669 C...Select masses; to begin with assume resonances narrow.
16670         DO 220 I=1,3
16671           P(N+I,5)=0D0
16672           PMMN(I)=0D0
16673           IF(I.EQ.1) THEN
16674             KFLW=IABS(KFL1(JT))
16675             KCW=KFC1A
16676           ELSEIF(I.EQ.2) THEN
16677             KFLW=IABS(KFL2(JT))
16678             KCW=KFC2A
16679           ELSEIF(I.EQ.3) THEN
16680             IF(KFL3(JT).EQ.0) GOTO 220
16681             KFLW=IABS(KFL3(JT))
16682             KCW=KFC3A
16683           ENDIF
16684           P(N+I,5)=PMAS(KCW,1)
16685 CMRENNA++
16686 C...This prevents SUSY/t particles from becoming too light.
16687           IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
16688             PMMN(I)=PMAS(KCW,1)
16689             DO 210 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
16690               IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
16691                 PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
16692      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
16693                 IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
16694      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
16695                 PMMN(I)=MIN(PMMN(I),PMSUM)
16696               ENDIF
16697   210       CONTINUE
16698 CMRENNA--
16699           ELSEIF(KFLW.EQ.6) THEN
16700             PMMN(I)=PMAS(24,1)+PMAS(5,1)
16701           ENDIF
16702   220   CONTINUE
16703  
16704 C...Check which two out of three are widest.
16705         IWID1=1
16706         IWID2=2
16707         PWID1=PMAS(KFC1A,2)
16708         PWID2=PMAS(KFC2A,2)
16709         KFLW1=IABS(KFL1(JT))
16710         KFLW2=IABS(KFL2(JT))
16711         IF(KFL3(JT).NE.0) THEN
16712           PWID3=PMAS(KFC3A,2)
16713           IF(PWID3.GT.PWID1.AND.PWID2.GE.PWID1) THEN
16714             IWID1=3
16715             PWID1=PWID3
16716             KFLW1=IABS(KFL3(JT))
16717           ELSEIF(PWID3.GT.PWID2) THEN
16718             IWID2=3
16719             PWID2=PWID3
16720             KFLW2=IABS(KFL3(JT))
16721           ENDIF
16722         ENDIF
16723  
16724 C...If all narrow then only check that masses consistent.
16725         IF(MSTP(42).LE.0.OR.(PWID1.LT.PARP(41).AND.
16726      &  PWID2.LT.PARP(41))) THEN
16727 CMRENNA++
16728 C....Handle near degeneracy cases.
16729           IF(KFA/KSUSY1.EQ.1.OR.KFA/KSUSY1.EQ.2) THEN
16730             IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
16731               P(N+1,5)=P(ID,5)-P(N+2,5)-0.5D0
16732               IF(P(N+1,5).LT.0D0) P(N+1,5)=0D0
16733             ENDIF
16734           ENDIF
16735 CMRENNA--
16736           IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
16737             CALL PYERRM(13,'(PYRESD:) daughter masses too large')
16738             MINT(51)=1
16739             GOTO 720
16740           ELSEIF(P(N+1,5)+P(N+2,5)+P(N+3,5)+PARJ(64).GT.P(ID,5)) THEN
16741             CALL PYERRM(3,'(PYRESD:) daughter masses too large')
16742             MINT(51)=1
16743             GOTO 720
16744           ENDIF
16745  
16746 C...For three wide resonances select narrower of three
16747 C...according to BW decoupled from rest.
16748         ELSE
16749           PMTOT=P(ID,5)
16750           IF(KFL3(JT).NE.0) THEN
16751             IWID3=6-IWID1-IWID2
16752             KFLW3=IABS(KFL1(JT))+IABS(KFL2(JT))+IABS(KFL3(JT))-
16753      &      KFLW1-KFLW2
16754             LOOP=0
16755   230       LOOP=LOOP+1
16756             P(N+IWID3,5)=PYMASS(KFLW3)
16757             IF(LOOP.LE.10.AND. P(N+IWID3,5).LE.PMMN(IWID3)) GOTO 230
16758             PMTOT=PMTOT-P(N+IWID3,5)
16759           ENDIF
16760 C...Select other two correlated within remaining phase space.
16761           IF(IP.EQ.1) THEN
16762             CKIN45=CKIN(45)
16763             CKIN47=CKIN(47)
16764             CKIN(45)=MAX(PMMN(IWID1),CKIN(45))
16765             CKIN(47)=MAX(PMMN(IWID2),CKIN(47))
16766             CALL PYOFSH(2,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
16767      &      P(N+IWID2,5))
16768             CKIN(45)=CKIN45
16769             CKIN(47)=CKIN47
16770           ELSE
16771             CKIN(49)=PMMN(IWID1)
16772             CKIN(50)=PMMN(IWID2)
16773             CALL PYOFSH(5,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
16774      &      P(N+IWID2,5))
16775             CKIN(49)=0D0
16776             CKIN(50)=0D0
16777           ENDIF
16778           IF(MINT(51).EQ.1) GOTO 720
16779         ENDIF
16780  
16781 C...Begin fill decay products, with colour flow for coloured objects.
16782         MSTU10=MSTU(10)
16783         MSTU(10)=1
16784         MSTU(19)=1
16785  
16786 C...Three-body decays 
16787         IF(KFL3(JT).NE.0) THEN
16788           DO 250 I=N+1,N+3
16789             DO 240 J=1,5
16790               K(I,J)=0
16791               V(I,J)=0D0
16792   240       CONTINUE
16793             MCT(I,1)=0
16794             MCT(I,2)=0
16795   250     CONTINUE
16796           K(N+1,1)=1
16797           K(N+1,2)=KFL1(JT)
16798           K(N+2,1)=1
16799           K(N+2,2)=KFL2(JT)
16800           K(N+3,1)=1
16801           K(N+3,2)=KFL3(JT)
16802           IDIN=ID
16803
16804 C...Generate kinematics (default is flat)
16805           CALL PYTBDY(IDIN)
16806
16807 C...Set generic colour flows whenever unambiguous,
16808 C...(independently of the order of the decay products)
16809 C...Sum up total colour content
16810           NANT=0
16811           NTRI=0
16812           NOCT=0
16813           KCQ(0)=KCQM(JT)
16814           KCQ(1)=KCQ1(JT)
16815           KCQ(2)=KCQ2(JT)
16816           KCQ(3)=KCQ3(JT)
16817           DO 255 J=0,3
16818             IF (KCQ(J).EQ.-1) THEN
16819               NANT=NANT+1
16820               IANT(NANT)=N+J
16821             ELSEIF (KCQ(J).EQ.1) THEN
16822               NTRI=NTRI+1              
16823               ITRI(NTRI)=N+J
16824             ELSEIF (KCQ(J).EQ.2) THEN 
16825               NOCT=NOCT+1
16826               IOCT(NOCT)=N+J
16827             ENDIF
16828  255      CONTINUE
16829           
16830 C...Set color flow for generic 1 -> N processes (N arbitrary)
16831           IF (NTRI.EQ.0.AND.NANT.EQ.0.AND.NOCT.EQ.0) THEN
16832 C...All singlets: do nothing
16833             
16834           ELSEIF (NOCT.EQ.2.AND.NTRI.EQ.0.AND.NANT.EQ.0) THEN
16835 C...Two octets, zero triplets, n singlets:
16836             IF (KCQ(0).EQ.2) THEN
16837 C...8 -> 8 + n(1) 
16838               K(ID,4)=K(ID,4)+IOCT(2)
16839               K(ID,5)=K(ID,5)+IOCT(2)
16840               K(IOCT(2),1)=3
16841               K(IOCT(2),4)=MSTU(5)*ID
16842               K(IOCT(2),5)=MSTU(5)*ID
16843               MCT(IOCT(2),1)=MCT(ID,1)
16844               MCT(IOCT(2),2)=MCT(ID,2)
16845             ELSE
16846 C...1 -> 8 + 8 + n(1)
16847               K(IOCT(1),1)=3
16848               K(IOCT(1),4)=MSTU(5)*IOCT(2)
16849               K(IOCT(1),5)=MSTU(5)*IOCT(2)
16850               K(IOCT(2),1)=3
16851               K(IOCT(2),4)=MSTU(5)*IOCT(1)
16852               K(IOCT(2),5)=MSTU(5)*IOCT(1)
16853               NCT=NCT+1
16854               MCT(IOCT(1),1)=NCT
16855               MCT(IOCT(2),2)=NCT
16856               NCT=NCT+1
16857               MCT(IOCT(2),1)=NCT
16858               MCT(IOCT(1),2)=NCT
16859             ENDIF
16860             
16861           ELSEIF (NTRI+NANT.EQ.2.AND.NOCT.EQ.0) THEN
16862 C...Two triplets, zero octets, n singlets.            
16863             IF (KCQ(0).EQ.1) THEN
16864 C...3 -> 3 + n(1)
16865               K(ID,4)=K(ID,4)+ITRI(2)
16866               K(ITRI(2),1)=3
16867               K(ITRI(2),4)=MSTU(5)*ID
16868               MCT(ITRI(2),1)=MCT(ID,1)
16869             ELSEIF (KCQ(0).EQ.-1) THEN
16870 C...3bar -> 3bar + n(1)              
16871               K(ID,5)=K(ID,5)+IANT(2)
16872               K(IANT(2),1)=3
16873               K(IANT(2),5)=MSTU(5)*ID
16874               MCT(IANT(2),2)=MCT(ID,2)
16875             ELSE
16876 C...1 -> 3 + 3bar + n(1)
16877               K(ITRI(1),1)=3
16878               K(ITRI(1),4)=MSTU(5)*IANT(1)
16879               K(IANT(1),1)=3
16880               K(IANT(1),5)=MSTU(5)*ITRI(1)
16881               NCT=NCT+1
16882               MCT(ITRI(1),1)=NCT
16883               MCT(IANT(1),2)=NCT
16884             ENDIF
16885             
16886           ELSEIF(NTRI+NANT.EQ.2.AND.NOCT.EQ.1) THEN
16887 C...Two triplets, one octet, n singlets.            
16888             IF (KCQ(0).EQ.2) THEN
16889 C...8 -> 3 + 3bar + n(1)
16890               K(ID,4)=K(ID,4)+ITRI(1)
16891               K(ID,5)=K(ID,5)+IANT(1)
16892               K(ITRI(1),1)=3
16893               K(ITRI(1),4)=MSTU(5)*ID
16894               K(IANT(1),1)=3
16895               K(IANT(1),5)=MSTU(5)*ID
16896               MCT(ITRI(1),1)=MCT(ID,1)
16897               MCT(IANT(1),2)=MCT(ID,2)
16898             ELSEIF (KCQ(0).EQ.1) THEN
16899 C...3 -> 8 + 3 + n(1)
16900               K(ID,4)=K(ID,4)+IOCT(1)
16901               K(IOCT(1),1)=3
16902               K(IOCT(1),4)=MSTU(5)*ID
16903               K(IOCT(1),5)=MSTU(5)*ITRI(2)
16904               K(ITRI(2),1)=3
16905               K(ITRI(2),4)=MSTU(5)*IOCT(1)
16906               MCT(IOCT(1),1)=MCT(ID,1)
16907               NCT=NCT+1
16908               MCT(IOCT(1),2)=NCT
16909               MCT(ITRI(2),1)=NCT
16910             ELSEIF (KCQ(0).EQ.-1) THEN
16911 C...3bar -> 8 + 3bar + n(1)
16912               K(ID,5)=K(ID,5)+IOCT(1)
16913               K(IOCT(1),1)=3
16914               K(IOCT(1),5)=MSTU(5)*ID
16915               K(IOCT(1),4)=MSTU(5)*IANT(2)
16916               K(IANT(2),1)=3
16917               K(IANT(2),5)=MSTU(5)*IOCT(1)
16918               MCT(IOCT(1),2)=MCT(ID,2)
16919               NCT=NCT+1
16920               MCT(IOCT(1),1)=NCT
16921               MCT(IANT(2),2)=NCT
16922             ELSE
16923 C...1 -> 3 + 3bar + 8 + n(1)
16924               K(ITRI(1),1)=3
16925               K(ITRI(1),4)=MSTU(5)*IOCT(1)
16926               K(IOCT(1),1)=3
16927               K(IOCT(1),5)=MSTU(5)*ITRI(1)
16928               K(IOCT(1),4)=MSTU(5)*IANT(1)
16929               K(IANT(1),1)=3
16930               K(IANT(1),5)=MSTU(5)*IOCT(1)
16931               NCT=NCT+1
16932               MCT(ITRI(1),1)=NCT
16933               MCT(IOCT(1),2)=NCT
16934               NCT=NCT+1
16935               MCT(IOCT(1),1)=NCT
16936               MCT(IANT(1),2)=NCT
16937             ENDIF
16938 CPS-- End of generic cases 
16939 C...(could three octets also be handled?)
16940 C...(could (some of) the RPV cases be made generic as well?)
16941
16942 C...Special cases (= old treatment)
16943 C...Set colour flow for t -> W + b + Z.
16944           ELSEIF(KFA.EQ.6) THEN
16945             K(N+2,1)=3
16946             ISID=4
16947             IF(KCQM(JT).EQ.-1) ISID=5
16948             IDAU=N+2
16949             K(ID,ISID)=K(ID,ISID)+IDAU
16950             K(IDAU,ISID)=MSTU(5)*ID
16951  
16952 C...Set colour flow in three-body decays - programmed as special cases.
16953  
16954           ELSEIF(KFC2A.LE.6) THEN
16955             K(N+2,1)=3
16956             K(N+3,1)=3
16957             ISID=4
16958             IF(KFL2(JT).LT.0) ISID=5
16959             K(N+2,ISID)=MSTU(5)*(N+3)
16960             K(N+3,9-ISID)=MSTU(5)*(N+2)
16961 C...PS++: Bugfix 16 MAR 2006 for 3-body squark decays (e.g. via SLHA)
16962           ELSEIF(KFA.GT.KSUSY1.AND.MOD(KFA,KSUSY1).LT.10
16963      &          .AND.KFL3(JT).NE.0) THEN
16964             KQSUMA=IABS(KCQ1(JT))+IABS(KCQ2(JT))+IABS(KCQ3(JT))
16965 C...3-body decays of squarks to colour singlets plus one quark
16966             IF (KQSUMA.EQ.1) THEN
16967 C...Find quark
16968               IQ=0
16969               IF (KCQ1(JT).NE.0) IQ=1
16970               IF (KCQ2(JT).NE.0) IQ=2
16971               IF (KCQ3(JT).NE.0) IQ=3
16972               ISID=4
16973               IF (K(N+IQ,2).LT.0) ISID=5
16974               K(N+IQ,1)=3
16975               K(ID,ISID)=K(ID,ISID)+(N+IQ)
16976               K(N+IQ,ISID)=MSTU(5)*ID
16977             ENDIF
16978 C...PS--
16979           ELSEIF(KFL1(JT).EQ.KSUSY1+21) THEN
16980             K(N+1,1)=3
16981             K(N+2,1)=3
16982             K(N+3,1)=3
16983             ISID=4
16984             IF(KFL2(JT).LT.0) ISID=5
16985             K(N+1,ISID)=MSTU(5)*(N+2)
16986             K(N+1,9-ISID)=MSTU(5)*(N+3)
16987             K(N+2,ISID)=MSTU(5)*(N+1)
16988             K(N+3,9-ISID)=MSTU(5)*(N+1)
16989           ELSEIF(KFA.EQ.KSUSY1+21) THEN
16990             K(N+2,1)=3
16991             K(N+3,1)=3
16992             ISID=4
16993             IF(KFL2(JT).LT.0) ISID=5
16994             K(ID,ISID)=K(ID,ISID)+(N+2)
16995             K(ID,9-ISID)=K(ID,9-ISID)+(N+3)
16996             K(N+2,ISID)=MSTU(5)*ID
16997             K(N+3,9-ISID)=MSTU(5)*ID
16998 CMRENNA--
16999  
17000           ELSEIF(KFA.GE.KSUSY1+22.AND.KFA.LE.KSUSY1+37.AND.
17001      &    IABS(KCQ2(JT)).EQ.1) THEN
17002             K(N+2,1)=3
17003             K(N+3,1)=3
17004             ISID=4
17005             IF(KFL2(JT).LT.0) ISID=5
17006             K(N+2,ISID)=MSTU(5)*(N+3)
17007             K(N+3,9-ISID)=MSTU(5)*(N+2)
17008           ENDIF
17009            
17010           NSAV=N
17011           
17012 C...Set colour flow in three-body decays with baryon number violation.
17013 C...Neutralino and chargino decays first.
17014           KCQSUM=KCQ1(JT)+KCQ2(JT)+KCQ3(JT)
17015           IF(KCQM(JT).EQ.0.AND.IABS(KCQSUM).EQ.3) THEN
17016             ITJUNC(JT)=(1+(1-KCQ1(JT))/2)
17017             K(N+4,4)=ITJUNC(JT)*MSTU(5)
17018 C...Insert junction to keep track of colours.
17019             IF(KCQ1(JT).NE.0) K(N+1,1)=3
17020             IF(KCQ2(JT).NE.0) K(N+2,1)=3
17021             IF(KCQ3(JT).NE.0) K(N+3,1)=3
17022 C...Set special junction codes:
17023             K(N+4,1)=42
17024             K(N+4,2)=88
17025  
17026 C...Order decay products by invariant mass. (will be used in PYSTRF).
17027             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)-
17028      &      P(N+1,3)*P(N+2,3)
17029             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)-
17030      &      P(N+1,3)*P(N+3,3)
17031             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)-
17032      &      P(N+2,3)*P(N+3,3)
17033             IF(PM12.LT.PM13.AND.PM12.LT.PM23) THEN
17034               K(N+4,4)=N+3+K(N+4,4)
17035               K(N+4,5)=N+1+MSTU(5)*(N+2)
17036             ELSEIF(PM13.LT.PM23) THEN
17037               K(N+4,4)=N+2+K(N+4,4)
17038               K(N+4,5)=N+1+MSTU(5)*(N+3)
17039             ELSE
17040               K(N+4,4)=N+1+K(N+4,4)
17041               K(N+4,5)=N+2+MSTU(5)*(N+3)
17042             ENDIF
17043             DO 260 J=1,5
17044               P(N+4,J)=0D0
17045               V(N+4,J)=0D0
17046   260       CONTINUE
17047 C...Connect daughters to junction.
17048             DO 270 II=N+1,N+3
17049               K(II,4)=0
17050               K(II,5)=0
17051               K(II,ITJUNC(JT)+3)=MSTU(5)*(N+4)
17052   270       CONTINUE
17053 C...Particle counter should be stepped up one extra for junction.
17054             N=N+1
17055  
17056 C...Gluino decays.
17057           ELSEIF (KCQM(JT).EQ.2.AND.IABS(KCQSUM).EQ.3) THEN
17058             ITJUNC(JT)=(5+(1-KCQ1(JT))/2)
17059             K(N+4,4)=ITJUNC(JT)*MSTU(5)
17060 C...Insert junction to keep track of colours.
17061             IF(KCQ1(JT).NE.0) K(N+1,1)=3
17062             IF(KCQ2(JT).NE.0) K(N+2,1)=3
17063             IF(KCQ3(JT).NE.0) K(N+3,1)=3
17064             K(N+4,1)=42
17065             K(N+4,2)=88
17066             DO 280 J=1,5
17067               P(N+4,J)=0D0
17068               V(N+4,J)=0D0
17069   280       CONTINUE
17070             CTMSUM=0D0
17071             DO 290 II=N+1,N+3
17072               K(II,4)=0
17073               K(II,5)=0
17074 C...Start by connecting all daughters to junction.
17075               K(II,ITJUNC(JT)-1)=MSTU(5)*(N+4)
17076 C...Only consider colour topologies with off shell resonances.
17077               RMQ1=PMAS(PYCOMP(K(II,2)),1)
17078               RMRES=PMAS(PYCOMP(KSUSY1+IABS(K(II,2))),1)
17079               RMGLU=PMAS(PYCOMP(KSUSY1+21),1)
17080               IF (RMGLU-RMQ1.LT.RMRES) THEN
17081 C...Calculate propagators for each colour topology.
17082                 RM2Q23=RMGLU**2+RMQ1**2-2D0*(P(II,4)*P(ID,4)+P(II,1)
17083      &               *P(ID,1)+P(II,2)*P(ID,2)+P(II,3)*P(ID,3))
17084                 CTM2(II-N)=1D0/(RM2Q23-RMRES**2)**2
17085               ELSE
17086                 CTM2(II-N)=0D0
17087               ENDIF
17088               CTMSUM=CTMSUM+CTM2(II-N)
17089   290       CONTINUE
17090             CTMSUM=PYR(0)*CTMSUM
17091 C...Select colour topology J, with most off shell least likely.
17092             J=0
17093   300       J=J+1
17094             CTMSUM=CTMSUM-CTM2(J)
17095             IF (CTMSUM.GT.0D0) GOTO 300
17096 C...The lucky winner gets its colour (anti-colour) directly from gluino.
17097             K(N+J,ITJUNC(JT)-1)=MSTU(5)*ID
17098             K(ID,ITJUNC(JT)-1)=N+J+(K(ID,ITJUNC(JT)-1)/MSTU(5))*MSTU(5)
17099 C...The other gluino colour is connected to junction
17100             K(ID,10-ITJUNC(JT))=N+4+(K(ID,10-ITJUNC(JT))/MSTU(5))*
17101      &      MSTU(5)
17102             K(N+4,4)=K(N+4,4)+ID
17103 C...Lastly, connect junction to remaining daughters.
17104             K(N+4,5)=N+1+MOD(J,3)+MSTU(5)*(N+1+MOD(J+1,3))
17105 C...Particle counter should be stepped up one extra for junction.
17106             N=N+1
17107           ENDIF
17108  
17109 C...Update particle counter.
17110           N=N+3
17111
17112 C...2) Everything else two-body decay.
17113         ELSE
17114           CALL PY2ENT(N+1,KFL1(JT),KFL2(JT),P(ID,5))
17115           MCT(N-1,1)=0
17116           MCT(N-1,2)=0
17117           MCT(N,1)=0
17118           MCT(N,2)=0
17119 C...First set colour flow as if mother colour singlet.
17120           IF(KCQ1(JT).NE.0) THEN
17121             K(N-1,1)=3
17122             IF(KCQ1(JT).NE.-1) K(N-1,4)=MSTU(5)*N
17123             IF(KCQ1(JT).NE.1) K(N-1,5)=MSTU(5)*N
17124           ENDIF
17125           IF(KCQ2(JT).NE.0) THEN
17126             K(N,1)=3
17127             IF(KCQ2(JT).NE.-1) K(N,4)=MSTU(5)*(N-1)
17128             IF(KCQ2(JT).NE.1) K(N,5)=MSTU(5)*(N-1)
17129           ENDIF
17130 C...Then redirect colour flow if mother (anti)triplet.
17131           IF(KCQM(JT).EQ.0) THEN
17132           ELSEIF(KCQM(JT).NE.2) THEN
17133             ISID=4
17134             IF(KCQM(JT).EQ.-1) ISID=5
17135             IDAU=N-1
17136             IF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.2) IDAU=N
17137             K(ID,ISID)=K(ID,ISID)+IDAU
17138             K(IDAU,ISID)=MSTU(5)*ID
17139 C...Then redirect colour flow if mother octet.
17140           ELSEIF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.0) THEN
17141             IDAU=N-1
17142             IF(KCQ1(JT).EQ.0) IDAU=N
17143             K(ID,4)=K(ID,4)+IDAU
17144             K(ID,5)=K(ID,5)+IDAU
17145             K(IDAU,4)=MSTU(5)*ID
17146             K(IDAU,5)=MSTU(5)*ID
17147           ELSE
17148             ISID=4
17149             IF(KCQ1(JT).EQ.-1) ISID=5
17150             IF(KCQ1(JT).EQ.2) ISID=INT(4.5D0+PYR(0))
17151             K(ID,ISID)=K(ID,ISID)+(N-1)
17152             K(ID,9-ISID)=K(ID,9-ISID)+N
17153             K(N-1,ISID)=MSTU(5)*ID
17154             K(N,9-ISID)=MSTU(5)*ID
17155           ENDIF
17156  
17157 C...Insert junction
17158           IF(IABS(KCQ1(JT)+KCQ2(JT)-KCQM(JT)).EQ.3) THEN
17159             N=N+1
17160 C...~q* mother: type 3 junction. ~q mother: type 4.
17161             ITJUNC(JT)=(7+KCQM(JT))/2
17162 C...Specify junction KF and set colour flow from junction
17163             K(N,1)=42
17164             K(N,2)=88
17165             K(N,3)=ID
17166 C...Junction type encoded together with mother:
17167             K(N,4)=ID+ITJUNC(JT)*MSTU(5)
17168             K(N,5)=N-1+MSTU(5)*(N-2)
17169 C...Zero P and V for junction (V filled later)
17170             DO 310 J=1,5
17171               P(N,J)=0D0
17172               V(N,J)=0D0
17173   310       CONTINUE
17174 C...Set colour flow from mother to junction
17175             K(ID,8-ITJUNC(JT))= N + MSTU(5)*(K(ID,8-ITJUNC(JT))/MSTU(5))
17176 C...Set colour flow from daughters to junction
17177             DO 320 II=N-2,N-1
17178               K(II,4) = 0
17179               K(II,5) = 0
17180 C...(Anti-)colour mother is junction.
17181               K(II,1+ITJUNC(JT)) = MSTU(5)*(N)
17182   320       CONTINUE
17183           ENDIF
17184         ENDIF
17185  
17186 C...End loop over resonances for daughter flavour and mass selection.
17187         MSTU(10)=MSTU10
17188   330   IF(MWID(KCA).NE.0.AND.(KFL1(JT).EQ.0.OR.KFL3(JT).NE.0))
17189      &  NINH=NINH+1
17190         IF(IRES.GT.0.AND.MWID(KCA).NE.0.AND.MDCY(KCA,1).NE.0.AND.
17191      &  KFL1(JT).EQ.0) THEN
17192           WRITE(CODE,'(I9)') K(ID,2)
17193           WRITE(MASS,'(F9.3)') P(ID,5)
17194           CALL PYERRM(3,'(PYRESD:) Failed to decay particle'//
17195      &    CODE//' with mass'//MASS)
17196           MINT(51)=1
17197           GOTO 720
17198         ENDIF
17199   340 CONTINUE
17200  
17201 C...Check for allowed combinations. Skip if no decays.
17202       IF(JTMAX.EQ.1) THEN
17203         IF(KDCY(1).EQ.0) GOTO 710
17204       ELSEIF(JTMAX.EQ.2) THEN
17205         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0) GOTO 710
17206         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 180
17207         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 180
17208       ELSEIF(JTMAX.EQ.3) THEN
17209         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0.AND.KDCY(3).EQ.0) GOTO 710
17210         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 180
17211         IF(KEQL(1).EQ.4.AND.KEQL(3).EQ.4) GOTO 180
17212         IF(KEQL(2).EQ.4.AND.KEQL(3).EQ.4) GOTO 180
17213         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 180
17214         IF(KEQL(1).EQ.5.AND.KEQL(3).EQ.5) GOTO 180
17215         IF(KEQL(2).EQ.5.AND.KEQL(3).EQ.5) GOTO 180
17216       ENDIF
17217  
17218 C...Special case: matrix element option for Z0 decay to quarks.
17219       IF(MSTP(48).EQ.1.AND.ISUB.EQ.1.AND.JTMAX.EQ.1.AND.
17220      &IABS(MINT(11)).EQ.11.AND.IABS(KFL1(1)).LE.5) THEN
17221  
17222 C...Check consistency of MSTJ options set.
17223         IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
17224           CALL PYERRM(6,
17225      &    '(PYRESD:) MSTJ(109) value requires MSTJ(110) = 1')
17226           MSTJ(110)=1
17227         ENDIF
17228         IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
17229           CALL PYERRM(6,
17230      &    '(PYRESD:) MSTJ(109) value requires MSTJ(111) = 0')
17231  
17232           MSTJ(111)=0
17233         ENDIF
17234  
17235 C...Select alpha_strong behaviour.
17236         MST111=MSTU(111)
17237         PAR112=PARU(112)
17238         MSTU(111)=MSTJ(108)
17239         IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
17240      &  MSTU(111)=1
17241         PARU(112)=PARJ(121)
17242         IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
17243  
17244 C...Find axial fraction in total cross section for scalar gluon model.
17245         PARJ(171)=0D0
17246         IF((IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.1).OR.
17247      &  (MSTJ(101).EQ.5.AND.MSTJ(49).EQ.1)) THEN
17248           POLL=1D0-PARJ(131)*PARJ(132)
17249           SFF=1D0/(16D0*XW*XW1)
17250           SFW=P(ID,5)**4/((P(ID,5)**2-PARJ(123)**2)**2+
17251      &    (PARJ(123)*PARJ(124))**2)
17252           SFI=SFW*(1D0-(PARJ(123)/P(ID,5))**2)
17253           VE=4D0*XW-1D0
17254           HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
17255           HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*
17256      &    (PARJ(132)-PARJ(131)))
17257           KFLC=IABS(KFL1(1))
17258           PMQ=PYMASS(KFLC)
17259           QF=KCHG(KFLC,1)/3D0
17260           VQ=1D0
17261           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,
17262      &    1D0-(2D0*PMQ/P(ID,5))**2))
17263           VF=SIGN(1D0,QF)-4D0*QF*XW
17264           RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+
17265      &    VF**2*HF1W)+VQ**3*HF1W
17266           IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
17267         ENDIF
17268  
17269 C...Choice of jet configuration.
17270         CALL PYXJET(P(ID,5),NJET,CUT)
17271         KFLC=IABS(KFL1(1))
17272         KFLN=21
17273         IF(NJET.EQ.4) THEN
17274           CALL PYX4JT(NJET,CUT,KFLC,P(ID,5),KFLN,X1,X2,X4,X12,X14)
17275         ELSEIF(NJET.EQ.3) THEN
17276           CALL PYX3JT(NJET,CUT,KFLC,P(ID,5),X1,X3)
17277         ELSE
17278           MSTJ(120)=1
17279         ENDIF
17280  
17281 C...Fill jet configuration; return if incorrect kinematics.
17282         NC=N-2
17283         IF(NJET.EQ.2.AND.MSTJ(101).NE.5) THEN
17284           CALL PY2ENT(NC+1,KFLC,-KFLC,P(ID,5))
17285         ELSEIF(NJET.EQ.2) THEN
17286           CALL PY2ENT(-(NC+1),KFLC,-KFLC,P(ID,5))
17287         ELSEIF(NJET.EQ.3) THEN
17288           CALL PY3ENT(NC+1,KFLC,21,-KFLC,P(ID,5),X1,X3)
17289         ELSEIF(KFLN.EQ.21) THEN
17290           CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
17291      &    X12,X14)
17292         ELSE
17293           CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
17294      &    X12,X14)
17295         ENDIF
17296         IF(MSTU(24).NE.0) THEN
17297           MINT(51)=1
17298           MSTU(111)=MST111
17299           PARU(112)=PAR112
17300           GOTO 720
17301         ENDIF
17302  
17303 C...Angular orientation according to matrix element.
17304         IF(MSTJ(106).EQ.1) THEN
17305           CALL PYXDIF(NC,NJET,KFLC,P(ID,5),CHIZ,THEZ,PHIZ)
17306           IF(MINT(11).LT.0) THEZ=PARU(1)-THEZ
17307           CTHE(1)=COS(THEZ)
17308           CALL PYROBO(NC+1,N,0D0,CHIZ,0D0,0D0,0D0)
17309           CALL PYROBO(NC+1,N,THEZ,PHIZ,0D0,0D0,0D0)
17310         ENDIF
17311  
17312 C...Boost partons to Z0 rest frame.
17313         CALL PYROBO(NC+1,N,0D0,0D0,P(ID,1)/P(ID,4),
17314      &  P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
17315  
17316 C...Mark decayed resonance and add documentation lines,
17317         K(ID,1)=K(ID,1)+10
17318         IDOC=MINT(83)+MINT(4)
17319         DO 360 I=NC+1,N
17320           I1=MINT(83)+MINT(4)+1
17321           K(I,3)=I1
17322           IF(MSTP(128).GE.1) K(I,3)=ID
17323           IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
17324             MINT(4)=MINT(4)+1
17325             K(I1,1)=21
17326             K(I1,2)=K(I,2)
17327             K(I1,3)=IREF(IP,4)
17328             DO 350 J=1,5
17329               P(I1,J)=P(I,J)
17330   350       CONTINUE
17331           ENDIF
17332   360   CONTINUE
17333  
17334 C...Generate parton shower.
17335         IF(MSTJ(101).EQ.5.AND.MINT(35).LE.1) THEN
17336           CALL PYSHOW(N-1,N,P(ID,5))
17337         ELSEIF(MSTJ(101).EQ.5.AND.MINT(35).GE.2) THEN
17338           NPART=2
17339           IPART(1)=N-1
17340           IPART(2)=N
17341           PTPART(1)=0.5D0*P(ID,5)
17342           PTPART(2)=PTPART(1)
17343           NCT=NCT+1
17344           IF(K(N-1,2).GT.0) THEN
17345             MCT(N-1,1)=NCT
17346             MCT(N,2)=NCT
17347           ELSE
17348             MCT(N-1,2)=NCT
17349             MCT(N,1)=NCT
17350           ENDIF
17351           CALL PYPTFS(2,0.5D0*P(ID,5),0D0,PTGEN)
17352         ENDIF
17353  
17354 C... End special case for Z0: skip ahead.
17355         MSTU(111)=MST111
17356         PARU(112)=PAR112
17357         GOTO 700
17358       ENDIF
17359  
17360 C...Order incoming partons and outgoing resonances.
17361       IF(JTMAX.EQ.2.AND.ISUB.NE.0.AND.MSTP(47).GE.1.AND.
17362      &NINH.EQ.0) THEN
17363         ILIN(1)=MINT(84)+1
17364         IF(K(MINT(84)+1,2).GT.0) ILIN(1)=MINT(84)+2
17365         IF(K(ILIN(1),2).EQ.21.OR.K(ILIN(1),2).EQ.22)
17366      &  ILIN(1)=2*MINT(84)+3-ILIN(1)
17367         ILIN(2)=2*MINT(84)+3-ILIN(1)
17368         IMIN=1
17369         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
17370      &  .EQ.36) IMIN=3
17371         IMAX=2
17372         IORD=1
17373         IF(K(IREF(IP,1),2).EQ.23) IORD=2
17374         IF(K(IREF(IP,1),2).EQ.24.AND.K(IREF(IP,2),2).EQ.-24) IORD=2
17375         IAKIPD=IABS(K(IREF(IP,IORD),2))
17376         IF(IAKIPD.EQ.25.OR.IAKIPD.EQ.35.OR.IAKIPD.EQ.36) IORD=3-IORD
17377         IF(KDCY(IORD).EQ.0) IORD=3-IORD
17378  
17379 C...Order decay products of resonances.
17380         DO 370 JT=IORD,3-IORD,3-2*IORD
17381           IF(KDCY(JT).EQ.0) THEN
17382             ILIN(IMAX+1)=NSD(JT)
17383             IMAX=IMAX+1
17384           ELSEIF(K(NSD(JT)+1,2).GT.0) THEN
17385             ILIN(IMAX+1)=N+2*JT-1
17386             ILIN(IMAX+2)=N+2*JT
17387             IMAX=IMAX+2
17388             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
17389             K(N+2*JT,2)=K(NSD(JT)+2,2)
17390           ELSE
17391             ILIN(IMAX+1)=N+2*JT
17392  
17393             ILIN(IMAX+2)=N+2*JT-1
17394             IMAX=IMAX+2
17395             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
17396             K(N+2*JT,2)=K(NSD(JT)+2,2)
17397           ENDIF
17398   370   CONTINUE
17399  
17400 C...Find charge, isospin, left- and righthanded couplings.
17401         DO 390 I=IMIN,IMAX
17402           DO 380 J=1,4
17403             COUP(I,J)=0D0
17404   380     CONTINUE
17405           KFA=IABS(K(ILIN(I),2))
17406           IF(KFA.EQ.0.OR.KFA.GT.20) GOTO 390
17407           COUP(I,1)=KCHG(KFA,1)/3D0
17408           COUP(I,2)=(-1)**MOD(KFA,2)
17409           COUP(I,4)=-2D0*COUP(I,1)*XWV
17410           COUP(I,3)=COUP(I,2)+COUP(I,4)
17411   390   CONTINUE
17412  
17413 C...Full propagator dependence and flavour correlations for 2 gamma*/Z.
17414         IF(ISUB.EQ.22) THEN
17415           DO 420 I=3,5,2
17416             I1=IORD
17417             IF(I.EQ.5) I1=3-IORD
17418             DO 410 J1=1,2
17419               DO 400 J2=1,2
17420                 CORL(I/2,J1,J2)=COUP(1,1)**2*HGZ(I1,1)*COUP(I,1)**2/
17421      &          16D0+COUP(1,1)*COUP(1,J1+2)*HGZ(I1,2)*COUP(I,1)*
17422      &          COUP(I,J2+2)/4D0+COUP(1,J1+2)**2*HGZ(I1,3)*
17423      &          COUP(I,J2+2)**2
17424   400         CONTINUE
17425   410       CONTINUE
17426   420     CONTINUE
17427           COWT12=(CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
17428      &    (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2))
17429           COMX12=(CORL(1,1,1)+CORL(1,1,2)+CORL(1,2,1)+CORL(1,2,2))*
17430      &    (CORL(2,1,1)+CORL(2,1,2)+CORL(2,2,1)+CORL(2,2,2))
17431  
17432           IF(COWT12.LT.PYR(0)*COMX12) GOTO 180
17433         ENDIF
17434       ENDIF
17435  
17436 C...Select angular orientation type - Z'/W' only.
17437       MZPWP=0
17438       IF(ISUB.EQ.141) THEN
17439         IF(PYR(0).LT.PARU(130)) MZPWP=1
17440         IF(IP.EQ.2) THEN
17441           IF(IABS(K(IREF(2,1),2)).EQ.37) MZPWP=2
17442           IAKIR=IABS(K(IREF(2,2),2))
17443           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
17444           IF(IAKIR.LE.20) MZPWP=2
17445         ENDIF
17446         IF(IP.GE.3) MZPWP=2
17447       ELSEIF(ISUB.EQ.142) THEN
17448         IF(PYR(0).LT.PARU(136)) MZPWP=1
17449         IF(IP.EQ.2) THEN
17450           IAKIR=IABS(K(IREF(2,2),2))
17451           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
17452           IF(IAKIR.LE.20) MZPWP=2
17453         ENDIF
17454         IF(IP.GE.3) MZPWP=2
17455       ENDIF
17456  
17457 C...Select random angles (begin of weighting procedure).
17458   430 DO 440 JT=1,JTMAX
17459         IF(KDCY(JT).EQ.0) GOTO 440
17460         IF(JTMAX.EQ.1.AND.ISUB.NE.0.AND.IHDEC.EQ.0) THEN
17461           CTHE(JT)=VINT(13)+(VINT(33)-VINT(13)+VINT(34)-VINT(14))*PYR(0)
17462           IF(CTHE(JT).GT.VINT(33)) CTHE(JT)=CTHE(JT)+VINT(14)-VINT(33)
17463           PHI(JT)=VINT(24)
17464         ELSE
17465           CTHE(JT)=2D0*PYR(0)-1D0
17466           PHI(JT)=PARU(2)*PYR(0)
17467         ENDIF
17468   440 CONTINUE
17469  
17470       IF(JTMAX.EQ.2.AND.MSTP(47).GE.1.AND.NINH.EQ.0) THEN
17471 C...Construct massless four-vectors.
17472         DO 460 I=N+1,N+4
17473           K(I,1)=1
17474           DO 450 J=1,5
17475             P(I,J)=0D0
17476             V(I,J)=0D0
17477   450     CONTINUE
17478   460   CONTINUE
17479         DO 470 JT=1,JTMAX
17480           IF(KDCY(JT).EQ.0) GOTO 470
17481           ID=IREF(IP,JT)
17482           P(N+2*JT-1,3)=0.5D0*P(ID,5)
17483           P(N+2*JT-1,4)=0.5D0*P(ID,5)
17484           P(N+2*JT,3)=-0.5D0*P(ID,5)
17485           P(N+2*JT,4)=0.5D0*P(ID,5)
17486           CALL PYROBO(N+2*JT-1,N+2*JT,ACOS(CTHE(JT)),PHI(JT),
17487      &    P(ID,1)/P(ID,4),P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
17488   470   CONTINUE
17489  
17490 C...Store incoming and outgoing momenta, with random rotation to
17491 C...avoid accidental zeroes in HA expressions.
17492         IF(ISUB.NE.0) THEN
17493           DO 490 I=IMIN,IMAX
17494             K(N+4+I,1)=1
17495             P(N+4+I,4)=SQRT(P(ILIN(I),1)**2+P(ILIN(I),2)**2+
17496      &      P(ILIN(I),3)**2+P(ILIN(I),5)**2)
17497             P(N+4+I,5)=P(ILIN(I),5)
17498             DO 480 J=1,3
17499               P(N+4+I,J)=P(ILIN(I),J)
17500   480       CONTINUE
17501   490     CONTINUE
17502   500     THERR=ACOS(2D0*PYR(0)-1D0)
17503           PHIRR=PARU(2)*PYR(0)
17504           CALL PYROBO(N+4+IMIN,N+4+IMAX,THERR,PHIRR,0D0,0D0,0D0)
17505           DO 520 I=IMIN,IMAX
17506             IF(P(N+4+I,1)**2+P(N+4+I,2)**2.LT.1D-4*(P(N+4+I,1)**2+
17507      &      P(N+4+I,2)**2+P(N+4+I,3)**2)) GOTO 500
17508             DO 510 J=1,4
17509               PK(I,J)=P(N+4+I,J)
17510   510       CONTINUE
17511   520     CONTINUE
17512         ENDIF
17513  
17514 C...Calculate internal products.
17515         IF(ISUB.EQ.22.OR.ISUB.EQ.23.OR.ISUB.EQ.25.OR.ISUB.EQ.141.OR.
17516      &  ISUB.EQ.142) THEN
17517           DO 540 I1=IMIN,IMAX-1
17518             DO 530 I2=I1+1,IMAX
17519               HA(I1,I2)=SNGL(SQRT((PK(I1,4)-PK(I1,3))*(PK(I2,4)+
17520      &        PK(I2,3))/(1D-20+PK(I1,1)**2+PK(I1,2)**2)))*
17521      &        CMPLX(SNGL(PK(I1,1)),SNGL(PK(I1,2)))-
17522      &        SNGL(SQRT((PK(I1,4)+PK(I1,3))*(PK(I2,4)-PK(I2,3))/
17523      &        (1D-20+PK(I2,1)**2+PK(I2,2)**2)))*
17524      &        CMPLX(SNGL(PK(I2,1)),SNGL(PK(I2,2)))
17525               HC(I1,I2)=CONJG(HA(I1,I2))
17526               IF(I1.LE.2) HA(I1,I2)=CMPLX(0.,1.)*HA(I1,I2)
17527               IF(I1.LE.2) HC(I1,I2)=CMPLX(0.,1.)*HC(I1,I2)
17528               HA(I2,I1)=-HA(I1,I2)
17529               HC(I2,I1)=-HC(I1,I2)
17530   530       CONTINUE
17531   540     CONTINUE
17532         ENDIF
17533  
17534 C...Calculate four-products.
17535         IF(ISUB.NE.0) THEN
17536           DO 560 I=1,2
17537             DO 550 J=1,4
17538               PK(I,J)=-PK(I,J)
17539   550       CONTINUE
17540   560     CONTINUE
17541           DO 580 I1=IMIN,IMAX-1
17542             DO 570 I2=I1+1,IMAX
17543               PKK(I1,I2)=2D0*(PK(I1,4)*PK(I2,4)-PK(I1,1)*PK(I2,1)-
17544      &        PK(I1,2)*PK(I2,2)-PK(I1,3)*PK(I2,3))
17545               PKK(I2,I1)=PKK(I1,I2)
17546   570       CONTINUE
17547   580     CONTINUE
17548         ENDIF
17549       ENDIF
17550  
17551       KFAGM=IABS(IREF(IP,7))
17552       IF(MSTP(47).LE.0.OR.NINH.NE.0) THEN
17553 C...Isotropic decay selected by user.
17554         WT=1D0
17555         WTMAX=1D0
17556  
17557       ELSEIF(JTMAX.EQ.3) THEN
17558 C...Isotropic decay when three mother particles.
17559         WT=1D0
17560         WTMAX=1D0
17561  
17562       ELSEIF(IT4.GE.1) THEN
17563 C... Isotropic decay t -> b + W etc for 4th generation q and l.
17564         WT=1D0
17565         WTMAX=1D0
17566  
17567       ELSEIF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.
17568      &  IREF(IP,7).EQ.36) THEN
17569 C...Angular weight for h0/A0 -> Z0 + Z0 or W+ + W- -> 4 quarks/leptons.
17570 C...CP-odd case added by Kari Ertresvag Myklevoll.
17571 C...Now also with mixed Higgs CP-states
17572         ETA=PARP(25)
17573         IF(IP.EQ.1) WTMAX=SH**2
17574         IF(IP.GE.2) WTMAX=P(IREF(IP,8),5)**4
17575         KFA=IABS(K(IREF(IP,1),2))
17576         KFT=IABS(K(IREF(IP,2),2))
17577         
17578         IF((KFA.EQ.KFT).AND.(KFA.EQ.23.OR.KFA.EQ.24).AND.
17579      &  MSTP(25).GE.3) THEN
17580 C...For mixed CP states need epsilon product.
17581           P10=PK(3,4)
17582           P20=PK(4,4)
17583           P30=PK(5,4)
17584           P40=PK(6,4)
17585           P11=PK(3,1)
17586           P21=PK(4,1)
17587           P31=PK(5,1)
17588           P41=PK(6,1)
17589           P12=PK(3,2)
17590           P22=PK(4,2)
17591           P32=PK(5,2)
17592           P42=PK(6,2)
17593           P13=PK(3,3)
17594           P23=PK(4,3)
17595           P33=PK(5,3)
17596           P43=PK(6,3)
17597           EPSI=P10*P21*P32*P43-P10*P21*P33*P42-P10*P22*P31*P43+P10*P22*
17598      &      P33*P41+P10*P23*P31*P42-P10*P23*P32*P41-P11*P20*P32*P43+P11*
17599      &      P20*P33*P42+P11*P22*P30*P43-P11*P22*P33*P40-P11*P23*P30*P42+
17600      &      P11*P23*P32*P40+P12*P20*P31*P43-P12*P20*P33*P41-P12*P21*P30*
17601      &      P43+P12*P21*P33*P40+P12*P23*P30*P41-P12*P23*P31*P40-P13*P20*
17602      &      P31*P42+P13*P20*P32*P41+P13*P21*P30*P42-P13*P21*P32*P40-P13*
17603      &      P22*P30*P41+P13*P22*P31*P40
17604 C...For mixed CP states need gauge boson masses.
17605           XMA=SQRT(MAX(0D0,(PK(3,4)+PK(4,4))**2-(PK(3,1)+PK(4,1))**2-
17606      &      (PK(3,2)+PK(4,2))**2-(PK(3,3)+PK(4,3))**2))
17607           XMB=SQRT(MAX(0D0,(PK(5,4)+PK(6,4))**2-(PK(5,1)+PK(6,1))**2-
17608      &      (PK(5,2)+PK(6,2))**2-(PK(5,3)+PK(6,3))**2))
17609           XMV=PMAS(KFA,1)
17610         ENDIF
17611  
17612 C...Z decay
17613         IF(KFA.EQ.23.AND.KFA.EQ.KFT) THEN
17614           KFLF1A=IABS(KFL1(1))
17615           EF1=KCHG(KFLF1A,1)/3D0
17616           AF1=SIGN(1D0,EF1+0.1D0)
17617           VF1=AF1-4D0*EF1*XWV
17618           KFLF2A=IABS(KFL1(2))
17619           EF2=KCHG(KFLF2A,1)/3D0
17620           AF2=SIGN(1D0,EF2+0.1D0)
17621           VF2=AF2-4D0*EF2*XWV
17622           VA12AS=4D0*VF1*AF1*VF2*AF2/((VF1**2+AF1**2)*(VF2**2+AF2**2))
17623           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
17624      &      THEN
17625 C...CP-even decay
17626             WT=8D0*(1D0+VA12AS)*PKK(3,5)*PKK(4,6)+
17627      &        8D0*(1D0-VA12AS)*PKK(3,6)*PKK(4,5)
17628           ELSEIF(MSTP(25).LE.2) THEN
17629 C...CP-odd decay
17630             WT=((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
17631      &        -2*PKK(3,4)*PKK(5,6)
17632      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
17633      &        (PKK(3,4)*PKK(5,6))
17634      &        +VA12AS*(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
17635      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))/(1+VA12AS)
17636           ELSE
17637 C...Mixed CP states.
17638             WT=32D0*(0.25D0*((1D0+VA12AS)*PKK(3,5)*PKK(4,6)
17639      &        +(1D0-VA12AS)*PKK(3,6)*PKK(4,5))
17640      &        -0.5D0*ETA/XMV**2*EPSI*((1D0+VA12AS)*(PKK(3,5)+PKK(4,6))
17641      &        -(1D0-VA12AS)*(PKK(3,6)+PKK(4,5)))
17642      &        +6.25D-2*ETA**2/XMV**4*(-2D0*PKK(3,4)**2*PKK(5,6)**2
17643      &        -2D0*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2
17644      &        +PKK(3,4)*PKK(5,6)
17645      &        *((PKK(3,5)+PKK(4,6))**2+(PKK(3,6)+PKK(4,5))**2)
17646      &        +VA12AS*PKK(3,4)*PKK(5,6)
17647      &        *(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))
17648      &        *(PKK(3,5)-PKK(3,6)+PKK(4,5)-PKK(4,6))))
17649      &        /(1D0 +2D0*ETA*XMA*XMB/XMV**2
17650      &          +2D0*(ETA*XMA*XMB/XMV**2)**2*(1D0+VA12AS))
17651           ENDIF
17652  
17653 C...W decay
17654         ELSEIF(KFA.EQ.24.AND.KFA.EQ.KFT) THEN
17655           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
17656      &      THEN
17657 C...CP-even decay
17658             WT=16D0*PKK(3,5)*PKK(4,6)
17659           ELSEIF(MSTP(25).LE.2) THEN
17660 C...CP-odd decay
17661             WT=0.5D0*((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
17662      &        -2*PKK(3,4)*PKK(5,6)
17663      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
17664      &        (PKK(3,4)*PKK(5,6))
17665      &        +(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
17666      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))
17667           ELSE
17668 C...Mixed CP states.
17669             WT=32D0*(0.25D0*2D0*PKK(3,5)*PKK(4,6)
17670      &        -0.5D0*ETA/XMV**2*EPSI*2D0*(PKK(3,5)+PKK(4,6))
17671      &        +6.25D-2*ETA**2/XMV**4*(-2D0*PKK(3,4)**2*PKK(5,6)**2
17672      &        -2D0*(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(4,6))**2+(PKK(3,6)+PKK(4,5))**2)
17675      &        +PKK(3,4)*PKK(5,6)
17676      &        *(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))
17677      &        *(PKK(3,5)-PKK(3,6)+PKK(4,5)-PKK(4,6))))
17678      &        /(1D0 +2D0*ETA*XMA*XMB/XMV**2
17679      &          +(2D0*ETA*XMA*XMB/XMV**2)**2)
17680           ENDIF
17681  
17682 C...No angular correlations in other Higgs decays.
17683         ELSE
17684           WT=WTMAX
17685         ENDIF
17686  
17687       ELSEIF((KFAGM.EQ.6.OR.KFAGM.EQ.7.OR.KFAGM.EQ.8.OR.
17688      &  KFAGM.EQ.17.OR.KFAGM.EQ.18).AND.IABS(K(IREF(IP,1),2)).EQ.24)
17689      &  THEN
17690 C...Angular correlation in f -> f' + W -> f' + 2 quarks/leptons.
17691         I1=IREF(IP,8)
17692         IF(MOD(KFAGM,2).EQ.0) THEN
17693           I2=N+1
17694           I3=N+2
17695         ELSE
17696           I2=N+2
17697           I3=N+1
17698         ENDIF
17699         I4=IREF(IP,2)
17700         WT=(P(I1,4)*P(I2,4)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
17701      &  P(I1,3)*P(I2,3))*(P(I3,4)*P(I4,4)-P(I3,1)*P(I4,1)-
17702      &  P(I3,2)*P(I4,2)-P(I3,3)*P(I4,3))
17703         WTMAX=(P(I1,5)**4-P(IREF(IP,1),5)**4)/8D0
17704  
17705       ELSEIF(ISUB.EQ.1) THEN
17706 C...Angular weight for gamma*/Z0 -> 2 quarks/leptons.
17707         EI=KCHG(IABS(MINT(15)),1)/3D0
17708         AI=SIGN(1D0,EI+0.1D0)
17709         VI=AI-4D0*EI*XWV
17710         EF=KCHG(IABS(KFL1(1)),1)/3D0
17711         AF=SIGN(1D0,EF+0.1D0)
17712  
17713         VF=AF-4D0*EF*XWV
17714         RMF=MIN(1D0,4D0*PMAS(IABS(KFL1(1)),1)**2/SH)
17715         WT1=EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
17716      &  (VI**2+AI**2)*VINT(114)*(VF**2+(1D0-RMF)*AF**2)
17717         WT2=RMF*(EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
17718      &  (VI**2+AI**2)*VINT(114)*VF**2)
17719         WT3=SQRT(1D0-RMF)*(EI*AI*VINT(112)*EF*AF+
17720      &  4D0*VI*AI*VINT(114)*VF*AF)
17721         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
17722      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
17723         WTMAX=2D0*(WT1+ABS(WT3))
17724  
17725       ELSEIF(ISUB.EQ.2) THEN
17726 C...Angular weight for W+/- -> 2 quarks/leptons.
17727         RM3=PMAS(IABS(KFL1(1)),1)**2/SH
17728         RM4=PMAS(IABS(KFL2(1)),1)**2/SH
17729         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
17730         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
17731         WTMAX=4D0
17732  
17733       ELSEIF(ISUB.EQ.15.OR.ISUB.EQ.19) THEN
17734 C...Angular weight for f + fbar -> gluon/gamma + (gamma*/Z0) ->
17735 C...-> gluon/gamma + 2 quarks/leptons.
17736         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17737      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
17738      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
17739         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17740      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
17741      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
17742         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17743      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
17744      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
17745         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17746      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
17747      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
17748         WT=(CLILF+CRIRF)*(PKK(1,3)**2+PKK(2,4)**2)+
17749      &  (CLIRF+CRILF)*(PKK(1,4)**2+PKK(2,3)**2)
17750         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
17751      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2)
17752  
17753       ELSEIF(ISUB.EQ.16.OR.ISUB.EQ.20) THEN
17754 C...Angular weight for f + fbar' -> gluon/gamma + W+/- ->
17755 C...-> gluon/gamma + 2 quarks/leptons.
17756         WT=PKK(1,3)**2+PKK(2,4)**2
17757         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2
17758  
17759       ELSEIF(ISUB.EQ.22) THEN
17760 C...Angular weight for f + fbar -> Z0 + Z0 -> 4 quarks/leptons.
17761         S34=P(IREF(IP,IORD),5)**2
17762         S56=P(IREF(IP,3-IORD),5)**2
17763         TI=PKK(1,3)+PKK(1,4)+S34
17764         UI=PKK(1,5)+PKK(1,6)+S56
17765         TIR=REAL(TI)
17766         UIR=REAL(UI)
17767         FGK135=ABS(FGK(1,2,3,4,5,6)/TIR+FGK(1,2,5,6,3,4)/UIR)**2
17768         FGK145=ABS(FGK(1,2,4,3,5,6)/TIR+FGK(1,2,5,6,4,3)/UIR)**2
17769         FGK136=ABS(FGK(1,2,3,4,6,5)/TIR+FGK(1,2,6,5,3,4)/UIR)**2
17770         FGK146=ABS(FGK(1,2,4,3,6,5)/TIR+FGK(1,2,6,5,4,3)/UIR)**2
17771         FGK253=ABS(FGK(2,1,5,6,3,4)/TIR+FGK(2,1,3,4,5,6)/UIR)**2
17772         FGK263=ABS(FGK(2,1,6,5,3,4)/TIR+FGK(2,1,3,4,6,5)/UIR)**2
17773         FGK254=ABS(FGK(2,1,5,6,4,3)/TIR+FGK(2,1,4,3,5,6)/UIR)**2
17774         FGK264=ABS(FGK(2,1,6,5,4,3)/TIR+FGK(2,1,4,3,6,5)/UIR)**2
17775  
17776         WT=
17777      &  CORL(1,1,1)*CORL(2,1,1)*FGK135+CORL(1,1,2)*CORL(2,1,1)*FGK145+
17778      &  CORL(1,1,1)*CORL(2,1,2)*FGK136+CORL(1,1,2)*CORL(2,1,2)*FGK146+
17779      &  CORL(1,2,1)*CORL(2,2,1)*FGK253+CORL(1,2,2)*CORL(2,2,1)*FGK263+
17780      &  CORL(1,2,1)*CORL(2,2,2)*FGK254+CORL(1,2,2)*CORL(2,2,2)*FGK264
17781         WTMAX=16D0*((CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
17782      &  (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2)))*S34*S56*
17783      &  ((TI**2+UI**2+2D0*SH*(S34+S56))/(TI*UI)-S34*S56*(1D0/TI**2+
17784      &  1D0/UI**2))
17785  
17786       ELSEIF(ISUB.EQ.23) THEN
17787 C...Angular weight for f + fbar' -> Z0 + W+/- -> 4 quarks/leptons.
17788         D34=P(IREF(IP,IORD),5)**2
17789         D56=P(IREF(IP,3-IORD),5)**2
17790         DT=PKK(1,3)+PKK(1,4)+D34
17791         DU=PKK(1,5)+PKK(1,6)+D56
17792         FACBW=1D0/((SH-SQMW)**2+GMMW**2)
17793         CAWZ=COUP(2,3)/DT-2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
17794         CBWZ=COUP(1,3)/DU+2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
17795         FGK135=ABS(REAL(CAWZ)*FGK(1,2,3,4,5,6)+
17796  
17797      &  REAL(CBWZ)*FGK(1,2,5,6,3,4))
17798         FGK136=ABS(REAL(CAWZ)*FGK(1,2,3,4,6,5)+
17799      &  REAL(CBWZ)*FGK(1,2,6,5,3,4))
17800         WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
17801         WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*(CAWZ**2*
17802      &  DIGK(DT,DU)+CBWZ**2*DIGK(DU,DT)+CAWZ*CBWZ*DJGK(DT,DU))
17803  
17804       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
17805 C...Angular weight for f + fbar -> Z0 + h0 -> 2 quarks/leptons + h0
17806 C...(or H0, or A0).
17807         WT=((COUP(1,3)*COUP(3,3))**2+(COUP(1,4)*COUP(3,4))**2)*
17808      &  PKK(1,3)*PKK(2,4)+((COUP(1,3)*COUP(3,4))**2+(COUP(1,4)*
17809      &  COUP(3,3))**2)*PKK(1,4)*PKK(2,3)
17810         WTMAX=(COUP(1,3)**2+COUP(1,4)**2)*(COUP(3,3)**2+COUP(3,4)**2)*
17811      &  (PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
17812  
17813       ELSEIF(ISUB.EQ.25) THEN
17814 C...Angular weight for f + fbar -> W+ + W- -> 4 quarks/leptons.
17815         POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
17816         POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
17817         D34=P(IREF(IP,IORD),5)**2
17818         D56=P(IREF(IP,3-IORD),5)**2
17819         DT=PKK(1,3)+PKK(1,4)+D34
17820         DU=PKK(1,5)+PKK(1,6)+D56
17821         FACBW=1D0/((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
17822         CDWW=(COUP(1,3)*SQMZ*(SH-SQMZ)*FACBW+COUP(1,2))/SH
17823         CAWW=CDWW+0.5D0*(COUP(1,2)+1D0)/DT
17824         CBWW=CDWW+0.5D0*(COUP(1,2)-1D0)/DU
17825         CCWW=COUP(1,4)*SQMZ*(SH-SQMZ)*FACBW/SH
17826         FGK135=ABS(REAL(CAWW)*FGK(1,2,3,4,5,6)-
17827      &  REAL(CBWW)*FGK(1,2,5,6,3,4))
17828         FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
17829         IF(MSTP(50).LE.0) THEN
17830           WT=FGK135**2+(CCWW*FGK253)**2
17831           WTMAX=4D0*D34*D56*(CAWW**2*DIGK(DT,DU)+CBWW**2*DIGK(DU,DT)-
17832      &    CAWW*CBWW*DJGK(DT,DU)+CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-
17833      &    DJGK(DT,DU)))
17834         ELSE
17835           WT=POLL*FGK135**2+POLR*(CCWW*FGK253)**2
17836           WTMAX=4D0*D34*D56*(POLL*(CAWW**2*DIGK(DT,DU)+
17837      &    CBWW**2*DIGK(DU,DT)-CAWW*CBWW*DJGK(DT,DU))+
17838      &    POLR*CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU)))
17839         ENDIF
17840  
17841       ELSEIF(ISUB.EQ.26.OR.ISUB.EQ.172.OR.ISUB.EQ.177) THEN
17842 C...Angular weight for f + fbar' -> W+/- + h0 -> 2 quarks/leptons + h0
17843 C...(or H0, or A0).
17844         WT=PKK(1,3)*PKK(2,4)
17845         WTMAX=(PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
17846  
17847       ELSEIF(ISUB.EQ.30.OR.ISUB.EQ.35) THEN
17848 C...Angular weight for f + g/gamma -> f + (gamma*/Z0)
17849 C...-> f + 2 quarks/leptons.
17850         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17851      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
17852      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
17853         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17854      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
17855      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
17856         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17857      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
17858      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
17859         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17860      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
17861      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
17862         IF(K(ILIN(1),2).GT.0) WT=(CLILF+CRIRF)*(PKK(1,4)**2+
17863      &  PKK(3,5)**2)+(CLIRF+CRILF)*(PKK(1,3)**2+PKK(4,5)**2)
17864         IF(K(ILIN(1),2).LT.0) WT=(CLILF+CRIRF)*(PKK(1,3)**2+
17865      &  PKK(4,5)**2)+(CLIRF+CRILF)*(PKK(1,4)**2+PKK(3,5)**2)
17866         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
17867      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2)
17868  
17869       ELSEIF(ISUB.EQ.31.OR.ISUB.EQ.36) THEN
17870 C...Angular weight for f + g/gamma -> f' + W+/- -> f' + 2 fermions.
17871         IF(K(ILIN(1),2).GT.0) WT=PKK(1,4)**2+PKK(3,5)**2
17872         IF(K(ILIN(1),2).LT.0) WT=PKK(1,3)**2+PKK(4,5)**2
17873         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2
17874  
17875       ELSEIF(ISUB.EQ.71.OR.ISUB.EQ.72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.
17876      &  ISUB.EQ.77) THEN
17877 C...Angular weight for V_L1 + V_L2 -> V_L3 + V_L4 (V = Z/W).
17878         WT=16D0*PKK(3,5)*PKK(4,6)
17879         WTMAX=SH**2
17880  
17881       ELSEIF(ISUB.EQ.110) THEN
17882 C...Angular weight for f + fbar -> gamma + h0 -> gamma + X is isotropic.
17883         WT=1D0
17884         WTMAX=1D0
17885  
17886       ELSEIF(ISUB.EQ.141) THEN
17887         IF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN
17888 C...Angular weight for f + fbar -> gamma*/Z0/Z'0 -> 2 quarks/leptons.
17889 C...Couplings of incoming flavour.
17890           KFAI=IABS(MINT(15))
17891           EI=KCHG(KFAI,1)/3D0
17892           AI=SIGN(1D0,EI+0.1D0)
17893           VI=AI-4D0*EI*XWV
17894           KFAIC=1
17895           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
17896           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
17897           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
17898           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
17899             VPI=PARU(119+2*KFAIC)
17900             API=PARU(120+2*KFAIC)
17901           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
17902             VPI=PARJ(178+2*KFAIC)
17903             API=PARJ(179+2*KFAIC)
17904           ELSE
17905             VPI=PARJ(186+2*KFAIC)
17906             API=PARJ(187+2*KFAIC)
17907           ENDIF
17908 C...Couplings of final flavour.
17909           KFAF=IABS(KFL1(1))
17910           EF=KCHG(KFAF,1)/3D0
17911           AF=SIGN(1D0,EF+0.1D0)
17912           VF=AF-4D0*EF*XWV
17913           KFAFC=1
17914           IF(KFAF.LE.10.AND.MOD(KFAF,2).EQ.0) KFAFC=2
17915           IF(KFAF.GT.10.AND.MOD(KFAF,2).NE.0) KFAFC=3
17916           IF(KFAF.GT.10.AND.MOD(KFAF,2).EQ.0) KFAFC=4
17917           IF(KFAF.LE.2.OR.KFAF.EQ.11.OR.KFAF.EQ.12) THEN
17918             VPF=PARU(119+2*KFAFC)
17919             APF=PARU(120+2*KFAFC)
17920           ELSEIF(KFAF.LE.4.OR.KFAF.EQ.13.OR.KFAF.EQ.14) THEN
17921             VPF=PARJ(178+2*KFAFC)
17922             APF=PARJ(179+2*KFAFC)
17923           ELSE
17924             VPF=PARJ(186+2*KFAFC)
17925             APF=PARJ(187+2*KFAFC)
17926           ENDIF
17927 C...Asymmetry and weight.
17928           ASYM=2D0*(EI*AI*VINT(112)*EF*AF+EI*API*VINT(113)*EF*APF+
17929      &    4D0*VI*AI*VINT(114)*VF*AF+(VI*API+VPI*AI)*VINT(115)*
17930      &    (VF*APF+VPF*AF)+4D0*VPI*API*VINT(116)*VPF*APF)/
17931      &    (EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
17932      &    EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
17933      &    (VF**2+AF**2)+(VI*VPI+AI*API)*VINT(115)*(VF*VPF+AF*APF)+
17934      &    (VPI**2+API**2)*VINT(116)*(VPF**2+APF**2))
17935           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
17936           WTMAX=2D0+ABS(ASYM)
17937         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).EQ.24) THEN
17938 C...Angular weight for f + fbar -> Z' -> W+ + W-.
17939           RM1=P(NSD(1)+1,5)**2/SH
17940           RM2=P(NSD(1)+2,5)**2/SH
17941           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
17942      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
17943           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
17944      &    (RM2-RM1)**2)
17945           WT=CFLAT+CCOS2*CTHE(1)**2
17946           WTMAX=CFLAT+MAX(0D0,CCOS2)
17947         ELSEIF(IP.EQ.1.AND.(KFL1(1).EQ.25.OR.KFL1(1).EQ.35.OR.
17948      &    IABS(KFL1(1)).EQ.37)) THEN
17949 C...Angular weight for f + fbar -> Z' -> h0 + A0, H0 + A0, H+ + H-.
17950           WT=1D0-CTHE(1)**2
17951           WTMAX=1D0
17952         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
17953 C...Angular weight for f + fbar -> Z' -> Z0 + h0.
17954           RM1=P(NSD(1)+1,5)**2/SH
17955           RM2=P(NSD(1)+2,5)**2/SH
17956           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
17957           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
17958           WTMAX=1D0+FLAM2/(8D0*RM1)
17959         ELSEIF(MZPWP.EQ.0) THEN
17960 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
17961 C...(W:s like if intermediate Z).
17962           D34=P(IREF(IP,IORD),5)**2
17963           D56=P(IREF(IP,3-IORD),5)**2
17964           DT=PKK(1,3)+PKK(1,4)+D34
17965           DU=PKK(1,5)+PKK(1,6)+D56
17966           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
17967           FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
17968           WT=(COUP(1,3)*FGK135)**2+(COUP(1,4)*FGK253)**2
17969           WTMAX=4D0*D34*D56*(COUP(1,3)**2+COUP(1,4)**2)*
17970      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
17971         ELSEIF(MZPWP.EQ.1) THEN
17972 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
17973 C...(W:s approximately longitudinal, like if intermediate H).
17974           WT=16D0*PKK(3,5)*PKK(4,6)
17975           WTMAX=SH**2
17976         ELSE
17977 C...Angular weight for f + fbar -> Z' -> H+ + H-, Z0 + h0, h0 + A0,
17978 C...H0 + A0 -> 4 quarks/leptons, t + tbar -> b + W+ + bbar + W- .
17979           WT=1D0
17980           WTMAX=1D0
17981         ENDIF
17982  
17983       ELSEIF(ISUB.EQ.142) THEN
17984         IF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN
17985 C...Angular weight for f + fbar' -> W'+/- -> 2 quarks/leptons.
17986           KFAI=IABS(MINT(15))
17987           KFAIC=1
17988           IF(KFAI.GT.10) KFAIC=2
17989           VI=PARU(129+2*KFAIC)
17990           AI=PARU(130+2*KFAIC)
17991           KFAF=IABS(KFL1(1))
17992           KFAFC=1
17993           IF(KFAF.GT.10) KFAFC=2
17994           VF=PARU(129+2*KFAFC)
17995           AF=PARU(130+2*KFAFC)
17996           ASYM=8D0*VI*AI*VF*AF/((VI**2+AI**2)*(VF**2+AF**2))
17997           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
17998           WTMAX=2D0+ABS(ASYM)
17999         ELSEIF(IP.EQ.1.AND.IABS(KFL2(1)).EQ.23) THEN
18000 C...Angular weight for f + fbar' -> W'+/- -> W+/- + Z0.
18001           RM1=P(NSD(1)+1,5)**2/SH
18002           RM2=P(NSD(1)+2,5)**2/SH
18003           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
18004      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
18005           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
18006      &    (RM2-RM1)**2)
18007           WT=CFLAT+CCOS2*CTHE(1)**2
18008           WTMAX=CFLAT+MAX(0D0,CCOS2)
18009         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
18010 C...Angular weight for f + fbar -> W'+/- -> W+/- + h0.
18011           RM1=P(NSD(1)+1,5)**2/SH
18012           RM2=P(NSD(1)+2,5)**2/SH
18013           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
18014           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
18015           WTMAX=1D0+FLAM2/(8D0*RM1)
18016         ELSEIF(MZPWP.EQ.0) THEN
18017 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
18018 C...(W/Z like if intermediate W).
18019           D34=P(IREF(IP,IORD),5)**2
18020           D56=P(IREF(IP,3-IORD),5)**2
18021           DT=PKK(1,3)+PKK(1,4)+D34
18022           DU=PKK(1,5)+PKK(1,6)+D56
18023           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
18024           FGK136=ABS(FGK(1,2,3,4,6,5)-FGK(1,2,6,5,3,4))
18025           WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
18026           WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*
18027      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
18028         ELSEIF(MZPWP.EQ.1) THEN
18029 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
18030 C...(W/Z approximately longitudinal, like if intermediate H).
18031           WT=16D0*PKK(3,5)*PKK(4,6)
18032           WTMAX=SH**2
18033         ELSE
18034 C...Angular weight for f + fbar -> W' -> W + h0 -> whatever,
18035 C...t + bbar -> t + W + bbar.
18036           WT=1D0
18037           WTMAX=1D0
18038         ENDIF
18039  
18040       ELSEIF(ISUB.EQ.145.OR.ISUB.EQ.162.OR.ISUB.EQ.163.OR.ISUB.EQ.164)
18041      &  THEN
18042 C...Isotropic decay of leptoquarks (assumed spin 0).
18043         WT=1D0
18044         WTMAX=1D0
18045  
18046       ELSEIF(ISUB.GE.146.AND.ISUB.LE.148) THEN
18047 C...Decays of (spin 1/2) q*/e* -> q/e + (g,gamma) or (Z0,W+-).
18048         SIDE=1D0
18049         IF(MINT(16).EQ.21.OR.MINT(16).EQ.22) SIDE=-1D0
18050         IF(IP.EQ.1.AND.(KFL1(1).EQ.21.OR.KFL1(1).EQ.22)) THEN
18051           WT=1D0+SIDE*CTHE(1)
18052           WTMAX=2D0
18053         ELSEIF(IP.EQ.1) THEN
18054  
18055           RM1=P(NSD(1)+1,5)**2/SH
18056           WT=1D0+SIDE*CTHE(1)*(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
18057           WTMAX=1D0+(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
18058         ELSE
18059 C...W/Z decay assumed isotropic, since not known.
18060           WT=1D0
18061           WTMAX=1D0
18062         ENDIF
18063  
18064       ELSEIF(ISUB.EQ.149) THEN
18065 C...Isotropic decay of techni-eta.
18066         WT=1D0
18067         WTMAX=1D0
18068  
18069       ELSEIF(ISUB.EQ.191) THEN
18070         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18071 C...Angular weight for f + fbar -> rho_tc0 -> W+ W-,
18072 C...W+ pi_tc-, pi_tc+ W- or pi_tc+ pi_tc-.
18073           WT=1D0-CTHE(1)**2
18074           WTMAX=1D0
18075         ELSEIF(IP.EQ.1) THEN
18076 C...Angular weight for f + fbar -> rho_tc0 -> f fbar.
18077           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18078           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
18079           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
18080           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
18081           KFAI=IABS(MINT(15))
18082           EI=KCHG(KFAI,1)/3D0
18083           AI=SIGN(1D0,EI+0.1D0)
18084           VI=AI-4D0*EI*XWV
18085           VALI=0.5D0*(VI+AI)
18086           VARI=0.5D0*(VI-AI)
18087           ALEFTI=(EI+VALI*BWZR)**2+(VALI*BWZI)**2
18088           ARIGHI=(EI+VARI*BWZR)**2+(VARI*BWZI)**2
18089           KFAF=IABS(KFL1(1))
18090           EF=KCHG(KFAF,1)/3D0
18091           AF=SIGN(1D0,EF+0.1D0)
18092           VF=AF-4D0*EF*XWV
18093           VALF=0.5D0*(VF+AF)
18094           VARF=0.5D0*(VF-AF)
18095           ALEFTF=(EF+VALF*BWZR)**2+(VALF*BWZI)**2
18096           ARIGHF=(EF+VARF*BWZR)**2+(VARF*BWZI)**2
18097           ASAME=ALEFTI*ALEFTF+ARIGHI*ARIGHF
18098           AFLIP=ALEFTI*ARIGHF+ARIGHI*ALEFTF
18099           WT=ASAME*(1D0+CTHESG)**2+AFLIP*(1D0-CTHESG)**2
18100           WTMAX=4D0*MAX(ASAME,AFLIP)
18101         ELSE
18102 C...Isotropic decay of W/pi_tc produced in rho_tc decay.
18103           WT=1D0
18104           WTMAX=1D0
18105         ENDIF
18106  
18107       ELSEIF(ISUB.EQ.192) THEN
18108         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18109 C...Angular weight for f + fbar' -> rho_tc+ -> W+ Z0,
18110 C...W+ pi_tc0, pi_tc+ Z0 or pi_tc+ pi_tc0.
18111           WT=1D0-CTHE(1)**2
18112           WTMAX=1D0
18113         ELSEIF(IP.EQ.1) THEN
18114 C...Angular weight for f + fbar' -> rho_tc+ -> f fbar'.
18115           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18116           WT=(1D0+CTHESG)**2
18117           WTMAX=4D0
18118         ELSE
18119 C...Isotropic decay of W/Z/pi_tc produced in rho_tc+ decay.
18120           WT=1D0
18121           WTMAX=1D0
18122         ENDIF
18123  
18124       ELSEIF(ISUB.EQ.193) THEN
18125         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18126 C...Angular weight for f + fbar -> omega_tc0 ->
18127 C...gamma pi_tc0 or Z0 pi_tc0.
18128           WT=1D0+CTHE(1)**2
18129           WTMAX=2D0
18130         ELSEIF(IP.EQ.1) THEN
18131 C...Angular weight for f + fbar -> omega_tc0 -> f fbar.
18132           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18133           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
18134           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
18135           KFAI=IABS(MINT(15))
18136           EI=KCHG(KFAI,1)/3D0
18137           AI=SIGN(1D0,EI+0.1D0)
18138           VI=AI-4D0*EI*XWV
18139           VALI=0.5D0*(VI+AI)
18140           VARI=0.5D0*(VI-AI)
18141           BLEFTI=(EI-VALI*BWZR)**2+(VALI*BWZI)**2
18142           BRIGHI=(EI-VARI*BWZR)**2+(VARI*BWZI)**2
18143           KFAF=IABS(KFL1(1))
18144           EF=KCHG(KFAF,1)/3D0
18145           AF=SIGN(1D0,EF+0.1D0)
18146           VF=AF-4D0*EF*XWV
18147           VALF=0.5D0*(VF+AF)
18148           VARF=0.5D0*(VF-AF)
18149           BLEFTF=(EF-VALF*BWZR)**2+(VALF*BWZI)**2
18150           BRIGHF=(EF-VARF*BWZR)**2+(VARF*BWZI)**2
18151           BSAME=BLEFTI*BLEFTF+BRIGHI*BRIGHF
18152           BFLIP=BLEFTI*BRIGHF+BRIGHI*BLEFTF
18153           WT=BSAME*(1D0+CTHESG)**2+BFLIP*(1D0-CTHESG)**2
18154           WTMAX=4D0*MAX(BSAME,BFLIP)
18155         ELSE
18156 C...Isotropic decay of Z/pi_tc produced in omega_tc decay.
18157           WT=1D0
18158           WTMAX=1D0
18159         ENDIF
18160  
18161       ELSEIF(ISUB.EQ.353) THEN
18162 C...Angular weight for Z_R0 -> 2 quarks/leptons.
18163         EI=KCHG(IABS(MINT(15)),1)/3D0
18164         AI=SIGN(1D0,EI+0.1D0)
18165         VI=AI-4D0*EI*XWV
18166         EF=KCHG(PYCOMP(KFL1(1)),1)/3D0
18167         AF=SIGN(1D0,EF+0.1D0)
18168         VF=AF-4D0*EF*XWV
18169         RMF=MIN(1D0,4D0*PMAS(PYCOMP(KFL1(1)),1)**2/SH)
18170         WT1=(VI**2+AI**2)*(VF**2+(1D0-RMF)*AF**2)
18171         WT2=RMF*(VI**2+AI**2)*VF**2
18172         WT3=SQRT(1D0-RMF)*4D0*VI*AI*VF*AF
18173         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
18174      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
18175         WTMAX=2D0*(WT1+ABS(WT3))
18176  
18177       ELSEIF(ISUB.EQ.354) THEN
18178 C...Angular weight for W_R+/- -> 2 quarks/leptons.
18179         RM3=PMAS(PYCOMP(KFL1(1)),1)**2/SH
18180         RM4=PMAS(PYCOMP(KFL2(1)),1)**2/SH
18181         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
18182         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
18183         WTMAX=4D0
18184  
18185       ELSEIF(ISUB.EQ.391) THEN
18186 C...Angular weight for f + fbar -> G* -> f + fbar
18187         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
18188           WT=1D0-3D0*CTHE(1)**2+4D0*CTHE(1)**4
18189           WTMAX=2D0
18190 C...Angular weight for f + fbar -> G* -> gamma + gamma or g + g
18191 C...implemented by M.-C. Lemaire
18192         ELSEIF(IP.EQ.1.AND.(IABS(KFL1(1)).EQ.21.OR.
18193      &  IABS(KFL1(1)).EQ.22)) THEN
18194           WT=1D0-CTHE(1)**4
18195           WTMAX=1D0
18196 C...Other G* decays not yet implemented angular distributions.
18197         ELSE
18198           WT=1D0
18199           WTMAX=1D0
18200         ENDIF
18201  
18202       ELSEIF(ISUB.EQ.392) THEN
18203 C...Angular weight for g + g -> G* -> f + fbar
18204         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
18205           WT=1D0-CTHE(1)**4
18206           WTMAX=1D0
18207 C...Angular weight for g + g -> G* -> gamma +gamma or g + g
18208 C...implemented by M.-C. Lemaire
18209         ELSEIF(IP.EQ.1.AND.(IABS(KFL1(1)).EQ.21.OR.
18210      &  IABS(KFL1(1)).EQ.22)) THEN
18211          WT=1D0+6D0*CTHE(1)**2+CTHE(1)**4
18212           WTMAX=8D0
18213 C...Other G* decays not yet implemented angular distributions.
18214         ELSE
18215           WT=1D0
18216           WTMAX=1D0
18217         ENDIF
18218  
18219 C...Obtain correct angular distribution by rejection techniques.
18220       ELSE
18221         WT=1D0
18222         WTMAX=1D0
18223       ENDIF
18224       IF(WT.LT.PYR(0)*WTMAX) GOTO 430
18225  
18226 C...Construct massive four-vectors using angles chosen.
18227   590 DO 690 JT=1,JTMAX
18228         IF(KDCY(JT).EQ.0) GOTO 690
18229         ID=IREF(IP,JT)
18230         DO 600 J=1,5
18231           DPMO(J)=P(ID,J)
18232   600   CONTINUE
18233         DPMO(4)=SQRT(DPMO(1)**2+DPMO(2)**2+DPMO(3)**2+DPMO(5)**2)
18234 CMRENNA++
18235         IF(KFL3(JT).EQ.0) THEN
18236           CALL PYROBO(NSD(JT)+1,NSD(JT)+2,ACOS(CTHE(JT)),PHI(JT),
18237      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
18238           N0=NSD(JT)+2
18239         ELSE
18240           CALL PYROBO(NSD(JT)+1,NSD(JT)+3,ACOS(CTHE(JT)),PHI(JT),
18241      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
18242           N0=NSD(JT)+3
18243         ENDIF
18244  
18245         DO 610 J=1,4
18246           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
18247   610   CONTINUE
18248 C...Fill in position of decay vertex.
18249         DO 630 I=NSD(JT)+1,N0
18250           DO 620 J=1,4
18251             V(I,J)=VDCY(J)
18252   620     CONTINUE
18253           V(I,5)=0D0
18254  
18255   630   CONTINUE
18256 CMRENNA--
18257  
18258 C...Mark decayed resonances; trace history.
18259         K(ID,1)=K(ID,1)+10
18260         KFA=IABS(K(ID,2))
18261         KCA=PYCOMP(KFA)
18262         IF(KCQM(JT).NE.0) THEN
18263 C...Do not kill colour flow through coloured resonance!
18264         ELSE
18265           K(ID,4)=NSD(JT)+1
18266           K(ID,5)=NSD(JT)+2
18267 C...If 3-body or 2-body with junction:
18268           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).NE.0) K(ID,5)=NSD(JT)+3
18269 C...If 3-body with junction:
18270           IF(ITJUNC(JT).NE.0.AND.KFL3(JT).NE.0) K(ID,5)=NSD(JT)+4
18271         ENDIF
18272  
18273 C...Add documentation lines.
18274         ISUBRG=MAX(1,MIN(500,MINT(1)))
18275         IF(IRES.EQ.0.OR.ISET(ISUBRG).EQ.11) THEN
18276           IDOC=MINT(83)+MINT(4)
18277 CMRENNA+++
18278           IHI=NSD(JT)+2
18279           IF(KFL3(JT).NE.0) IHI=IHI+1
18280           DO 650 I=NSD(JT)+1,IHI
18281 CMRENNA---
18282             I1=MINT(83)+MINT(4)+1
18283             K(I,3)=I1
18284             IF(MSTP(128).GE.1) K(I,3)=ID
18285             IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
18286               MINT(4)=MINT(4)+1
18287               K(I1,1)=21
18288               K(I1,2)=K(I,2)
18289               K(I1,3)=IREF(IP,JT+3)
18290               DO 640 J=1,5
18291                 P(I1,J)=P(I,J)
18292   640         CONTINUE
18293             ENDIF
18294   650     CONTINUE
18295         ELSE
18296           K(NSD(JT)+1,3)=ID
18297           K(NSD(JT)+2,3)=ID
18298 C...If 3-body or 2-body with junction:
18299           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).GT.0) K(NSD(JT)+3,3)=ID
18300 C...If 3-body with junction:
18301           IF(KFL3(JT).NE.0.AND.ITJUNC(JT).GT.0) K(NSD(JT)+4,3)=ID
18302         ENDIF
18303  
18304 C...Do showering of two or three objects.
18305         NSHBEF=N
18306         IF(MSTP(71).GE.1.AND.MINT(35).LE.1) THEN
18307           IF(KFL3(JT).EQ.0) THEN
18308             CALL PYSHOW(NSD(JT)+1,NSD(JT)+2,P(ID,5))
18309           ELSE
18310             CALL PYSHOW(NSD(JT)+1,-3,P(ID,5))
18311           ENDIF
18312  
18313 c...For pT-ordered shower need set up first, especially colour tags.
18314 C...(Need to set up colour tags even if MSTP(71) = 0)
18315         ELSEIF(MINT(35).GE.2) THEN
18316           NPART=2
18317           IF(KFL3(JT).NE.0) NPART=3
18318           IPART(1)=NSD(JT)+1
18319           IPART(2)=NSD(JT)+2
18320           IPART(3)=NSD(JT)+3
18321           PTPART(1)=0.5D0*P(ID,5)
18322           PTPART(2)=PTPART(1)
18323           PTPART(3)=PTPART(1)
18324           IF(KCQ1(JT).EQ.1.OR.KCQ1(JT).EQ.2) THEN
18325             MOTHER=K(NSD(JT)+1,4)/MSTU(5)
18326             IF(MOTHER.LE.NSD(JT)) THEN
18327               MCT(NSD(JT)+1,1)=MCT(MOTHER,1)
18328             ELSE
18329               NCT=NCT+1
18330               MCT(NSD(JT)+1,1)=NCT
18331               MCT(MOTHER,2)=NCT
18332             ENDIF
18333           ENDIF
18334           IF(KCQ1(JT).EQ.-1.OR.KCQ1(JT).EQ.2) THEN
18335             MOTHER=K(NSD(JT)+1,5)/MSTU(5)
18336             IF(MOTHER.LE.NSD(JT)) THEN
18337               MCT(NSD(JT)+1,2)=MCT(MOTHER,2)
18338             ELSE
18339               NCT=NCT+1
18340               MCT(NSD(JT)+1,2)=NCT
18341               MCT(MOTHER,1)=NCT
18342             ENDIF
18343           ENDIF
18344           IF(MCT(NSD(JT)+2,1).EQ.0.AND.(KCQ2(JT).EQ.1.OR.
18345      &    KCQ2(JT).EQ.2)) THEN
18346             MOTHER=K(NSD(JT)+2,4)/MSTU(5)
18347             IF(MOTHER.LE.NSD(JT)) THEN
18348               MCT(NSD(JT)+2,1)=MCT(MOTHER,1)
18349             ELSE
18350               NCT=NCT+1
18351               MCT(NSD(JT)+2,1)=NCT
18352               MCT(MOTHER,2)=NCT
18353             ENDIF
18354           ENDIF
18355           IF(MCT(NSD(JT)+2,2).EQ.0.AND.(KCQ2(JT).EQ.-1.OR.
18356      &    KCQ2(JT).EQ.2)) THEN
18357             MOTHER=K(NSD(JT)+2,5)/MSTU(5)
18358             IF(MOTHER.LE.NSD(JT)) THEN
18359               MCT(NSD(JT)+2,2)=MCT(MOTHER,2)
18360             ELSE
18361               NCT=NCT+1
18362               MCT(NSD(JT)+2,2)=NCT
18363               MCT(MOTHER,1)=NCT
18364             ENDIF
18365           ENDIF
18366           IF(NPART.EQ.3.AND.MCT(NSD(JT)+3,1).EQ.0.AND.
18367      &    (KCQ3(JT).EQ.1.OR. KCQ3(JT).EQ.2)) THEN
18368             MOTHER=K(NSD(JT)+3,4)/MSTU(5)
18369             MCT(NSD(JT)+3,1)=MCT(MOTHER,1)
18370           ENDIF
18371           IF(NPART.EQ.3.AND.MCT(NSD(JT)+3,2).EQ.0.AND.
18372      &    (KCQ3(JT).EQ.-1.OR.KCQ3(JT).EQ.2)) THEN
18373             MOTHER=K(NSD(JT)+3,5)/MSTU(5)
18374             MCT(NSD(JT)+2,2)=MCT(MOTHER,2)
18375           ENDIF
18376           IF (MSTP(71).GE.1) CALL PYPTFS(2,0.5D0*P(ID,5),0D0,PTGEN)
18377         ENDIF
18378         NSHAFT=N
18379         IF(JT.EQ.1) NAFT1=N
18380  
18381 C...Check if decay products moved by shower.
18382         NSD1=NSD(JT)+1
18383         NSD2=NSD(JT)+2
18384         NSD3=NSD(JT)+3
18385         IF(NSHAFT.GT.NSHBEF) THEN
18386           IF(K(NSD1,1).GT.10) THEN
18387             DO 660 I=NSHBEF+1,NSHAFT
18388               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD1,2)) NSD1=I
18389   660       CONTINUE
18390           ENDIF
18391           IF(K(NSD2,1).GT.10) THEN
18392             DO 670 I=NSHBEF+1,NSHAFT
18393               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD2,2).AND.
18394      &        I.NE.NSD1) NSD2=I
18395   670       CONTINUE
18396           ENDIF
18397           IF(KFL3(JT).NE.0.AND.K(NSD3,1).GT.10) THEN
18398             DO 680 I=NSHBEF+1,NSHAFT
18399               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD3,2).AND.
18400      &        I.NE.NSD1.AND.I.NE.NSD2) NSD3=I
18401   680       CONTINUE
18402           ENDIF
18403         ENDIF
18404  
18405 C...Store decay products for further treatment.
18406         NP=NP+1
18407         IREF(NP,1)=NSD1
18408         IREF(NP,2)=NSD2
18409         IREF(NP,3)=0
18410         IF(KFL3(JT).NE.0) IREF(NP,3)=NSD3
18411         IREF(NP,4)=IDOC+1
18412         IREF(NP,5)=IDOC+2
18413         IREF(NP,6)=0
18414         IF(KFL3(JT).NE.0) IREF(NP,6)=IDOC+3
18415         IREF(NP,7)=K(IREF(IP,JT),2)
18416         IREF(NP,8)=IREF(IP,JT)
18417   690 CONTINUE
18418  
18419  
18420 C...Fill information for 2 -> 1 -> 2.
18421   700 IF(JTMAX.EQ.1.AND.KDCY(1).NE.0.AND.ISUB.NE.0) THEN
18422         MINT(7)=MINT(83)+6+2*ISET(ISUB)
18423         MINT(8)=MINT(83)+7+2*ISET(ISUB)
18424         MINT(25)=KFL1(1)
18425         MINT(26)=KFL2(1)
18426         VINT(23)=CTHE(1)
18427         RM3=P(N-1,5)**2/SH
18428         RM4=P(N,5)**2/SH
18429         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
18430         VINT(45)=-0.5D0*SH*(1D0-RM3-RM4-BE34*CTHE(1))
18431         VINT(46)=-0.5D0*SH*(1D0-RM3-RM4+BE34*CTHE(1))
18432         VINT(48)=0.25D0*SH*BE34**2*MAX(0D0,1D0-CTHE(1)**2)
18433         VINT(47)=SQRT(VINT(48))
18434       ENDIF
18435  
18436 C...Possibility of colour rearrangement in W+W- events.
18437       IF((ISUB.EQ.25.OR.ISUB.EQ.22).AND.MSTP(115).GE.1) THEN
18438         IAKF1=IABS(KFL1(1))
18439         IAKF2=IABS(KFL1(2))
18440         IAKF3=IABS(KFL2(1))
18441         IAKF4=IABS(KFL2(2))
18442         IF(MIN(IAKF1,IAKF2,IAKF3,IAKF4).GE.1.AND.
18443      &  MAX(IAKF1,IAKF2,IAKF3,IAKF4).LE.5) CALL
18444      &  PYRECO(IREF(1,1),IREF(1,2),NSD(1),NAFT1)
18445         IF(MINT(51).NE.0) RETURN
18446       ENDIF
18447  
18448 C...Loop back if needed.
18449   710 IF(IP.LT.NP) GOTO 170
18450  
18451 C...Boost back to standard frame.
18452   720 IF(IBST.EQ.1) CALL PYROBO(MINT(83)+7,N,THEIN,PHIIN,BEXIN,BEYIN,
18453      &BEZIN)
18454  
18455       RETURN
18456       END
18457  
18458 C*********************************************************************
18459  
18460 C...PYMULT
18461 C...Initializes treatment of multiple interactions, selects kinematics
18462 C...of hardest interaction if low-pT physics included in run, and
18463 C...generates all non-hardest interactions.
18464  
18465       SUBROUTINE PYMULT(MMUL)
18466  
18467 C...Double precision and integer declarations.
18468       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
18469       IMPLICIT INTEGER(I-N)
18470       INTEGER PYK,PYCHGE,PYCOMP
18471 C...Commonblocks.
18472       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
18473       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
18474       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
18475       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
18476       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
18477       COMMON/PYINT1/MINT(400),VINT(400)
18478       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
18479       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
18480       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
18481       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
18482       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
18483      &/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/
18484 C...Local arrays and saved variables.
18485       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80)
18486       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM,P83A,P83B,P83C,
18487      &CQ2I,CQ2R,PIK,BDIV,B,PLOWB,PHIGHB,PALLB,S4A,S4B,S4C,POWIP,
18488      &RPWIP,B2RPDV,B2RPMX,BAVG,VNT145,VNT146,VNT147
18489  
18490 C...Initialization of multiple interaction treatment.
18491       IF(MMUL.EQ.1) THEN
18492         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
18493         ISUB=96
18494         MINT(1)=96
18495         VINT(63)=0D0
18496         VINT(64)=0D0
18497         VINT(143)=1D0
18498         VINT(144)=1D0
18499  
18500 C...Loop over phase space points: xT2 choice in 20 bins.
18501   100   SIGSUM=0D0
18502         DO 120 IXT2=1,20
18503           NMUL(IXT2)=MSTP(83)
18504           SIGM(IXT2)=0D0
18505           DO 110 ITRY=1,MSTP(83)
18506             RSCA=0.05D0*((21-IXT2)-PYR(0))
18507             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
18508             XT2=MAX(0.01D0*VINT(149),XT2)
18509             VINT(25)=XT2
18510  
18511 C...Choose tau and y*. Calculate cos(theta-hat).
18512             IF(PYR(0).LE.COEF(ISUB,1)) THEN
18513               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
18514               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
18515             ELSE
18516               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
18517             ENDIF
18518             VINT(21)=TAU
18519             CALL PYKLIM(2)
18520             RYST=PYR(0)
18521             MYST=1
18522             IF(RYST.GT.COEF(ISUB,8)) MYST=2
18523             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
18524             CALL PYKMAP(2,MYST,PYR(0))
18525             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
18526  
18527 C...Calculate differential cross-section.
18528             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
18529             CALL PYSIGH(NCHN,SIGS)
18530             SIGM(IXT2)=SIGM(IXT2)+SIGS
18531   110     CONTINUE
18532           SIGSUM=SIGSUM+SIGM(IXT2)
18533   120   CONTINUE
18534         SIGSUM=SIGSUM/(20D0*MSTP(83))
18535  
18536 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
18537         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
18538           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
18539      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
18540           PARP(82)=0.9D0*PARP(82)
18541           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
18542      &    VINT(2)
18543           GOTO 100
18544         ENDIF
18545         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
18546      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
18547  
18548 C...Start iteration to find k factor.
18549         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
18550         P83A=(1D0-PARP(83))**2
18551         P83B=2D0*PARP(83)*(1D0-PARP(83))
18552         P83C=PARP(83)**2
18553         CQ2I=1D0/PARP(84)**2
18554         CQ2R=2D0/(1D0+PARP(84)**2)
18555         SO=0.5D0
18556         XI=0D0
18557         YI=0D0
18558         XF=0D0
18559         YF=0D0
18560         XK=0.5D0
18561         IIT=0
18562   130   IF(IIT.EQ.0) THEN
18563           XK=2D0*XK
18564         ELSEIF(IIT.EQ.1) THEN
18565           XK=0.5D0*XK
18566         ELSE
18567           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
18568         ENDIF
18569  
18570 C...Evaluate overlap integrals. Find where to divide the b range.
18571         IF(MSTP(82).EQ.2) THEN
18572           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
18573           SOP=SP/PARU(1)
18574         ELSE
18575           IF(MSTP(82).EQ.3) THEN
18576             DELTAB=0.02D0
18577           ELSEIF(MSTP(82).EQ.4) THEN
18578             DELTAB=MIN(0.01D0,0.05D0*PARP(84))
18579           ELSE
18580             POWIP=MAX(0.4D0,PARP(83))
18581             RPWIP=2D0/POWIP-1D0
18582             DELTAB=MAX(0.02D0,0.02D0*(2D0/POWIP)**(1D0/POWIP))
18583             SO=0D0
18584           ENDIF
18585           SP=0D0
18586           SOP=0D0
18587           BSP=0D0
18588           SOHIGH=0D0
18589           IBDIV=0
18590           B=-0.5D0*DELTAB
18591   140     B=B+DELTAB
18592           IF(MSTP(82).EQ.3) THEN
18593             OV=EXP(-B**2)/PARU(2)
18594           ELSEIF(MSTP(82).EQ.4) THEN
18595             OV=(P83A*EXP(-MIN(50D0,B**2))+
18596      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
18597      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
18598           ELSE
18599             OV=EXP(-B**POWIP)/PARU(2)
18600             SO=SO+PARU(2)*B*DELTAB*OV
18601           ENDIF
18602           IF(IBDIV.EQ.1) SOHIGH=SOHIGH+PARU(2)*B*DELTAB*OV
18603           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
18604           SP=SP+PARU(2)*B*DELTAB*PACC
18605           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
18606           BSP=BSP+B*PARU(2)*B*DELTAB*PACC
18607           IF(IBDIV.EQ.0.AND.PARU(1)*XK*OV.LT.1D0) THEN
18608             IBDIV=1 
18609             BDIV=B+0.5D0*DELTAB
18610           ENDIF
18611           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
18612         ENDIF
18613         YK=PARU(1)*XK*SO/SP
18614  
18615 C...Continue iteration until convergence.
18616         IF(YK.LT.YKE) THEN
18617           XI=XK
18618           YI=YK
18619           IF(IIT.EQ.1) IIT=2
18620         ELSE
18621           XF=XK
18622           YF=YK
18623           IF(IIT.EQ.0) IIT=1
18624         ENDIF
18625         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
18626  
18627 C...Store some results for subsequent use.
18628         BAVG=BSP/SP
18629         VINT(145)=SIGSUM
18630         VINT(146)=SOP/SO
18631         VINT(147)=SOP/SP
18632         VNT145=VINT(145)
18633         VNT146=VINT(146)
18634         VNT147=VINT(147)
18635 C...PIK = PARU(1)*XK = (VINT(146)/VINT(147))*sigma_jet/sigma_nondiffr.
18636         PIK=(VNT146/VNT147)*YKE
18637
18638 C...Find relative weight for low and high impact parameter.
18639       PLOWB=PARU(1)*BDIV**2
18640       IF(MSTP(82).EQ.3) THEN
18641         PHIGHB=PIK*0.5*EXP(-BDIV**2)
18642       ELSEIF(MSTP(82).EQ.4) THEN
18643         S4A=P83A*EXP(-BDIV**2)
18644         S4B=P83B*EXP(-BDIV**2*CQ2R)
18645         S4C=P83C*EXP(-BDIV**2*CQ2I)
18646         PHIGHB=PIK*0.5*(S4A+S4B+S4C)
18647       ELSEIF(PARP(83).GE.1.999D0) THEN
18648         PHIGHB=PIK*SOHIGH
18649         B2RPDV=BDIV**POWIP
18650       ELSE
18651         PHIGHB=PIK*SOHIGH
18652         B2RPDV=BDIV**POWIP
18653         B2RPMX=MAX(2D0*RPWIP,B2RPDV)
18654       ENDIF 
18655       PALLB=PLOWB+PHIGHB
18656  
18657 C...Initialize iteration in xT2 for hardest interaction.
18658       ELSEIF(MMUL.EQ.2) THEN
18659         VINT(145)=VNT145
18660         VINT(146)=VNT146
18661         VINT(147)=VNT147
18662         IF(MSTP(82).LE.0) THEN
18663         ELSEIF(MSTP(82).EQ.1) THEN
18664           XT2=1D0
18665           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
18666           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
18667      &    VINT(317)/(VINT(318)*VINT(320))
18668           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
18669         ELSEIF(MSTP(82).EQ.2) THEN
18670           XT2=1D0
18671           XT2FAC=VNT146*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
18672      &    VINT(149)*(1D0+VINT(149))
18673         ELSE
18674           XC2=4D0*CKIN(3)**2/VINT(2)
18675           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
18676         ENDIF
18677
18678 C...Select impact parameter for hardest interaction.
18679         IF(MSTP(82).LE.2) RETURN
18680   142   IF(PYR(0)*PALLB.LT.PLOWB) THEN
18681 C...Treatment in low b region.
18682           MINT(39)=1
18683           B=BDIV*SQRT(PYR(0)) 
18684           IF(MSTP(82).EQ.3) THEN
18685             OV=EXP(-B**2)/PARU(2)
18686           ELSEIF(MSTP(82).EQ.4) THEN
18687             OV=(P83A*EXP(-MIN(50D0,B**2))+
18688      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
18689      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
18690           ELSE
18691             OV=EXP(-B**POWIP)/PARU(2)
18692           ENDIF  
18693           VINT(148)=OV/VNT147
18694           PACC=1D0-EXP(-MIN(50D0,PIK*OV))
18695           XT2=1D0
18696           XT2FAC=VNT146*VINT(148)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
18697      &    VINT(149)*(1D0+VINT(149))
18698         ELSE
18699 C...Treatment in high b region.
18700           MINT(39)=2
18701           IF(MSTP(82).EQ.3) THEN
18702             B=SQRT(BDIV**2-LOG(PYR(0)))
18703             OV=EXP(-B**2)/PARU(2)
18704           ELSEIF(MSTP(82).EQ.4) THEN
18705             S4RNDM=PYR(0)*(S4A+S4B+S4C)
18706             IF(S4RNDM.LT.S4A) THEN
18707               B=SQRT(BDIV**2-LOG(PYR(0)))
18708             ELSEIF(S4RNDM.LT.S4A+S4B) THEN
18709               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2R)
18710             ELSE
18711               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2I)
18712             ENDIF    
18713             OV=(P83A*EXP(-MIN(50D0,B**2))+
18714      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
18715      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
18716           ELSEIF(PARP(83).GE.1.999D0) THEN
18717   144       B2RPW=B2RPDV-LOG(PYR(0))
18718             ACCIP=(B2RPW/B2RPDV)**RPWIP
18719             IF(ACCIP.LT.PYR(0)) GOTO 144
18720             OV=EXP(-B2RPW)/PARU(2)
18721             B=B2RPW**(1D0/POWIP)
18722           ELSE
18723   146       B2RPW=B2RPDV-2D0*LOG(PYR(0))
18724             ACCIP=(B2RPW/B2RPMX)**RPWIP*EXP(-0.5D0*(B2RPW-B2RPMX))
18725             IF(ACCIP.LT.PYR(0)) GOTO 146
18726             OV=EXP(-B2RPW)/PARU(2)
18727             B=B2RPW**(1D0/POWIP)
18728           ENDIF  
18729           VINT(148)=OV/VNT147
18730           PACC=(1D0-EXP(-MIN(50D0,PIK*OV)))/(PIK*OV)
18731         ENDIF
18732         IF(PACC.LT.PYR(0)) GOTO 142
18733         VINT(139)=B/BAVG
18734  
18735       ELSEIF(MMUL.EQ.3) THEN
18736 C...Low-pT or multiple interactions (first semihard interaction):
18737 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
18738 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
18739         ISUB=MINT(1)
18740         VINT(145)=VNT145
18741         VINT(146)=VNT146
18742         VINT(147)=VNT147
18743         IF(MSTP(82).LE.0) THEN
18744           XT2=0D0
18745         ELSEIF(MSTP(82).EQ.1) THEN
18746           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
18747 C...Use with "Sudakov" for low b values when impact parameter dependence.
18748         ELSEIF(MSTP(82).EQ.2.OR.MINT(39).EQ.1) THEN
18749           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
18750      &    VINT(149)))).GT.PYR(0)) XT2=1D0
18751           IF(XT2.GE.1D0) THEN
18752             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
18753      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
18754      &      VINT(149)
18755           ELSE
18756             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
18757      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
18758      &      VINT(149)
18759           ENDIF
18760           XT2=MAX(0.01D0*VINT(149),XT2)
18761 C...Use without "Sudakov" for high b values when impact parameter dep.
18762         ELSE
18763           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
18764      &    PYR(0)*(1D0-XC2))-VINT(149)
18765           XT2=MAX(0.01D0*VINT(149),XT2)
18766         ENDIF
18767         VINT(25)=XT2
18768  
18769 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
18770         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
18771           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
18772           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
18773           ISUB=95
18774           MINT(1)=ISUB
18775           VINT(21)=0.01D0*VINT(149)
18776           VINT(22)=0D0
18777           VINT(23)=0D0
18778           VINT(25)=0.01D0*VINT(149)
18779  
18780         ELSE
18781 C...Multiple interactions (first semihard interaction).
18782 C...Choose tau and y*. Calculate cos(theta-hat).
18783           IF(PYR(0).LE.COEF(ISUB,1)) THEN
18784             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
18785             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
18786           ELSE
18787             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
18788           ENDIF
18789           VINT(21)=TAU
18790           CALL PYKLIM(2)
18791           RYST=PYR(0)
18792           MYST=1
18793           IF(RYST.GT.COEF(ISUB,8)) MYST=2
18794           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
18795           CALL PYKMAP(2,MYST,PYR(0))
18796           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
18797         ENDIF
18798         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
18799  
18800 C...Store results of cross-section calculation.
18801       ELSEIF(MMUL.EQ.4) THEN
18802         ISUB=MINT(1)
18803         VINT(145)=VNT145
18804         VINT(146)=VNT146
18805         VINT(147)=VNT147
18806         XTS=VINT(25)
18807         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
18808         IF(ISET(ISUB).EQ.2)
18809      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
18810         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
18811         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
18812      &  (XTS+VINT(149))))
18813         IRBIN=INT(1D0+20D0*RBIN)
18814         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
18815           NMUL(IRBIN)=NMUL(IRBIN)+1
18816           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
18817         ENDIF
18818  
18819 C...Choose impact parameter if not already done.
18820       ELSEIF(MMUL.EQ.5) THEN
18821         ISUB=MINT(1)
18822         VINT(145)=VNT145
18823         VINT(146)=VNT146
18824         VINT(147)=VNT147
18825   150   IF(MINT(39).GT.0) THEN
18826         ELSEIF(MSTP(82).EQ.3) THEN
18827           EXPB2=PYR(0)
18828           B2=-LOG(PYR(0))
18829           VINT(148)=EXPB2/(PARU(2)*VNT147)
18830           VINT(139)=SQRT(B2)/BAVG
18831         ELSEIF(MSTP(82).EQ.4) THEN
18832           RTYPE=PYR(0)
18833           IF(RTYPE.LT.P83A) THEN
18834             B2=-LOG(PYR(0))
18835           ELSEIF(RTYPE.LT.P83A+P83B) THEN
18836             B2=-LOG(PYR(0))/CQ2R
18837           ELSE
18838             B2=-LOG(PYR(0))/CQ2I
18839           ENDIF
18840           VINT(148)=(P83A*EXP(-MIN(50D0,B2))+
18841      &    P83B*CQ2R*EXP(-MIN(50D0,B2*CQ2R))+
18842      &    P83C*CQ2I*EXP(-MIN(50D0,B2*CQ2I)))/(PARU(2)*VNT147)
18843           VINT(139)=SQRT(B2)/BAVG
18844         ELSEIF(PARP(83).GE.1.999D0) THEN
18845           POWIP=MAX(2D0,PARP(83))
18846           RPWIP=2D0/POWIP-1D0
18847           PROB1=POWIP/(2D0*EXP(-1D0)+POWIP)
18848   160     IF(PYR(0).LT.PROB1) THEN
18849             B2RPW=PYR(0)**(0.5D0*POWIP)
18850             ACCIP=EXP(-B2RPW)
18851           ELSE
18852             B2RPW=1D0-LOG(PYR(0))
18853             ACCIP=B2RPW**RPWIP
18854           ENDIF
18855           IF(ACCIP.LT.PYR(0)) GOTO 160
18856           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
18857           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
18858         ELSE
18859           POWIP=MAX(0.4D0,PARP(83))
18860           RPWIP=2D0/POWIP-1D0
18861           PROB1=RPWIP/(RPWIP+2D0**RPWIP*EXP(-RPWIP))
18862   170     IF(PYR(0).LT.PROB1) THEN
18863             B2RPW=2D0*RPWIP*PYR(0)
18864             ACCIP=(B2RPW/RPWIP)**RPWIP*EXP(RPWIP-B2RPW)
18865           ELSE
18866             B2RPW=2D0*(RPWIP-LOG(PYR(0)))
18867             ACCIP=(0.5D0*B2RPW/RPWIP)**RPWIP*EXP(RPWIP-0.5D0*B2RPW)
18868           ENDIF
18869           IF(ACCIP.LT .PYR(0)) GOTO 170
18870           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
18871           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
18872         ENDIF
18873  
18874 C...Multiple interactions (variable impact parameter) : reject with
18875 C...probability exp(-overlap*cross-section above pT/normalization).
18876 C...Does not apply to low-b region, where "Sudakov" already included.
18877         VINT(150)=1D0 
18878         IF(MINT(39).NE.1) THEN
18879           RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
18880           SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
18881           DO 180 IBIN=IRBIN+1,20
18882             RNCOR=RNCOR+NMUL(IBIN)
18883             SIGCOR=SIGCOR+SIGM(IBIN)
18884   180     CONTINUE
18885           SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
18886           IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
18887           VINT(150)=EXP(-MIN(50D0,VNT146*VINT(148)*
18888      &    SIGABV/MAX(1D-10,SIGT(0,0,5))))
18889         ENDIF
18890         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
18891      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
18892      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
18893           IF(VINT(150).LT.PYR(0)) GOTO 150
18894           VINT(150)=1D0
18895         ENDIF
18896  
18897 C...Generate additional multiple semihard interactions.
18898       ELSEIF(MMUL.EQ.6) THEN
18899         ISUBSV=MINT(1)
18900         VINT(145)=VNT145
18901         VINT(146)=VNT146
18902         VINT(147)=VNT147
18903         DO 190 J=11,80
18904           VINTSV(J)=VINT(J)
18905   190   CONTINUE
18906         ISUB=96
18907         MINT(1)=96
18908         VINT(151)=0D0
18909         VINT(152)=0D0
18910  
18911 C...Reconstruct strings in hard scattering.
18912         NMAX=MINT(84)+4
18913         IF(ISET(ISUBSV).EQ.1) NMAX=MINT(84)+2
18914         IF(ISET(ISUBSV).EQ.11) NMAX=MINT(84)+2+MINT(3)
18915         NSTR=0
18916         DO 210 I=MINT(84)+1,NMAX
18917           KCS=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
18918           IF(KCS.EQ.0) GOTO 210
18919           DO 200 J=1,4
18920             IF(KCS.EQ.1.AND.(J.EQ.2.OR.J.EQ.4)) GOTO 200
18921             IF(KCS.EQ.-1.AND.(J.EQ.1.OR.J.EQ.3)) GOTO 200
18922             IF(J.LE.2) THEN
18923               IST=MOD(K(I,J+3)/MSTU(5),MSTU(5))
18924             ELSE
18925               IST=MOD(K(I,J+1),MSTU(5))
18926             ENDIF
18927             IF(IST.LT.MINT(84).OR.IST.GT.I) GOTO 200
18928             IF(KCHG(PYCOMP(K(IST,2)),2).EQ.0) GOTO 200
18929             NSTR=NSTR+1
18930             IF(J.EQ.1.OR.J.EQ.4) THEN
18931               KSTR(NSTR,1)=I
18932               KSTR(NSTR,2)=IST
18933             ELSE
18934               KSTR(NSTR,1)=IST
18935               KSTR(NSTR,2)=I
18936             ENDIF
18937   200     CONTINUE
18938   210   CONTINUE
18939  
18940 C...Set up starting values for iteration in xT2.
18941         XT2=4D0*VINT(62)/VINT(2)
18942         IF(MSTP(82).LE.1) THEN
18943           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
18944           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
18945      &    VINT(317)/(VINT(318)*VINT(320))
18946           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
18947         ELSE
18948           XT2FAC=VNT146*VINT(148)*XSEC(ISUB,1)/
18949      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
18950         ENDIF
18951         VINT(63)=0D0
18952         VINT(64)=0D0
18953         VINT(143)=1D0-VINT(141)
18954         VINT(144)=1D0-VINT(142)
18955  
18956 C...Iterate downwards in xT2.
18957   220   IF(MSTP(82).LE.1) THEN
18958           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
18959           IF(XT2.LT.VINT(149)) GOTO 270
18960         ELSE
18961           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 270
18962           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
18963      &    LOG(PYR(0)))-VINT(149)
18964           IF(XT2.LE.0D0) GOTO 270
18965           XT2=MAX(0.01D0*VINT(149),XT2)
18966         ENDIF
18967         VINT(25)=XT2
18968  
18969 C...Choose tau and y*. Calculate cos(theta-hat).
18970         IF(PYR(0).LE.COEF(ISUB,1)) THEN
18971           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
18972           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
18973         ELSE
18974           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
18975         ENDIF
18976         VINT(21)=TAU
18977         CALL PYKLIM(2)
18978         RYST=PYR(0)
18979         MYST=1
18980         IF(RYST.GT.COEF(ISUB,8)) MYST=2
18981         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
18982         CALL PYKMAP(2,MYST,PYR(0))
18983         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
18984  
18985 C...Check that x not used up. Accept or reject kinematical variables.
18986         X1M=SQRT(TAU)*EXP(VINT(22))
18987         X2M=SQRT(TAU)*EXP(-VINT(22))
18988         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 220
18989         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
18990         CALL PYSIGH(NCHN,SIGS)
18991         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
18992         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 220
18993  
18994 C...Reset K, P and V vectors. Select some variables.
18995         DO 240 I=N+1,N+2
18996           DO 230 J=1,5
18997             K(I,J)=0
18998             P(I,J)=0D0
18999             V(I,J)=0D0
19000   230     CONTINUE
19001   240   CONTINUE
19002         RFLAV=PYR(0)
19003         PT=0.5D0*VINT(1)*SQRT(XT2)
19004         PHI=PARU(2)*PYR(0)
19005         CTH=VINT(23)
19006  
19007 C...Add first parton to event record.
19008         K(N+1,1)=3
19009         K(N+1,2)=21
19010         IF(RFLAV.GE.MAX(PARP(85),PARP(86))) K(N+1,2)=
19011      &  1+INT((2D0+PARJ(2))*PYR(0))
19012         P(N+1,1)=PT*COS(PHI)
19013         P(N+1,2)=PT*SIN(PHI)
19014         P(N+1,3)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)-VINT(42)*(1D0-CTH))
19015         P(N+1,4)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)+VINT(42)*(1D0-CTH))
19016         P(N+1,5)=0D0
19017  
19018 C...Add second parton to event record.
19019         K(N+2,1)=3
19020         K(N+2,2)=21
19021         IF(K(N+1,2).NE.21) K(N+2,2)=-K(N+1,2)
19022         P(N+2,1)=-P(N+1,1)
19023         P(N+2,2)=-P(N+1,2)
19024         P(N+2,3)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)-VINT(42)*(1D0+CTH))
19025         P(N+2,4)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)+VINT(42)*(1D0+CTH))
19026         P(N+2,5)=0D0
19027  
19028         IF(RFLAV.LT.PARP(85).AND.NSTR.GE.1) THEN
19029 C....Choose relevant string pieces to place gluons on.
19030           DO 260 I=N+1,N+2
19031             DMIN=1D8
19032             DO 250 ISTR=1,NSTR
19033               I1=KSTR(ISTR,1)
19034               I2=KSTR(ISTR,2)
19035               DIST=(P(I,4)*P(I1,4)-P(I,1)*P(I1,1)-P(I,2)*P(I1,2)-
19036      &        P(I,3)*P(I1,3))*(P(I,4)*P(I2,4)-P(I,1)*P(I2,1)-
19037      &        P(I,2)*P(I2,2)-P(I,3)*P(I2,3))/MAX(1D0,P(I1,4)*P(I2,4)-
19038      &        P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-P(I1,3)*P(I2,3))
19039               IF(ISTR.EQ.1.OR.DIST.LT.DMIN) THEN
19040                 DMIN=DIST
19041                 IST1=I1
19042                 IST2=I2
19043                 ISTM=ISTR
19044               ENDIF
19045   250       CONTINUE
19046  
19047 C....Colour flow adjustments, new string pieces.
19048             IF(K(IST1,4)/MSTU(5).EQ.IST2) K(IST1,4)=MSTU(5)*I+
19049      &      MOD(K(IST1,4),MSTU(5))
19050             IF(MOD(K(IST1,5),MSTU(5)).EQ.IST2) K(IST1,5)=
19051      &      MSTU(5)*(K(IST1,5)/MSTU(5))+I
19052             K(I,5)=MSTU(5)*IST1
19053             K(I,4)=MSTU(5)*IST2
19054             IF(K(IST2,5)/MSTU(5).EQ.IST1) K(IST2,5)=MSTU(5)*I+
19055      &      MOD(K(IST2,5),MSTU(5))
19056             IF(MOD(K(IST2,4),MSTU(5)).EQ.IST1) K(IST2,4)=
19057      &      MSTU(5)*(K(IST2,4)/MSTU(5))+I
19058             KSTR(ISTM,2)=I
19059             KSTR(NSTR+1,1)=I
19060             KSTR(NSTR+1,2)=IST2
19061             NSTR=NSTR+1
19062   260     CONTINUE
19063  
19064 C...String drawing and colour flow for gluon loop.
19065         ELSEIF(K(N+1,2).EQ.21) THEN
19066           K(N+1,4)=MSTU(5)*(N+2)
19067           K(N+1,5)=MSTU(5)*(N+2)
19068           K(N+2,4)=MSTU(5)*(N+1)
19069           K(N+2,5)=MSTU(5)*(N+1)
19070           KSTR(NSTR+1,1)=N+1
19071           KSTR(NSTR+1,2)=N+2
19072           KSTR(NSTR+2,1)=N+2
19073           KSTR(NSTR+2,2)=N+1
19074           NSTR=NSTR+2
19075  
19076 C...String drawing and colour flow for qqbar pair.
19077         ELSE
19078           K(N+1,4)=MSTU(5)*(N+2)
19079           K(N+2,5)=MSTU(5)*(N+1)
19080           KSTR(NSTR+1,1)=N+1
19081           KSTR(NSTR+1,2)=N+2
19082           NSTR=NSTR+1
19083         ENDIF
19084  
19085 C...Global statistics.
19086         MINT(351)=MINT(351)+1
19087         VINT(351)=VINT(351)+PT
19088         IF (MINT(351).EQ.1) VINT(356)=PT
19089  
19090 C...Update remaining energy; iterate.
19091         N=N+2
19092         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
19093           CALL PYERRM(11,'(PYMULT:) no more memory left in PYJETS')
19094           MINT(51)=1
19095           RETURN
19096         ENDIF
19097         MINT(31)=MINT(31)+1
19098         VINT(151)=VINT(151)+VINT(41)
19099         VINT(152)=VINT(152)+VINT(42)
19100         VINT(143)=VINT(143)-VINT(41)
19101         VINT(144)=VINT(144)-VINT(42)
19102 C...Allow FSR for UE
19103         IF(MSTP(152).EQ.1) CALL PYSHOW(N-1,N,SQRT(PARP(71))*PT)
19104         IF(MINT(31).LT.240) GOTO 220
19105   270   CONTINUE
19106         MINT(1)=ISUBSV
19107         DO 280 J=11,80
19108           VINT(J)=VINTSV(J)
19109   280   CONTINUE
19110       ENDIF
19111  
19112 C...Format statements for printout.
19113  5000 FORMAT(/1X,'****** PYMULT: initialization of multiple inter',
19114      &'actions for MSTP(82) =',I2,' ******')
19115  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
19116      &D9.2,' mb: rejected')
19117  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
19118      &D9.2,' mb: accepted')
19119  
19120       RETURN
19121       END
19122  
19123 C*********************************************************************
19124  
19125 C...PYREMN
19126 C...Adds on target remnants (one or two from each side) and
19127 C...includes primordial kT for hadron beams.
19128  
19129       SUBROUTINE PYREMN(IPU1,IPU2)
19130  
19131 C...Double precision and integer declarations.
19132       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19133       IMPLICIT INTEGER(I-N)
19134       INTEGER PYK,PYCHGE,PYCOMP
19135 C...Commonblocks.
19136       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19137       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19138       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19139       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19140       COMMON/PYINT1/MINT(400),VINT(400)
19141       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
19142 C...Local arrays.
19143       DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
19144      &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
19145  
19146 C...Find event type and remaining energy.
19147       ISUB=MINT(1)
19148       NS=N
19149       IF(MINT(50).EQ.0.OR.MOD(MSTP(81),10).LE.0) THEN
19150         VINT(143)=1D0-VINT(141)
19151         VINT(144)=1D0-VINT(142)
19152       ENDIF
19153  
19154 C...Define initial partons.
19155       NTRY=0
19156   100 NTRY=NTRY+1
19157       DO 130 JT=1,2
19158         I=MINT(83)+JT+2
19159         IF(JT.EQ.1) IPU=IPU1
19160         IF(JT.EQ.2) IPU=IPU2
19161         K(I,1)=21
19162         K(I,2)=K(IPU,2)
19163         K(I,3)=I-2
19164         PMS(JT)=0D0
19165         VINT(156+JT)=0D0
19166         VINT(158+JT)=0D0
19167         IF(MINT(47).EQ.1) THEN
19168           DO 110 J=1,5
19169             P(I,J)=P(I-2,J)
19170   110     CONTINUE
19171         ELSEIF(ISUB.EQ.95) THEN
19172           K(I,2)=21
19173         ELSE
19174           P(I,5)=P(IPU,5)
19175  
19176 C...No primordial kT, or chosen according to truncated Gaussian or
19177 C...exponential, or (for photon) predetermined or power law.
19178   120     IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
19179             IF(MSTP(91).LE.0) THEN
19180               PT=0D0
19181             ELSEIF(MSTP(91).EQ.1) THEN
19182               PT=PARP(91)*SQRT(-LOG(PYR(0)))
19183             ELSE
19184               RPT1=PYR(0)
19185               RPT2=PYR(0)
19186               PT=-PARP(92)*LOG(RPT1*RPT2)
19187             ENDIF
19188             IF(PT.GT.PARP(93)) GOTO 120
19189           ELSEIF(MINT(106+JT).EQ.3) THEN
19190             PTA=SQRT(VINT(282+JT))
19191             PTB=0D0
19192             IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
19193               PTB=PARP(99)*SQRT(-LOG(PYR(0)))
19194             ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
19195               RPT1=PYR(0)
19196               RPT2=PYR(0)
19197               PTB=-PARP(99)*LOG(RPT1*RPT2)
19198             ENDIF
19199             IF(PTB.GT.PARP(100)) GOTO 120
19200             PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
19201             PT=PT*0.8D0**MINT(57)
19202             IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
19203           ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
19204             IF(MSTP(93).LE.0) THEN
19205               PT=0D0
19206             ELSEIF(MSTP(93).EQ.1) THEN
19207               PT=PARP(99)*SQRT(-LOG(PYR(0)))
19208             ELSEIF(MSTP(93).EQ.2) THEN
19209               RPT1=PYR(0)
19210               RPT2=PYR(0)
19211               PT=-PARP(99)*LOG(RPT1*RPT2)
19212             ELSEIF(MSTP(93).EQ.3) THEN
19213               HA=PARP(99)**2
19214               HB=PARP(100)**2
19215               PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
19216             ELSE
19217               HA=PARP(99)**2
19218               HB=PARP(100)**2
19219               IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
19220               PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
19221             ENDIF
19222             IF(PT.GT.PARP(100)) GOTO 120
19223           ELSE
19224             PT=0D0
19225           ENDIF
19226           VINT(156+JT)=PT
19227           PHI=PARU(2)*PYR(0)
19228           P(I,1)=PT*COS(PHI)
19229           P(I,2)=PT*SIN(PHI)
19230           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
19231         ENDIF
19232   130 CONTINUE
19233       IF(MINT(47).EQ.1) RETURN
19234  
19235 C...Kinematics construction for initial partons.
19236       I1=MINT(83)+3
19237       I2=MINT(83)+4
19238       IF(ISUB.EQ.95) THEN
19239         SHS=0D0
19240         SHR=0D0
19241       ELSE
19242         SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
19243      &  (P(I1,2)+P(I2,2))**2
19244         SHR=SQRT(MAX(0D0,SHS))
19245         IF((SHS-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2).LE.0D0) GOTO 100
19246         P(I1,4)=0.5D0*(SHR+(PMS(1)-PMS(2))/SHR)
19247         P(I1,3)=SQRT(MAX(0D0,P(I1,4)**2-PMS(1)))
19248         P(I2,4)=SHR-P(I1,4)
19249         P(I2,3)=-P(I1,3)
19250  
19251 C...Transform partons to overall CM-frame.
19252         ROBO(3)=(P(I1,1)+P(I2,1))/SHR
19253         ROBO(4)=(P(I1,2)+P(I2,2))/SHR
19254         CALL PYROBO(I1,I2,0D0,0D0,-ROBO(3),-ROBO(4),0D0)
19255         ROBO(2)=PYANGL(P(I1,1),P(I1,2))
19256         CALL PYROBO(I1,I2,0D0,-ROBO(2),0D0,0D0,0D0)
19257         ROBO(1)=PYANGL(P(I1,3),P(I1,1))
19258         CALL PYROBO(I1,I2,-ROBO(1),0D0,0D0,0D0,0D0)
19259         CALL PYROBO(I2+1,MINT(52),0D0,-ROBO(2),0D0,0D0,0D0)
19260         CALL PYROBO(I1,MINT(52),ROBO(1),ROBO(2),ROBO(3),ROBO(4),0D0)
19261         ROBO(5)=(VINT(141)-VINT(142))/(VINT(141)+VINT(142))
19262         CALL PYROBO(I1,MINT(52),0D0,0D0,0D0,0D0,ROBO(5))
19263       ENDIF
19264  
19265 C...Optionally fix up x and Q2 definitions for leptoproduction.
19266       IDISXQ=0
19267       IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
19268      &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
19269       IF(IDISXQ.EQ.1) THEN
19270  
19271 C...Find where incoming and outgoing leptons/partons are sitting.
19272         LESD=1
19273         IF(MINT(42).EQ.1) LESD=2
19274         LPIN=MINT(83)+3-LESD
19275         LEIN=MINT(84)+LESD
19276         LQIN=MINT(84)+3-LESD
19277         LEOUT=MINT(84)+2+LESD
19278         LQOUT=MINT(84)+5-LESD
19279         IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
19280         IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
19281         LSCMS=0
19282         DO 140 I=MINT(84)+5,N
19283           IF(K(I,2).EQ.94) THEN
19284             LSCMS=I
19285             LEOUT=I+LESD
19286             LQOUT=I+3-LESD
19287           ENDIF
19288   140   CONTINUE
19289         LQBG=IPU1
19290         IF(LESD.EQ.1) LQBG=IPU2
19291  
19292 C...Calculate actual and wanted momentum transfer.
19293         XNOM=VINT(43-LESD)
19294         Q2NOM=-VINT(45)
19295         HPK=2D0*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
19296      &  P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
19297      &  (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
19298         HPT2=MAX(0D0,Q2NOM*(1D0-Q2NOM/(XNOM*HPK)))
19299         FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
19300         P(N+1,1)=FAC*P(LEOUT,1)
19301         P(N+1,2)=FAC*P(LEOUT,2)
19302         P(N+1,3)=0.25D0*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
19303      &  Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
19304         P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
19305      &  P(N+1,3)**2)
19306         DO 150 J=1,4
19307           QOLD(J)=P(LEIN,J)-P(LEOUT,J)
19308           QNEW(J)=P(LEIN,J)-P(N+1,J)
19309   150   CONTINUE
19310  
19311 C...Boost outgoing electron and daughters.
19312         IF(LSCMS.EQ.0) THEN
19313           DO 160 J=1,4
19314             P(LEOUT,J)=P(N+1,J)
19315   160     CONTINUE
19316         ELSE
19317           DO 170 J=1,3
19318             P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
19319   170     CONTINUE
19320           PINV=2D0/(1D0+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
19321           DO 180 J=1,3
19322             DBE(J)=PINV*P(N+2,J)
19323   180     CONTINUE
19324           DO 200 I=LSCMS+1,N
19325             IORIG=I
19326   190       IORIG=K(IORIG,3)
19327             IF(IORIG.GT.LEOUT) GOTO 190
19328             IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
19329      &      CALL PYROBO(I,I,0D0,0D0,DBE(1),DBE(2),DBE(3))
19330   200     CONTINUE
19331         ENDIF
19332  
19333 C...Copy shower initiator and all outgoing partons.
19334         NCOP=N+1
19335         K(NCOP,3)=LQBG
19336         DO 210 J=1,5
19337           P(NCOP,J)=P(LQBG,J)
19338   210   CONTINUE
19339         DO 240 I=MINT(84)+1,N
19340           ICOP=0
19341           IF(K(I,1).GT.10) GOTO 240
19342           IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
19343             ICOP=I
19344           ELSE
19345             IORIG=I
19346   220       IORIG=K(IORIG,3)
19347             IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
19348               ICOP=IORIG
19349             ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
19350               GOTO 220
19351             ENDIF
19352           ENDIF
19353           IF(ICOP.NE.0) THEN
19354             NCOP=NCOP+1
19355             K(NCOP,3)=I
19356             DO 230 J=1,5
19357               P(NCOP,J)=P(I,J)
19358   230       CONTINUE
19359           ENDIF
19360   240   CONTINUE
19361  
19362 C...Calculate relative rescaling factors.
19363         SLC=3-2*LESD
19364         PLCSUM=0D0
19365         DO 250 I=N+2,NCOP
19366           PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
19367   250   CONTINUE
19368         DO 260 I=N+2,NCOP
19369           V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
19370   260   CONTINUE
19371  
19372 C...Transfer extra three-momentum of current.
19373         DO 280 I=N+2,NCOP
19374           DO 270 J=1,3
19375             P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
19376   270     CONTINUE
19377           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
19378   280   CONTINUE
19379  
19380 C...Iterate change of initiator momentum to get energy right.
19381         ITER=0
19382   290   ITER=ITER+1
19383         PEEX=-P(N+1,4)-QNEW(4)
19384         PEMV=-P(N+1,3)/P(N+1,4)
19385         DO 300 I=N+2,NCOP
19386           PEEX=PEEX+P(I,4)
19387           PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
19388   300   CONTINUE
19389         IF(ABS(PEMV).LT.1D-10) THEN
19390           MINT(51)=1
19391           MINT(57)=MINT(57)+1
19392           RETURN
19393         ENDIF
19394         PZCH=-PEEX/PEMV
19395         P(N+1,3)=P(N+1,3)+PZCH
19396         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)
19397         DO 310 I=N+2,NCOP
19398           P(I,3)=P(I,3)+V(I,1)*PZCH
19399           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
19400   310   CONTINUE
19401         IF(ITER.LT.10.AND.ABS(PEEX).GT.1D-6*P(N+1,4)) GOTO 290
19402  
19403 C...Modify momenta in event record.
19404         HBE=2D0*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
19405      &  ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
19406         IF(ABS(HBE).GE.1D0) THEN
19407           MINT(51)=1
19408           MINT(57)=MINT(57)+1
19409           RETURN
19410         ENDIF
19411         I=MINT(83)+5-LESD
19412         CALL PYROBO(I,I,0D0,0D0,0D0,0D0,HBE)
19413         DO 330 I=N+1,NCOP
19414           ICOP=K(I,3)
19415           DO 320 J=1,4
19416             P(ICOP,J)=P(I,J)
19417   320     CONTINUE
19418   330   CONTINUE
19419       ENDIF
19420  
19421 C...Check minimum invariant mass of remnant system(s).
19422       PSYS(0,4)=P(I1,4)+P(I2,4)+0.5D0*VINT(1)*(VINT(151)+VINT(152))
19423       PSYS(0,3)=P(I1,3)+P(I2,3)+0.5D0*VINT(1)*(VINT(151)-VINT(152))
19424       PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
19425       PMIN(0)=SQRT(PMS(0))
19426       DO 340 JT=1,2
19427         PSYS(JT,4)=0.5D0*VINT(1)*VINT(142+JT)
19428         PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
19429         PMIN(JT)=0D0
19430         IF(MINT(44+JT).EQ.1) GOTO 340
19431         MINT(105)=MINT(102+JT)
19432         MINT(109)=MINT(106+JT)
19433         CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
19434         IF(MINT(51).NE.0) THEN
19435           MINT(57)=MINT(57)+1
19436           RETURN
19437         ENDIF
19438         IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLCH(JT))
19439         IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLSP(JT))
19440         IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5D0*PARP(111)
19441         PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
19442      &  P(MINT(83)+JT+2,2)**2)
19443   340 CONTINUE
19444       IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
19445      &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
19446      &PSYS(2,4))) THEN
19447         MINT(51)=1
19448         MINT(57)=MINT(57)+1
19449         RETURN
19450       ENDIF
19451  
19452 C...Loop over two remnants; skip if none there.
19453       I=NS
19454       DO 410 JT=1,2
19455         ISN(JT)=0
19456         IF(MINT(44+JT).EQ.1) GOTO 410
19457         IF(JT.EQ.1) IPU=IPU1
19458         IF(JT.EQ.2) IPU=IPU2
19459  
19460 C...Store first remnant parton.
19461         I=I+1
19462         IS(JT)=I
19463         ISN(JT)=1
19464         DO 350 J=1,5
19465           K(I,J)=0
19466           P(I,J)=0D0
19467           V(I,J)=0D0
19468   350   CONTINUE
19469         K(I,1)=1
19470         K(I,2)=KFLSP(JT)
19471         K(I,3)=MINT(83)+JT
19472         P(I,5)=PYMASS(K(I,2))
19473  
19474 C...First parton colour connections and kinematics.
19475         KCOL=KCHG(PYCOMP(KFLSP(JT)),2)
19476         IF(KCOL.EQ.2) THEN
19477           K(I,1)=3
19478           K(I,4)=MSTU(5)*IPU+IPU
19479           K(I,5)=MSTU(5)*IPU+IPU
19480           K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
19481           K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
19482         ELSEIF(KCOL.NE.0) THEN
19483           K(I,1)=3
19484           KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
19485           K(I,KFLS+3)=IPU
19486           K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
19487         ENDIF
19488         IF(KFLCH(JT).EQ.0) THEN
19489           P(I,1)=-P(MINT(83)+JT+2,1)
19490           P(I,2)=-P(MINT(83)+JT+2,2)
19491           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
19492           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
19493           P(I,3)=PSYS(JT,3)
19494           P(I,4)=PSYS(JT,4)
19495  
19496 C...When extra remnant parton or hadron: store extra remnant.
19497         ELSE
19498           I=I+1
19499           ISN(JT)=2
19500           DO 360 J=1,5
19501             K(I,J)=0
19502             P(I,J)=0D0
19503             V(I,J)=0D0
19504   360     CONTINUE
19505           K(I,1)=1
19506           K(I,2)=KFLCH(JT)
19507           K(I,3)=MINT(83)+JT
19508           P(I,5)=PYMASS(K(I,2))
19509  
19510 C...Find parton colour connections of extra remnant.
19511           KCOL=KCHG(PYCOMP(KFLCH(JT)),2)
19512           IF(KCOL.EQ.2) THEN
19513             K(I,1)=3
19514             K(I,4)=MSTU(5)*IPU+IPU
19515             K(I,5)=MSTU(5)*IPU+IPU
19516             K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
19517             K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
19518           ELSEIF(KCOL.NE.0) THEN
19519             K(I,1)=3
19520             KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
19521             K(I,KFLS+3)=IPU
19522             K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
19523           ENDIF
19524  
19525 C...Relative transverse momentum when two remnants.
19526           LOOP=0
19527   370     LOOP=LOOP+1
19528           CALL PYPTDI(1,P(I-1,1),P(I-1,2))
19529           IF(IABS(MINT(10+JT)).LT.20) THEN
19530             P(I-1,1)=0D0
19531             P(I-1,2)=0D0
19532           ELSE
19533             P(I-1,1)=P(I-1,1)-0.5D0*P(MINT(83)+JT+2,1)
19534             P(I-1,2)=P(I-1,2)-0.5D0*P(MINT(83)+JT+2,2)
19535           ENDIF
19536           PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
19537           P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
19538           P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
19539           PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
19540  
19541 C...Meson or baryon; photon as meson. For splitup below.
19542           IMB=1
19543           IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
19544  
19545 C***Relative distribution for electron into two electrons. Temporary!
19546           IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
19547      &    THEN
19548             CHI(JT)=PYR(0)
19549  
19550 C...Relative distribution of electron energy into electron plus parton.
19551           ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
19552             XHRD=VINT(140+JT)
19553             XE=VINT(154+JT)
19554             CHI(JT)=(XE-XHRD)/(1D0-XHRD)
19555  
19556 C...Relative distribution of energy for particle into two jets.
19557           ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
19558             CHIK=PARP(92+2*IMB)
19559             IF(MSTP(92).LE.1) THEN
19560               IF(IMB.EQ.1) CHI(JT)=PYR(0)
19561               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
19562             ELSEIF(MSTP(92).EQ.2) THEN
19563               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+CHIK))
19564             ELSEIF(MSTP(92).EQ.3) THEN
19565               CUT=2D0*0.3D0/VINT(1)
19566   380         CHI(JT)=PYR(0)**2
19567               IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25D0*
19568      &        (1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 380
19569             ELSEIF(MSTP(92).EQ.4) THEN
19570               CUT=2D0*0.3D0/VINT(1)
19571               CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
19572   390         CHIR=CUT*CUTR**PYR(0)
19573               CHI(JT)=(CHIR**2-CUT**2)/(2D0*CHIR)
19574               IF((1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 390
19575             ELSE
19576               CUT=2D0*0.3D0/VINT(1)
19577               CUTA=CUT**(1D0-PARP(98))
19578               CUTB=(1D0+CUT)**(1D0-PARP(98))
19579   400         CHI(JT)=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
19580               IF(((CHI(JT)+CUT)**2/(2D0*(CHI(JT)**2+CUT**2)))**
19581      &        (0.5D0*PARP(98))*(1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 400
19582             ENDIF
19583  
19584 C...Relative distribution of energy for particle into jet plus particle.
19585           ELSE
19586             IF(MSTP(94).LE.1) THEN
19587               IF(IMB.EQ.1) CHI(JT)=PYR(0)
19588               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
19589               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
19590             ELSEIF(MSTP(94).EQ.2) THEN
19591               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
19592               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
19593             ELSEIF(MSTP(94).EQ.3) THEN
19594               CALL PYZDIS(1,0,PMS(JT+4),ZZ)
19595               CHI(JT)=ZZ
19596             ELSE
19597               CALL PYZDIS(1000,0,PMS(JT+4),ZZ)
19598               CHI(JT)=ZZ
19599             ENDIF
19600           ENDIF
19601  
19602 C...Construct total transverse mass; reject if too large.
19603           CHI(JT)=MAX(1D-8,MIN(1D0-1D-8,CHI(JT)))
19604           PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1D0-CHI(JT))
19605           IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
19606             IF(LOOP.LT.100) THEN
19607               GOTO 370
19608             ELSE
19609               MINT(51)=1
19610               MINT(57)=MINT(57)+1
19611               RETURN
19612             ENDIF
19613           ENDIF
19614           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
19615           VINT(158+JT)=CHI(JT)
19616  
19617 C...Subdivide longitudinal momentum according to value selected above.
19618           PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
19619           P(IS(JT)+1,4)=0.5D0*(PW1+PMS(JT+4)/PW1)
19620           P(IS(JT)+1,3)=0.5D0*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
19621           P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
19622           P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
19623         ENDIF
19624   410 CONTINUE
19625       N=I
19626  
19627 C...Check if longitudinal boosts needed - if so pick two systems.
19628       PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
19629      &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
19630       IF(PDEV.LE.1D-6*VINT(1)) RETURN
19631       IF(ISN(1).EQ.0) THEN
19632         IR=0
19633         IL=2
19634       ELSEIF(ISN(2).EQ.0) THEN
19635         IR=1
19636         IL=0
19637       ELSEIF(VINT(143).GT.0.2D0.AND.VINT(144).GT.0.2D0) THEN
19638         IR=1
19639         IL=2
19640       ELSEIF(VINT(143).GT.0.2D0) THEN
19641         IR=1
19642         IL=0
19643       ELSEIF(VINT(144).GT.0.2D0) THEN
19644         IR=0
19645         IL=2
19646       ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
19647         IR=1
19648         IL=0
19649       ELSE
19650         IR=0
19651         IL=2
19652       ENDIF
19653       IG=3-IR-IL
19654  
19655 C...E+-pL wanted for system to be modified.
19656       IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
19657         PPB=VINT(1)
19658         PNB=VINT(1)
19659       ELSE
19660         PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
19661         PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
19662       ENDIF
19663  
19664 C...To keep x and Q2 in leptoproduction: do not count scattered lepton.
19665       IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
19666         PPB=PPB-(PSYS(0,4)+PSYS(0,3))
19667         PNB=PNB-(PSYS(0,4)-PSYS(0,3))
19668         DO 420 J=1,4
19669           PSYS(0,J)=0D0
19670   420   CONTINUE
19671         DO 450 I=MINT(84)+1,NS
19672           IF(K(I,1).GT.10) GOTO 450
19673           INCL=0
19674           IORIG=I
19675   430     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
19676           IORIG=K(IORIG,3)
19677           IF(IORIG.GT.LPIN) GOTO 430
19678           IF(INCL.EQ.0) GOTO 450
19679           DO 440 J=1,4
19680             PSYS(0,J)=PSYS(0,J)+P(I,J)
19681   440     CONTINUE
19682   450   CONTINUE
19683         PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
19684         PPB=PPB+(PSYS(0,4)+PSYS(0,3))
19685         PNB=PNB+(PSYS(0,4)-PSYS(0,3))
19686       ENDIF
19687  
19688 C...Construct longitudinal boosts.
19689       DPMTB=PPB*PNB
19690       DPMTR=PMS(IR)
19691       DPMTL=PMS(IL)
19692       DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
19693       IF(DSQLAM.LE.1D-6*DPMTB) THEN
19694         MINT(51)=1
19695         MINT(57)=MINT(57)+1
19696         RETURN
19697       ENDIF
19698       DSQSGN=SIGN(1D0,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
19699       DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
19700      &(2D0*(PSYS(IR,4)+PSYS(IR,3))*PNB)
19701       DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
19702      &(2D0*(PSYS(IL,4)-PSYS(IL,3))*PPB)
19703       DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
19704       DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
19705  
19706 C...Perform longitudinal boosts.
19707       IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
19708         P(IS(1),3)=0D0
19709         P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
19710       ELSEIF(IR.EQ.1) THEN
19711         CALL PYROBO(IS(1),IS(1)+ISN(1)-1,0D0,0D0,0D0,0D0,DBER)
19712       ELSEIF(IDISXQ.EQ.1) THEN
19713         DO 470 I=I1,NS
19714           INCL=0
19715           IORIG=I
19716   460     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
19717           IORIG=K(IORIG,3)
19718           IF(IORIG.GT.LPIN) GOTO 460
19719           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBER)
19720   470   CONTINUE
19721       ELSE
19722         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBER)
19723       ENDIF
19724       IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
19725         P(IS(2),3)=0D0
19726         P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
19727       ELSEIF(IL.EQ.2) THEN
19728         CALL PYROBO(IS(2),IS(2)+ISN(2)-1,0D0,0D0,0D0,0D0,DBEL)
19729       ELSEIF(IDISXQ.EQ.1) THEN
19730         DO 490 I=I1,NS
19731           INCL=0
19732           IORIG=I
19733   480     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
19734           IORIG=K(IORIG,3)
19735           IF(IORIG.GT.LPIN) GOTO 480
19736           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBEL)
19737   490   CONTINUE
19738       ELSE
19739         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBEL)
19740       ENDIF
19741  
19742 C...Final check that energy-momentum conservation worked.
19743       PESUM=0D0
19744       PZSUM=0D0
19745       DO 500 I=MINT(84)+1,N
19746         IF(K(I,1).GT.10) GOTO 500
19747         PESUM=PESUM+P(I,4)
19748         PZSUM=PZSUM+P(I,3)
19749   500 CONTINUE
19750       PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
19751       IF(PDEV.GT.1D-4*VINT(1)) THEN
19752         MINT(51)=1
19753         MINT(57)=MINT(57)+1
19754         RETURN
19755       ENDIF
19756  
19757 C...Calculate rotation and boost from overall CM frame to
19758 C...hadronic CM frame in leptoproduction.
19759       MINT(91)=0
19760       IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
19761         MINT(91)=1
19762         LESD=1
19763         IF(MINT(42).EQ.1) LESD=2
19764         LPIN=MINT(83)+3-LESD
19765  
19766 C...Sum upp momenta of everything not lepton or photon to define boost.
19767         DO 510 J=1,4
19768           PSUM(J)=0D0
19769   510   CONTINUE
19770         DO 530 I=1,N
19771           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
19772           IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
19773           IF(K(I,2).EQ.22) GOTO 530
19774           DO 520 J=1,4
19775             PSUM(J)=PSUM(J)+P(I,J)
19776   520     CONTINUE
19777   530   CONTINUE
19778         VINT(223)=-PSUM(1)/PSUM(4)
19779         VINT(224)=-PSUM(2)/PSUM(4)
19780         VINT(225)=-PSUM(3)/PSUM(4)
19781  
19782 C...Boost incoming hadron to hadronic CM frame to determine rotations.
19783         K(N+1,1)=1
19784         DO 540 J=1,5
19785           P(N+1,J)=P(LPIN,J)
19786           V(N+1,J)=V(LPIN,J)
19787   540   CONTINUE
19788         CALL PYROBO(N+1,N+1,0D0,0D0,VINT(223),VINT(224),VINT(225))
19789         VINT(222)=-PYANGL(P(N+1,1),P(N+1,2))
19790         CALL PYROBO(N+1,N+1,0D0,VINT(222),0D0,0D0,0D0)
19791         IF(LESD.EQ.2) THEN
19792           VINT(221)=-PYANGL(P(N+1,3),P(N+1,1))
19793         ELSE
19794           VINT(221)=PYANGL(-P(N+1,3),P(N+1,1))
19795         ENDIF
19796       ENDIF
19797  
19798       RETURN
19799       END
19800  
19801 C*********************************************************************
19802  
19803 C...PYMIGN
19804 C...Initializes treatment of new multiple interactions scenario,
19805 C...selects kinematics of hardest interaction if low-pT physics
19806 C...included in run, and generates all non-hardest interactions.
19807  
19808       SUBROUTINE PYMIGN(MMUL)
19809  
19810 C...Double precision and integer declarations.
19811       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19812       IMPLICIT INTEGER(I-N)
19813       INTEGER PYK,PYCHGE,PYCOMP
19814       EXTERNAL PYALPS
19815       DOUBLE PRECISION PYALPS
19816 C...Commonblocks.
19817       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19818       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19819       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19820       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
19821       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
19822       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19823       COMMON/PYINT1/MINT(400),VINT(400)
19824       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
19825       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
19826       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
19827       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
19828       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
19829      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
19830      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
19831       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
19832      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/,/PYINTM/
19833 C...Local arrays and saved variables.
19834       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80),
19835      &WDTP(0:400),WDTE(0:400,0:5),XPQ(-25:25),KSAV(4,5),PSAV(4,5)
19836       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM,P83A,P83B,P83C,
19837      &CQ2I,CQ2R,PIK,BDIV,B,PLOWB,PHIGHB,PALLB,S4A,S4B,S4C,POWIP,
19838      &RPWIP,B2RPDV,B2RPMX,BAVG,VNT145,VNT146,VNT147
19839  
19840 C...Initialization of multiple interaction treatment.
19841       IF(MMUL.EQ.1) THEN
19842         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
19843         ISUB=96
19844         MINT(1)=96
19845         VINT(63)=0D0
19846         VINT(64)=0D0
19847         VINT(143)=1D0
19848         VINT(144)=1D0
19849  
19850 C...Loop over phase space points: xT2 choice in 20 bins.
19851   100   SIGSUM=0D0
19852         DO 120 IXT2=1,20
19853           NMUL(IXT2)=MSTP(83)
19854           SIGM(IXT2)=0D0
19855           DO 110 ITRY=1,MSTP(83)
19856             RSCA=0.05D0*((21-IXT2)-PYR(0))
19857             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
19858             XT2=MAX(0.01D0*VINT(149),XT2)
19859             VINT(25)=XT2
19860  
19861 C...Choose tau and y*. Calculate cos(theta-hat).
19862             IF(PYR(0).LE.COEF(ISUB,1)) THEN
19863               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
19864               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
19865             ELSE
19866               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
19867             ENDIF
19868             VINT(21)=TAU
19869             CALL PYKLIM(2)
19870             RYST=PYR(0)
19871             MYST=1
19872             IF(RYST.GT.COEF(ISUB,8)) MYST=2
19873             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
19874             CALL PYKMAP(2,MYST,PYR(0))
19875             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
19876  
19877 C...Calculate differential cross-section.
19878             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
19879             CALL PYSIGH(NCHN,SIGS)
19880             SIGM(IXT2)=SIGM(IXT2)+SIGS
19881   110     CONTINUE
19882           SIGSUM=SIGSUM+SIGM(IXT2)
19883   120   CONTINUE
19884         SIGSUM=SIGSUM/(20D0*MSTP(83))
19885  
19886 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
19887         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
19888           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
19889      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
19890           PARP(82)=0.9D0*PARP(82)
19891           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
19892      &    VINT(2)
19893           GOTO 100
19894         ENDIF
19895         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
19896      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
19897  
19898 C...Start iteration to find k factor.
19899         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
19900         P83A=(1D0-PARP(83))**2
19901         P83B=2D0*PARP(83)*(1D0-PARP(83))
19902         P83C=PARP(83)**2
19903         CQ2I=1D0/PARP(84)**2
19904         CQ2R=2D0/(1D0+PARP(84)**2)
19905         SO=0.5D0
19906         XI=0D0
19907         YI=0D0
19908         XF=0D0
19909         YF=0D0
19910         XK=0.5D0
19911         IIT=0
19912   130   IF(IIT.EQ.0) THEN
19913           XK=2D0*XK
19914         ELSEIF(IIT.EQ.1) THEN
19915           XK=0.5D0*XK
19916         ELSE
19917           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
19918         ENDIF
19919  
19920 C...Evaluate overlap integrals. Find where to divide the b range.
19921         IF(MSTP(82).EQ.2) THEN
19922           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
19923           SOP=SP/PARU(1)
19924         ELSE
19925           IF(MSTP(82).EQ.3) THEN
19926             DELTAB=0.02D0
19927           ELSEIF(MSTP(82).EQ.4) THEN
19928             DELTAB=MIN(0.01D0,0.05D0*PARP(84))
19929           ELSE
19930             POWIP=MAX(0.4D0,PARP(83))
19931             RPWIP=2D0/POWIP-1D0
19932             DELTAB=MAX(0.02D0,0.02D0*(2D0/POWIP)**(1D0/POWIP))
19933             SO=0D0
19934           ENDIF
19935           SP=0D0
19936           SOP=0D0
19937           BSP=0D0
19938           SOHIGH=0D0
19939           IBDIV=0
19940           B=-0.5D0*DELTAB
19941   140     B=B+DELTAB
19942           IF(MSTP(82).EQ.3) THEN
19943             OV=EXP(-B**2)/PARU(2)
19944           ELSEIF(MSTP(82).EQ.4) THEN
19945             OV=(P83A*EXP(-MIN(50D0,B**2))+
19946      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
19947      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
19948           ELSE
19949             OV=EXP(-B**POWIP)/PARU(2)
19950             SO=SO+PARU(2)*B*DELTAB*OV
19951           ENDIF
19952           IF(IBDIV.EQ.1) SOHIGH=SOHIGH+PARU(2)*B*DELTAB*OV
19953           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
19954           SP=SP+PARU(2)*B*DELTAB*PACC
19955           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
19956           BSP=BSP+B*PARU(2)*B*DELTAB*PACC
19957           IF(IBDIV.EQ.0.AND.PARU(1)*XK*OV.LT.1D0) THEN
19958             IBDIV=1 
19959             BDIV=B+0.5D0*DELTAB
19960           ENDIF
19961           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
19962         ENDIF
19963         YK=PARU(1)*XK*SO/SP
19964  
19965 C...Continue iteration until convergence.
19966         IF(YK.LT.YKE) THEN
19967           XI=XK
19968           YI=YK
19969           IF(IIT.EQ.1) IIT=2
19970         ELSE
19971           XF=XK
19972           YF=YK
19973           IF(IIT.EQ.0) IIT=1
19974         ENDIF
19975         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
19976  
19977 C...Store some results for subsequent use.
19978         BAVG=BSP/SP
19979         VINT(145)=SIGSUM
19980         VINT(146)=SOP/SO
19981         VINT(147)=SOP/SP
19982         VNT145=VINT(145)
19983         VNT146=VINT(146)
19984         VNT147=VINT(147)
19985 C...PIK = PARU(1)*XK = (VINT(146)/VINT(147))*sigma_jet/sigma_nondiffr.
19986         PIK=(VNT146/VNT147)*YKE
19987
19988 C...Find relative weight for low and high impact parameter..
19989       PLOWB=PARU(1)*BDIV**2
19990       IF(MSTP(82).EQ.3) THEN
19991         PHIGHB=PIK*0.5*EXP(-BDIV**2)
19992       ELSEIF(MSTP(82).EQ.4) THEN
19993         S4A=P83A*EXP(-BDIV**2)
19994         S4B=P83B*EXP(-BDIV**2*CQ2R)
19995         S4C=P83C*EXP(-BDIV**2*CQ2I)
19996         PHIGHB=PIK*0.5*(S4A+S4B+S4C)
19997       ELSEIF(PARP(83).GE.1.999D0) THEN
19998         PHIGHB=PIK*SOHIGH
19999         B2RPDV=BDIV**POWIP
20000       ELSE
20001         PHIGHB=PIK*SOHIGH
20002         B2RPDV=BDIV**POWIP
20003         B2RPMX=MAX(2D0*RPWIP,B2RPDV)
20004       ENDIF 
20005       PALLB=PLOWB+PHIGHB
20006  
20007 C...Initialize iteration in xT2 for hardest interaction.
20008       ELSEIF(MMUL.EQ.2) THEN
20009         VINT(145)=VNT145
20010         VINT(146)=VNT146
20011         VINT(147)=VNT147
20012         IF(MSTP(82).LE.0) THEN
20013         ELSEIF(MSTP(82).EQ.1) THEN
20014           XT2=1D0
20015           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
20016           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
20017      &    VINT(317)/(VINT(318)*VINT(320))
20018           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
20019         ELSEIF(MSTP(82).EQ.2) THEN
20020           XT2=1D0
20021           XT2FAC=VNT146*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
20022      &    VINT(149)*(1D0+VINT(149))
20023         ELSE
20024           XC2=4D0*CKIN(3)**2/VINT(2)
20025           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
20026         ENDIF
20027
20028 C...Select impact parameter for hardest interaction.
20029         IF(MSTP(82).LE.2) RETURN
20030   142   IF(PYR(0)*PALLB.LT.PLOWB) THEN
20031 C...Treatment in low b region.
20032           MINT(39)=1
20033           B=BDIV*SQRT(PYR(0)) 
20034           IF(MSTP(82).EQ.3) THEN
20035             OV=EXP(-B**2)/PARU(2)
20036           ELSEIF(MSTP(82).EQ.4) THEN
20037             OV=(P83A*EXP(-MIN(50D0,B**2))+
20038      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
20039      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
20040           ELSE
20041             OV=EXP(-B**POWIP)/PARU(2)
20042           ENDIF  
20043           VINT(148)=OV/VNT147
20044           PACC=1D0-EXP(-MIN(50D0,PIK*OV))
20045           XT2=1D0
20046           XT2FAC=VNT146*VINT(148)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
20047      &    VINT(149)*(1D0+VINT(149))
20048         ELSE
20049 C...Treatment in high b region.
20050           MINT(39)=2
20051           IF(MSTP(82).EQ.3) THEN
20052             B=SQRT(BDIV**2-LOG(PYR(0)))
20053             OV=EXP(-B**2)/PARU(2)
20054           ELSEIF(MSTP(82).EQ.4) THEN
20055             S4RNDM=PYR(0)*(S4A+S4B+S4C)
20056             IF(S4RNDM.LT.S4A) THEN
20057               B=SQRT(BDIV**2-LOG(PYR(0)))
20058             ELSEIF(S4RNDM.LT.S4A+S4B) THEN
20059               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2R)
20060             ELSE
20061               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2I)
20062             ENDIF    
20063             OV=(P83A*EXP(-MIN(50D0,B**2))+
20064      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
20065      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
20066           ELSEIF(PARP(83).GE.1.999D0) THEN
20067   144       B2RPW=B2RPDV-LOG(PYR(0))
20068             ACCIP=(B2RPW/B2RPDV)**RPWIP
20069             IF(ACCIP.LT.PYR(0)) GOTO 144
20070             OV=EXP(-B2RPW)/PARU(2)
20071             B=B2RPW**(1D0/POWIP)
20072           ELSE
20073   146       B2RPW=B2RPDV-2D0*LOG(PYR(0))
20074             ACCIP=(B2RPW/B2RPMX)**RPWIP*EXP(-0.5D0*(B2RPW-B2RPMX))
20075             IF(ACCIP.LT.PYR(0)) GOTO 146
20076             OV=EXP(-B2RPW)/PARU(2)
20077             B=B2RPW**(1D0/POWIP)
20078           ENDIF  
20079           VINT(148)=OV/VNT147
20080           PACC=(1D0-EXP(-MIN(50D0,PIK*OV)))/(PIK*OV)
20081         ENDIF
20082         IF(PACC.LT.PYR(0)) GOTO 142
20083         VINT(139)=B/BAVG
20084  
20085       ELSEIF(MMUL.EQ.3) THEN
20086 C...Low-pT or multiple interactions (first semihard interaction):
20087 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
20088 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
20089         ISUB=MINT(1)
20090         VINT(145)=VNT145
20091         VINT(146)=VNT146
20092         VINT(147)=VNT147
20093         IF(MSTP(82).LE.0) THEN
20094           XT2=0D0
20095         ELSEIF(MSTP(82).EQ.1) THEN
20096           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
20097 C...Use with "Sudakov" for low b values when impact parameter dependence.
20098         ELSEIF(MSTP(82).EQ.2.OR.MINT(39).EQ.1) THEN
20099           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
20100      &    VINT(149)))).GT.PYR(0)) XT2=1D0
20101           IF(XT2.GE.1D0) THEN
20102             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
20103      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
20104      &      VINT(149)
20105           ELSE
20106             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
20107      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
20108      &      VINT(149)
20109           ENDIF
20110           XT2=MAX(0.01D0*VINT(149),XT2)
20111 C...Use without "Sudakov" for high b values when impact parameter dep.
20112         ELSE
20113           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
20114      &    PYR(0)*(1D0-XC2))-VINT(149)
20115           XT2=MAX(0.01D0*VINT(149),XT2)
20116         ENDIF
20117         VINT(25)=XT2
20118  
20119 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
20120         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
20121           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
20122           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
20123           ISUB=95
20124           MINT(1)=ISUB
20125           VINT(21)=1D-12*VINT(149)
20126           VINT(22)=0D0
20127           VINT(23)=0D0
20128           VINT(25)=1D-12*VINT(149)
20129  
20130         ELSE
20131 C...Multiple interactions (first semihard interaction).
20132 C...Choose tau and y*. Calculate cos(theta-hat).
20133           IF(PYR(0).LE.COEF(ISUB,1)) THEN
20134             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20135             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20136           ELSE
20137             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20138           ENDIF
20139           VINT(21)=TAU
20140           CALL PYKLIM(2)
20141           RYST=PYR(0)
20142           MYST=1
20143           IF(RYST.GT.COEF(ISUB,8)) MYST=2
20144           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20145           CALL PYKMAP(2,MYST,PYR(0))
20146           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20147         ENDIF
20148         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
20149  
20150 C...Store results of cross-section calculation.
20151       ELSEIF(MMUL.EQ.4) THEN
20152         ISUB=MINT(1)
20153         VINT(145)=VNT145
20154         VINT(146)=VNT146
20155         VINT(147)=VNT147
20156         XTS=VINT(25)
20157         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
20158         IF(ISET(ISUB).EQ.2)
20159      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
20160         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
20161         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
20162      &  (XTS+VINT(149))))
20163         IRBIN=INT(1D0+20D0*RBIN)
20164         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
20165           NMUL(IRBIN)=NMUL(IRBIN)+1
20166           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
20167         ENDIF
20168  
20169 C...Choose impact parameter if not already done.
20170       ELSEIF(MMUL.EQ.5) THEN
20171         ISUB=MINT(1)
20172         VINT(145)=VNT145
20173         VINT(146)=VNT146
20174         VINT(147)=VNT147
20175   150   IF(MINT(39).GT.0) THEN
20176         ELSEIF(MSTP(82).EQ.3) THEN
20177           EXPB2=PYR(0)
20178           B2=-LOG(PYR(0))
20179           VINT(148)=EXPB2/(PARU(2)*VNT147)
20180           VINT(139)=SQRT(B2)/BAVG
20181         ELSEIF(MSTP(82).EQ.4) THEN
20182           RTYPE=PYR(0)
20183           IF(RTYPE.LT.P83A) THEN
20184             B2=-LOG(PYR(0))
20185           ELSEIF(RTYPE.LT.P83A+P83B) THEN
20186             B2=-LOG(PYR(0))/CQ2R
20187           ELSE
20188             B2=-LOG(PYR(0))/CQ2I
20189           ENDIF
20190           VINT(148)=(P83A*EXP(-MIN(50D0,B2))+
20191      &    P83B*CQ2R*EXP(-MIN(50D0,B2*CQ2R))+
20192      &    P83C*CQ2I*EXP(-MIN(50D0,B2*CQ2I)))/(PARU(2)*VNT147)
20193           VINT(139)=SQRT(B2)/BAVG
20194         ELSEIF(PARP(83).GE.1.999D0) THEN
20195           POWIP=MAX(2D0,PARP(83))
20196           RPWIP=2D0/POWIP-1D0
20197           PROB1=POWIP/(2D0*EXP(-1D0)+POWIP)
20198   160     IF(PYR(0).LT.PROB1) THEN
20199             B2RPW=PYR(0)**(0.5D0*POWIP)
20200             ACCIP=EXP(-B2RPW)
20201           ELSE
20202             B2RPW=1D0-LOG(PYR(0))
20203             ACCIP=B2RPW**RPWIP
20204           ENDIF
20205           IF(ACCIP.LT.PYR(0)) GOTO 160
20206           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
20207           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
20208         ELSE
20209           POWIP=MAX(0.4D0,PARP(83))
20210           RPWIP=2D0/POWIP-1D0
20211           PROB1=RPWIP/(RPWIP+2D0**RPWIP*EXP(-RPWIP))
20212   170     IF(PYR(0).LT.PROB1) THEN
20213             B2RPW=2D0*RPWIP*PYR(0)
20214             ACCIP=(B2RPW/RPWIP)**RPWIP*EXP(RPWIP-B2RPW)
20215           ELSE
20216             B2RPW=2D0*(RPWIP-LOG(PYR(0)))
20217             ACCIP=(0.5D0*B2RPW/RPWIP)**RPWIP*EXP(RPWIP-0.5D0*B2RPW)
20218           ENDIF
20219           IF(ACCIP.LT .PYR(0)) GOTO 170
20220           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
20221           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
20222         ENDIF
20223  
20224 C...Multiple interactions (variable impact parameter) : reject with
20225 C...probability exp(-overlap*cross-section above pT/normalization).
20226 C...Does not apply to low-b region, where "Sudakov" already included.
20227         VINT(150)=1D0 
20228         IF(MINT(39).NE.1) THEN
20229           RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
20230           SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
20231           DO 180 IBIN=IRBIN+1,20
20232             RNCOR=RNCOR+NMUL(IBIN)
20233             SIGCOR=SIGCOR+SIGM(IBIN)
20234   180     CONTINUE
20235           SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
20236           IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
20237           VINT(150)=EXP(-MIN(50D0,VNT146*VINT(148)*
20238      &    SIGABV/MAX(1D-10,SIGT(0,0,5))))
20239         ENDIF
20240         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
20241      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
20242      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
20243           IF(VINT(150).LT.PYR(0)) GOTO 150
20244           VINT(150)=1D0
20245         ENDIF
20246  
20247 C...Generate additional multiple semihard interactions.
20248       ELSEIF(MMUL.EQ.6) THEN
20249  
20250 C...Save data for hardest initeraction, to be restored.
20251         ISUBSV=MINT(1)
20252         VINT(145)=VNT145
20253         VINT(146)=VNT146
20254         VINT(147)=VNT147
20255         M13SV=MINT(13)
20256         M14SV=MINT(14)
20257         M15SV=MINT(15)
20258         M16SV=MINT(16)
20259         M21SV=MINT(21)
20260         M22SV=MINT(22)
20261         DO 190 J=11,80
20262           VINTSV(J)=VINT(J)
20263   190   CONTINUE
20264         V141SV=VINT(141)
20265         V142SV=VINT(142)
20266  
20267 C...Store data on hardest interaction.
20268         XMI(1,1)=VINT(141)
20269         XMI(2,1)=VINT(142)
20270         PT2MI(1)=VINT(54)
20271         IMISEP(0)=MINT(84)
20272         IMISEP(1)=N
20273  
20274 C...Change process to generate; sum of x values so far.
20275         ISUB=96
20276         MINT(1)=96
20277         VINT(143)=1D0-VINT(141)
20278         VINT(144)=1D0-VINT(142)
20279         VINT(151)=0D0
20280         VINT(152)=0D0
20281  
20282 C...Initialize factors for PDF reshaping.
20283         DO 230 JS=1,2
20284           KFBEAM=MINT(10+JS)
20285           KFABM=IABS(KFBEAM)
20286           KFSBM=ISIGN(1,KFBEAM)
20287  
20288 C...Zero flavour content of incoming beam particle.
20289           KFIVAL(JS,1)=0
20290           KFIVAL(JS,2)=0
20291           KFIVAL(JS,3)=0
20292 C...Flavour content of baryon.
20293           IF(KFABM.GT.1000) THEN
20294             KFIVAL(JS,1)=KFSBM*MOD(KFABM/1000,10)
20295             KFIVAL(JS,2)=KFSBM*MOD(KFABM/100,10)
20296             KFIVAL(JS,3)=KFSBM*MOD(KFABM/10,10)
20297 C...Flavour content of pi+-, K+-.
20298           ELSEIF(KFABM.EQ.211) THEN
20299             KFIVAL(JS,1)=KFSBM*2
20300             KFIVAL(JS,2)=-KFSBM
20301           ELSEIF(KFABM.EQ.321) THEN
20302             KFIVAL(JS,1)=-KFSBM*3
20303             KFIVAL(JS,2)=KFSBM*2
20304 C...Flavour content of pi0, gamma, K0S, K0L not defined yet.
20305           ENDIF
20306  
20307 C...Zero initial valence and companion content.
20308           DO 200 IFL=-6,6
20309             NVC(JS,IFL)=0
20310   200     CONTINUE
20311  
20312 C...Initiate listing of all incoming partons from two sides.
20313           NMI(JS)=0
20314           DO 210 I=MINT(84)+1,N
20315             IF(K(I,3).EQ.MINT(83)+2+JS) THEN
20316               IMI(JS,1,1)=I
20317               IMI(JS,1,2)=0
20318             ENDIF
20319   210     CONTINUE
20320  
20321 C...Decide whether quarks in hard scattering were valence or sea.
20322           IFL=K(IMI(JS,1,1),2)
20323           IF (IABS(IFL).GT.6) GOTO 230
20324  
20325 C...Get PDFs at X and Q2 of the parton shower initiator for the
20326 C...hard scattering.
20327           X=VINT(140+JS)
20328           IF(MSTP(61).GE.1) THEN
20329             Q2=PARP(62)**2
20330           ELSE
20331             Q2=VINT(54)
20332           ENDIF
20333 C...Note: XPSVC = x*pdf.
20334           MINT(30)=JS
20335           CALL PYPDFU(KFBEAM,X,Q2,XPQ)
20336           SEA=XPSVC(IFL,-1)
20337           VAL=XPSVC(IFL,0)
20338  
20339 C...Decide (Extra factor x cancels in the division).
20340           RVCS=PYR(0)*(SEA+VAL)
20341           IVNOW=1
20342   220     IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
20343 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
20344             IVNOW=0
20345             IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
20346             IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
20347             IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
20348             IF(KFIVAL(JS,1).EQ.0) THEN
20349               IF(KFBEAM.EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
20350               IF(KFBEAM.EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
20351               IF((KFBEAM.EQ.130.OR.KFBEAM.EQ.310).AND.
20352      &        (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
20353             ENDIF
20354             IF(IVNOW.EQ.0) GOTO 220
20355 C...Mark valence.
20356             IMI(JS,1,2)=0
20357 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
20358             IF(KFIVAL(JS,1).EQ.0) THEN
20359               IF(KFBEAM.EQ.111.OR.KFBEAM.EQ.22) THEN
20360                 KFIVAL(JS,1)=IFL
20361                 KFIVAL(JS,2)=-IFL
20362               ELSEIF(KFBEAM.EQ.130.OR.KFBEAM.EQ.310) THEN
20363                 KFIVAL(JS,1)=IFL
20364                 IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
20365                 IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
20366               ENDIF
20367             ENDIF
20368  
20369 C...If sea, add opposite sign companion parton. Store X and I.
20370           ELSE
20371             NVC(JS,-IFL)=NVC(JS,-IFL)+1
20372             XASSOC(JS,-IFL,NVC(JS,-IFL))=X
20373 C...Set pointer to companion
20374             IMI(JS,1,2)=-NVC(JS,-IFL)
20375           ENDIF
20376   230   CONTINUE
20377  
20378 C...Update counter number of multiple interactions.
20379         NMI(1)=1
20380         NMI(2)=1
20381  
20382 C...Set up starting values for iteration in xT2.
20383         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
20384      &  ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
20385      &  ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
20386      &  ISUBSV.NE.96)) THEN
20387           XT2=(1D0-VINT(141))*(1D0-VINT(142))
20388         ELSE
20389           XT2=VINT(25)
20390           IF(ISET(ISUBSV).EQ.1) XT2=VINT(21)
20391           IF(ISET(ISUBSV).EQ.2)
20392      &    XT2=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
20393           IF(ISET(ISUBSV).GE.3.AND.ISET(ISUBSV).LE.5) XT2=VINT(26)
20394         ENDIF
20395         IF(MSTP(82).LE.1) THEN
20396           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
20397           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
20398      &    VINT(317)/(VINT(318)*VINT(320))
20399           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
20400         ELSE
20401           XT2FAC=VNT146*VINT(148)*XSEC(ISUB,1)/
20402      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
20403         ENDIF
20404         VINT(63)=0D0
20405         VINT(64)=0D0
20406  
20407 C...Iterate downwards in xT2.
20408   240   IF((MINT(35).EQ.2.AND.MSTP(81).EQ.10).OR.ISUBSV.EQ.95) THEN
20409           XT2=0D0
20410           GOTO 440
20411         ELSEIF(MSTP(82).LE.1) THEN
20412           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
20413           IF(XT2.LT.VINT(149)) GOTO 440
20414         ELSE
20415           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 440
20416           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
20417      &    LOG(PYR(0)))-VINT(149)
20418           IF(XT2.LE.0D0) GOTO 440
20419           XT2=MAX(0.01D0*VINT(149),XT2)
20420         ENDIF
20421         VINT(25)=XT2
20422  
20423 C...Choose tau and y*. Calculate cos(theta-hat).
20424         IF(PYR(0).LE.COEF(ISUB,1)) THEN
20425           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20426           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20427         ELSE
20428           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20429         ENDIF
20430         VINT(21)=TAU
20431 C...New: require shat > 1.
20432         IF(TAU*VINT(2).LT.1D0) GOTO 240
20433         CALL PYKLIM(2)
20434         RYST=PYR(0)
20435         MYST=1
20436         IF(RYST.GT.COEF(ISUB,8)) MYST=2
20437         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20438         CALL PYKMAP(2,MYST,PYR(0))
20439         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20440  
20441 C...Check that x not used up. Accept or reject kinematical variables.
20442         X1M=SQRT(TAU)*EXP(VINT(22))
20443         X2M=SQRT(TAU)*EXP(-VINT(22))
20444         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 240
20445         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
20446         CALL PYSIGH(NCHN,SIGS)
20447         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
20448         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 240
20449         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS/VINT(320)
20450  
20451 C...Reset K, P and V vectors.
20452         DO 260 I=N+1,N+4
20453           DO 250 J=1,5
20454             K(I,J)=0
20455             P(I,J)=0D0
20456             V(I,J)=0D0
20457   250     CONTINUE
20458   260   CONTINUE
20459         PT=0.5D0*VINT(1)*SQRT(XT2)
20460  
20461 C...Choose flavour of reacting partons (and subprocess).
20462         RSIGS=SIGS*PYR(0)
20463         DO 270 ICHN=1,NCHN
20464           KFL1=ISIG(ICHN,1)
20465           KFL2=ISIG(ICHN,2)
20466           ICONMI=ISIG(ICHN,3)
20467           RSIGS=RSIGS-SIGH(ICHN)
20468           IF(RSIGS.LE.0D0) GOTO 280
20469   270   CONTINUE
20470  
20471 C...Reassign to appropriate process codes.
20472   280   ISUBMI=ICONMI/10
20473         ICONMI=MOD(ICONMI,10)
20474  
20475 C...Choose new quark flavour for annihilation graphs
20476         IF(ISUBMI.EQ.12.OR.ISUBMI.EQ.53) THEN
20477           SH=TAU*VINT(2)
20478           CALL PYWIDT(21,SH,WDTP,WDTE)
20479   290     RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
20480           DO 300 I=1,MDCY(21,3)
20481             KFLF=KFDP(I+MDCY(21,2)-1,1)
20482             RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
20483             IF(RKFL.LE.0D0) GOTO 310
20484   300     CONTINUE
20485   310     IF(ISUBMI.EQ.53.AND.ICONMI.LE.2) THEN
20486             IF(KFLF.GE.4) GOTO 290
20487           ELSEIF(ISUBMI.EQ.53.AND.ICONMI.LE.4) THEN
20488             KFLF=4
20489             ICONMI=ICONMI-2
20490           ELSEIF(ISUBMI.EQ.53) THEN
20491             KFLF=5
20492             ICONMI=ICONMI-4
20493           ENDIF
20494         ENDIF
20495  
20496 C...Final state flavours and colour flow: default values
20497         JS=1
20498         KFL3=KFL1
20499         KFL4=KFL2
20500         KCC=20
20501         KCS=ISIGN(1,KFL1)
20502  
20503         IF(ISUBMI.EQ.11) THEN
20504 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
20505           KCC=ICONMI
20506           IF(KFL1*KFL2.LT.0) KCC=KCC+2
20507  
20508         ELSEIF(ISUBMI.EQ.12) THEN
20509 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
20510           KFL3=ISIGN(KFLF,KFL1)
20511           KFL4=-KFL3
20512           KCC=4
20513  
20514         ELSEIF(ISUBMI.EQ.13) THEN
20515 C...f + fbar -> g + g; th arbitrary
20516           KFL3=21
20517           KFL4=21
20518           KCC=ICONMI+4
20519  
20520         ELSEIF(ISUBMI.EQ.28) THEN
20521 C...f + g -> f + g; th = (p(f)-p(f))**2
20522           IF(KFL1.EQ.21) JS=2
20523           KCC=ICONMI+6
20524           IF(KFL1.EQ.21) KCC=KCC+2
20525           IF(KFL1.NE.21) KCS=ISIGN(1,KFL1)
20526           IF(KFL2.NE.21) KCS=ISIGN(1,KFL2)
20527  
20528         ELSEIF(ISUBMI.EQ.53) THEN
20529 C...g + g -> f + fbar; th arbitrary
20530           KCS=(-1)**INT(1.5D0+PYR(0))
20531           KFL3=ISIGN(KFLF,KCS)
20532           KFL4=-KFL3
20533           KCC=ICONMI+10
20534  
20535         ELSEIF(ISUBMI.EQ.68) THEN
20536 C...g + g -> g + g; th arbitrary
20537           KCC=ICONMI+12
20538           KCS=(-1)**INT(1.5D0+PYR(0))
20539         ENDIF
20540  
20541 C...Store flavours of scattering.
20542         MINT(13)=KFL1
20543         MINT(14)=KFL2
20544         MINT(15)=KFL1
20545         MINT(16)=KFL2
20546         MINT(21)=KFL3
20547         MINT(22)=KFL4
20548  
20549 C...Set flavours and mothers of scattering partons.
20550         K(N+1,1)=14
20551         K(N+2,1)=14
20552         K(N+3,1)=3
20553         K(N+4,1)=3
20554         K(N+1,2)=KFL1
20555         K(N+2,2)=KFL2
20556         K(N+3,2)=KFL3
20557         K(N+4,2)=KFL4
20558         K(N+1,3)=MINT(83)+1
20559         K(N+2,3)=MINT(83)+2
20560         K(N+3,3)=N+1
20561         K(N+4,3)=N+2
20562  
20563 C...Store colour connection indices.
20564         DO 320 J=1,2
20565           JC=J
20566           IF(KCS.EQ.-1) JC=3-J
20567           IF(ICOL(KCC,1,JC).NE.0) K(N+1,J+3)=N+ICOL(KCC,1,JC)
20568           IF(ICOL(KCC,2,JC).NE.0) K(N+2,J+3)=N+ICOL(KCC,2,JC)
20569           IF(ICOL(KCC,3,JC).NE.0) K(N+3,J+3)=MSTU(5)*(N+ICOL(KCC,3,JC))
20570           IF(ICOL(KCC,4,JC).NE.0) K(N+4,J+3)=MSTU(5)*(N+ICOL(KCC,4,JC))
20571   320   CONTINUE
20572  
20573 C...Store incoming and outgoing partons in their CM-frame.
20574         SHR=SQRT(TAU)*VINT(1)
20575         P(N+1,3)=0.5D0*SHR
20576         P(N+1,4)=0.5D0*SHR
20577         P(N+2,3)=-0.5D0*SHR
20578         P(N+2,4)=0.5D0*SHR
20579         P(N+3,5)=PYMASS(K(N+3,2))
20580         P(N+4,5)=PYMASS(K(N+4,2))
20581         IF(P(N+3,5)+P(N+4,5).GE.SHR) GOTO 240
20582         P(N+3,4)=0.5D0*(SHR+(P(N+3,5)**2-P(N+4,5)**2)/SHR)
20583         P(N+3,3)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,5)**2))
20584         P(N+4,4)=SHR-P(N+3,4)
20585         P(N+4,3)=-P(N+3,3)
20586  
20587 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
20588         PHI=PARU(2)*PYR(0)
20589         CALL PYROBO(N+3,N+4,ACOS(VINT(23)),PHI,0D0,0D0,0D0)
20590  
20591 C...Set up default values before showers.
20592         MINT(31)=MINT(31)+1
20593         IPU1=N+1
20594         IPU2=N+2
20595         IPU3=N+3
20596         IPU4=N+4
20597         VINT(141)=VINT(41)
20598         VINT(142)=VINT(42)
20599         N=N+4
20600  
20601 C...Showering of initial state partons (optional).
20602 C...Note: no showering of final state partons here; it comes later.
20603         IF(MSTP(84).GE.1.AND.MSTP(61).GE.1) THEN
20604           MINT(51)=0
20605           ALAMSV=PARJ(81)
20606           PARJ(81)=PARP(72)
20607           NSAV=N
20608           DO 340 I=1,4
20609             DO 330 J=1,5
20610               KSAV(I,J)=K(N-4+I,J)
20611               PSAV(I,J)=P(N-4+I,J)
20612   330       CONTINUE
20613   340     CONTINUE
20614           CALL PYSSPA(IPU1,IPU2)
20615           PARJ(81)=ALAMSV
20616 C...If shower failed then restore to situation before shower.
20617           IF(MINT(51).GE.1) THEN
20618             N=NSAV
20619             DO 360 I=1,4
20620               DO 350 J=1,5
20621                 K(N-4+I,J)=KSAV(I,J)
20622                 P(N-4+I,J)=PSAV(I,J)
20623   350         CONTINUE
20624   360       CONTINUE
20625             IPU1=N-3
20626             IPU2=N-2
20627             VINT(141)=VINT(41)
20628             VINT(142)=VINT(42)
20629           ENDIF
20630         ENDIF
20631  
20632 C...Keep track of loose colour ends and information on scattering.
20633   370   IMI(1,MINT(31),1)=IPU1
20634         IMI(2,MINT(31),1)=IPU2
20635         IMI(1,MINT(31),2)=0
20636         IMI(2,MINT(31),2)=0
20637         XMI(1,MINT(31))=VINT(141)
20638         XMI(2,MINT(31))=VINT(142)
20639         PT2MI(MINT(31))=VINT(54)
20640         IMISEP(MINT(31))=N
20641  
20642 C...Decide whether quarks in last scattering were valence, companion or
20643 C...sea.
20644         DO 430 JS=1,2
20645           KFBEAM=MINT(10+JS)
20646           KFSBM=ISIGN(1,MINT(10+JS))
20647           IFL=K(IMI(JS,MINT(31),1),2)
20648           IMI(JS,MINT(31),2)=0
20649           IF (IABS(IFL).GT.6) GOTO 430
20650  
20651 C...Get PDFs at X and Q2 of the parton shower initiator for the
20652 C...last scattering. At this point VINT(143:144) do not yet
20653 C...include the scattered x values VINT(141:142).
20654           X=VINT(140+JS)/VINT(142+JS)
20655           IF(MSTP(84).GE.1.AND.MSTP(61).GE.1) THEN
20656             Q2=PARP(62)**2
20657           ELSE
20658             Q2=VINT(54)
20659           ENDIF
20660 C...Note: XPSVC = x*pdf.
20661           MINT(30)=JS
20662           CALL PYPDFU(KFBEAM,X,Q2,XPQ)
20663           SEA=XPSVC(IFL,-1)
20664           VAL=XPSVC(IFL,0)
20665           CMP=0D0
20666           DO 380 IVC=1,NVC(JS,IFL)
20667             CMP=CMP+XPSVC(IFL,IVC)
20668   380     CONTINUE
20669  
20670 C...Decide (Extra factor x cancels in the dvision).
20671           RVCS=PYR(0)*(SEA+VAL+CMP)
20672           IVNOW=1
20673   390     IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
20674 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
20675             IVNOW=0
20676             IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
20677             IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
20678             IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
20679             IF(KFIVAL(JS,1).EQ.0) THEN
20680               IF(KFBEAM.EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
20681               IF(KFBEAM.EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
20682               IF((KFBEAM.EQ.130.OR.KFBEAM.EQ.310).AND.
20683      &        (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
20684             ELSE
20685               DO 400 I1=1,NMI(JS)
20686                 IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
20687      &            IVNOW=IVNOW-1
20688   400         CONTINUE
20689             ENDIF
20690             IF(IVNOW.EQ.0) GOTO 390
20691 C...Mark valence.
20692             IMI(JS,MINT(31),2)=0
20693 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
20694             IF(KFIVAL(JS,1).EQ.0) THEN
20695               IF(KFBEAM.EQ.111.OR.KFBEAM.EQ.22) THEN
20696                 KFIVAL(JS,1)=IFL
20697                 KFIVAL(JS,2)=-IFL
20698               ELSEIF(KFBEAM.EQ.130.OR.KFBEAM.EQ.310) THEN
20699                 KFIVAL(JS,1)=IFL
20700                 IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
20701                 IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
20702               ENDIF
20703             ENDIF
20704  
20705           ELSEIF (RVCS.LE.VAL+SEA.OR.NVC(JS,IFL).EQ.0) THEN
20706 C...If sea, add opposite sign companion parton. Store X and I.
20707             NVC(JS,-IFL)=NVC(JS,-IFL)+1
20708             XASSOC(JS,-IFL,NVC(JS,-IFL))=X
20709 C...Set pointer to companion
20710             IMI(JS,MINT(31),2)=-NVC(JS,-IFL)
20711           ELSE
20712 C...If companion, decide which one.
20713             CMPSUM=VAL+SEA
20714             ISEL=0
20715   410       ISEL=ISEL+1
20716             CMPSUM=CMPSUM+XPSVC(IFL,ISEL)
20717             IF (RVCS.GT.CMPSUM.AND.ISEL.LT.NVC(JS,IFL)) GOTO 410
20718 C...Find original sea (anti-)quark:
20719             IASSOC=0
20720             DO 420 I1=1,NMI(JS)
20721               IF (K(IMI(JS,I1,1),2).NE.-IFL) GOTO 420
20722               IF (-IMI(JS,I1,2).EQ.ISEL) THEN
20723                 IMI(JS,MINT(31),2)=IMI(JS,I1,1)
20724                 IMI(JS,I1,2)=IMI(JS,MINT(31),1)
20725               ENDIF
20726   420       CONTINUE
20727 C...Change X to what associated companion had, so that the correct
20728 C...amount of momentum can be subtracted from the companion sum below.
20729             X=XASSOC(JS,IFL,ISEL)
20730 C...Mark companion read.
20731             XASSOC(JS,IFL,ISEL)=0D0
20732           ENDIF
20733  430    CONTINUE
20734  
20735 C...Global statistics.
20736         MINT(351)=MINT(351)+1
20737         VINT(351)=VINT(351)+PT
20738         IF (MINT(351).EQ.1) VINT(356)=PT
20739  
20740 C...Update remaining energy and other counters.
20741         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
20742           CALL PYERRM(11,'(PYMIGN:) no more memory left in PYJETS')
20743           MINT(51)=1
20744           RETURN
20745         ENDIF
20746         NMI(1)=NMI(1)+1
20747         NMI(2)=NMI(2)+1
20748         VINT(151)=VINT(151)+VINT(41)
20749         VINT(152)=VINT(152)+VINT(42)
20750         VINT(143)=VINT(143)-VINT(141)
20751         VINT(144)=VINT(144)-VINT(142)
20752  
20753 C...Iterate, with more interactions allowed.
20754         IF(MINT(31).LT.240) GOTO 240
20755  440    CONTINUE
20756  
20757 C...Restore saved quantities for hardest interaction.
20758         MINT(1)=ISUBSV
20759         MINT(13)=M13SV
20760         MINT(14)=M14SV
20761         MINT(15)=M15SV
20762         MINT(16)=M16SV
20763         MINT(21)=M21SV
20764         MINT(22)=M22SV
20765         DO 450 J=11,80
20766           VINT(J)=VINTSV(J)
20767   450   CONTINUE
20768         VINT(141)=V141SV
20769         VINT(142)=V142SV
20770  
20771       ENDIF
20772  
20773 C...Format statements for printout.
20774  5000 FORMAT(/1X,'****** PYMIGN: initialization of multiple inter',
20775      &'actions for MSTP(82) =',I2,' ******')
20776  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
20777      &D9.2,' mb: rejected')
20778  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
20779      &D9.2,' mb: accepted')
20780  
20781       RETURN
20782       END
20783  
20784 C*********************************************************************
20785  
20786 C...PYMIHK
20787 C...Finds left-behind remnant flavour content and hooks up
20788 C...the colour flow between the hard scattering and remnants
20789  
20790       SUBROUTINE PYMIHK
20791  
20792 C...Double precision and integer declarations.
20793       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20794       IMPLICIT INTEGER(I-N)
20795       INTEGER PYK,PYCHGE,PYCOMP
20796 C...The event record
20797       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
20798 C...Parameters
20799       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
20800       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
20801       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
20802       COMMON/PYINT1/MINT(400),VINT(400)
20803 C...The common block of dangling ends
20804       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
20805      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
20806      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
20807       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINTM/
20808 C...Local variables
20809       PARAMETER (NERSIZ=4000)
20810       COMMON /PYCBLS/MCO(NERSIZ,2),NCC,JCCO(NERSIZ,2),JCCN(NERSIZ,2)
20811      &     ,MACCPT
20812       COMMON /PYCTAG/NCT,MCT(NERSIZ,2)
20813       SAVE /PYCBLS/,/PYCTAG/
20814       DIMENSION JST(2,3),IV(2,3),IDQ(3),NVSUM(2),NBRTOT(2),NG(2)
20815      &     ,ITJUNC(2),MOUT(2),INSR(1000,3),ISTR(6),YMI(240)
20816       DATA NERRPR/0/
20817       SAVE NERRPR
20818       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)
20819  
20820 C...Set up error checkers
20821       IBOOST=0
20822  
20823 C...Initialize colour arrays: MCO (Original) and MCT (New)
20824       DO 110 I=MINT(84)+1,NERSIZ
20825         DO 100 JC=1,2
20826           MCT(I,JC)=0
20827           MCO(I,JC)=0
20828   100   CONTINUE
20829 C...Also zero colour tracing information, if existed.
20830         IF (I.LE.N) THEN
20831           K(I,4)=MOD(K(I,4),MSTU(5)**2)
20832           K(I,5)=MOD(K(I,5),MSTU(5)**2)
20833         ENDIF
20834   110 CONTINUE
20835  
20836 C...Initialize colour tag collapse arrays:
20837 C...JCCO (Original) and JCCN (New).
20838       DO 130 MG=MINT(84)+1,NERSIZ
20839         DO 120 JC=1,2
20840           JCCO(MG,JC)=0
20841           JCCN(MG,JC)=0
20842   120   CONTINUE
20843   130 CONTINUE
20844  
20845 C...Zero gluon insertion array
20846       DO 150 IM=1,1000
20847         DO 140 J=1,3
20848           INSR(IM,J)=0
20849   140   CONTINUE
20850   150 CONTINUE
20851  
20852 C...Compute hard scattering system rapidities
20853       IF (MSTP(89).EQ.1) THEN
20854         DO 160 IM=1,240
20855           IF (IM.LE.MINT(31)) THEN
20856             YMI(IM)=LOG(XMI(1,IM)/XMI(2,IM))
20857           ELSE
20858 C...Set (unsigned) rapidity = 100 for beam remnant systems.
20859             YMI(IM)=100D0
20860           ENDIF
20861   160   CONTINUE
20862       ENDIF
20863  
20864 C...Treat each side separately
20865       DO 290 JS=1,2
20866  
20867 C...Initialize side.
20868         NG(JS)=0
20869         JV=0
20870         KFS=ISIGN(1,MINT(10+JS))
20871  
20872 C...Set valence content of pi0, gamma, K0S, K0L if not yet done.
20873         IF(KFIVAL(JS,1).EQ.0) THEN
20874           IF(MINT(10+JS).EQ.111) THEN
20875             KFIVAL(JS,1)=INT(1.5D0+PYR(0))
20876             KFIVAL(JS,2)=-KFIVAL(JS,1)
20877           ELSEIF(MINT(10+JS).EQ.22) THEN
20878             PYRKF=PYR(0)
20879             KFIVAL(JS,1)=1
20880             IF(PYRKF.GT.0.1D0) KFIVAL(JS,1)=2
20881             IF(PYRKF.GT.0.5D0) KFIVAL(JS,1)=3
20882             IF(PYRKF.GT.0.6D0) KFIVAL(JS,1)=4
20883             KFIVAL(JS,2)=-KFIVAL(JS,1)
20884           ELSEIF(MINT(10+JS).EQ.130.OR.MINT(10+JS).EQ.310) THEN
20885             IF(PYR(0).GT.0.5D0) THEN
20886               KFIVAL(JS,1)=1
20887               KFIVAL(JS,2)=-3
20888             ELSE
20889               KFIVAL(JS,1)=3
20890               KFIVAL(JS,2)=-1
20891             ENDIF
20892           ENDIF
20893         ENDIF
20894  
20895 C...Initialize beam remnant sea and valence content flavour by flavour.
20896         NVSUM(JS)=0
20897         NBRTOT(JS)=0
20898         DO 210 JFA=1,6
20899 C...Count up original number of JFA valence quarks and antiquarks.
20900           NVALQ=0
20901           NVALQB=0
20902           NSEA=0
20903           DO 170 J=1,3
20904             IF(KFIVAL(JS,J).EQ.JFA) NVALQ=NVALQ+1
20905             IF(KFIVAL(JS,J).EQ.-JFA) NVALQB=NVALQB+1
20906   170     CONTINUE
20907           NVSUM(JS)=NVSUM(JS)+NVALQ+NVALQB
20908 C...Subtract kicked out valence and determine sea from flavour cons.
20909           DO 180 IM=1,NMI(JS)
20910             IFL = K(IMI(JS,IM,1),2)
20911             IFA = IABS(IFL)
20912             IFS = ISIGN(1,IFL)
20913             IF (IFL.EQ.JFA.AND.IMI(JS,IM,2).EQ.0) THEN
20914 C...Subtract K.O. valence quark from remainder.
20915               NVALQ=NVALQ-1
20916               JV=NVSUM(JS)-NVALQ-NVALQB
20917               IV(JS,JV)=IMI(JS,IM,1)
20918             ELSEIF (IFL.EQ.-JFA.AND.IMI(JS,IM,2).EQ.0) THEN
20919 C...Subtract K.O. valence antiquark from remainder.
20920               NVALQB=NVALQB-1
20921               JV=NVSUM(JS)-NVALQ-NVALQB
20922               IV(JS,JV)=IMI(JS,IM,1)
20923             ELSEIF (IFA.EQ.JFA) THEN
20924 C...Outside sea without companion: add opposite sea flavour inside.
20925               IF (IMI(JS,IM,2).LT.0) NSEA=NSEA-IFS
20926             ENDIF
20927   180     CONTINUE
20928 C...Check if space left in PYJETS for additional BR flavours
20929           NFLSUM=IABS(NSEA)+NVALQ+NVALQB
20930           NBRTOT(JS)=NBRTOT(JS)+NFLSUM
20931           IF (N+NFLSUM+1.GT.MSTU(4)) THEN
20932             CALL PYERRM(11,'(PYMIHK:) no more memory left in PYJETS')
20933             MINT(51)=1
20934             RETURN
20935           ENDIF
20936 C...Add required val+sea content to beam remnant.
20937           IF (NFLSUM.GT.0) THEN
20938             DO 200 IA=1,NFLSUM
20939 C...Insert beam remnant quark as p.t. symbolic parton in ER.
20940               N=N+1
20941               DO 190 IX=1,5
20942                 K(N,IX)=0
20943                 P(N,IX)=0D0
20944                 V(N,IX)=0D0
20945   190         CONTINUE
20946               K(N,1)=3
20947               K(N,2)=ISIGN(JFA,NSEA)
20948               IF (IA.LE.NVALQ) K(N,2)=JFA
20949               IF (IA.GT.NVALQ.AND.IA.LE.NVALQ+NVALQB) K(N,2)=-JFA
20950               K(N,3)=MINT(83)+JS
20951 C...Also update NMI, IMI, and IV arrays.
20952               NMI(JS)=NMI(JS)+1
20953               IMI(JS,NMI(JS),1)=N
20954               IMI(JS,NMI(JS),2)=-1
20955               IF (IA.LE.NVALQ+NVALQB) THEN
20956                 IMI(JS,NMI(JS),2)=0
20957                 JV=JV+1
20958                 IV(JS,JV)=IMI(JS,NMI(JS),1)
20959               ENDIF
20960   200       CONTINUE
20961           ENDIF
20962   210   CONTINUE
20963  
20964         IM=0
20965   220   IM=IM+1
20966         IF (IM.LE.NMI(JS)) THEN
20967           IF (K(IMI(JS,IM,1),2).EQ.21) THEN
20968             NG(JS)=NG(JS)+1
20969 C...Add fictitious parent gluons for companion pairs.
20970           ELSEIF (IMI(JS,IM,2).NE.0.AND.K(IMI(JS,IM,1),2).GT.0) THEN
20971 C...Randomly assign companions to sea quarks which have none.
20972             IF (IMI(JS,IM,2).LT.0) THEN
20973               IMC=PYR(0)*NMI(JS)
20974   230         IMC=MOD(IMC,NMI(JS))+1
20975               IF (K(IMI(JS,IMC,1),2).NE.-K(IMI(JS,IM,1),2)) GOTO 230
20976               IF (IMI(JS,IMC,2).GE.0) GOTO 230
20977               IMI(JS, IM,2) = IMI(JS,IMC,1)
20978               IMI(JS,IMC,2) = IMI(JS, IM,1)
20979             ENDIF
20980 C...Add fictitious parent gluon
20981             N=N+1
20982             DO 240 IX=1,5
20983               K(N,IX)=0
20984               P(N,IX)=0D0
20985               V(N,IX)=0D0
20986   240       CONTINUE
20987             K(N,1)=14
20988             K(N,2)=21
20989             K(N,3)=MINT(83)+JS
20990 C...Set gluon (anti-)colour daughter pointers
20991             K(N,4)=IMI(JS, IM,1)
20992             K(N,5)=IMI(JS, IM,2)
20993 C...Set quark (anti-)colour parent pointers
20994             K(IMI(JS, IM,2),5)=K(IMI(JS, IM,2),5)+MSTU(5)*N
20995             K(IMI(JS, IM,1),4)=K(IMI(JS, IM,1),4)+MSTU(5)*N
20996 C...Add gluon to IMI
20997             NMI(JS)=NMI(JS)+1
20998             IMI(JS,NMI(JS),1)=N
20999             IMI(JS,NMI(JS),2)=0
21000           ENDIF
21001           GOTO 220
21002         ENDIF
21003  
21004 C...If incoming (anti-)baryon, insert inside (anti-)junction.
21005 C...Set up initial v-v-j-v configuration. Otherwise set up
21006 C...mesonic v-vbar configuration
21007         IF (IABS(MINT(10+JS)).GT.1000) THEN
21008 C...Determine junction type (1: B=1 2: B=-1)
21009           ITJUNC(JS) = (3-KFS)/2
21010 C...Insert junction.
21011           N=N+1
21012           DO 250 IX=1,5
21013             K(N,IX)=0
21014             P(N,IX)=0D0
21015             V(N,IX)=0D0
21016   250     CONTINUE
21017 C...Set special junction codes:
21018           K(N,1)=42
21019           K(N,2)=88
21020 C...Set parent to side.
21021           K(N,3)=MINT(83)+JS
21022           K(N,4)=ITJUNC(JS)*MSTU(5)
21023           K(N,5)=0
21024 C...Connect valence quarks to junction.
21025           MOUT(JS)=0
21026           MANTI=ITJUNC(JS)-1
21027 C...Set (anti)colour mother = junction.
21028           DO 260 JV=1,3
21029             K(IV(JS,JV),4+MANTI)=MOD(K(IV(JS,JV),4+MANTI),MSTU(5))
21030      &           +MSTU(5)*N
21031 C...Keep track of partons adjacent to junction:
21032             JST(JS,JV)=IV(JS,JV)
21033   260     CONTINUE
21034         ELSE
21035 C...Mesons: set up initial q-qbar topology
21036           ITJUNC(JS)=0
21037           IF (K(IV(JS,1),2).GT.0) THEN
21038             IQ=IV(JS,1)
21039             IQBAR=IV(JS,2)
21040           ELSE
21041             IQ=IV(JS,2)
21042             IQBAR=IV(JS,1)
21043           ENDIF
21044           IV(JS,3)=0
21045           JST(JS,1)=IQ
21046           JST(JS,2)=IQBAR
21047           JST(JS,3)=0
21048           K(IQ,4)=MOD(K(IQ,4),MSTU(5))+MSTU(5)*IQBAR
21049           K(IQBAR,5)=MOD(K(IQBAR,5),MSTU(5))+MSTU(5)*IQ
21050 C...Special for mesons. Insert gluon if BR empty.
21051           IF (NBRTOT(JS).EQ.0) THEN
21052             N=N+1
21053             DO 270 IX=1,5
21054               K(N,IX)=0
21055               P(N,IX)=0D0
21056               V(N,IX)=0D0
21057   270       CONTINUE
21058             K(N,1)=3
21059             K(N,2)=21
21060             K(N,3)=MINT(83)+JS
21061             K(N,4)=0
21062             K(N,5)=0
21063             NBRTOT(JS)=1
21064             NG(JS)=NG(JS)+1
21065 C...Add gluon to IMI
21066             NMI(JS)=NMI(JS)+1
21067             IMI(JS,NMI(JS),1)=N
21068             IMI(JS,NMI(JS),2)=0
21069           ENDIF
21070           MOUT(JS)=0
21071         ENDIF
21072  
21073 C...Count up number of valence quarks outside BR.
21074         DO 280 JV=1,3
21075           IF (JST(JS,JV).LE.MINT(53).AND.JST(JS,JV).GT.0)
21076      &         MOUT(JS)=MOUT(JS)+1
21077   280   CONTINUE
21078  
21079   290 CONTINUE
21080  
21081 C...Now both sides have been prepared in an initial vvjv (baryonic) or
21082 C...v(g)vbar (mesonic) configuration.
21083  
21084 C...Create colour line tags starting from initiators.
21085       NCT=0
21086       DO 320 IM=1,MINT(31)
21087 C...Consider each side in turn.
21088         DO 310 JS=1,2
21089           I1=IMI(JS,IM,1)
21090           I2=IMI(3-JS,IM,1)
21091           DO 300 JCS=4,5
21092             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
21093      &           GOTO 300
21094             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 300
21095  
21096             KCS=JCS
21097             CALL PYCTTR(I1,KCS,I2)
21098             IF(MINT(51).NE.0) RETURN
21099  
21100   300     CONTINUE
21101   310   CONTINUE
21102   320 CONTINUE
21103  
21104       DO 340 JS=1,2
21105 C...Create colour tags for beam remnant partons.
21106         DO 330 IM=MINT(31)+1,NMI(JS)
21107           IP=IMI(JS,IM,1)
21108           IF (K(IP,2).NE.21) THEN
21109             JC=(3-ISIGN(1,K(IP,2)))/2
21110             IF (MCT(IP,JC).EQ.0) THEN
21111               NCT=NCT+1
21112               MCT(IP,JC)=NCT
21113             ENDIF
21114           ELSE
21115 C...Gluons
21116             ICD=K(IP,4)
21117             IAD=K(IP,5)
21118             IF (ICD.NE.0) THEN
21119 C...Fictituous gluons just inherit from their quark daughters.
21120               ICC=MCT(ICD,1)
21121               IAC=MCT(IAD,2)
21122             ELSE
21123 C...Real beam remnant gluons get their own colours
21124               ICC=NCT+1
21125               IAC=NCT+2
21126               NCT=NCT+2
21127             ENDIF
21128             MCT(IP,1)=ICC
21129             MCT(IP,2)=IAC
21130           ENDIF
21131   330   CONTINUE
21132   340 CONTINUE
21133  
21134 C...Create colour tags for colour lines which are detached from the
21135 C...initial state.
21136  
21137       DO 360 MQGST=1,2
21138         DO 350 I=MINT(84)+1,N
21139  
21140 C...Look for coloured string endpoint, or (later) leftover gluon.
21141           IF (K(I,1).NE.3) GOTO 350
21142           KC=PYCOMP(K(I,2))
21143           IF(KC.EQ.0) GOTO 350
21144           KQ=KCHG(KC,2)
21145           IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 350
21146  
21147 C...Pick up loose string end with no previous tag.
21148           KCS=4
21149           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
21150           IF(MCT(I,KCS-3).NE.0) GOTO 350
21151  
21152           CALL PYCTTR(I,KCS,I)
21153           IF(MINT(51).NE.0) RETURN
21154  
21155   350   CONTINUE
21156   360 CONTINUE
21157  
21158 C...Store original colour tags
21159       DO 370 I=MINT(84)+1,N
21160         MCO(I,1)=MCT(I,1)
21161         MCO(I,2)=MCT(I,2)
21162   370 CONTINUE
21163  
21164 C...Iteratively add gluons to already existing string pieces, enforcing
21165 C...various possible orderings, and rejecting insertions that would give
21166 C...rise to singlet gluons.
21167 C...<kappa tau> normalization.
21168       RM0=1.5D0
21169       MRETRY=0
21170       PARP80=PARP(80)
21171  
21172 C...Set up simplified kinematics.
21173 C...Boost hard interaction systems.
21174       IBOOST=IBOOST+1
21175       DO 380 IM=1,MINT(31)
21176         BETA=(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
21177         CALL PYROBO(IMISEP(IM-1)+1,IMISEP(IM),0D0,0D0,0D0,0D0,BETA)
21178   380 CONTINUE
21179 C...Assign preliminary beam remnant momenta.
21180       DO 390 I=MINT(53)+1,N
21181         JS=K(I,3)
21182         P(I,1)=0D0
21183         P(I,2)=0D0
21184         IF (K(I,2).NE.88) THEN
21185           P(I,4)=0.5D0*VINT(142+JS)*VINT(1)/MAX(1,NMI(JS)-MINT(31))
21186           P(I,3)=P(I,4)
21187           IF (JS.EQ.2) P(I,3)=-P(I,3)
21188         ELSE
21189 C...Junctions are wildcards for the present.
21190           P(I,4)=0D0
21191           P(I,3)=0D0
21192         ENDIF
21193   390 CONTINUE
21194  
21195 C...Reset colour processing information.
21196   400 DO 410 I=MINT(84)+1,N
21197         K(I,4)=MOD(K(I,4),MSTU(5)**2)
21198         K(I,5)=MOD(K(I,5),MSTU(5)**2)
21199   410 CONTINUE
21200  
21201       NCC=0
21202       DO 430 JS=1,2
21203 C...If meson,  without gluon in BR, collapse q-qbar colour tags:
21204         IF (ITJUNC(JS).EQ.0) THEN
21205           JC1=MCT(JST(JS,1),1)
21206           JC2=MCT(JST(JS,2),2)
21207           NCC=NCC+1
21208           JCCO(NCC,1)=MAX(JC1,JC2)
21209           JCCO(NCC,2)=MIN(JC1,JC2)
21210 C...Collapse colour tags in event record
21211           DO 420 I=MINT(84)+1,N
21212             IF (MCT(I,1).EQ.JCCO(NCC,1)) MCT(I,1)=JCCO(NCC,2)
21213             IF (MCT(I,2).EQ.JCCO(NCC,1)) MCT(I,2)=JCCO(NCC,2)
21214   420     CONTINUE
21215         ENDIF
21216   430 CONTINUE
21217  
21218   440 JS=1
21219       IF (PYR(0).GT.0.5D0.OR.NG(1).EQ.0) JS=2
21220       IF (NG(JS).GT.0) THEN
21221         NOPT=0
21222         RLOPT=1D9
21223 C...Start at random gluon (optimizes speed for random attachments)
21224         NMGL=0
21225         IMGL=PYR(0)*NMI(JS)+1
21226   450   IMGL=MOD(IMGL,NMI(JS))+1
21227         NMGL=NMGL+1
21228 C...Only loop through NMI once (with upper limit to save time)
21229         IF (NMGL.LE.NMI(JS).AND.NOPT.LE.3) THEN
21230           IGL  = IMI(JS,IMGL,1)
21231 C...If not gluon or if already connected, try next.
21232           IF (K(IGL,2).NE.21.OR.K(IGL,4)/MSTU(5).NE.0
21233      &         .OR.K(IGL,5)/MSTU(5).NE.0) GOTO 450
21234 C...Now loop through all possible insertions of this gluon.
21235           NMP1=0
21236           IMP1=PYR(0)*NMI(JS)+1
21237   460     IMP1=MOD(IMP1,NMI(JS))+1
21238           NMP1=NMP1+1
21239           IF (IMP1.EQ.IMGL) GOTO 460
21240 C...Only loop through NMI once (with upper limit to save time).
21241           IF (NMP1.LE.NMI(JS).AND.NOPT.LE.3) THEN
21242             IP1  = IMI(JS,IMP1,1)
21243 C...Try both colour mother and colour anti-mother.
21244 C...Randomly select which one to try first.
21245             NANTI=0
21246             MANTI=PYR(0)*2
21247   470       MANTI=MOD(MANTI+1,2)
21248             NANTI=NANTI+1
21249             IF (NANTI.LE.2) THEN
21250               IP2 =MOD(K(IP1,4+MANTI)/MSTU(5),MSTU(5))
21251 C...Reject if no appropriate mother (or if mother is fictitious
21252 C...parent gluon.)
21253               IF (IP2.LE.0) GOTO 470
21254               IF (K(IP2,2).EQ.21.AND.IP2.GT.MINT(53)) GOTO 470
21255 C...Also reject if this link has already been tried.
21256               IF (K(IP1,4+MANTI)/MSTU(5)**2.EQ.2) GOTO 470
21257               IF (K(IP2,5-MANTI)/MSTU(5)**2.EQ.2) GOTO 470
21258 C...Set flag to indicate that this link has now been tried for this
21259 C...gluon. IP2 may be junction, which has several mothers.
21260               K(IP1,4+MANTI)=K(IP1,4+MANTI)+2*MSTU(5)**2
21261               IF (K(IP2,2).NE.88) THEN
21262                 K(IP2,5-MANTI)=K(IP2,5-MANTI)+2*MSTU(5)**2
21263               ENDIF
21264  
21265 C...JCG1: Original colour tag of gluon on IP1 side
21266 C...JCG2: Original colour tag of gluon on IP2 side
21267 C...JCP1: Original colour tag of IP1 on gluon side
21268 C...JCP2: Original colour tag of IP2 on gluon side.
21269               JCG1=MCO(IGL,2-MANTI)
21270               JCG2=MCO(IGL,1+MANTI)
21271               JCP1=MCO(IP1,1+MANTI)
21272               JCP2=MCO(IP2,2-MANTI)
21273  
21274               CALL PYMIHG(JCP1,JCG1,JCP2,JCG2)
21275 C...Reject gluon attachments that give rise to singlet gluons.
21276               IF (MACCPT.EQ.0) GOTO 470
21277  
21278 C...Update colours
21279               JCG1=MCT(IGL,2-MANTI)
21280               JCG2=MCT(IGL,1+MANTI)
21281               JCP1=MCT(IP1,1+MANTI)
21282               JCP2=MCT(IP2,2-MANTI)
21283  
21284 C...Select whether to accept this insertion
21285               IF (MSTP(89).EQ.0) THEN
21286 C...Random insertions: no measure.
21287                 RL=1D0
21288 C...For random ordering, we want to suppress beam remnant breakups
21289 C...already at this point.
21290                 IF (IP1.GT.MINT(53).AND.IP2.GT.MINT(53)
21291      &               .AND.MOUT(JS).NE.0.AND.PYR(0).GT.PARP80) THEN
21292                   NMP1=0
21293                   NMGL=0
21294                   GOTO 470
21295                 ENDIF
21296               ELSEIF (MSTP(89).EQ.1) THEN
21297 C...Rapidity ordering:
21298 C...YGL = Rapidity of gluon.
21299                 YGL=YMI(IMGL)
21300 C...If fictitious gluon
21301                 IF (YGL.EQ.100D0) THEN
21302                   YGL=(3-2*JS)*100D0
21303                   IDA1=MOD(K(IGL,4),MSTU(5))
21304                   IDA2=MOD(K(IGL,5),MSTU(5))
21305                   DO 480 IMT=1,NMI(JS)
21306 C...Select (arbitrarily) the most central daughter.
21307                     IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2)
21308      &                   THEN
21309                       IF (ABS(YGL).GT.ABS(YMI(IMT))) YGL=YMI(IMT)
21310                     ENDIF
21311   480             CONTINUE
21312                 ENDIF
21313 C...YP1 = Rapidity IP1
21314                 YP1=YMI(IMP1)
21315 C...If fictitious gluon
21316                 IF (YP1.EQ.100D0) THEN
21317                   YP1=(3-2*JS)*YP1
21318                   IDA1=MOD(K(IP1,4),MSTU(5))
21319                   IDA2=MOD(K(IP1,5),MSTU(5))
21320                   DO 490 IMT=1,NMI(JS)
21321 C...Select (arbitrarily) the most central daughter.
21322                     IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2)
21323      &                   THEN
21324                       IF (ABS(YP1).GT.ABS(YMI(IMT))) YP1=YMI(IMT)
21325                     ENDIF
21326   490             CONTINUE
21327                 ENDIF
21328 C...YP2 = Rapidity of mother system
21329                 IF (K(IP2,2).NE.88) THEN
21330                   DO 500 IMT=1,NMI(JS)
21331                     IF (IMI(JS,IMT,1).EQ.IP2) YP2=YMI(IMT)
21332   500             CONTINUE
21333 C...If fictitious gluon
21334                   IF (YP2.EQ.100D0) THEN
21335                     YP2=(3-2*JS)*YP2
21336                     IDA1=MOD(K(IP2,4),MSTU(5))
21337                     IDA2=MOD(K(IP2,5),MSTU(5))
21338                     DO 510 IMT=1,NMI(JS)
21339 C...Select (arbitrarily) the most central daughter.
21340                       IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2
21341      &                     ) THEN
21342                         IF (ABS(YP2).GT.ABS(YMI(IMT))) YP2=YMI(IMT)
21343                       ENDIF
21344   510               CONTINUE
21345                   ENDIF
21346 C...Assign (arbitrarily) 100D0 to junction also
21347                 ELSE
21348                   YP2=(3-2*JS)*100D0
21349                 ENDIF
21350                 RL=ABS(YGL-YP1)+ABS(YGL-YP2)
21351               ELSEIF (MSTP(89).EQ.2) THEN
21352 C...Lambda ordering:
21353 C...Compute lambda measure for this insertion.
21354                 RL=1D0
21355                 DO 520 IST=1,6
21356                   ISTR(IST)=0
21357   520           CONTINUE
21358 C...If IP2 is junction, not caught below.
21359                 IF (JCP2.EQ.0) THEN
21360                   ITJU=MOD(K(IP2,4)/MSTU(5),MSTU(5))
21361 C...Anti-junction is colour endpoint et vv., always on JCG2.
21362                   ISTR(5-ITJU)=IP2
21363                 ENDIF
21364                 DO 530 I=MINT(84)+1,N
21365                   IF (K(I,1).LT.10) THEN
21366 C...The new string pieces
21367                     IF (MCT(I,1).EQ.JCG1) ISTR(1)=I
21368                     IF (MCT(I,2).EQ.JCG1) ISTR(2)=I
21369                     IF (MCT(I,1).EQ.JCG2) ISTR(3)=I
21370                     IF (MCT(I,2).EQ.JCG2) ISTR(4)=I
21371                   ENDIF
21372   530           CONTINUE
21373 C...Also identify junctions as string endpoints.
21374                 DO 540 I=MINT(84)+1,N
21375                   ICMO=MOD(K(I,4)/MSTU(5),MSTU(5))
21376                   IAMO=MOD(K(I,5)/MSTU(5),MSTU(5))
21377 C...Find partons adjacent to junctions.
21378                   IF (K(ICMO,1).EQ.42.AND.MCT(I,1).EQ.JCG1.AND.ISTR(2)
21379      &                 .EQ.0) ISTR(2) = ICMO
21380                   IF (K(IAMO,1).EQ.42.AND.MCT(I,2).EQ.JCG1.AND.ISTR(1)
21381      &                 .EQ.0) ISTR(1) = IAMO
21382                   IF (K(ICMO,1).EQ.42.AND.MCT(I,1).EQ.JCG2.AND.ISTR(4)
21383      &                 .EQ.0) ISTR(4) = ICMO
21384                   IF (K(IAMO,1).EQ.42.AND.MCT(I,2).EQ.JCG2.AND.ISTR(3)
21385      &                 .EQ.0) ISTR(3) = IAMO
21386   540           CONTINUE
21387 C...The old string piece
21388                 ISTR(5)=ISTR(1+2*MANTI)
21389                 ISTR(6)=ISTR(4-2*MANTI)
21390                 RL=MAX(1D0,FOUR(ISTR(1),ISTR(2)))*MAX(1D0,FOUR(ISTR(3)
21391      &               ,ISTR(4)))/MAX(1D0,FOUR(ISTR(5),ISTR(6)))
21392                 RL=LOG(RL)
21393               ENDIF
21394 C...Allow some breadth to speed things up.
21395               IF (ABS(1D0-RL/RLOPT).LT.0.05D0) THEN
21396                 NOPT=NOPT+1
21397               ELSEIF (RL.GT.RLOPT) THEN
21398                 GOTO 470
21399               ELSE
21400                 NOPT=1
21401                 RLOPT=RL
21402               ENDIF
21403 C...INSR(NOPT,1)=Gluon colour mother
21404 C...INSR(NOPT,2)=Gluon
21405 C...INSR(NOPT,3)=Gluon anticolour mother
21406               IF (NOPT.GT.1000) GOTO 470
21407               INSR(NOPT,1+2*MANTI)=IP2
21408               INSR(NOPT,2)=IGL
21409               INSR(NOPT,3-2*MANTI)=IP1
21410               IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 470
21411             ENDIF
21412             IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 460
21413           ENDIF
21414 C...Reset link test information.
21415           DO 550 I=MINT(84)+1,N
21416             K(I,4)=MOD(K(I,4),MSTU(5)**2)
21417             K(I,5)=MOD(K(I,5),MSTU(5)**2)
21418   550     CONTINUE
21419           IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 450
21420         ENDIF
21421 C...Now we have a list of best gluon insertions, none of which cause
21422 C...singlets to arise. If list is empty, try again a few times. Note:
21423 C...this should never happen if we have a meson with a gluon inserted
21424 C...in the beam remnant, since that breaks up the colour line.
21425         IF (NOPT.EQ.0) THEN
21426 C...Abandon BR-g-BR suppression for retries. This is not serious, it
21427 C...just means we happened to start with trying a bad sequence.
21428           PARP80=1D0
21429           IF (MRETRY.LE.10.AND.(ITJUNC(1).NE.0.OR.JST(1,3).EQ.0).AND
21430      &         .(ITJUNC(2).NE.0.OR.JST(2,3).EQ.0)) THEN
21431             MRETRY=MRETRY+1
21432             DO 590 JS=1,2
21433               IF (ITJUNC(JS).NE.0) THEN
21434                 JST(JS,1)=IV(JS,1)
21435                 JST(JS,2)=IV(JS,2)
21436                 JST(JS,3)=IV(JS,3)
21437 C...Reset valence quark parent pointers
21438                 DO 560 I=MINT(53)+1,N
21439                   IF (K(I,2).EQ.88.AND.K(I,3).EQ.JS) IJU=I
21440   560           CONTINUE
21441                 MANTI=ITJUNC(JS)-1
21442 C...Set (anti)colour mother = junction.
21443                 DO 570 JV=1,3
21444                   K(IV(JS,JV),4+MANTI)=MOD(K(IV(JS,JV),4+MANTI),MSTU(5))
21445      &                 +MSTU(5)*IJU
21446   570           CONTINUE
21447               ELSE
21448 C...Same for mesons. JST unchanged, so needn't be restored.
21449                 IQ=JST(JS,1)
21450                 IQBAR=JST(JS,2)
21451                 K(IQ,4)=MOD(K(IQ,4),MSTU(5))+MSTU(5)*IQBAR
21452                 K(IQBAR,5)=MOD(K(IQBAR,5),MSTU(5))+MSTU(5)*IQ
21453               ENDIF
21454 C...Also reset gluon parent pointers.
21455               NG(JS)=0
21456               DO 580 IM=1,NMI(JS)
21457                 I=IMI(JS,IM,1)
21458                 IF (K(I,2).EQ.21) THEN
21459                   K(I,4)=MOD(K(I,4),MSTU(5))
21460                   K(I,5)=MOD(K(I,5),MSTU(5))
21461                   NG(JS)=NG(JS)+1
21462                 ENDIF
21463   580         CONTINUE
21464   590       CONTINUE
21465 C...Reset colour tags
21466             DO 600 I=MINT(84)+1,N
21467               MCT(I,1)=MCO(I,1)
21468               MCT(I,2)=MCO(I,2)
21469   600       CONTINUE
21470             GOTO 400
21471           ELSE
21472             IF(NERRPR.LT.5) THEN
21473               NERRPR=NERRPR+1
21474               CALL PYLIST(4)
21475               CALL PYERRM(19,'(PYMIHK:) No physical colour flow found!')
21476               WRITE(MSTU(11),*) 'NG:', NG,'   MOUT:', MOUT(JS)
21477             ENDIF
21478 C...Kill event and start another.
21479             MINT(51)=1
21480             RETURN
21481           ENDIF
21482         ELSE
21483 C...Select between insertions, suppressing insertions wholly in the BR.
21484           IIN=PYR(0)*NOPT+1
21485   610     IIN=MOD(IIN,NOPT)+1
21486           IF (INSR(IIN,1).GT.MINT(53).AND.INSR(IIN,3).GT.MINT(53)
21487      &         .AND.MOUT(JS).NE.0.AND.PYR(0).GT.PARP80) GOTO 610
21488         ENDIF
21489  
21490 C...Now we know which gluon to insert where. Colour tags in JCCO and
21491 C...colour connection information should be updated, NG(JS) should be
21492 C...counted down, and a new loop performed if there are still gluons
21493 C...left on any side.
21494         ICM=INSR(IIN,1)
21495         IACM=INSR(IIN,3)
21496         IGL=INSR(IIN,2)
21497 C...JCG : Original gluon colour tag
21498 C...JCAG: Original gluon anticolour tag.
21499 C...JCM : Original anticolour tag of gluon colour mother
21500 C...JACM: Original colour tag of gluon anticolour mother
21501         JCG=MCO(IGL,1)
21502         JCM=MCO(ICM,2)
21503         JACG=MCO(IGL,2)
21504         JACM=MCO(IACM,1)
21505  
21506         CALL PYMIHG(JACM,JACG,JCM,JCG)
21507         IF (MACCPT.EQ.0) THEN
21508           IF(NERRPR.LT.5) THEN
21509             NERRPR=NERRPR+1
21510             CALL PYLIST(4)
21511             CALL PYERRM(11,'(PYMIHK:) Unphysical colour flow!')
21512             WRITE(MSTU(11),*) 'attaching', IGL,' between', ICM, IACM
21513           ENDIF
21514 C...Kill event and start another.
21515           MINT(51)=1
21516           RETURN
21517         ELSE
21518 C...If everything went fine, store new JCCN in JCCO.
21519           NCC=NCC+1
21520           DO 620 ICC=1,NCC
21521             JCCO(ICC,1)=JCCN(ICC,1)
21522             JCCO(ICC,2)=JCCN(ICC,2)
21523   620     CONTINUE
21524         ENDIF
21525  
21526 C...One gluon attached is counted as equivalent to one end outside.
21527         MOUT(JS)=1
21528 C...Set IGL colour mother = ICM.
21529         K(IGL,4)=MOD(K(IGL,4),MSTU(5))+MSTU(5)*ICM
21530 C...Set ICM anticolour mother = IGL colour.
21531         IF (K(ICM,2).NE.88) THEN
21532           K(ICM,5)=MOD(K(ICM,5),MSTU(5))+MSTU(5)*IGL
21533         ELSE
21534 C...If ICM is junction, just update JST array for now.
21535           DO 630 MSJ=1,3
21536             IF (JST(JS,MSJ).EQ.IACM) JST(JS,MSJ)=IGL
21537   630     CONTINUE
21538         ENDIF
21539 C...Set IGL anticolour mother = IACM.
21540         K(IGL,5)=MOD(K(IGL,5),MSTU(5))+MSTU(5)*IACM
21541 C...Set IACM anticolour mother = IGL anticolour.
21542         IF (K(IACM,2).NE.88) THEN
21543           K(IACM,4)=MOD(K(IACM,4),MSTU(5))+MSTU(5)*IGL
21544         ELSE
21545 C...If IACM is junction, just update JST array for now.
21546           DO 640 MSJ=1,3
21547             IF (JST(JS,MSJ).EQ.ICM) JST(JS,MSJ)=IGL
21548   640     CONTINUE
21549         ENDIF
21550 C...Count down # unconnected gluons.
21551         NG(JS)=NG(JS)-1
21552       ENDIF
21553       IF (NG(1).GT.0.OR.NG(2).GT.0) GOTO 440
21554  
21555       DO 840 JS=1,2
21556 C...Collapse fictitious gluons.
21557         DO 670 IGL=MINT(53)+1,N
21558           IF (K(IGL,2).EQ.21.AND.K(IGL,3).EQ.MINT(83)+JS.AND.
21559      &         K(IGL,1).EQ.14) THEN
21560             ICM=K(IGL,4)/MSTU(5)
21561             IAM=K(IGL,5)/MSTU(5)
21562             ICD=MOD(K(IGL,4),MSTU(5))
21563             IAD=MOD(K(IGL,5),MSTU(5))
21564 C...Set gluon daughters pointing to gluon mothers
21565             K(IAD,5)=MOD(K(IAD,5),MSTU(5))+MSTU(5)*IAM
21566             K(ICD,4)=MOD(K(ICD,4),MSTU(5))+MSTU(5)*ICM
21567 C...Set gluon mothers pointing to gluon daughters.
21568             IF (K(ICM,2).NE.88) THEN
21569               K(ICM,5)=MOD(K(ICM,5),MSTU(5))+MSTU(5)*ICD
21570             ELSE
21571 C...Special case: mother=junction. Just update JST array for now.
21572               DO 650 MSJ=1,3
21573                 IF (JST(JS,MSJ).EQ.IGL) JST(JS,MSJ)=ICD
21574   650         CONTINUE
21575             ENDIF
21576             IF (K(IAM,2).NE.88) THEN
21577               K(IAM,4)=MOD(K(IAM,4),MSTU(5))+MSTU(5)*IAD
21578             ELSE
21579               DO 660 MSJ=1,3
21580                 IF (JST(JS,MSJ).EQ.IGL) JST(JS,MSJ)=IAD
21581   660         CONTINUE
21582             ENDIF
21583           ENDIF
21584   670   CONTINUE
21585  
21586 C...Erase collapsed gluons from NMI and IMI (but keep them in ER)
21587         IM=NMI(JS)+1
21588   680   IM=IM-1
21589         IF (IM.GT.MINT(31).AND.K(IMI(JS,IM,1),2).NE.21) GOTO 680
21590         IF (IM.GT.MINT(31)) THEN
21591           NMI(JS)=NMI(JS)-1
21592           DO 690 IMR=IM,NMI(JS)
21593             IMI(JS,IMR,1)=IMI(JS,IMR+1,1)
21594             IMI(JS,IMR,2)=IMI(JS,IMR+1,2)
21595   690     CONTINUE
21596           GOTO 680
21597         ENDIF
21598  
21599 C...Finally, connect junction.
21600         IF (ITJUNC(JS).NE.0) THEN
21601           DO 700 I=MINT(53)+1,N
21602             IF (K(I,2).EQ.88.AND.K(I,3).EQ.MINT(83)+JS) IJU=I
21603   700     CONTINUE
21604 C...NBRJQ counts # of jq, NBRVQ # of jv, inside BR.
21605           NBRJQ =0
21606           NBRVQ =0
21607           DO 720 MSJ=1,3
21608             IDQ(MSJ)=0
21609 C...Find jq with no glue inbetween inside beam remnant.
21610             IF (JST(JS,MSJ).GT.MINT(53).AND.IABS(K(JST(JS,MSJ),2)).LE.5)
21611      &           THEN
21612               NBRJQ=NBRJQ+1
21613 C...Set IDQ = -I if q non-valence and = +I if q valence.
21614               IDQ(NBRJQ)=-JST(JS,MSJ)
21615               DO 710 JV=1,3
21616                 IF (IV(JS,JV).EQ.JST(JS,MSJ)) THEN
21617                   IDQ(NBRJQ)=JST(JS,MSJ)
21618                   NBRVQ=NBRVQ+1
21619                 ENDIF
21620   710         CONTINUE
21621             ENDIF
21622             I12=MOD(MSJ+1,2)
21623             I45=5
21624             IF (MSJ.EQ.3) I45=4
21625             K(IJU,I45)=K(IJU,I45)+(MSTU(5)**I12)*JST(JS,MSJ)
21626   720     CONTINUE
21627  
21628 C...Check if diquark can be formed.
21629           IF ((MSTP(88).GE.0.AND.NBRVQ.GE.2).OR.(NBRJQ.GE.2.AND.MSTP(88)
21630      &         .GE.1)) THEN
21631 C...If there is less than 2 valence quarks connected to junction
21632 C...and MSTP(88)>1, use random non-valence quarks to fill up.
21633             IF (NBRVQ.LE.1) THEN
21634               NDIQ=NBRVQ
21635   730         JFLIP=NBRJQ*PYR(0)+1
21636               IF (IDQ(JFLIP).LT.0) THEN
21637                 IDQ(JFLIP)=-IDQ(JFLIP)
21638                 NDIQ=NDIQ+1
21639               ENDIF
21640               IF (NDIQ.LE.1) GOTO 730
21641             ENDIF
21642 C...Place selected quarks first in IDQ, ordered in flavour.
21643             DO 740 JDQ=1,3
21644               IF (IDQ(JDQ).LE.0) THEN
21645                 ITEMP1  = IDQ(JDQ)
21646                 IDQ(JDQ)= IDQ(3)
21647                 IDQ(3)  = -ITEMP1
21648                 IF (IABS(K(IDQ(1),2)).LT.IABS(K(IDQ(2),2))) THEN
21649                   ITEMP1  = IDQ(1)
21650                   IDQ(1)  = IDQ(2)
21651                   IDQ(2)  = ITEMP1
21652                 ENDIF
21653               ENDIF
21654   740       CONTINUE
21655 C...Choose diquark spin.
21656             IF (NBRVQ.EQ.2) THEN
21657 C...If the selected quarks are both valence, we may use SU(6) rules
21658 C...to figure out which spin the diquark has, by a subdivision of the
21659 C...original beam hadron into the selected diquark system plus a kicked
21660 C...out quark, IKO.
21661               JKO=6
21662               DO 760 JDQ=1,2
21663                 DO 750 JV=1,3
21664                   IF (IDQ(JDQ).EQ.IV(JS,JV)) JKO=JKO-JV
21665   750           CONTINUE
21666   760         CONTINUE
21667               IKO=IV(JS,JKO)
21668               CALL PYSPLI(MINT(10+JS),K(IKO,2),KFDUM,KFDQ)
21669             ELSE
21670 C...If one or more of the selected quarks are not valence, we cannot use
21671 C...SU(6) subdivisions of the original beam hadron. Instead, with the
21672 C...flavours of the diquark already selected, we assume for now
21673 C...50:50 spin-1:spin-0 (where spin-0 possible).
21674               KFDQ=1000*K(IDQ(1),2)+100*K(IDQ(2),2)
21675               IS=3
21676               IF (K(IDQ(1),2).NE.K(IDQ(2),2).AND.
21677      &           (1D0+3D0*PARJ(4))*PYR(0).LT.1D0) IS=1
21678               KFDQ=KFDQ+ISIGN(IS,KFDQ)
21679             ENDIF
21680  
21681 C...Collapse diquark-j-quark system to baryon, if allowed and possible.
21682 C...Note: third quark can per definition not also be valence,
21683 C...therefore we can only do this if we are allowed to use sea quarks.
21684   770       IF (IDQ(3).NE.0.AND.MSTP(88).GE.2) THEN
21685               NTRY=0
21686   780         NTRY=NTRY+1
21687               CALL PYKFDI(KFDQ,K(IABS(IDQ(3)),2),KFDUM,KFBAR)
21688               IF (KFBAR.EQ.0.AND.NTRY.LE.100) THEN
21689                 GOTO 780
21690               ELSEIF(NTRY.GT.100) THEN
21691 C...If no baryon can be found, give up and form diquark.
21692                 IDQ(3)=0
21693                 GOTO 770
21694               ELSE
21695 C...Replace junction by baryon.
21696                 K(IJU,1)=1
21697                 K(IJU,2)=KFBAR
21698                 K(IJU,3)=MINT(83)+JS
21699                 K(IJU,4)=0
21700                 K(IJU,5)=0
21701                 P(IJU,5)=PYMASS(KFBAR)
21702                 DO 790 MSJ=1,3
21703 C...Prepare removal of participating quarks from ER.
21704                   K(JST(JS,MSJ),1)=-1
21705   790           CONTINUE
21706               ENDIF
21707             ELSE
21708 C...If collapse to baryon not possible or not allowed, replace junction
21709 C...by diquark. This way, collapsed gluons that were pointing at the
21710 C...junction will now point (correctly) at diquark.
21711               MANTI=ITJUNC(JS)-1
21712               K(IJU,1)=3
21713               K(IJU,2)=KFDQ
21714               K(IJU,3)=MINT(83)+JS
21715               K(IJU,4)=0
21716               K(IJU,5)=0
21717               DO 800 MSJ=1,3
21718                 IP=JST(JS,MSJ)
21719                 IF (IP.NE.IDQ(1).AND.IP.NE.IDQ(2)) THEN
21720                   K(IJU,4+MANTI)=0
21721                   K(IJU,5-MANTI)=IP*MSTU(5)
21722                   K(IP,4+MANTI)=MOD(K(IP,4+MANTI),MSTU(5))+
21723      &                 MSTU(5)*IJU
21724                   MCT(IJU,2-MANTI)=MCT(IP,1+MANTI)
21725                 ELSE
21726 C...Prepare removal of participating quarks from ER.
21727                   K(IP,1)=-1
21728                 ENDIF
21729   800         CONTINUE
21730             ENDIF
21731  
21732 C...Update so ER pointers to collapsed quarks
21733 C...now go to collapsed object.
21734             DO 820 I=MINT(84)+1,N
21735               IF ((K(I,3).EQ.MINT(83)+JS.OR.K(I,3).EQ.MINT(83)+2+JS).AND
21736      &             .K(I,1).GT.0) THEN
21737                 DO 810 ISID=4,5
21738                   IMO=K(I,ISID)/MSTU(5)
21739                   IDA=MOD(K(I,ISID),MSTU(5))
21740                   IF (IMO.GT.0) THEN
21741                     IF (K(IMO,1).EQ.-1) IMO=IJU
21742                   ENDIF
21743                   IF (IDA.GT.0) THEN
21744                     IF (K(IDA,1).EQ.-1) IDA=IJU
21745                   ENDIF
21746                   K(I,ISID)=IDA+MSTU(5)*IMO
21747   810           CONTINUE
21748               ENDIF
21749   820       CONTINUE
21750           ENDIF
21751         ENDIF
21752  
21753 C...Finally, if beam remnant is empty, insert a gluon in beam remnant.
21754 C...(this only happens for baryons, where we want to force the gluon
21755 C...to sit next to the junction. Mesons handled above.)
21756         IF (NBRTOT(JS).EQ.0) THEN
21757           N=N+1
21758           DO 830 IX=1,5
21759             K(N,IX)=0
21760             P(N,IX)=0D0
21761             V(N,IX)=0D0
21762   830     CONTINUE
21763           IGL=N
21764           K(IGL,1)=3
21765           K(IGL,2)=21
21766           K(IGL,3)=MINT(83)+JS
21767           IF (ITJUNC(JS).NE.0) THEN
21768 C...Incoming baryons. Pick random leg in JST (NVSUM = 3 for baryons)
21769             JLEG=PYR(0)*NVSUM(JS)+1
21770             I1=JST(JS,JLEG)
21771             JST(JS,JLEG)=IGL
21772             JCT=MCT(I1,ITJUNC(JS))
21773             MCT(IGL,3-ITJUNC(JS))=JCT
21774             NCT=NCT+1
21775             MCT(IGL,ITJUNC(JS))=NCT
21776             MANTI=ITJUNC(JS)-1
21777           ELSE
21778 C...Meson. Should not happen.
21779             CALL PYERRM(19,'(PYMIHK:) Empty meson beam remnant')
21780             IF(NERRPR.LT.5) THEN
21781               WRITE(MSTU(11),*) 'This should not have been possible!'
21782               CALL PYLIST(4)
21783               NERRPR=NERRPR+1
21784             ENDIF
21785             MINT(51)=1
21786             RETURN
21787           ENDIF
21788           I2=MOD(K(I1,4+MANTI)/MSTU(5),MSTU(5))
21789           K(I1,4+MANTI)=MOD(K(I1,4+MANTI),MSTU(5))+MSTU(5)*IGL
21790           K(IGL,5-MANTI)=MOD(K(IGL,5-MANTI),MSTU(5))+MSTU(5)*I1
21791           K(IGL,4+MANTI)=MOD(K(IGL,4+MANTI),MSTU(5))+MSTU(5)*I2
21792           IF (K(I2,2).NE.88) THEN
21793             K(I2,5-MANTI)=MOD(K(I2,5-MANTI),MSTU(5))+MSTU(5)*IGL
21794           ELSE
21795             IF (MOD(K(I2,4),MSTU(5)).EQ.I1) THEN
21796               K(I2,4)=(K(I2,4)/MSTU(5))*MSTU(5)+IGL
21797             ELSEIF(MOD(K(I2,5)/MSTU(5),MSTU(5)).EQ.I1) THEN
21798               K(I2,5)=MOD(K(I2,5),MSTU(5))+MSTU(5)*IGL
21799             ELSE
21800               K(I2,5)=(K(I2,5)/MSTU(5))*MSTU(5)+IGL
21801             ENDIF
21802           ENDIF
21803         ENDIF
21804   840 CONTINUE
21805  
21806 C...Remove collapsed quarks and junctions from ER and update IMI.
21807       CALL PYEDIT(11)
21808  
21809 C...Also update beam remnant part of IMI.
21810       NMI(1)=MINT(31)
21811       NMI(2)=MINT(31)
21812       DO 850 I=MINT(53)+1,N
21813         IF (K(I,1).LE.0) GOTO 850
21814 C...Restore BR quark/diquark/baryon pointers in IMI.
21815         IF ((K(I,2).NE.21.OR.K(I,1).NE.14).AND.K(I,2).NE.88) THEN
21816           JS=K(I,3)-MINT(83)
21817           NMI(JS)=NMI(JS)+1
21818           IMI(JS,NMI(JS),1)=I
21819           IMI(JS,NMI(JS),2)=0
21820         ENDIF
21821   850 CONTINUE
21822  
21823 C...Restore companion information from collapsed gluons.
21824       DO 870 I=MINT(53)+1,N
21825         IF (K(I,2).EQ.21.AND.K(I,1).EQ.14) THEN
21826           JS=K(I,3)-MINT(83)
21827           JCD=MOD(K(I,4),MSTU(5))
21828           JAD=MOD(K(I,5),MSTU(5))
21829           DO 860 IM=1,NMI(JS)
21830             IF (IMI(JS,IM,1).EQ.JCD) IMC=IM
21831             IF (IMI(JS,IM,1).EQ.JAD) IMA=IM
21832   860     CONTINUE
21833           IMI(JS,IMC,2)=IMI(JS,IMA,1)
21834           IMI(JS,IMA,2)=IMI(JS,IMC,1)
21835         ENDIF
21836   870 CONTINUE
21837  
21838 C...Renumber colour lines (since some have disappeared)
21839       JCT=0
21840       JCD=0
21841   880 JCT=JCT+1
21842       MFOUND=0
21843       I=MINT(84)
21844   890 I=I+1
21845       IF (I.EQ.N+1) THEN
21846         IF (MFOUND.EQ.0) JCD=JCD+1
21847       ELSEIF (MCT(I,1).EQ.JCT.AND.K(I,1).GE.1) THEN
21848         MCT(I,1)=JCT-JCD
21849         MFOUND=1
21850       ELSEIF (MCT(I,2).EQ.JCT.AND.K(I,1).GE.1) THEN
21851         MCT(I,2)=JCT-JCD
21852         MFOUND=1
21853       ENDIF
21854       IF (I.LE.N) GOTO 890
21855       IF (JCT.LT.NCT) GOTO 880
21856       NCT=JCT-JCD
21857  
21858 C...Reset hard interaction subsystems to their CM frames.
21859       IF (IBOOST.EQ.1) THEN
21860         DO 900 IM=1,MINT(31)
21861           BETA=-(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
21862           CALL PYROBO(IMISEP(IM-1)+1,IMISEP(IM),0D0,0D0,0D0,0D0,BETA)
21863   900   CONTINUE
21864 C...Zero beam remnant longitudinal momenta and energies
21865         DO 910 I=MINT(53)+1,N
21866           P(I,3)=0D0
21867           P(I,4)=0D0
21868   910   CONTINUE
21869       ELSE
21870         CALL PYERRM(9
21871      &       ,'(PYMIHK:) Inconsistent kinematics. Too many boosts.')
21872 C...Kill event and start another.
21873         MINT(51)=1
21874         RETURN
21875       ENDIF
21876  
21877  9999 RETURN
21878       END
21879 C*********************************************************************
21880  
21881 C...PYCTTR
21882 C...Adapted from PYPREP.
21883 C...Assigns LHA1 colour tags to coloured partons based on
21884 C...K(I,4) and K(I,5) colour connection record.
21885 C...KCS negative signifies that a previous tracing should be continued.
21886 C...(in case the tag to be continued is empty, the routine exits)
21887 C...Starts at I and ends at I or IEND.
21888 C...Special considerations for systems with junctions.
21889  
21890       SUBROUTINE PYCTTR(I,KCS,IEND)
21891 C...Double precision and integer declarations.
21892       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
21893       INTEGER PYK,PYCHGE,PYCOMP
21894 C...Commonblocks.
21895       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
21896       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
21897       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
21898       COMMON/PYINT1/MINT(400),VINT(400)
21899 C...The common block of colour tags.
21900       COMMON/PYCTAG/NCT,MCT(4000,2)
21901       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/
21902       DATA NERRPR/0/
21903       SAVE NERRPR
21904  
21905 C...Skip if parton not existing or does not have KCS
21906       IF (K(I,1).LE.0) GOTO 120
21907       KC=PYCOMP(K(I,2))
21908       IF (KC.EQ.0) GOTO 120
21909       KQ=KCHG(KC,2)
21910       IF (KQ.EQ.0) GOTO 120
21911       IF (IABS(KQ).EQ.1.AND.KQ*(9-2*ABS(KCS)).NE.ISIGN(1,K(I,2))) 
21912      &    GOTO 120
21913  
21914       IF (KCS.GT.0) THEN
21915         NCT=NCT+1
21916 C...Set colour tag of first parton.
21917         MCT(I,KCS-3)=NCT
21918         NCS=NCT
21919       ELSE
21920         KCS=-KCS
21921         NCS=MCT(I,KCS-3)
21922         IF (NCS.EQ.0) GOTO 120
21923       ENDIF
21924  
21925       IA=I
21926       NSTP=0
21927   100 NSTP=NSTP+1
21928       IF(NSTP.GT.4*N) THEN
21929         CALL PYERRM(14,'(PYCTTR:) caught in infinite loop')
21930         GOTO 120
21931       ENDIF
21932  
21933 C...Finished if reached final-state triplet.
21934       IF(K(IA,1).EQ.3) THEN
21935         IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) GOTO 120
21936       ENDIF
21937  
21938 C...Also finished if reached junction.
21939       IF(K(IA,1).EQ.42) THEN
21940         GOTO 120
21941       ENDIF
21942  
21943 C...GOTO next parton in colour space.
21944   110 IB=IA
21945 C...If IB's KCS daughter not traced and exists, goto KCS daughter.
21946       IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5))
21947      &     .NE.0) THEN
21948         IA=MOD(K(IB,KCS),MSTU(5))
21949         K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
21950         MREV=0
21951       ELSE
21952 C...If KCS mother traced or KCS mother nonexistent, switch colour.
21953         IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
21954      &       MSTU(5)).EQ.0) THEN
21955           KCS=9-KCS
21956           NCT=NCT+1
21957           NCS=NCT
21958 C...Assign new colour tag on other side of old parton.
21959           MCT(IB,KCS-3)=NCT
21960         ENDIF
21961 C...Goto (new) KCS mother, set mother traced tag
21962         IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
21963         K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
21964         MREV=1
21965       ENDIF
21966       IF(IA.LE.0.OR.IA.GT.N) THEN
21967         CALL PYERRM(12,'(PYCTTR:) colour tag tracing failed')
21968         IF(NERRPR.LT.5) THEN
21969           write(*,*) 'began at ',I
21970           write(*,*) 'ended going from', IB, ' to', IA, '  KCS=',KCS,
21971      &        '  NCS=',NCS,'  MREV=',MREV
21972           CALL PYLIST(4)
21973           NERRPR=NERRPR+1
21974         ENDIF
21975         MINT(51)=1
21976         RETURN
21977       ENDIF
21978       IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5),
21979      &     MSTU(5)).EQ.IB) THEN
21980         IF(MREV.EQ.1) KCS=9-KCS
21981         IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
21982 C...Set KSC mother traced tag for IA
21983         K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
21984       ELSE
21985         IF(MREV.EQ.0) KCS=9-KCS
21986         IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
21987 C...Set KCS daughter traced tag for IA
21988         K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
21989       ENDIF
21990 C...Assign new colour tag
21991       MCT(IA,KCS-3)=NCS
21992       IF(IA.NE.I.AND.IA.NE.IEND) GOTO 100
21993  
21994   120 RETURN
21995       END
21996  
21997 *********************************************************************
21998  
21999 C...PYMIHG
22000 C...Collapse JCP1 and connecting tags to JCG1.
22001 C...Collapse JCP2 and connecting tags to JCG2.
22002  
22003       SUBROUTINE PYMIHG(JCP1,JCG1,JCP2,JCG2)
22004 C...Double precision and integer declarations.
22005       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22006       IMPLICIT INTEGER(I-N)
22007       INTEGER PYK,PYCHGE,PYCOMP
22008 C...The event record
22009       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22010 C...Parameters
22011       COMMON/PYINT1/MINT(400),VINT(400)
22012       SAVE /PYJETS/,/PYINT1/
22013 C...Local variables
22014       COMMON /PYCBLS/MCO(4000,2),NCC,JCCO(4000,2),JCCN(4000,2),MACCPT
22015       COMMON /PYCTAG/NCT,MCT(4000,2)
22016       SAVE /PYCBLS/,/PYCTAG/
22017  
22018 C...Break up JCP1<->JCP2 tag and create JCP1<->JCG1 and JCP2<->JCG2 tags
22019 C...in temporary tag collapse array JCCN. Only break up one connection.
22020       MACCPT=1
22021       MCLPS=0
22022       DO 100 ICC=1,NCC
22023         JCCN(ICC,1)=JCCO(ICC,1)
22024         JCCN(ICC,2)=JCCO(ICC,2)
22025 C...If there was a mother, it was previously connected to JCP1.
22026 C...Should be changed to JCP2.
22027         IF (MCLPS.EQ.0) THEN
22028           IF (JCCN(ICC,1).EQ.MAX(JCP1,JCP2).AND.JCCN(ICC,2).EQ.MIN(JCP1
22029      &         ,JCP2)) THEN
22030             JCCN(ICC,1)=MAX(JCG2,JCP2)
22031             JCCN(ICC,2)=MIN(JCG2,JCP2)
22032             MCLPS=1
22033           ENDIF
22034         ENDIF
22035   100 CONTINUE
22036 C...Also collapse colours on JCP1 side of JCG1
22037       IF (JCP1.NE.0) THEN
22038         JCCN(NCC+1,1)=MAX(JCP1,JCG1)
22039         JCCN(NCC+1,2)=MIN(JCP1,JCG1)
22040       ELSE
22041         JCCN(NCC+1,1)=MAX(JCP2,JCG2)
22042         JCCN(NCC+1,2)=MIN(JCP2,JCG2)
22043       ENDIF
22044  
22045 C...Initialize event record colour tag array MCT array to MCO.
22046        DO 110 I=MINT(84)+1,N
22047         MCT(I,1)=MCO(I,1)
22048         MCT(I,2)=MCO(I,2)
22049   110 CONTINUE
22050  
22051 C...Collapse tags:
22052 C...IS = 1 : All tags connecting to JCG1 on JCG1 side -> JCG1
22053 C...IS = 2 : All tags connecting to JCG2 on JCG2 side -> JCG2
22054 C...IS = 3 : All tags connecting to JCG1 on JCP1 side -> JCG1
22055 C...IS = 4 : All tags connecting to JCG2 on JCP2 side -> JCG2
22056       DO 160 IS=1,4
22057 C...Skip if junction.
22058         IF ((IS.EQ.4.AND.JCP2.EQ.0).OR.(IS.EQ.3).AND.JCP1.EQ.0) GOTO 160
22059 C...Define starting point in tag space.
22060 C...JCA = previous tag
22061 C...JCO = present tag
22062 C...JCN = new tag
22063         IF (MOD(IS,2).EQ.1) THEN
22064           JCO=JCP1
22065           JCN=JCG1
22066           JCALL=JCG1
22067         ELSEIF (MOD(IS,2).EQ.0) THEN
22068           JCO=JCP2
22069           JCN=JCG2
22070           JCALL=JCG2
22071         ENDIF
22072         ITRACE=0
22073   120   ITRACE=ITRACE+1
22074         IF (ITRACE.GT.1000) THEN
22075 C...NB: Proper error message should be defined here.
22076           CALL PYERRM(14
22077      &         ,'(PYMIHG:) Inf loop when collapsing colours.')
22078           MINT(57)=MINT(57)+1
22079           MINT(51)=1
22080           RETURN
22081         ENDIF
22082 C...Collapse all JCN tags to JCALL
22083         DO 130 I=MINT(84)+1,N
22084           IF (MCO(I,1).EQ.JCN) MCT(I,1)=JCALL
22085           IF (MCO(I,2).EQ.JCN) MCT(I,2)=JCALL
22086   130   CONTINUE
22087 C...IS = 1,2: first step forward. IS = 3,4: first step backward.
22088         IF (IS.GT.2.AND.(JCN.EQ.JCALL)) THEN
22089           JCA=JCN
22090           JCN=JCO
22091         ELSE
22092           JCA=JCO
22093           JCO=JCN
22094         ENDIF
22095 C...If possible, step from JCO to new tag JCN not equal to JCA.
22096         DO 140 ICC=1,NCC+1
22097           IF (JCCN(ICC,1).EQ.JCO.AND.JCCN(ICC,2).NE.JCA) JCN=
22098      &         JCCN(ICC,2)
22099           IF (JCCN(ICC,2).EQ.JCO.AND.JCCN(ICC,1).NE.JCA) JCN=
22100      &         JCCN(ICC,1)
22101   140   CONTINUE
22102 C...Iterate if new colour was arrived at, but don't go in circles.
22103         IF (JCN.NE.JCO.AND.JCN.NE.JCALL) GOTO 120
22104 C...Change all JCN tags in MCO to JCALL in MCT.
22105         DO 150 I=MINT(84)+1,N
22106           IF (MCO(I,1).EQ.JCN) MCT(I,1)=JCALL
22107           IF (MCO(I,2).EQ.JCN) MCT(I,2)=JCALL
22108 C...If gluon and colour tag = anticolour tag (and not = 0) try again.
22109           IF (K(I,2).EQ.21.AND.MCT(I,1).EQ.MCT(I,2).AND.MCT(I,1)
22110      &         .NE.0) MACCPT=0
22111   150   CONTINUE
22112   160 CONTINUE
22113  
22114       DO 200 JCL=NCT,1,-1
22115         JCA=0
22116         JCN=JCL
22117   170   JCO=JCN
22118         DO 180 ICC=1,NCC+1
22119           IF (JCCN(ICC,1).EQ.JCO.AND.JCCN(ICC,2).NE.JCA) JCN
22120      &         =JCCN(ICC,2)
22121           IF (JCCN(ICC,2).EQ.JCO.AND.JCCN(ICC,1).NE.JCA) JCN
22122      &         =JCCN(ICC,1)
22123   180   CONTINUE
22124 C...Overpaint all JCN with JCL
22125         IF (JCN.NE.JCO.AND.JCN.NE.JCL) THEN
22126           DO 190 I=MINT(84)+1,N
22127             IF (MCT(I,1).EQ.JCN) MCT(I,1)=JCL
22128             IF (MCT(I,2).EQ.JCN) MCT(I,2)=JCL
22129 C...If gluon and colour tag = anticolour tag (and not = 0) try again.
22130             IF (K(I,2).EQ.21.AND.MCT(I,1).EQ.MCT(I,2).AND.MCT(I,1)
22131      &           .NE.0) MACCPT=0
22132   190     CONTINUE
22133           JCA=JCO
22134           GOTO 170
22135         ENDIF
22136   200 CONTINUE
22137  
22138       RETURN
22139       END
22140  
22141 C*********************************************************************
22142  
22143 C...PYMIRM
22144 C...Picks primordial kT and shares longitudinal momentum among
22145 C...beam remnants.
22146  
22147       SUBROUTINE PYMIRM
22148  
22149 C...Double precision and integer declarations.
22150       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22151       IMPLICIT INTEGER(I-N)
22152       INTEGER PYK,PYCHGE,PYCOMP
22153 C...The event record
22154       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22155 C...Parameters
22156       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22157       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22158       COMMON/PYINT1/MINT(400),VINT(400)
22159 C...The common block of colour tags.
22160       COMMON/PYCTAG/NCT,MCT(4000,2)
22161 C...The common block of dangling ends
22162       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
22163      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
22164      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
22165       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINTM/,/PYCTAG/
22166 C...Local variables
22167       DIMENSION W(0:2,0:2),VB(3),NNXT(2),IVALQ(2),ICOMQ(2)
22168 C...W(I,J)|  J=0    |   1   |   2   |
22169 C...  I=0 | Wrem**2 |  W+   |  W-   |
22170 C...    1 | W1**2   |  W1+  |  W1-  |
22171 C...    2 | W2**2   |  W2+  |  W2-  |
22172 C...4-product
22173       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)
22174 C...Tentative parametrization of <kT> as a function of Q.
22175       SIGPT(Q)=MAX(PARJ(21),2.1D0*Q/(7D0+Q))
22176 C      SIGPT(Q)=MAX(0.36D0,4D0*SQRT(Q)/(10D0+SQRT(Q))
22177 C      SIGPT(Q)=MAX(PARJ(21),3D0*SQRT(Q)/(5D0+SQRT(Q))
22178       GETPT(Q,SIGMA)=MIN(SIGMA*SQRT(-LOG(PYR(0))),PARP(93))
22179 C...Lambda kinematic function.
22180       FLAM(A,B,C)=A**2+B**2+C**2-2D0*(A*B+B*C+C*A)
22181  
22182 C...Beginning and end of beam remnant partons
22183       NOUT=MINT(53)
22184       ISUB=MINT(1)
22185  
22186 C...Loopback point if kinematic choices gives impossible configuration.
22187       NTRY=0
22188   100 NTRY=NTRY+1
22189  
22190 C...Assign kT values on each side separately.
22191       DO 180 JS=1,2
22192  
22193 C...First zero all kT on this side. Skip if no kT to generate.
22194         DO 110 IM=1,NMI(JS)
22195           P(IMI(JS,IM,1),1)=0D0
22196           P(IMI(JS,IM,1),2)=0D0
22197   110   CONTINUE
22198         IF(MSTP(91).LE.0) GOTO 180
22199  
22200 C...Now assign kT to each (non-collapsed) parton in IMI.
22201         DO 170 IM=1,NMI(JS)
22202           I=IMI(JS,IM,1)
22203 C...Select kT according to truncated gaussian or 1/kt6 tails.
22204 C...For first interaction, either use rms width = PARP(91) or fitted.
22205           IF (IM.EQ.1) THEN
22206             SIGMA=PARP(91)
22207             IF (MSTP(91).GE.11.AND.MSTP(91).LE.20) THEN
22208               Q=SQRT(PT2MI(IM))
22209               SIGMA=SIGPT(Q)
22210             ENDIF
22211           ELSE
22212 C...For subsequent interactions and BR partons use fragmentation width.
22213             SIGMA=PARJ(21)
22214           ENDIF
22215           PHI=PARU(2)*PYR(0)
22216           PT=0D0
22217           IF(NTRY.LE.100) THEN
22218  111        IF (MSTP(91).EQ.1.OR.MSTP(91).EQ.11) THEN
22219               PT=GETPT(Q,SIGMA)
22220               PTX=PT*COS(PHI)
22221               PTY=PT*SIN(PHI)
22222             ELSEIF (MSTP(91).EQ.2) THEN
22223               CALL PYERRM(11,'(PYMIRM:) Sorry, MSTP(91)=2 not '//
22224      &          'available, using MSTP(91)=1.')
22225               CALL PYGIVE('MSTP(91)=1')
22226               GOTO 111
22227             ELSEIF(MSTP(91).EQ.3.OR.MSTP(91).EQ.13) THEN
22228 C...Use distribution with kt**6 tails, rms width = PARP(91).
22229               EPS=SQRT(3D0/2D0)*SIGMA
22230 C...Generate PTX and PTY separately, each propto 1/KT**6
22231               DO 119 IXY=1,2
22232 C...Decide which interval to try
22233  112            P12=1D0/(1D0+27D0/40D0*SIGMA**6/EPS**6)
22234                 IF (PYR(0).LT.P12) THEN
22235 C...Use flat approx with accept/reject up to EPS.
22236                   PT=PYR(0)*EPS
22237                   WT=(3D0/2D0*SIGMA**2/(PT**2+3D0/2D0*SIGMA**2))**3
22238                   IF (PYR(0).GT.WT) GOTO 112
22239                 ELSE
22240 C...Above EPS, use 1/kt**6 approx with accept/reject.
22241                   PT=EPS/(PYR(0)**(1D0/5D0))
22242                   WT=PT**6/(PT**2+3D0/2D0*SIGMA**2)**3
22243                   IF (PYR(0).GT.WT) GOTO 112
22244                 ENDIF
22245                 MSIGN=1
22246                 IF (PYR(0).GT.0.5D0) MSIGN=-1
22247                 IF (IXY.EQ.1) PTX=MSIGN*PT
22248                 IF (IXY.EQ.2) PTY=MSIGN*PT
22249  119          CONTINUE
22250             ELSEIF (MSTP(91).EQ.4.OR.MSTP(91).EQ.14) THEN
22251               PTX=SIGMA*(SQRT(6D0)*PYR(0)-SQRT(3D0/2D0))
22252               PTY=SIGMA*(SQRT(6D0)*PYR(0)-SQRT(3D0/2D0))
22253             ENDIF
22254 C...Adjust final PT. Impose upper cutoff, or zero for soft evts.
22255             PT=SQRT(PTX**2+PTY**2)
22256             WT=1D0
22257             IF (PT.GT.PARP(93)) WT=SQRT(PARP(93)/PT)
22258             IF(ISUB.EQ.95.AND.IM.EQ.1) WT=0D0
22259             PTX=PTX*WT
22260             PTY=PTY*WT
22261             PT=SQRT(PTX**2+PTY**2)
22262           ENDIF
22263  
22264           P(I,1)=P(I,1)+PTX
22265           P(I,2)=P(I,2)+PTY
22266  
22267 C...Compensation kicks, with varying degree of local anticorrelations.
22268           MCORR=MSTP(90)
22269           IF (MCORR.EQ.0.OR.ISUB.EQ.95) THEN
22270             PTCX=-PTX/(NMI(JS)-1)
22271             PTCY=-PTY/(NMI(JS)-1)
22272             IF(ISUB.EQ.95) THEN
22273               PTCX=-PTX/(NMI(JS)-2)
22274               PTCY=-PTY/(NMI(JS)-2)
22275             ENDIF
22276             DO 120 IMC=1,NMI(JS)
22277               IF (IMC.EQ.IM) GOTO 120
22278               IF(ISUB.EQ.95.AND.IMC.EQ.1) GOTO 120
22279               P(IMI(JS,IMC,1),1)=P(IMI(JS,IMC,1),1)+PTCX
22280               P(IMI(JS,IMC,1),2)=P(IMI(JS,IMC,1),2)+PTCY
22281   120       CONTINUE
22282           ELSEIF (MCORR.GE.1) THEN
22283             DO 140 MSID=4,5
22284               NNXT(MSID-3)=0
22285 C...Count up # of neighbours on either side
22286               IMO=I
22287   130         IMO=K(IMO,MSID)/MSTU(5)
22288               IF (IMO.EQ.0) GOTO 140
22289               NNXT(MSID-3)=NNXT(MSID-3)+1
22290 C...Stop at quarks and junctions
22291               IF (MCORR.EQ.1.AND.K(IMO,2).EQ.21) GOTO 130
22292   140       CONTINUE
22293 C...How should compensation be shared when unequal numbers on the
22294 C...two sides? 50/50 regardless? N1:N2? Assume latter for now.
22295             NSUM=NNXT(1)+NNXT(2)
22296             T1=0
22297             DO 160 MSID=4,5
22298 C...Total momentum to be compensated on this side
22299               IF (NNXT(MSID-3).EQ.0) GOTO 160
22300               PTCX=-(NNXT(MSID-3)*PTX)/NSUM
22301               PTCY=-(NNXT(MSID-3)*PTY)/NSUM
22302 C...RS: compensation supression factor as we go out from parton I.
22303 C...Hardcoded behaviour RS=0.5, i.e. 1/2**n falloff,
22304 C...since (for now) MSTP(90) provides enough variability.
22305               RS=0.5D0
22306               FAC=(1D0-RS)/(RS*(1-RS**NNXT(MSID-3)))
22307               IMO=I
22308   150         IDA=IMO
22309               IMO=K(IMO,MSID)/MSTU(5)
22310               IF (IMO.EQ.0) GOTO 160
22311               FAC=FAC*RS
22312               IF (K(IMO,2).NE.88) THEN
22313                 P(IMO,1)=P(IMO,1)+FAC*PTCX
22314                 P(IMO,2)=P(IMO,2)+FAC*PTCY
22315                 IF (MCORR.EQ.1.AND.K(IMO,2).EQ.21) GOTO 150
22316 C...If we reach junction, divide out the kT that would have been
22317 C...assigned to the junction on each of its other legs.
22318               ELSE
22319                 L1=MOD(K(IMO,4),MSTU(5))
22320                 L2=K(IMO,5)/MSTU(5)
22321                 L3=MOD(K(IMO,5),MSTU(5))
22322                 P(L1,1)=P(L1,1)+0.5D0*FAC*PTCX
22323                 P(L1,2)=P(L1,2)+0.5D0*FAC*PTCY
22324                 P(L2,1)=P(L2,1)+0.5D0*FAC*PTCX
22325                 P(L2,2)=P(L2,2)+0.5D0*FAC*PTCY
22326                 P(L3,1)=P(L3,1)+0.5D0*FAC*PTCX
22327                 P(L3,2)=P(L3,2)+0.5D0*FAC*PTCY
22328                 P(IDA,1)=P(IDA,1)-0.5D0*FAC*PTCX
22329                 P(IDA,2)=P(IDA,2)-0.5D0*FAC*PTCY
22330               ENDIF
22331  
22332   160       CONTINUE
22333           ENDIF
22334   170   CONTINUE
22335 C...End assignment of kT values to initiators and remnants.
22336   180 CONTINUE
22337  
22338 C...Check kinematics constraints for non-BR partons.
22339       DO 190 IM=1,MINT(31)
22340         SHAT=XMI(1,IM)*XMI(2,IM)*VINT(2)
22341         PT1=SQRT(P(IMI(1,IM,1),1)**2+P(IMI(1,IM,1),2)**2)
22342         PT2=SQRT(P(IMI(2,IM,1),1)**2+P(IMI(2,IM,1),2)**2)
22343         PT1PT2=P(IMI(1,IM,1),1)*P(IMI(2,IM,1),1)
22344      &        +P(IMI(1,IM,1),2)*P(IMI(2,IM,1),2)
22345         IF (SHAT.LT.2D0*(PT1*PT2-PT1PT2).AND.NTRY.LE.100) THEN
22346           IF(NTRY.GE.100) THEN
22347 C...Kill this event and start another.
22348             CALL PYERRM(11,
22349      &           '(PYMIRM:) No consistent (x,kT) sets found')
22350             MINT(51)=1
22351             RETURN
22352           ENDIF
22353           GOTO 100
22354         ENDIF
22355   190 CONTINUE
22356  
22357 C...Calculate W+ and W- available for combined remnant system.
22358       W(0,1)=VINT(1)
22359       W(0,2)=VINT(1)
22360       DO 200 IM=1,MINT(31)
22361         PT2 = (P(IMI(1,IM,1),1)+P(IMI(2,IM,1),1))**2
22362      &       +(P(IMI(1,IM,1),2)+P(IMI(2,IM,1),2))**2
22363         ST=XMI(1,IM)*XMI(2,IM)*VINT(2)+PT2
22364         W(0,1)=W(0,1)-SQRT(XMI(1,IM)/XMI(2,IM)*ST)
22365         W(0,2)=W(0,2)-SQRT(XMI(2,IM)/XMI(1,IM)*ST)
22366   200 CONTINUE
22367 C...Also store Wrem**2 = W+ * W-
22368       W(0,0)=W(0,1)*W(0,2)
22369  
22370       IF (W(0,0).LT.0D0.AND.NTRY.LE.100) THEN
22371           IF(NTRY.GE.100) THEN
22372 C...Kill this event and start another.
22373             CALL PYERRM(11,
22374      &    '(PYMIRM:) Negative beam remnant mass squared unavoidable')
22375             MINT(51)=1
22376             RETURN
22377           ENDIF
22378           GOTO 100
22379       ENDIF
22380  
22381 C...Assign unscaled x values to partons/hadrons in each of the
22382 C...beam remnants and calculate unscaled W+ and W- from them.
22383       NTRYX=0
22384   210 NTRYX=NTRYX+1
22385       DO 280 JS=1,2
22386         W(JS,1)=0D0
22387         W(JS,2)=0D0
22388         DO 270 IM=MINT(31)+1,NMI(JS)
22389           I=IMI(JS,IM,1)
22390           KF=K(I,2)
22391           KFA=IABS(KF)
22392           ICOMP=IMI(JS,IM,2)
22393  
22394 C...Skip collapsed gluons and junctions. Reset.
22395           IF (KFA.EQ.21.AND.K(I,1).EQ.14) GOTO 270
22396           IF (KFA.EQ.88) GOTO 270
22397           X=0D0
22398           IVALQ(1)=0
22399           IVALQ(2)=0
22400           ICOMQ(1)=0
22401           ICOMQ(2)=0
22402  
22403 C...If gluon then only beam remnant, so takes all.
22404           IF(KFA.EQ.21) THEN
22405             X=1D0
22406 C...If valence quark then use parametrized valence distribution.
22407           ELSEIF(KFA.LE.6.AND.ICOMP.EQ.0) THEN
22408             IVALQ(1)=KF
22409 C...If companion quark then derive from companion x.
22410           ELSEIF(KFA.LE.6) THEN
22411             ICOMQ(1)=ICOMP
22412 C...If valence diquark then use two parametrized valence distributions.
22413           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0.AND.
22414      &    ICOMP.EQ.0) THEN
22415             IVALQ(1)=ISIGN(KFA/1000,KF)
22416             IVALQ(2)=ISIGN(MOD(KFA/100,10),KF)
22417 C...If valence+sea diquark then combine valence + companion choices.
22418           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0.AND.
22419      &    ICOMP.LT.MSTU(5)) THEN
22420             IF(KFA/1000.EQ.IABS(K(ICOMP,2))) THEN
22421               IVALQ(1)=ISIGN(MOD(KFA/100,10),KF)
22422             ELSE
22423               IVALQ(1)=ISIGN(KFA/1000,KF)
22424             ENDIF
22425             ICOMQ(1)=ICOMP
22426 C...Extra code: workaround for diquark made out of two sea
22427 C...quarks, but where not (yet) ICOMP > MSTU(5).
22428             DO 220 IM1=1,MINT(31)
22429               IF(IMI(JS,IM1,2).EQ.I.AND.IMI(JS,IM1,1).NE.ICOMP) THEN
22430                 ICOMQ(2)=IMI(JS,IM1,1)
22431                 IVALQ(1)=0
22432               ENDIF
22433   220       CONTINUE
22434 C...If sea diquark then sum of two derived from companion x.
22435           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0) THEN
22436              ICOMQ(1)=MOD(ICOMP,MSTU(5))
22437              ICOMQ(2)=ICOMP/MSTU(5)
22438 C...If meson or baryon then use fragmentation function.
22439 C...Somewhat arbitrary split into old and new flavour, but OK normally.
22440           ELSE
22441             KFL3=MOD(KFA/10,10)
22442             IF(MOD(KFA/1000,10).EQ.0) THEN
22443               KFL1=MOD(KFA/100,10)
22444             ELSE
22445               KFL1=MOD(KFA,10000)-10*KFL3-1
22446               IF(MOD(KFA/1000,10).EQ.MOD(KFA/100,10).AND.
22447      &        MOD(KFA,10).EQ.2) KFL1=KFL1+2
22448             ENDIF
22449             PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
22450             CALL PYZDIS(KFL1,KFL3,PR,X)
22451           ENDIF
22452  
22453           DO 260 IQ=1,2
22454 C...Calculation of x of valence quark: assume form (1-x)^a/sqrt(x),
22455 C...where a=3.5 for u in proton, =2 for d in proton and =0.8 for meson.
22456 C...In other baryons combine u and d from proton appropriately.
22457             IF(IVALQ(IQ).NE.0) THEN
22458               NVAL=0
22459               IF(KFIVAL(JS,1).EQ.IVALQ(IQ)) NVAL=NVAL+1
22460               IF(KFIVAL(JS,2).EQ.IVALQ(IQ)) NVAL=NVAL+1
22461               IF(KFIVAL(JS,3).EQ.IVALQ(IQ)) NVAL=NVAL+1
22462 C...Meson.
22463               IF(KFIVAL(JS,3).EQ.0) THEN
22464                 MDU=0
22465 C...Baryon with three identical quarks: mix u and d forms.
22466               ELSEIF(NVAL.EQ.3) THEN
22467                 MDU=INT(PYR(0)+5D0/3D0)
22468 C...Baryon, one of two identical quarks: u form.
22469               ELSEIF(NVAL.EQ.2) THEN
22470                 MDU=2
22471 C...Baryon with two identical quarks, but not the one picked: d form.
22472               ELSEIF(KFIVAL(JS,1).EQ.KFIVAL(JS,2).OR.KFIVAL(JS,2).EQ.
22473      &        KFIVAL(JS,3).OR.KFIVAL(JS,1).EQ.KFIVAL(JS,3)) THEN
22474                 MDU=1
22475 C...Baryon with three nonidentical quarks: mix u and d forms.
22476               ELSE
22477                 MDU=INT(PYR(0)+5D0/3D0)
22478               ENDIF
22479               XPOW=0.8D0
22480               IF(MDU.EQ.1) XPOW=3.5D0
22481               IF(MDU.EQ.2) XPOW=2D0
22482   230         XX=PYR(0)**2
22483               IF((1D0-XX)**XPOW.LT.PYR(0)) GOTO 230
22484               X=X+XX
22485             ENDIF
22486  
22487 C...Calculation of x of companion quark.
22488             IF(ICOMQ(IQ).NE.0) THEN
22489               XCOMP=1D-4
22490               DO 240 IM1=1,MINT(31)
22491                 IF(IMI(JS,IM1,1).EQ.ICOMQ(IQ)) XCOMP=XMI(JS,IM1)
22492   240         CONTINUE
22493               NPOW=MAX(0,MIN(4,MSTP(87)))
22494   250         XX=XCOMP*(1D0/(1D0-PYR(0)*(1D0-XCOMP))-1D0)
22495               CORR=((1D0-XCOMP-XX)/(1D0-XCOMP))**NPOW*
22496      &        (XCOMP**2+XX**2)/(XCOMP+XX)**2
22497               IF(CORR.LT.PYR(0)) GOTO 250
22498               X=X+XX
22499             ENDIF
22500   260     CONTINUE
22501  
22502 C...Optionally enchance x of composite systems (e.g. diquarks)
22503           IF (KFA.GT.100) X=PARP(79)*X
22504  
22505 C...Store x. Also calculate light cone energies of each system.
22506           XMI(JS,IM)=X
22507           W(JS,JS)=W(JS,JS)+X
22508           W(JS,3-JS)=W(JS,3-JS)+(P(I,5)**2+P(I,1)**2+P(I,2)**2)/X
22509   270   CONTINUE
22510         W(JS,JS)=W(JS,JS)*W(0,JS)
22511         W(JS,3-JS)=W(JS,3-JS)/W(0,JS)
22512         W(JS,0)=W(JS,1)*W(JS,2)
22513   280 CONTINUE
22514  
22515 C...Check W1 W2 < Wrem (can be done before rescaling, since W
22516 C...insensitive to global rescalings of the BR x values).
22517       IF (SQRT(W(1,0))+SQRT(W(2,0)).GT.SQRT(W(0,0)).AND.NTRYX.LE.100)
22518      &     THEN
22519         GOTO 210
22520       ELSEIF (NTRYX.GT.100.AND.NTRY.LE.100) THEN
22521         GOTO 100
22522       ELSEIF (NTRYX.GT.100) THEN
22523         CALL PYERRM(11,'(PYMIRM:) No consistent (x,kT) sets found')
22524         MINT(57)=MINT(57)+1
22525         MINT(51)=1
22526         RETURN
22527       ENDIF
22528  
22529 C...Compute x rescaling factors
22530       COMTRM=W(0,0)+SQRT(FLAM(W(0,0),W(1,0),W(2,0)))
22531       R1=(COMTRM+W(1,0)-W(2,0))/(2D0*W(1,1)*W(0,2))
22532       R2=(COMTRM+W(2,0)-W(1,0))/(2D0*W(2,2)*W(0,1))
22533  
22534       IF (R1.LT.0.OR.R2.LT.0) THEN
22535         CALL PYERRM(19,'(PYMIRM:) negative rescaling factors !')
22536         MINT(57)=MINT(57)+1
22537         MINT(51)=1
22538       ENDIF
22539  
22540 C...Rescale W(1,*) and W(2,*) (not really necessary, but consistent).
22541       W(1,1)=W(1,1)*R1
22542       W(1,2)=W(1,2)/R1
22543       W(2,1)=W(2,1)/R2
22544       W(2,2)=W(2,2)*R2
22545  
22546 C...Rescale BR x values.
22547       DO 290 IM=MINT(31)+1,MAX(NMI(1),NMI(2))
22548         XMI(1,IM)=XMI(1,IM)*R1
22549         XMI(2,IM)=XMI(2,IM)*R2
22550   290 CONTINUE
22551  
22552 C...Now we have a consistent set of x and kT values.
22553 C...First set up the initiators and their daughters correctly.
22554       DO 300 IM=1,MINT(31)
22555         I1=IMI(1,IM,1)
22556         I2=IMI(2,IM,1)
22557         ST=XMI(1,IM)*XMI(2,IM)*VINT(2)+(P(I1,1)+P(I2,1))**2+
22558      &       (P(I1,2)+P(I2,2))**2
22559         PT12=P(I1,1)**2+P(I1,2)**2
22560         PT22=P(I2,1)**2+P(I2,2)**2
22561 C...p_z
22562         P(I1,3)=SQRT(FLAM(ST,PT12,PT22)/(4D0*ST))
22563         P(I2,3)=-P(I1,3)
22564 C...Energies (masses should be zero at this stage)
22565         P(I1,4)=SQRT(PT12+P(I1,3)**2)
22566         P(I2,4)=SQRT(PT22+P(I2,3)**2)
22567  
22568 C...Transverse 12 system initiator velocity:
22569         VB(1)=(P(I1,1)+P(I2,1))/SQRT(ST)
22570         VB(2)=(P(I1,2)+P(I2,2))/SQRT(ST)
22571 C...Boost to overall initiator system rest frame
22572         CALL PYROBO(I1,I1,0D0,0D0,-VB(1),-VB(2),0D0)
22573         CALL PYROBO(I2,I2,0D0,0D0,-VB(1),-VB(2),0D0)
22574
22575 C...Compute phi,theta coordinates of I1 and rotate z axis.
22576         PHI=PYANGL(P(I1,1),P(I1,2))
22577         THE=PYANGL(P(I1,3),SQRT(P(I1,1)**2+P(I1,2)**2))
22578         IMIN=IMISEP(IM-1)+1
22579 C...(include documentation lines if MI = 1)
22580         IF (IM.EQ.1) IMIN=MINT(83)+5
22581         IMAX=IMISEP(IM)
22582 C...Rotate entire system in phi
22583         CALL PYROBO(IMIN,IMAX,0D0,-PHI,0D0,0D0,0D0)
22584 C...Only rotate 12 system in theta
22585         CALL PYROBO(I1,I1,-THE,0D0,0D0,0D0,0D0)
22586         CALL PYROBO(I2,I2,-THE,0D0,0D0,0D0,0D0)
22587
22588 C...Now boost entire system back to LAB
22589         VB(3)=(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
22590         CALL PYROBO(IMIN,IMAX,THE,PHI,VB(1),VB(2),0D0)
22591         CALL PYROBO(IMIN,IMAX,0D0,0D0,0D0,0D0,VB(3))
22592
22593   300 CONTINUE
22594  
22595  
22596 C...For the beam remnant partons/hadrons, we only need to set pz and E.
22597       DO 320 JS=1,2
22598         DO 310 IM=MINT(31)+1,NMI(JS)
22599           I=IMI(JS,IM,1)
22600 C...Skip collapsed gluons and junctions.
22601           IF (K(I,2).EQ.21.AND.K(I,1).EQ.14) GOTO 310
22602           IF (KFA.EQ.88) GOTO 310
22603           RMT2=P(I,5)**2+P(I,1)**2+P(I,2)**2
22604           P(I,4)=0.5D0*(XMI(JS,IM)*W(0,JS)+RMT2/(XMI(JS,IM)*W(0,JS)))
22605           P(I,3)=0.5D0*(XMI(JS,IM)*W(0,JS)-RMT2/(XMI(JS,IM)*W(0,JS)))
22606           IF (JS.EQ.2) P(I,3)=-P(I,3)
22607   310   CONTINUE
22608   320 CONTINUE
22609  
22610  
22611 C...Documentation lines
22612       DO 340 JS=1,2
22613         IN=MINT(83)+JS+2
22614         IO=IMI(JS,1,1)
22615         K(IN,1)=21
22616         K(IN,2)=K(IO,2)
22617         K(IN,3)=MINT(83)+JS
22618         K(IN,4)=0
22619         K(IN,5)=0
22620         DO 330 J=1,5
22621           P(IN,J)=P(IO,J)
22622           V(IN,J)=V(IO,J)
22623   330   CONTINUE
22624         MCT(IN,1)=MCT(IO,1)
22625         MCT(IN,2)=MCT(IO,2)
22626   340 CONTINUE
22627  
22628 C...Final state colour reconnections.
22629       IF (MSTP(95).NE.1.OR.MINT(31).LE.1) GOTO 380
22630  
22631 C...Number of colour tags for which a recoupling will be tried.
22632       NTOT=NCT
22633 C...Number of recouplings to try
22634       MINT(34)=0
22635       NRECP=0
22636       NITER=0
22637   350 NRECP=MINT(34)
22638       NITER=NITER+1
22639       IITER=0
22640   360 IITER=IITER+1
22641       IF (IITER.LE.PARP(78)*NTOT) THEN
22642 C...Select two colour tags at random
22643 C...NB: jj strings do not have colour tags assigned to them,
22644 C...thus they are as yet not affected by anything done here.
22645         JCT=PYR(0)*NCT+1
22646         KCT=MOD(INT(JCT+PYR(0)*NCT),NCT)+1
22647         IJ1=0
22648         IJ2=0
22649         IK1=0
22650         IK2=0
22651 C...Find final state partons with this (anti)colour
22652         DO 370 I=MINT(84)+1,N
22653           IF (K(I,1).EQ.3) THEN
22654             IF (MCT(I,1).EQ.JCT) IJ1=I
22655             IF (MCT(I,2).EQ.JCT) IJ2=I
22656             IF (MCT(I,1).EQ.KCT) IK1=I
22657             IF (MCT(I,2).EQ.KCT) IK2=I
22658           ENDIF
22659   370   CONTINUE
22660 C...Only consider recouplings not involving junctions for now.
22661         IF (IJ1.EQ.0.OR.IJ2.EQ.0.OR.IK1.EQ.0.OR.IK2.EQ.0) GOTO 360
22662  
22663         RLO=2D0*FOUR(IJ1,IJ2)*2D0*FOUR(IK1,IK2)
22664         RLN=2D0*FOUR(IJ1,IK2)*2D0*FOUR(IK1,IJ2)
22665         IF (RLN.LT.RLO.AND.MCT(IJ2,1).NE.KCT.AND.MCT(IK2,1).NE.JCT) THEN
22666           MCT(IJ2,2)=KCT
22667           MCT(IK2,2)=JCT
22668 C...Count up number of reconnections
22669           MINT(34)=MINT(34)+1
22670         ENDIF
22671         IF (MINT(34).LE.1000) THEN
22672           GOTO 360
22673         ELSE
22674           CALL PYERRM(4,'(PYMIRM:) caught in infinite loop')
22675           GOTO 380
22676         ENDIF
22677       ENDIF
22678       IF (NRECP.LT.MINT(34)) GOTO 350
22679  
22680 C...Signal PYPREP to use /PYCTAG/ information rather than K(I,KCS).
22681   380 MINT(33)=1
22682  
22683       RETURN
22684       END
22685   
22686 C*********************************************************************
22687  
22688 C...PYFSCR
22689 C...Performs colour annealing.
22690 C...MSTP(95) : CR Type
22691 C...         = 1  : old cut-and-paste reconnections, handled in PYMIHK
22692 C...         = 2  : Type I(no gg loops); hadron-hadron only
22693 C...         = 3  : Type I(no gg loops); all beams
22694 C...         = 4  : Type II(gg loops)  ; hadron-hadron only
22695 C...         = 5  : Type II(gg loops)  ; all beams
22696 C...         = 6  : Type S             ; hadron-hadron only
22697 C...         = 7  : Type S             ; all beams
22698 C...Types I and II are described in Sandhoff+Skands, in hep-ph/0604120.
22699 C...Type S is driven by starting only from free triplets, not octets.
22700 C...A string piece remains unchanged with probability
22701 C...    PKEEP = (1-PARP(78))**N
22702 C...This scaling corresponds to each string piece having to go through
22703 C...N other ones, each with probability PARP(78) for reconnection, where
22704 C...N is here chosen simply as the number of multiple interactions,
22705 C...for a rough scaling with the general level of activity.
22706  
22707       SUBROUTINE PYFSCR(IP)
22708 C...Double precision and integer declarations.
22709       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22710       INTEGER PYK,PYCHGE,PYCOMP
22711 C...Commonblocks.
22712       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22713       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22714       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22715       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
22716       COMMON/PYINT1/MINT(400),VINT(400)
22717 C...The common block of colour tags.
22718       COMMON/PYCTAG/NCT,MCT(4000,2)
22719       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/,
22720      &/PYPARS/
22721 C...MCN: Temporary storage of new colour tags
22722       DOUBLE PRECISION MCN(4000,2)
22723  
22724 C...Function to give four-product.
22725       FOUR(I,J)=P(I,4)*P(J,4)
22726      &          -P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
22727  
22728 C...Check valid range of MSTP(95), local copy
22729       IF (MSTP(95).LE.1.OR.MSTP(95).GE.8) RETURN
22730       MSTP95=MOD(MSTP(95),10)
22731 C...Set whether CR allowed inside resonance systems or not
22732 C...(not implemented yet)
22733 C      MRESCR=1
22734 C      IF (MSTP(95).GE.10) MRESCR=0
22735  
22736 C...Check whether colour tags already defined
22737       IF (MINT(33).EQ.0) THEN
22738 C...Erase any existing colour tags for this event
22739         DO 100 I=1,N
22740           MCT(I,1)=0
22741           MCT(I,2)=0
22742   100   CONTINUE
22743 C...Create colour tags for this event
22744         DO 120 I=1,N
22745           IF (K(I,1).EQ.3) THEN
22746             DO 110 KCS=4,5
22747               KCSIN=KCS
22748               IF (MCT(I,KCSIN-3).EQ.0) THEN
22749                 CALL PYCTTR(I,KCSIN,I)
22750               ENDIF
22751   110       CONTINUE
22752           ENDIF
22753   120 CONTINUE
22754 C...Instruct PYPREP to use colour tags
22755         MINT(33)=1
22756       ENDIF
22757  
22758 C...For MSTP(95) even, only apply to hadron-hadron
22759       IF (MOD(MSTP(95),2).EQ.0) THEN
22760          KA1=IABS(MINT(11))
22761          KA2=IABS(MINT(12))
22762          IF (KA1.LT.100.OR.KA2.LT.100) GOTO 9999
22763       ENDIF
22764  
22765 C...Initialize new tag array (but do not delete old yet)
22766       LCT=NCT
22767       DO 130 I=MAX(1,IP),N
22768          MCN(I,1)=0
22769          MCN(I,2)=0
22770   130 CONTINUE
22771  
22772 C...For each final-state dipole, check whether string should be
22773 C...preserved.
22774       DO 150 ICT=1,NCT
22775         IC=0
22776         IA=0
22777         DO 140 I=MAX(1,IP),N
22778           IF (K(I,1).EQ.3.AND.MCT(I,1).EQ.ICT) IC=I
22779           IF (K(I,1).EQ.3.AND.MCT(I,2).EQ.ICT) IA=I
22780   140   CONTINUE
22781         IF (IC.NE.0.AND.IA.NE.0) THEN
22782 C...Chiefly consider large strings.
22783           PKEEP=(1D0-PARP(78))**MINT(31)
22784           IF (PYR(0).LE.PKEEP) THEN
22785             LCT=LCT+1
22786             MCN(IC,1)=LCT
22787             MCN(IA,2)=LCT
22788           ENDIF
22789         ENDIF
22790   150 CONTINUE
22791  
22792 C...Loop over event record, starting from IP
22793 C...(Ignore junctions for now.)
22794       NLOOP=0
22795   160 NLOOP=NLOOP+1
22796       MCIMAX=0
22797       MCJMAX=0
22798       RLMAX=0D0
22799       ILMAX=0
22800       JLMAX=0
22801       DO 230 I=MAX(1,IP),N
22802          IF (K(I,1).NE.3) GOTO 230
22803 C...Check colour charge
22804          MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
22805          IF (MCI.EQ.0) GOTO 230
22806 C...For Seattle algorithm, only start from partons with one dangling
22807 C...colour tag
22808          IF (MSTP(95).EQ.6.OR.MSTP(95).EQ.7) THEN
22809            IF (MCI.EQ.2.AND.MCN(I,1).EQ.0.AND.MCN(I,2).EQ.0) GOTO 230
22810          ENDIF
22811 C...  Find optimal partner
22812          JLOPT=0
22813          MCJOPT=0
22814          MBROPT=0
22815          MGGOPT=0
22816          RLOPT=1D19
22817 C...Loop over I colour/anticolour, check whether already connected
22818   170    DO 220 ICL=1,2
22819             IF (MCN(I,ICL).NE.0) GOTO 220
22820             IF (ICL.EQ.1.AND.MCI.EQ.-1) GOTO 220
22821             IF (ICL.EQ.2.AND.MCI.EQ.1) GOTO 220
22822 C...Check whether this is a dangling colour tag (ie to junction!)
22823             IFOUND=0
22824             DO 180 J=MAX(1,IP),N
22825                IF (K(J,1).EQ.3.AND.MCT(J,3-ICL).EQ.MCT(I,ICL)) IFOUND=1
22826   180       CONTINUE
22827             IF (IFOUND.EQ.0) GOTO 220
22828             DO 210 J=MAX(1,IP),N
22829                IF (K(J,1).NE.3.OR.I.EQ.J) GOTO 210
22830 C...Do not make direct connections between partons in same Beam Remnant
22831                MBRSTR=0
22832                IF (K(I,3).LE.2.AND.K(J,3).LE.2.AND.K(I,3).EQ.K(J,3))
22833      &              MBRSTR=1
22834 C...Check colour charge
22835                MCJ=KCHG(PYCOMP(K(J,2)),2)*ISIGN(1,K(J,2))
22836                IF (MCJ.EQ.0.OR.(MCJ.EQ.MCI.AND.MCI.NE.2)) GOTO 210
22837 C...Check for gluon loops
22838                MGGSTR=0
22839                IF (MCJ.EQ.2.AND.MCI.EQ.2) THEN
22840                  ICLA=3-ICL
22841                  IF (MCN(I,ICLA).EQ.MCN(J,ICL).AND.MSTP(95).LE.3.AND.
22842      &                MCN(I,ICLA).NE.0) MGGSTR=1
22843                ENDIF
22844 C...Loop over J colour/anticolour, check whether already connected
22845                DO 200 JCL=1,2
22846                   IF (MCN(J,JCL).NE.0) GOTO 200
22847                   IF (JCL.EQ.ICL) GOTO 200
22848                   IF (JCL.EQ.1.AND.MCJ.EQ.-1) GOTO 200
22849                   IF (JCL.EQ.2.AND.MCJ.EQ.1) GOTO 200
22850 C...Check whether this is a dangling colour tag (ie to junction!)
22851                   IFOUND=0
22852                   DO 190 J2=MAX(1,IP),N
22853                      IF (K(J2,1).EQ.3.AND.MCT(J2,3-JCL).EQ.MCT(J,JCL))
22854      &                    IFOUND=1
22855   190             CONTINUE
22856                   IF (IFOUND.EQ.0) GOTO 200
22857 C...Save connection with smallest lambda measure
22858 C...If best so far was a BR string and this is not, also save.
22859 C...If best so far was a gg string and this is not, also save.
22860                   RL=FOUR(I,J)
22861                   IF (RL.LT.RLOPT.OR.(RL.EQ.RLOPT.AND.PYR(0).LE.0.5D0)
22862      &                 .OR.(MBROPT.EQ.1.AND.MBRSTR.EQ.0)
22863      &                 .OR.(MGGOPT.EQ.1.AND.MGGSTR.EQ.0)) THEN
22864                      RLOPT=RL
22865                      JLOPT=J
22866                      ICOPT=ICL
22867                      JCOPT=JCL
22868                      MCJOPT=MCJ
22869                      MBROPT=MBRSTR
22870                      MGGOPT=MGGSTR
22871                   ENDIF
22872   200          CONTINUE
22873   210       CONTINUE
22874   220    CONTINUE
22875          IF (JLOPT.NE.0) THEN
22876 C...Save pair with largest RLOPT so far
22877             IF (RLOPT.GE.RLMAX) THEN
22878                RLMAX=RLOPT
22879                ILMAX=I
22880                JLMAX=JLOPT
22881                ICMAX=ICOPT
22882                JCMAX=JCOPT
22883                MCJMAX=MCJOPT
22884                MCIMAX=MCI
22885             ENDIF
22886          ENDIF
22887   230 CONTINUE
22888 C...Save and iterate
22889       IF (ILMAX.GT.0) THEN
22890          LCT=LCT+1
22891          MCN(ILMAX,ICMAX)=LCT
22892          MCN(JLMAX,JCMAX)=LCT
22893          IF (NLOOP.LE.2*(N-IP)) THEN
22894             GOTO 160
22895          ELSE
22896             CALL PYERRM(31,' PYFSCR: infinite loop in color annealing')
22897             CALL PYSTOP(11)
22898          ENDIF
22899       ELSE
22900 C...Save and exit. First check for leftover gluon(s)
22901          DO 260 I=MAX(1,IP),N
22902 C...Check colour charge
22903             MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
22904             IF (K(I,1).NE.3.OR.MCI.NE.2) GOTO 260
22905             IF(MCN(I,1).EQ.0.AND.MCN(I,2).EQ.0) THEN
22906 C...Decide where to put left-over gluon (minimal insertion)
22907                ILMAX=0
22908                RLMAX=1D19
22909                DO 250 KCT=NCT+1,LCT
22910                   DO 240 IT=MAX(1,IP),N
22911                      IF (IT.EQ.I.OR.K(IT,1).NE.3) GOTO 240
22912                      IF (MCN(IT,1).EQ.KCT) IC=IT
22913                      IF (MCN(IT,2).EQ.KCT) IA=IT
22914   240             CONTINUE
22915                   RL=FOUR(IC,I)*FOUR(IA,I)
22916                   IF (RL.LT.RLMAX) THEN
22917                      RLMAX=RL
22918                      ICMAX=IC
22919                      IAMAX=IA
22920                   ENDIF
22921   250          CONTINUE
22922                LCT=LCT+1
22923                MCN(I,1)=MCN(ICMAX,1)
22924                MCN(I,2)=LCT
22925                MCN(ICMAX,1)=LCT
22926             ENDIF
22927   260    CONTINUE
22928          DO 270 I=MAX(1,IP),N
22929 C...Do not erase parton shower colour history
22930             IF (K(I,1).NE.3) GOTO 270
22931 C...Check colour charge
22932             MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
22933             IF (MCI.EQ.0) GOTO 270
22934             IF (MCN(I,1).NE.0) MCT(I,1)=MCN(I,1)
22935             IF (MCN(I,2).NE.0) MCT(I,2)=MCN(I,2)
22936   270    CONTINUE
22937       ENDIF
22938  
22939  9999 RETURN
22940       END
22941
22942 C*********************************************************************
22943  
22944 C...PYDIFF
22945 C...Handles diffractive and elastic scattering.
22946  
22947       SUBROUTINE PYDIFF
22948  
22949 C...Double precision and integer declarations.
22950       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22951       IMPLICIT INTEGER(I-N)
22952       INTEGER PYK,PYCHGE,PYCOMP
22953 C...Commonblocks.
22954       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22955       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22956       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22957       COMMON/PYINT1/MINT(400),VINT(400)
22958       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
22959  
22960 C...Reset K, P and V vectors. Store incoming particles.
22961       DO 110 JT=1,MSTP(126)+10
22962         I=MINT(83)+JT
22963         DO 100 J=1,5
22964           K(I,J)=0
22965           P(I,J)=0D0
22966           V(I,J)=0D0
22967   100   CONTINUE
22968   110 CONTINUE
22969       N=MINT(84)
22970       MINT(3)=0
22971       MINT(21)=0
22972       MINT(22)=0
22973       MINT(23)=0
22974       MINT(24)=0
22975       MINT(4)=4
22976       DO 130 JT=1,2
22977         I=MINT(83)+JT
22978         K(I,1)=21
22979         K(I,2)=MINT(10+JT)
22980         DO 120 J=1,5
22981           P(I,J)=VINT(285+5*JT+J)
22982   120   CONTINUE
22983   130 CONTINUE
22984       MINT(6)=2
22985  
22986 C...Subprocess; kinematics.
22987       SQLAM=(VINT(2)-VINT(63)-VINT(64))**2-4D0*VINT(63)*VINT(64)
22988       PZ=SQRT(SQLAM)/(2D0*VINT(1))
22989       DO 200 JT=1,2
22990         I=MINT(83)+JT
22991         PE=(VINT(2)+VINT(62+JT)-VINT(65-JT))/(2D0*VINT(1))
22992         KFH=MINT(102+JT)
22993  
22994 C...Elastically scattered particle. (Except elastic GVMD states.)
22995         IF(MINT(16+JT).LE.0.AND.(MINT(10+JT).NE.22.OR.
22996      &  MINT(106+JT).NE.3)) THEN
22997           N=N+1
22998           K(N,1)=1
22999           K(N,2)=KFH
23000           K(N,3)=I+2
23001           P(N,3)=PZ*(-1)**(JT+1)
23002           P(N,4)=PE
23003           P(N,5)=SQRT(VINT(62+JT))
23004  
23005 C...Decay rho from elastic scattering of gamma with sin**2(theta)
23006 C...distribution of decay products (in rho rest frame).
23007           IF(KFH.EQ.113.AND.MINT(10+JT).EQ.22.AND.MSTP(102).EQ.1) THEN
23008             NSAV=N
23009             DBETAZ=P(N,3)/SQRT(P(N,3)**2+P(N,5)**2)
23010             P(N,3)=0D0
23011             P(N,4)=P(N,5)
23012             CALL PYDECY(NSAV)
23013             IF(N.EQ.NSAV+2.AND.IABS(K(NSAV+1,2)).EQ.211) THEN
23014               PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
23015               CALL PYROBO(NSAV+1,NSAV+2,0D0,-PHI,0D0,0D0,0D0)
23016               THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
23017               CALL PYROBO(NSAV+1,NSAV+2,-THE,0D0,0D0,0D0,0D0)
23018   140         CTHE=2D0*PYR(0)-1D0
23019               IF(1D0-CTHE**2.LT.PYR(0)) GOTO 140
23020               CALL PYROBO(NSAV+1,NSAV+2,ACOS(CTHE),PHI,0D0,0D0,0D0)
23021             ENDIF
23022             CALL PYROBO(NSAV,NSAV+2,0D0,0D0,0D0,0D0,DBETAZ)
23023           ENDIF
23024  
23025 C...Diffracted particle: low-mass system to two particles.
23026         ELSEIF(VINT(62+JT).LT.(VINT(66+JT)+PARP(103))**2) THEN
23027           N=N+2
23028           K(N-1,1)=1
23029           K(N,1)=1
23030           K(N-1,3)=I+2
23031           K(N,3)=I+2
23032           PMMAS=SQRT(VINT(62+JT))
23033           NTRY=0
23034   150     NTRY=NTRY+1
23035           IF(NTRY.LT.20) THEN
23036             MINT(105)=MINT(102+JT)
23037             MINT(109)=MINT(106+JT)
23038             CALL PYSPLI(KFH,21,KFL1,KFL2)
23039             CALL PYKFDI(KFL1,0,KFL3,KF1)
23040             IF(KF1.EQ.0) GOTO 150
23041             CALL PYKFDI(KFL2,-KFL3,KFLDUM,KF2)
23042             IF(KF2.EQ.0) GOTO 150
23043           ELSE
23044             KF1=KFH
23045             KF2=111
23046           ENDIF
23047           PM1=PYMASS(KF1)
23048           PM2=PYMASS(KF2)
23049           IF(PM1+PM2+PARJ(64).GT.PMMAS) GOTO 150
23050           K(N-1,2)=KF1
23051           K(N,2)=KF2
23052           P(N-1,5)=PM1
23053           P(N,5)=PM2
23054           PZP=SQRT(MAX(0D0,(PMMAS**2-PM1**2-PM2**2)**2-
23055      &    4D0*PM1**2*PM2**2))/(2D0*PMMAS)
23056           P(N-1,3)=PZP
23057           P(N,3)=-PZP
23058           P(N-1,4)=SQRT(PM1**2+PZP**2)
23059           P(N,4)=SQRT(PM2**2+PZP**2)
23060           CALL PYROBO(N-1,N,ACOS(2D0*PYR(0)-1D0),PARU(2)*PYR(0),
23061      &    0D0,0D0,0D0)
23062           DBETAZ=PZ*(-1)**(JT+1)/SQRT(PZ**2+PMMAS**2)
23063           CALL PYROBO(N-1,N,0D0,0D0,0D0,0D0,DBETAZ)
23064  
23065 C...Diffracted particle: valence quark kicked out.
23066         ELSEIF(MSTP(101).EQ.1.OR.(MSTP(101).EQ.3.AND.PYR(0).LT.
23067      &    PARP(101))) THEN
23068           N=N+2
23069           K(N-1,1)=2
23070           K(N,1)=1
23071           K(N-1,3)=I+2
23072           K(N,3)=I+2
23073           MINT(105)=MINT(102+JT)
23074           MINT(109)=MINT(106+JT)
23075           CALL PYSPLI(KFH,21,K(N,2),K(N-1,2))
23076           P(N-1,5)=PYMASS(K(N-1,2))
23077           P(N,5)=PYMASS(K(N,2))
23078           SQLAM=(VINT(62+JT)-P(N-1,5)**2-P(N,5)**2)**2-
23079      &    4D0*P(N-1,5)**2*P(N,5)**2
23080           P(N-1,3)=(PE*SQRT(SQLAM)+PZ*(VINT(62+JT)+P(N-1,5)**2-
23081      &    P(N,5)**2))/(2D0*VINT(62+JT))*(-1)**(JT+1)
23082           P(N-1,4)=SQRT(P(N-1,3)**2+P(N-1,5)**2)
23083           P(N,3)=PZ*(-1)**(JT+1)-P(N-1,3)
23084           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
23085  
23086 C...Diffracted particle: gluon kicked out.
23087         ELSE
23088           N=N+3
23089           K(N-2,1)=2
23090           K(N-1,1)=2
23091           K(N,1)=1
23092           K(N-2,3)=I+2
23093           K(N-1,3)=I+2
23094           K(N,3)=I+2
23095           MINT(105)=MINT(102+JT)
23096           MINT(109)=MINT(106+JT)
23097           CALL PYSPLI(KFH,21,K(N,2),K(N-2,2))
23098           K(N-1,2)=21
23099           P(N-2,5)=PYMASS(K(N-2,2))
23100           P(N-1,5)=0D0
23101           P(N,5)=PYMASS(K(N,2))
23102 C...Energy distribution for particle into two jets.
23103   160     IMB=1
23104           IF(MOD(KFH/1000,10).NE.0) IMB=2
23105           CHIK=PARP(92+2*IMB)
23106           IF(MSTP(92).LE.1) THEN
23107             IF(IMB.EQ.1) CHI=PYR(0)
23108             IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
23109           ELSEIF(MSTP(92).EQ.2) THEN
23110             CHI=1D0-PYR(0)**(1D0/(1D0+CHIK))
23111           ELSEIF(MSTP(92).EQ.3) THEN
23112             CUT=2D0*0.3D0/VINT(1)
23113   170       CHI=PYR(0)**2
23114             IF((CHI**2/(CHI**2+CUT**2))**0.25D0*(1D0-CHI)**CHIK.LT.
23115      &      PYR(0)) GOTO 170
23116           ELSEIF(MSTP(92).EQ.4) THEN
23117             CUT=2D0*0.3D0/VINT(1)
23118             CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
23119   180       CHIR=CUT*CUTR**PYR(0)
23120             CHI=(CHIR**2-CUT**2)/(2D0*CHIR)
23121             IF((1D0-CHI)**CHIK.LT.PYR(0)) GOTO 180
23122           ELSE
23123             CUT=2D0*0.3D0/VINT(1)
23124             CUTA=CUT**(1D0-PARP(98))
23125             CUTB=(1D0+CUT)**(1D0-PARP(98))
23126   190       CHI=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
23127             IF(((CHI+CUT)**2/(2D0*(CHI**2+CUT**2)))**
23128      &      (0.5D0*PARP(98))*(1D0-CHI)**CHIK.LT.PYR(0)) GOTO 190
23129           ENDIF
23130           IF(CHI.LT.P(N,5)**2/VINT(62+JT).OR.CHI.GT.1D0-P(N-2,5)**2/
23131      &    VINT(62+JT)) GOTO 160
23132           SQM=P(N-2,5)**2/(1D0-CHI)+P(N,5)**2/CHI
23133           PZI=(PE*(VINT(62+JT)-SQM)+PZ*(VINT(62+JT)+SQM))/
23134      &    (2D0*VINT(62+JT))
23135           PEI=SQRT(PZI**2+SQM)
23136           PQQP=(1D0-CHI)*(PEI+PZI)
23137           P(N-2,3)=0.5D0*(PQQP-P(N-2,5)**2/PQQP)*(-1)**(JT+1)
23138           P(N-2,4)=SQRT(P(N-2,3)**2+P(N-2,5)**2)
23139           P(N-1,4)=0.5D0*(VINT(62+JT)-SQM)/(PEI+PZI)
23140           P(N-1,3)=P(N-1,4)*(-1)**JT
23141           P(N,3)=PZI*(-1)**(JT+1)-P(N-2,3)
23142           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
23143         ENDIF
23144  
23145 C...Documentation lines.
23146         K(I+2,1)=21
23147         IF(MINT(16+JT).EQ.0) K(I+2,2)=KFH
23148         IF(MINT(16+JT).NE.0.OR.(MINT(10+JT).EQ.22.AND.
23149      &  MINT(106+JT).EQ.3)) K(I+2,2)=ISIGN(9900000,KFH)+10*(KFH/10)
23150         K(I+2,3)=I
23151         P(I+2,3)=PZ*(-1)**(JT+1)
23152         P(I+2,4)=PE
23153         P(I+2,5)=SQRT(VINT(62+JT))
23154   200 CONTINUE
23155  
23156 C...Rotate outgoing partons/particles using cos(theta).
23157       IF(VINT(23).LT.0.9D0) THEN
23158         CALL PYROBO(MINT(83)+3,N,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
23159       ELSE
23160         CALL PYROBO(MINT(83)+3,N,ASIN(VINT(59)),VINT(24),0D0,0D0,0D0)
23161       ENDIF
23162  
23163       RETURN
23164       END
23165  
23166 C*********************************************************************
23167  
23168 C...PYDISG
23169 C...Set up a DIS process as gamma* + f -> f, with beam remnant
23170 C...and showering added consecutively. Photon flux by the PYGAGA
23171 C...routine (if at all).
23172  
23173       SUBROUTINE PYDISG
23174  
23175 C...Double precision and integer declarations.
23176       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23177       IMPLICIT INTEGER(I-N)
23178       INTEGER PYK,PYCHGE,PYCOMP
23179 C...Parameter statement to help give large particle numbers.
23180       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
23181      &KEXCIT=4000000,KDIMEN=5000000)
23182 C...Commonblocks.
23183       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
23184       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23185       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23186       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23187       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23188       COMMON/PYINT1/MINT(400),VINT(400)
23189       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
23190 C...Local arrays.
23191       DIMENSION PMS(4)
23192  
23193 C...Choice of subprocess, number of documentation lines
23194       IDOC=7
23195       MINT(3)=IDOC-6
23196       MINT(4)=IDOC
23197       IPU1=MINT(84)+1
23198       IPU2=MINT(84)+2
23199       IPU3=MINT(84)+3
23200       ISIDE=1
23201       IF(MINT(107).EQ.4) ISIDE=2
23202  
23203 C...Reset K, P and V vectors. Store incoming particles
23204       DO 110 JT=1,MSTP(126)+20
23205         I=MINT(83)+JT
23206         DO 100 J=1,5
23207           K(I,J)=0
23208           P(I,J)=0D0
23209           V(I,J)=0D0
23210   100   CONTINUE
23211   110 CONTINUE
23212       DO 130 JT=1,2
23213         I=MINT(83)+JT
23214         K(I,1)=21
23215         K(I,2)=MINT(10+JT)
23216         DO 120 J=1,5
23217           P(I,J)=VINT(285+5*JT+J)
23218   120   CONTINUE
23219   130 CONTINUE
23220       MINT(6)=2
23221  
23222 C...Store incoming partons in hadronic CM-frame
23223       DO 140 JT=1,2
23224         I=MINT(84)+JT
23225         K(I,1)=14
23226         K(I,2)=MINT(14+JT)
23227         K(I,3)=MINT(83)+2+JT
23228   140 CONTINUE
23229       IF(MINT(15).EQ.22) THEN
23230         P(MINT(84)+1,3)=0.5D0*(VINT(1)+VINT(307)/VINT(1))
23231         P(MINT(84)+1,4)=0.5D0*(VINT(1)-VINT(307)/VINT(1))
23232         P(MINT(84)+1,5)=-SQRT(VINT(307))
23233         P(MINT(84)+2,3)=-0.5D0*VINT(307)/VINT(1)
23234         P(MINT(84)+2,4)=0.5D0*VINT(307)/VINT(1)
23235         KFRES=MINT(16)
23236         ISIDE=2
23237       ELSE
23238         P(MINT(84)+1,3)=0.5D0*VINT(308)/VINT(1)
23239         P(MINT(84)+1,4)=0.5D0*VINT(308)/VINT(1)
23240         P(MINT(84)+2,3)=-0.5D0*(VINT(1)+VINT(308)/VINT(1))
23241         P(MINT(84)+2,4)=0.5D0*(VINT(1)-VINT(308)/VINT(1))
23242         P(MINT(84)+1,5)=-SQRT(VINT(308))
23243         KFRES=MINT(15)
23244         ISIDE=1
23245       ENDIF
23246       SIDESG=(-1D0)**(ISIDE-1)
23247  
23248 C...Copy incoming partons to documentation lines.
23249       DO 170 JT=1,2
23250         I1=MINT(83)+4+JT
23251         I2=MINT(84)+JT
23252         K(I1,1)=21
23253         K(I1,2)=K(I2,2)
23254         K(I1,3)=I1-2
23255         DO 150 J=1,5
23256           P(I1,J)=P(I2,J)
23257   150   CONTINUE
23258  
23259 C...Second copy for partons before ISR shower, since no such.
23260         I1=MINT(83)+2+JT
23261         K(I1,1)=21
23262         K(I1,2)=K(I2,2)
23263         K(I1,3)=I1-2
23264         DO 160 J=1,5
23265           P(I1,J)=P(I2,J)
23266   160   CONTINUE
23267   170 CONTINUE
23268  
23269 C...Define initial partons.
23270       NTRY=0
23271   180 NTRY=NTRY+1
23272       IF(NTRY.GT.100) THEN
23273         MINT(51)=1
23274         RETURN
23275       ENDIF
23276  
23277 C...Scattered quark in hadronic CM frame.
23278       I=MINT(83)+7
23279       K(IPU3,1)=3
23280       K(IPU3,2)=KFRES
23281       K(IPU3,3)=I
23282       P(IPU3,5)=PYMASS(KFRES)
23283       P(IPU3,3)=P(IPU1,3)+P(IPU2,3)
23284       P(IPU3,4)=P(IPU1,4)+P(IPU2,4)
23285       P(IPU3,5)=0D0
23286       K(I,1)=21
23287       K(I,2)=KFRES
23288       K(I,3)=MINT(83)+4+ISIDE
23289       P(I,3)=P(IPU3,3)
23290       P(I,4)=P(IPU3,4)
23291       P(I,5)=P(IPU3,5)
23292       N=IPU3
23293       MINT(21)=KFRES
23294       MINT(22)=0
23295  
23296 C...No primordial kT, or chosen according to truncated Gaussian or
23297 C...exponential, or (for photon) predetermined or power law.
23298   190 IF(MINT(40+ISIDE).EQ.2.AND.MINT(10+ISIDE).NE.22) THEN
23299         IF(MSTP(91).LE.0) THEN
23300           PT=0D0
23301         ELSEIF(MSTP(91).EQ.1) THEN
23302           PT=PARP(91)*SQRT(-LOG(PYR(0)))
23303         ELSE
23304           RPT1=PYR(0)
23305           RPT2=PYR(0)
23306           PT=-PARP(92)*LOG(RPT1*RPT2)
23307         ENDIF
23308         IF(PT.GT.PARP(93)) GOTO 190
23309       ELSEIF(MINT(106+ISIDE).EQ.3) THEN
23310         PTA=SQRT(VINT(282+ISIDE))
23311         PTB=0D0
23312         IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
23313           PTB=PARP(99)*SQRT(-LOG(PYR(0)))
23314         ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
23315           RPT1=PYR(0)
23316           RPT2=PYR(0)
23317           PTB=-PARP(99)*LOG(RPT1*RPT2)
23318         ENDIF
23319         IF(PTB.GT.PARP(100)) GOTO 190
23320         PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
23321         IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
23322       ELSEIF(IABS(MINT(14+ISIDE)).LE.8.OR.MINT(14+ISIDE).EQ.21) THEN
23323         IF(MSTP(93).LE.0) THEN
23324           PT=0D0
23325         ELSEIF(MSTP(93).EQ.1) THEN
23326           PT=PARP(99)*SQRT(-LOG(PYR(0)))
23327         ELSEIF(MSTP(93).EQ.2) THEN
23328           RPT1=PYR(0)
23329           RPT2=PYR(0)
23330           PT=-PARP(99)*LOG(RPT1*RPT2)
23331         ELSEIF(MSTP(93).EQ.3) THEN
23332           HA=PARP(99)**2
23333           HB=PARP(100)**2
23334           PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
23335         ELSE
23336           HA=PARP(99)**2
23337           HB=PARP(100)**2
23338           IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
23339           PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
23340         ENDIF
23341         IF(PT.GT.PARP(100)) GOTO 190
23342       ELSE
23343         PT=0D0
23344       ENDIF
23345       VINT(156+ISIDE)=PT
23346       PHI=PARU(2)*PYR(0)
23347       P(IPU3,1)=PT*COS(PHI)
23348       P(IPU3,2)=PT*SIN(PHI)
23349       P(IPU3,4)=SQRT(P(IPU3,5)**2+PT**2+P(IPU3,3)**2)
23350       PMS(3-ISIDE)=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
23351       PCP=P(IPU3,4)+ABS(P(IPU3,3))
23352  
23353 C...Find one or two beam remnants.
23354       MINT(105)=MINT(102+ISIDE)
23355       MINT(109)=MINT(106+ISIDE)
23356       CALL PYSPLI(MINT(10+ISIDE),MINT(12+ISIDE),KFLCH,KFLSP)
23357       IF(MINT(51).NE.0) THEN
23358         MINT(51)=0
23359         GOTO 180
23360       ENDIF
23361  
23362 C...Store first remnant parton, with colour info and kinematics.
23363       I=N+1
23364       K(I,1)=1
23365       K(I,2)=KFLSP
23366       K(I,3)=MINT(83)+ISIDE
23367       P(I,5)=PYMASS(K(I,2))
23368       KCOL=KCHG(PYCOMP(KFLSP),2)
23369       IF(KCOL.NE.0) THEN
23370         K(I,1)=3
23371         KFLS=(3-KCOL*ISIGN(1,KFLSP))/2
23372         K(I,KFLS+3)=MSTU(5)*IPU3
23373         K(IPU3,6-KFLS)=MSTU(5)*I
23374         ICOLR=I
23375       ENDIF
23376       IF(KFLCH.EQ.0) THEN
23377         P(I,1)=-P(IPU3,1)
23378         P(I,2)=-P(IPU3,2)
23379         PMS(ISIDE)=P(I,5)**2+P(I,1)**2+P(I,2)**2
23380         P(I,3)=-P(IPU3,3)
23381         P(I,4)=SQRT(PMS(ISIDE)+P(I,3)**2)
23382         PRP=P(I,4)+ABS(P(I,3))
23383  
23384 C...When extra remnant parton or hadron: store extra remnant.
23385       ELSE
23386         I=I+1
23387         K(I,1)=1
23388         K(I,2)=KFLCH
23389         K(I,3)=MINT(83)+ISIDE
23390         P(I,5)=PYMASS(K(I,2))
23391         KCOL=KCHG(PYCOMP(KFLCH),2)
23392         IF(KCOL.NE.0) THEN
23393           K(I,1)=3
23394           KFLS=(3-KCOL*ISIGN(1,KFLCH))/2
23395           K(I,KFLS+3)=MSTU(5)*IPU3
23396           K(IPU3,6-KFLS)=MSTU(5)*I
23397           ICOLR=I
23398         ENDIF
23399  
23400 C...Relative transverse momentum when two remnants.
23401         LOOP=0
23402   200   LOOP=LOOP+1
23403         CALL PYPTDI(1,P(I-1,1),P(I-1,2))
23404         P(I-1,1)=P(I-1,1)-0.5D0*P(IPU3,1)
23405         P(I-1,2)=P(I-1,2)-0.5D0*P(IPU3,2)
23406         PMS(3)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
23407         P(I,1)=-P(IPU3,1)-P(I-1,1)
23408         P(I,2)=-P(IPU3,2)-P(I-1,2)
23409         PMS(4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
23410  
23411 C...Relative distribution of energy for particle into jet plus particle.
23412         IMB=1
23413         IF(MOD(MINT(10+ISIDE)/1000,10).NE.0) IMB=2
23414         IF(MSTP(94).LE.1) THEN
23415           IF(IMB.EQ.1) CHI=PYR(0)
23416           IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
23417           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
23418         ELSEIF(MSTP(94).EQ.2) THEN
23419           CHI=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
23420           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
23421         ELSEIF(MSTP(94).EQ.3) THEN
23422           CALL PYZDIS(1,0,PMS(4),ZZ)
23423           CHI=ZZ
23424         ELSE
23425           CALL PYZDIS(1000,0,PMS(4),ZZ)
23426           CHI=ZZ
23427         ENDIF
23428  
23429 C...Construct total transverse mass; reject if too large.
23430         CHI=MAX(1D-8,MIN(1D0-1D-8,CHI))
23431         PMS(ISIDE)=PMS(4)/CHI+PMS(3)/(1D0-CHI)
23432         IF(PMS(ISIDE).GT.P(IPU3,4)**2) THEN
23433           IF(LOOP.LT.10) GOTO 200
23434           GOTO 180
23435         ENDIF
23436         VINT(158+ISIDE)=CHI
23437  
23438 C...Subdivide longitudinal momentum according to value selected above.
23439         PRP=SQRT(PMS(ISIDE)+P(IPU3,3)**2)+ABS(P(IPU3,3))
23440         PW1=(1D0-CHI)*PRP
23441         P(I-1,4)=0.5D0*(PW1+PMS(3)/PW1)
23442         P(I-1,3)=0.5D0*(PW1-PMS(3)/PW1)*SIDESG
23443         PW2=CHI*PRP
23444         P(I,4)=0.5D0*(PW2+PMS(4)/PW2)
23445         P(I,3)=0.5D0*(PW2-PMS(4)/PW2)*SIDESG
23446       ENDIF
23447       N=I
23448  
23449 C...Boost current and remnant systems to correct frame.
23450       IF(SQRT(PMS(1))+SQRT(PMS(2)).GT.0.99D0*VINT(1)) GOTO 180
23451       DSQLAM=SQRT(MAX(0D0,(VINT(2)-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2)))
23452       DRKC=(VINT(2)+PMS(3-ISIDE)-PMS(ISIDE)+DSQLAM)/
23453      &(2D0*VINT(1)*PCP)
23454       DRKR=(VINT(2)+PMS(ISIDE)-PMS(3-ISIDE)+DSQLAM)/
23455      &(2D0*VINT(1)*PRP)
23456       DBEC=-SIDESG*(DRKC**2-1D0)/(DRKC**2+1D0)
23457       DBER=SIDESG*(DRKR**2-1D0)/(DRKR**2+1D0)
23458       CALL PYROBO(IPU3,IPU3,0D0,0D0,0D0,0D0,DBEC)
23459       CALL PYROBO(IPU3+1,N,0D0,0D0,0D0,0D0,DBER)
23460  
23461 C...Let current quark shower; recoil but no showering by colour partner.
23462       QMAX=2D0*SQRT(VINT(309-ISIDE))
23463       MSTJ48=MSTJ(48)
23464       MSTJ(48)=1
23465       PARJ86=PARJ(86)
23466       PARJ(86)=0D0
23467       IF(MSTP(71).EQ.1) CALL PYSHOW(IPU3,ICOLR,QMAX)
23468       MSTJ(48)=MSTJ48
23469       PARJ(86)=PARJ86
23470  
23471       RETURN
23472       END
23473  
23474 C*********************************************************************
23475  
23476 C...PYDOCU
23477 C...Handles the documentation of the process in MSTI and PARI,
23478 C...and also computes cross-sections based on accumulated statistics.
23479  
23480       SUBROUTINE PYDOCU
23481  
23482 C...Double precision and integer declarations.
23483       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23484       IMPLICIT INTEGER(I-N)
23485       INTEGER PYK,PYCHGE,PYCOMP
23486 C...Commonblocks.
23487       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
23488       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23489       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23490       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23491       COMMON/PYINT1/MINT(400),VINT(400)
23492       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
23493       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
23494       SAVE /PYJETS/,/PYDAT1/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
23495      &/PYINT5/
23496  
23497 C...Calculate Monte Carlo estimates of cross-sections.
23498       ISUB=MINT(1)
23499       IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
23500       NGEN(0,3)=NGEN(0,3)+1
23501       XSEC(0,3)=0D0
23502       DO 100 I=1,500
23503         IF(I.EQ.96.OR.I.EQ.97) THEN
23504           XSEC(I,3)=0D0
23505         ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
23506      &    I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
23507           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
23508      &    DBLE(NGEN(96,2)))
23509         ELSEIF(MSUB(95).EQ.1.AND.I.GE.381.AND.I.LE.386) THEN
23510           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
23511      &    DBLE(NGEN(96,2)))
23512         ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
23513           XSEC(I,3)=0D0
23514         ELSEIF(NGEN(I,2).EQ.0) THEN
23515           XSEC(I,3)=XSEC(I,2)*NGEN(0,3)/(DBLE(NGEN(I,1))*
23516      &    DBLE(NGEN(0,2)))
23517         ELSE
23518           XSEC(I,3)=XSEC(I,2)*NGEN(I,3)/(DBLE(NGEN(I,1))*
23519      &    DBLE(NGEN(I,2)))
23520         ENDIF
23521         XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
23522   100 CONTINUE
23523  
23524 C...Rescale to known low-pT cross-section for standard QCD processes.
23525       IF(MSUB(95).EQ.1) THEN
23526         XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
23527      &  XSEC(68,3)+XSEC(95,3)
23528         XSECW=XSEC(97,2)/MAX(1D0,DBLE(NGEN(97,1)))
23529         IF(XSECH.GT.1D-20.AND.XSECW.GT.1D-20) THEN
23530           FAC=XSECW/XSECH
23531           XSEC(11,3)=FAC*XSEC(11,3)
23532           XSEC(12,3)=FAC*XSEC(12,3)
23533           XSEC(13,3)=FAC*XSEC(13,3)
23534           XSEC(28,3)=FAC*XSEC(28,3)
23535           XSEC(53,3)=FAC*XSEC(53,3)
23536           XSEC(68,3)=FAC*XSEC(68,3)
23537           XSEC(95,3)=FAC*XSEC(95,3)
23538           XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
23539         ENDIF
23540       ENDIF
23541  
23542 C...Save information for gamma-p and gamma-gamma.
23543       IF(MINT(121).GT.1) THEN
23544         IGA=MINT(122)
23545         CALL PYSAVE(2,IGA)
23546         CALL PYSAVE(5,0)
23547       ENDIF
23548  
23549 C...Reset information on hard interaction.
23550       DO 110 J=1,200
23551         MSTI(J)=0
23552         PARI(J)=0D0
23553   110 CONTINUE
23554  
23555 C...Copy integer valued information from MINT into MSTI.
23556       DO 120 J=1,32
23557         MSTI(J)=MINT(J)
23558   120 CONTINUE
23559       IF(MINT(121).GT.1) MSTI(9)=MINT(122)
23560  
23561 C...Store cross-section variables in PARI.
23562       PARI(1)=XSEC(0,3)
23563       PARI(2)=XSEC(0,3)/MINT(5)
23564       PARI(7)=VINT(97)
23565       PARI(9)=VINT(99)
23566       PARI(10)=VINT(100)
23567       VINT(98)=VINT(98)+VINT(100)
23568       IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
23569  
23570 C...Store kinematics variables in PARI.
23571       PARI(11)=VINT(1)
23572       PARI(12)=VINT(2)
23573       IF(ISUB.NE.95) THEN
23574         DO 130 J=13,26
23575           PARI(J)=VINT(30+J)
23576   130   CONTINUE
23577         PARI(29)=VINT(39)
23578         PARI(30)=VINT(40)
23579         PARI(31)=VINT(141)
23580         PARI(32)=VINT(142)
23581         PARI(33)=VINT(41)
23582         PARI(34)=VINT(42)
23583         PARI(35)=PARI(33)-PARI(34)
23584         PARI(36)=VINT(21)
23585         PARI(37)=VINT(22)
23586         PARI(38)=VINT(26)
23587         PARI(39)=VINT(157)
23588         PARI(40)=VINT(158)
23589         PARI(41)=VINT(23)
23590         PARI(42)=2D0*VINT(47)/VINT(1)
23591       ENDIF
23592  
23593 C...Store information on scattered partons in PARI.
23594       IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
23595         DO 140 IS=7,8
23596           I=MINT(IS)
23597           PARI(36+IS)=P(I,3)/VINT(1)
23598           PARI(38+IS)=P(I,4)/VINT(1)
23599           PR=MAX(1D-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
23600           PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
23601      &    SQRT(PR),1D20)),P(I,3))
23602           PR=MAX(1D-20,P(I,1)**2+P(I,2)**2)
23603           PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
23604      &    SQRT(PR),1D20)),P(I,3))
23605           PARI(44+IS)=P(I,3)/SQRT(1D-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
23606           PARI(46+IS)=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
23607           PARI(48+IS)=PYANGL(P(I,1),P(I,2))
23608   140   CONTINUE
23609       ENDIF
23610  
23611 C...Store sum up transverse and longitudinal momenta.
23612       PARI(65)=2D0*PARI(17)
23613       IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
23614         DO 150 I=MSTP(126)+1,N
23615           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
23616           PT=SQRT(P(I,1)**2+P(I,2)**2)
23617           PARI(69)=PARI(69)+PT
23618           IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
23619           IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
23620   150   CONTINUE
23621         PARI(67)=PARI(68)
23622         PARI(71)=VINT(151)
23623         PARI(72)=VINT(152)
23624         PARI(73)=VINT(151)
23625         PARI(74)=VINT(152)
23626       ELSE
23627         PARI(66)=PARI(65)
23628         PARI(69)=PARI(65)
23629       ENDIF
23630  
23631 C...Store various other pieces of information into PARI.
23632       PARI(61)=VINT(148)
23633       PARI(75)=VINT(155)
23634       PARI(76)=VINT(156)
23635       PARI(77)=VINT(159)
23636       PARI(78)=VINT(160)
23637       PARI(81)=VINT(138)
23638  
23639 C...Store information on lepton -> lepton + gamma in PYGAGA.
23640       MSTI(71)=MINT(141)
23641       MSTI(72)=MINT(142)
23642       PARI(101)=VINT(301)
23643       PARI(102)=VINT(302)
23644       DO 160 I=103,114
23645         PARI(I)=VINT(I+202)
23646   160 CONTINUE
23647  
23648 C...Set information for PYTABU.
23649       IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
23650         MSTU(161)=MINT(21)
23651         MSTU(162)=0
23652       ELSEIF(ISET(ISUB).EQ.5) THEN
23653         MSTU(161)=MINT(23)
23654         MSTU(162)=0
23655       ELSE
23656         MSTU(161)=MINT(21)
23657         MSTU(162)=MINT(22)
23658       ENDIF
23659  
23660       RETURN
23661       END
23662  
23663 C*********************************************************************
23664  
23665 C...PYFRAM
23666 C...Performs transformations between different coordinate frames.
23667  
23668       SUBROUTINE PYFRAM(IFRAME)
23669  
23670 C...Double precision and integer declarations.
23671       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23672       IMPLICIT INTEGER(I-N)
23673       INTEGER PYK,PYCHGE,PYCOMP
23674 C...Commonblocks.
23675       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23676       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23677       COMMON/PYINT1/MINT(400),VINT(400)
23678       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
23679  
23680 C...Check that transformation can and should be done.
23681       IF(IFRAME.EQ.1.OR.IFRAME.EQ.2.OR.(IFRAME.EQ.3.AND.
23682      &MINT(91).EQ.1)) THEN
23683         IF(IFRAME.EQ.MINT(6)) RETURN
23684       ELSE
23685         WRITE(MSTU(11),5000) IFRAME,MINT(6)
23686         RETURN
23687       ENDIF
23688  
23689       IF(MINT(6).EQ.1) THEN
23690 C...Transform from fixed target or user specified frame to
23691 C...overall CM frame.
23692         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
23693         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
23694         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
23695       ELSEIF(MINT(6).EQ.3) THEN
23696 C...Transform from hadronic CM frame in DIS to overall CM frame.
23697         CALL PYROBO(0,0,-VINT(221),-VINT(222),-VINT(223),-VINT(224),
23698      &  -VINT(225))
23699       ENDIF
23700  
23701       IF(IFRAME.EQ.1) THEN
23702 C...Transform from overall CM frame to fixed target or user specified
23703 C...frame.
23704         CALL PYROBO(0,0,VINT(6),VINT(7),VINT(8),VINT(9),VINT(10))
23705       ELSEIF(IFRAME.EQ.3) THEN
23706 C...Transform from overall CM frame to hadronic CM frame in DIS.
23707         CALL PYROBO(0,0,0D0,0D0,VINT(223),VINT(224),VINT(225))
23708         CALL PYROBO(0,0,0D0,VINT(222),0D0,0D0,0D0)
23709         CALL PYROBO(0,0,VINT(221),0D0,0D0,0D0,0D0)
23710       ENDIF
23711  
23712 C...Set information about new frame.
23713       MINT(6)=IFRAME
23714       MSTI(6)=IFRAME
23715  
23716  5000 FORMAT(1X,'Error: illegal values in subroutine PYFRAM.',1X,
23717      &'No transformation performed.'/1X,'IFRAME =',1X,I5,'; MINT(6) =',
23718      &1X,I5)
23719  
23720       RETURN
23721       END
23722  
23723 C*********************************************************************
23724  
23725 C...PYWIDT
23726 C...Calculates full and partial widths of resonances.
23727  
23728       SUBROUTINE PYWIDT(KFLR,SH,WDTP,WDTE)
23729  
23730 C...Double precision and integer declarations.
23731       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23732       IMPLICIT INTEGER(I-N)
23733       INTEGER PYK,PYCHGE,PYCOMP
23734 C...Parameter statement to help give large particle numbers.
23735       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
23736      &KEXCIT=4000000,KDIMEN=5000000)
23737 C...Commonblocks.
23738       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23739       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23740       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
23741       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23742       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23743       COMMON/PYINT1/MINT(400),VINT(400)
23744       COMMON/PYINT4/MWID(500),WIDS(500,5)
23745       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
23746       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
23747      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
23748       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
23749       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
23750      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYTCSM/
23751 C...Local arrays and saved variables.
23752       COMPLEX*16 ZMIXC(4,4),AL,BL,AR,BR,FL,FR
23753       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
23754      &WID2SV(3,2),WDTPP(0:400),WDTEP(0:400,0:5)
23755       SAVE MOFSV,WIDWSV,WID2SV
23756       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
23757  
23758 C...Compressed code and sign; mass.
23759       KFLA=IABS(KFLR)
23760       KFLS=ISIGN(1,KFLR)
23761       KC=PYCOMP(KFLA)
23762       SHR=SQRT(SH)
23763       PMR=PMAS(KC,1)
23764  
23765 C...Reset width information.
23766       DO 110 I=0,MDCY(KC,3)
23767         WDTP(I)=0D0
23768         DO 100 J=0,5
23769           WDTE(I,J)=0D0
23770   100   CONTINUE
23771   110 CONTINUE
23772  
23773 C...Allow for fudge factor to rescale resonance width.
23774       FUDGE=1D0
23775       IF(MSTP(110).NE.0.AND.(MWID(KC).EQ.1.OR.MWID(KC).EQ.2.OR.
23776      &(MWID(KC).EQ.3.AND.MINT(63).EQ.1))) THEN
23777         IF(MSTP(110).EQ.KFLA) THEN
23778           FUDGE=PARP(110)
23779         ELSEIF(MSTP(110).EQ.-1) THEN
23780           IF(KFLA.NE.6.AND.KFLA.NE.23.AND.KFLA.NE.24) FUDGE=PARP(110)
23781         ELSEIF(MSTP(110).EQ.-2) THEN
23782           FUDGE=PARP(110)
23783         ENDIF
23784       ENDIF
23785  
23786 C...Not to be treated as a resonance: return.
23787       IF((MWID(KC).LE.0.OR.MWID(KC).GE.4).AND.KFLA.NE.21.AND.
23788      &KFLA.NE.22) THEN
23789         WDTP(0)=1D0
23790         WDTE(0,0)=1D0
23791         MINT(61)=0
23792         MINT(62)=0
23793         MINT(63)=0
23794         RETURN
23795  
23796 C...Treatment as a resonance based on tabulated branching ratios.
23797       ELSEIF(MWID(KC).EQ.2.OR.(MWID(KC).EQ.3.AND.MINT(63).EQ.0)) THEN
23798 C...Loop over possible decay channels; skip irrelevant ones.
23799         DO 120 I=1,MDCY(KC,3)
23800           IDC=I+MDCY(KC,2)-1
23801           IF(MDME(IDC,1).LT.0) GOTO 120
23802  
23803 C...Read out decay products and nominal masses.
23804           KFD1=KFDP(IDC,1)
23805           KFC1=PYCOMP(KFD1)
23806           IF(KCHG(KFC1,3).EQ.1) KFD1=KFLS*KFD1
23807           PM1=PMAS(KFC1,1)
23808           KFD2=KFDP(IDC,2)
23809           KFC2=PYCOMP(KFD2)
23810           IF(KCHG(KFC2,3).EQ.1) KFD2=KFLS*KFD2
23811           PM2=PMAS(KFC2,1)
23812           KFD3=KFDP(IDC,3)
23813           PM3=0D0
23814           IF(KFD3.NE.0) THEN
23815             KFC3=PYCOMP(KFD3)
23816             IF(KCHG(KFC3,3).EQ.1) KFD3=KFLS*KFD3
23817             PM3=PMAS(KFC3,1)
23818           ENDIF
23819  
23820 C...Naive partial width and alternative threshold factors.
23821           WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)
23822           IF(MDME(IDC,2).GE.51.AND.MDME(IDC,2).LE.53.AND.
23823      &    PM1+PM2+PM3.GE.SHR) THEN
23824              WDTP(I)=0D0
23825           ELSEIF(MDME(IDC,2).EQ.52.AND.KFD3.EQ.0) THEN
23826             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,(SH-PM1**2-PM2**2)**2-
23827      &      4D0*PM1**2*PM2**2))/SH
23828           ELSEIF(MDME(IDC,2).EQ.52) THEN
23829             PMA=MAX(PM1,PM2,PM3)
23830             PMC=MIN(PM1,PM2,PM3)
23831             PMB=PM1+PM2+PM3-PMA-PMC
23832             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMC-PMC)
23833             PMAN=PMA**2/SH
23834             PMBN=PMB**2/SH
23835             PMCN=PMC**2/SH
23836             PMBCN=PMBC**2/SH
23837             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,
23838      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
23839      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
23840      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
23841      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
23842      &      ((1D0-PMBCN)*PMBCN*SH)
23843           ELSEIF(MDME(IDC,2).EQ.53.AND.KFD3.EQ.0) THEN
23844             WDTP(I)=WDTP(I)*SQRT(
23845      &      MAX(0D0,(SH-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2)/
23846      &      MAX(1D-4,(PMR**2-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2))
23847           ELSEIF(MDME(IDC,2).EQ.53) THEN
23848             PMA=MAX(PM1,PM2,PM3)
23849             PMC=MIN(PM1,PM2,PM3)
23850             PMB=PM1+PM2+PM3-PMA-PMC
23851             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMB-PMC)
23852             PMAN=PMA**2/SH
23853             PMBN=PMB**2/SH
23854             PMCN=PMC**2/SH
23855             PMBCN=PMBC**2/SH
23856             FACACT=SQRT(MAX(0D0,
23857      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
23858      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
23859      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
23860      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
23861      &      ((1D0-PMBCN)*PMBCN*SH)
23862             PMBC=PMB+PMC+0.5D0*(PMR-PMA-PMB-PMC)
23863             PMAN=PMA**2/PMR**2
23864             PMBN=PMB**2/PMR**2
23865             PMCN=PMC**2/PMR**2
23866             PMBCN=PMBC**2/PMR**2
23867             FACNOM=SQRT(MAX(0D0,
23868      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
23869      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
23870      &      ((PMR-PMA)**2-(PMB+PMC)**2)*
23871      &      (1D0+0.25D0*(PMA+PMB+PMC)/PMR)/
23872      &      ((1D0-PMBCN)*PMBCN*PMR**2)
23873             WDTP(I)=WDTP(I)*FACACT/MAX(1D-6,FACNOM)
23874           ENDIF
23875           WDTP(I)=FUDGE*WDTP(I)
23876           WDTP(0)=WDTP(0)+WDTP(I)
23877  
23878 C...Calculate secondary width (at most two identical/opposite).
23879           WID2=1D0
23880           IF(MDME(IDC,1).GT.0) THEN
23881             IF(KFD2.EQ.KFD1) THEN
23882               IF(KCHG(KFC1,3).EQ.0) THEN
23883                 WID2=WIDS(KFC1,1)
23884               ELSEIF(KFD1.GT.0) THEN
23885                 WID2=WIDS(KFC1,4)
23886               ELSE
23887                 WID2=WIDS(KFC1,5)
23888               ENDIF
23889               IF(KFD3.GT.0) THEN
23890                 WID2=WID2*WIDS(KFC3,2)
23891               ELSEIF(KFD3.LT.0) THEN
23892                 WID2=WID2*WIDS(KFC3,3)
23893               ENDIF
23894             ELSEIF(KFD2.EQ.-KFD1) THEN
23895               WID2=WIDS(KFC1,1)
23896               IF(KFD3.GT.0) THEN
23897                 WID2=WID2*WIDS(KFC3,2)
23898               ELSEIF(KFD3.LT.0) THEN
23899                 WID2=WID2*WIDS(KFC3,3)
23900               ENDIF
23901             ELSEIF(KFD3.EQ.KFD1) THEN
23902               IF(KCHG(KFC1,3).EQ.0) THEN
23903                 WID2=WIDS(KFC1,1)
23904               ELSEIF(KFD1.GT.0) THEN
23905                 WID2=WIDS(KFC1,4)
23906               ELSE
23907                 WID2=WIDS(KFC1,5)
23908               ENDIF
23909               IF(KFD2.GT.0) THEN
23910                 WID2=WID2*WIDS(KFC2,2)
23911               ELSEIF(KFD2.LT.0) THEN
23912                 WID2=WID2*WIDS(KFC2,3)
23913               ENDIF
23914             ELSEIF(KFD3.EQ.-KFD1) THEN
23915               WID2=WIDS(KFC1,1)
23916               IF(KFD2.GT.0) THEN
23917                 WID2=WID2*WIDS(KFC2,2)
23918               ELSEIF(KFD2.LT.0) THEN
23919                 WID2=WID2*WIDS(KFC2,3)
23920               ENDIF
23921             ELSEIF(KFD3.EQ.KFD2) THEN
23922               IF(KCHG(KFC2,3).EQ.0) THEN
23923                 WID2=WIDS(KFC2,1)
23924               ELSEIF(KFD2.GT.0) THEN
23925                 WID2=WIDS(KFC2,4)
23926               ELSE
23927                 WID2=WIDS(KFC2,5)
23928               ENDIF
23929               IF(KFD1.GT.0) THEN
23930                 WID2=WID2*WIDS(KFC1,2)
23931               ELSEIF(KFD1.LT.0) THEN
23932                 WID2=WID2*WIDS(KFC1,3)
23933               ENDIF
23934             ELSEIF(KFD3.EQ.-KFD2) THEN
23935               WID2=WIDS(KFC2,1)
23936               IF(KFD1.GT.0) THEN
23937                 WID2=WID2*WIDS(KFC1,2)
23938               ELSEIF(KFD1.LT.0) THEN
23939                 WID2=WID2*WIDS(KFC1,3)
23940               ENDIF
23941             ELSE
23942               IF(KFD1.GT.0) THEN
23943                 WID2=WIDS(KFC1,2)
23944               ELSE
23945                 WID2=WIDS(KFC1,3)
23946               ENDIF
23947               IF(KFD2.GT.0) THEN
23948                 WID2=WID2*WIDS(KFC2,2)
23949               ELSE
23950                 WID2=WID2*WIDS(KFC2,3)
23951               ENDIF
23952               IF(KFD3.GT.0) THEN
23953                 WID2=WID2*WIDS(KFC3,2)
23954               ELSEIF(KFD3.LT.0) THEN
23955                 WID2=WID2*WIDS(KFC3,3)
23956               ENDIF
23957             ENDIF
23958  
23959 C...Store effective widths according to case.
23960             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
23961             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
23962             WDTE(I,0)=WDTE(I,MDME(IDC,1))
23963             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
23964           ENDIF
23965   120   CONTINUE
23966 C...Return.
23967         MINT(61)=0
23968         MINT(62)=0
23969         MINT(63)=0
23970         RETURN
23971       ENDIF
23972  
23973 C...Here begins detailed dynamical calculation of resonance widths.
23974 C...Shared treatment of Higgs states.
23975       KFHIGG=25
23976       IHIGG=1
23977       IF(KFLA.EQ.35.OR.KFLA.EQ.36) THEN
23978         KFHIGG=KFLA
23979         IHIGG=KFLA-33
23980       ENDIF
23981  
23982 C...Common electroweak and strong constants.
23983       XW=PARU(102)
23984       XWV=XW
23985       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
23986       XW1=1D0-XW
23987       AEM=PYALEM(SH)
23988       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
23989       AS=PYALPS(SH)
23990       RADC=1D0+AS/PARU(1)
23991  
23992       IF(KFLA.EQ.6) THEN
23993 C...t quark.
23994         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
23995         RADCT=1D0-2.5D0*AS/PARU(1)
23996         DO 140 I=1,MDCY(KC,3)
23997           IDC=I+MDCY(KC,2)-1
23998           IF(MDME(IDC,1).LT.0) GOTO 140
23999           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24000           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24001           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
24002           WID2=1D0
24003           IF(I.GE.4.AND.I.LE.7) THEN
24004 C...t -> W + q; including approximate QCD correction factor.
24005             WDTP(I)=FAC*VCKM(3,I-3)*RADCT*
24006      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24007      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24008             IF(KFLR.GT.0) THEN
24009               WID2=WIDS(24,2)
24010               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
24011             ELSE
24012               WID2=WIDS(24,3)
24013               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
24014             ENDIF
24015           ELSEIF(I.EQ.9) THEN
24016 C...t -> H + b.
24017             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
24018             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24019      &      ((1D0+RM2-RM1)*(RM2R*PARU(141)**2+1D0/PARU(141)**2)+
24020      &      4D0*SQRT(RM2R*RM2))
24021             WID2=WIDS(37,2)
24022             IF(KFLR.LT.0) WID2=WIDS(37,3)
24023 CMRENNA++
24024           ELSEIF(I.GE.10.AND.I.LE.13.AND.IMSS(1).NE.0) THEN
24025 C...t -> ~t + ~chi_i0, i = 1, 2, 3 or 4.
24026             BETA=ATAN(RMSS(5))
24027             SINB=SIN(BETA)
24028             TANW=SQRT(PARU(102)/(1D0-PARU(102)))
24029             ET=KCHG(6,1)/3D0
24030             T3L=SIGN(0.5D0,ET)
24031             KFC1=PYCOMP(KFDP(IDC,1))
24032             KFC2=PYCOMP(KFDP(IDC,2))
24033             PMNCHI=PMAS(KFC1,1)
24034             PMSTOP=PMAS(KFC2,1)
24035             IF(SHR.GT.PMNCHI+PMSTOP) THEN
24036               IZ=I-9
24037               DO 130 IK=1,4
24038                 ZMIXC(IZ,IK)=DCMPLX(ZMIX(IZ,IK),ZMIXI(IZ,IK))
24039   130         CONTINUE
24040               AL=SHR*DCONJG(ZMIXC(IZ,4))/(2.0D0*PMAS(24,1)*SINB)
24041               AR=-ET*ZMIXC(IZ,1)*TANW
24042               BL=T3L*(ZMIXC(IZ,2)-ZMIXC(IZ,1)*TANW)-AR
24043               BR=AL
24044               FL=SFMIX(6,1)*AL+SFMIX(6,2)*AR
24045               FR=SFMIX(6,1)*BL+SFMIX(6,2)*BR
24046               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
24047      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
24048               WDTP(I)=(0.5D0*PYALEM(SH)/PARU(102))*PCM*
24049      &        ((ABS(FL)**2+ABS(FR)**2)*(SH+PMNCHI**2-PMSTOP**2)+
24050      &        SMZ(IZ)*4D0*SHR*DBLE(FL*DCONJG(FR)))/SH
24051               IF(KFLR.GT.0) THEN
24052                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
24053               ELSE
24054                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
24055               ENDIF
24056             ENDIF
24057           ELSEIF(I.EQ.14.AND.IMSS(1).NE.0) THEN
24058 C...t -> ~g + ~t
24059             KFC1=PYCOMP(KFDP(IDC,1))
24060             KFC2=PYCOMP(KFDP(IDC,2))
24061             PMNCHI=PMAS(KFC1,1)
24062             PMSTOP=PMAS(KFC2,1)
24063             IF(SHR.GT.PMNCHI+PMSTOP) THEN
24064               RL=SFMIX(6,1)
24065               RR=-SFMIX(6,2)
24066               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
24067      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
24068               WDTP(I)=4D0/3D0*0.5D0*PYALPS(SH)*PCM*((RL**2+RR**2)*
24069      &        (SH+PMNCHI**2-PMSTOP**2)+PMNCHI*4D0*SHR*RL*RR)/SH
24070               IF(KFLR.GT.0) THEN
24071                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
24072               ELSE
24073                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
24074               ENDIF
24075             ENDIF
24076           ELSEIF(I.EQ.15.AND.IMSS(1).NE.0) THEN
24077 C...t -> ~gravitino + ~t
24078             XMP2=RMSS(29)**2
24079             KFC1=PYCOMP(KFDP(IDC,1))
24080             XMGR2=PMAS(KFC1,1)**2
24081             WDTP(I)=SH**2*SHR/(96D0*PARU(1)*XMP2*XMGR2)*(1D0-RM2)**4
24082             KFC2=PYCOMP(KFDP(IDC,2))
24083             WID2=WIDS(KFC2,2)
24084             IF(KFLR.LT.0) WID2=WIDS(KFC2,3)
24085 CMRENNA--
24086           ENDIF
24087           WDTP(I)=FUDGE*WDTP(I)
24088           WDTP(0)=WDTP(0)+WDTP(I)
24089           IF(MDME(IDC,1).GT.0) THEN
24090             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24091             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24092             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24093             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24094           ENDIF
24095   140   CONTINUE
24096  
24097       ELSEIF(KFLA.EQ.7) THEN
24098 C...b' quark.
24099         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24100         DO 150 I=1,MDCY(KC,3)
24101           IDC=I+MDCY(KC,2)-1
24102           IF(MDME(IDC,1).LT.0) GOTO 150
24103           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24104           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24105           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 150
24106           WID2=1D0
24107           IF(I.GE.4.AND.I.LE.7) THEN
24108 C...b' -> W + q.
24109             WDTP(I)=FAC*VCKM(I-3,4)*
24110      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24111      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24112             IF(KFLR.GT.0) THEN
24113               WID2=WIDS(24,3)
24114               IF(I.EQ.6) WID2=WID2*WIDS(6,2)
24115               IF(I.EQ.7) WID2=WID2*WIDS(8,2)
24116             ELSE
24117               WID2=WIDS(24,2)
24118               IF(I.EQ.6) WID2=WID2*WIDS(6,3)
24119               IF(I.EQ.7) WID2=WID2*WIDS(8,3)
24120             ENDIF
24121             WID2=WIDS(24,3)
24122             IF(KFLR.LT.0) WID2=WIDS(24,2)
24123           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
24124 C...b' -> H + q.
24125             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24126      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
24127             IF(KFLR.GT.0) THEN
24128               WID2=WIDS(37,3)
24129               IF(I.EQ.10) WID2=WID2*WIDS(6,2)
24130             ELSE
24131               WID2=WIDS(37,2)
24132               IF(I.EQ.10) WID2=WID2*WIDS(6,3)
24133             ENDIF
24134           ENDIF
24135           WDTP(I)=FUDGE*WDTP(I)
24136           WDTP(0)=WDTP(0)+WDTP(I)
24137           IF(MDME(IDC,1).GT.0) THEN
24138             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24139             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24140             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24141             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24142           ENDIF
24143   150   CONTINUE
24144  
24145       ELSEIF(KFLA.EQ.8) THEN
24146 C...t' quark.
24147         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24148         DO 160 I=1,MDCY(KC,3)
24149           IDC=I+MDCY(KC,2)-1
24150           IF(MDME(IDC,1).LT.0) GOTO 160
24151           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24152           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24153           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 160
24154           WID2=1D0
24155           IF(I.GE.4.AND.I.LE.7) THEN
24156 C...t' -> W + q.
24157             WDTP(I)=FAC*VCKM(4,I-3)*
24158      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24159      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24160             IF(KFLR.GT.0) THEN
24161               WID2=WIDS(24,2)
24162               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
24163             ELSE
24164               WID2=WIDS(24,3)
24165               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
24166             ENDIF
24167           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
24168 C...t' -> H + q.
24169             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24170      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
24171             IF(KFLR.GT.0) THEN
24172               WID2=WIDS(37,2)
24173               IF(I.EQ.10) WID2=WID2*WIDS(7,2)
24174             ELSE
24175               WID2=WIDS(37,3)
24176               IF(I.EQ.10) WID2=WID2*WIDS(7,3)
24177             ENDIF
24178           ENDIF
24179           WDTP(I)=FUDGE*WDTP(I)
24180           WDTP(0)=WDTP(0)+WDTP(I)
24181           IF(MDME(IDC,1).GT.0) THEN
24182             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24183             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24184             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24185             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24186           ENDIF
24187   160   CONTINUE
24188  
24189       ELSEIF(KFLA.EQ.17) THEN
24190 C...tau' lepton.
24191         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24192         DO 170 I=1,MDCY(KC,3)
24193           IDC=I+MDCY(KC,2)-1
24194           IF(MDME(IDC,1).LT.0) GOTO 170
24195           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24196           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24197           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 170
24198           WID2=1D0
24199           IF(I.EQ.3) THEN
24200 C...tau' -> W + nu'_tau.
24201             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24202      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24203             IF(KFLR.GT.0) THEN
24204               WID2=WIDS(24,3)
24205               WID2=WID2*WIDS(18,2)
24206             ELSE
24207               WID2=WIDS(24,2)
24208               WID2=WID2*WIDS(18,3)
24209             ENDIF
24210           ELSEIF(I.EQ.5) THEN
24211 C...tau' -> H + nu'_tau.
24212             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24213      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
24214             IF(KFLR.GT.0) THEN
24215               WID2=WIDS(37,3)
24216               WID2=WID2*WIDS(18,2)
24217             ELSE
24218               WID2=WIDS(37,2)
24219               WID2=WID2*WIDS(18,3)
24220             ENDIF
24221           ENDIF
24222           WDTP(I)=FUDGE*WDTP(I)
24223           WDTP(0)=WDTP(0)+WDTP(I)
24224           IF(MDME(IDC,1).GT.0) THEN
24225             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24226             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24227             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24228             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24229           ENDIF
24230   170   CONTINUE
24231  
24232       ELSEIF(KFLA.EQ.18) THEN
24233 C...nu'_tau neutrino.
24234         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24235         DO 180 I=1,MDCY(KC,3)
24236           IDC=I+MDCY(KC,2)-1
24237           IF(MDME(IDC,1).LT.0) GOTO 180
24238           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24239           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24240           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 180
24241           WID2=1D0
24242           IF(I.EQ.2) THEN
24243 C...nu'_tau -> W + tau'.
24244             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24245      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24246             IF(KFLR.GT.0) THEN
24247               WID2=WIDS(24,2)
24248               WID2=WID2*WIDS(17,2)
24249             ELSE
24250               WID2=WIDS(24,3)
24251               WID2=WID2*WIDS(17,3)
24252             ENDIF
24253           ELSEIF(I.EQ.3) THEN
24254 C...nu'_tau -> H + tau'.
24255             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24256      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
24257             IF(KFLR.GT.0) THEN
24258               WID2=WIDS(37,2)
24259               WID2=WID2*WIDS(17,2)
24260             ELSE
24261               WID2=WIDS(37,3)
24262               WID2=WID2*WIDS(17,3)
24263             ENDIF
24264           ENDIF
24265           WDTP(I)=FUDGE*WDTP(I)
24266           WDTP(0)=WDTP(0)+WDTP(I)
24267           IF(MDME(IDC,1).GT.0) THEN
24268             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24269             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24270             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24271             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24272           ENDIF
24273   180   CONTINUE
24274  
24275       ELSEIF(KFLA.EQ.21) THEN
24276 C...QCD:
24277 C***Note that widths are not given in dimensional quantities here.
24278         DO 190 I=1,MDCY(KC,3)
24279           IDC=I+MDCY(KC,2)-1
24280           IF(MDME(IDC,1).LT.0) GOTO 190
24281           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24282           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24283           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 190
24284           WID2=1D0
24285           IF(I.LE.8) THEN
24286 C...QCD -> q + qbar
24287             WDTP(I)=(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24288             IF(I.EQ.6) WID2=WIDS(6,1)
24289             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24290           ENDIF
24291           WDTP(I)=FUDGE*WDTP(I)
24292           WDTP(0)=WDTP(0)+WDTP(I)
24293           IF(MDME(IDC,1).GT.0) THEN
24294             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24295             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24296             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24297             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24298           ENDIF
24299   190   CONTINUE
24300  
24301       ELSEIF(KFLA.EQ.22) THEN
24302 C...QED photon.
24303 C***Note that widths are not given in dimensional quantities here.
24304         DO 200 I=1,MDCY(KC,3)
24305           IDC=I+MDCY(KC,2)-1
24306           IF(MDME(IDC,1).LT.0) GOTO 200
24307           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24308           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24309           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 200
24310           WID2=1D0
24311           IF(I.LE.8) THEN
24312 C...QED -> q + qbar.
24313             EF=KCHG(I,1)/3D0
24314             FCOF=3D0*RADC
24315             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
24316             WDTP(I)=FCOF*EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24317             IF(I.EQ.6) WID2=WIDS(6,1)
24318             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24319           ELSEIF(I.LE.12) THEN
24320 C...QED -> l+ + l-.
24321             EF=KCHG(9+2*(I-8),1)/3D0
24322             WDTP(I)=EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24323             IF(I.EQ.12) WID2=WIDS(17,1)
24324           ENDIF
24325           WDTP(I)=FUDGE*WDTP(I)
24326           WDTP(0)=WDTP(0)+WDTP(I)
24327           IF(MDME(IDC,1).GT.0) THEN
24328             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24329             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24330             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24331             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24332           ENDIF
24333   200   CONTINUE
24334  
24335       ELSEIF(KFLA.EQ.23) THEN
24336 C...Z0:
24337         ICASE=1
24338         XWC=1D0/(16D0*XW*XW1)
24339         FAC=(AEM*XWC/3D0)*SHR
24340   210   CONTINUE
24341         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
24342           VINT(111)=0D0
24343           VINT(112)=0D0
24344           VINT(114)=0D0
24345         ENDIF
24346         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24347           KFI=IABS(MINT(15))
24348           IF(KFI.GT.20) KFI=IABS(MINT(16))
24349           EI=KCHG(KFI,1)/3D0
24350           AI=SIGN(1D0,EI)
24351           VI=AI-4D0*EI*XWV
24352           SQMZ=PMAS(23,1)**2
24353           HZ=SHR*WDTP(0)
24354           IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=1D0
24355           IF(MSTP(43).EQ.3) VINT(112)=
24356      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
24357           IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
24358      &    XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
24359         ENDIF
24360         DO 220 I=1,MDCY(KC,3)
24361           IDC=I+MDCY(KC,2)-1
24362           IF(MDME(IDC,1).LT.0) GOTO 220
24363           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24364           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24365           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 220
24366           WID2=1D0
24367           IF(I.LE.8) THEN
24368 C...Z0 -> q + qbar
24369             EF=KCHG(I,1)/3D0
24370             AF=SIGN(1D0,EF+0.1D0)
24371             VF=AF-4D0*EF*XWV
24372             FCOF=3D0*RADC
24373             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
24374             IF(I.EQ.6) WID2=WIDS(6,1)
24375             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24376           ELSEIF(I.LE.16) THEN
24377 C...Z0 -> l+ + l-, nu + nubar
24378             EF=KCHG(I+2,1)/3D0
24379             AF=SIGN(1D0,EF+0.1D0)
24380             VF=AF-4D0*EF*XWV
24381             FCOF=1D0
24382             IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
24383           ENDIF
24384           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
24385           IF(ICASE.EQ.1) THEN
24386             WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
24387      &      BE34
24388           ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24389             WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
24390      &      EF*VF+(VI**2+AI**2)*VINT(114)*VF**2)*(1D0+2D0*RM1)+
24391      &      (VI**2+AI**2)*VINT(114)*AF**2*(1D0-4D0*RM1))*BE34
24392           ELSEIF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
24393             FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
24394             FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
24395             FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
24396           ENDIF
24397           IF(ICASE.EQ.1) WDTP(I)=FUDGE*WDTP(I)
24398           IF(ICASE.EQ.1) WDTP(0)=WDTP(0)+WDTP(I)
24399           IF(MDME(IDC,1).GT.0) THEN
24400             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
24401      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
24402               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24403               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
24404      &        WDTE(I,MDME(IDC,1))
24405               WDTE(I,0)=WDTE(I,MDME(IDC,1))
24406               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24407             ENDIF
24408             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
24409               IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=
24410      &        VINT(111)+FGGF*WID2
24411               IF(MSTP(43).EQ.3) VINT(112)=VINT(112)+FGZF*WID2
24412               IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
24413      &        VINT(114)+FZZF*WID2
24414             ENDIF
24415           ENDIF
24416   220   CONTINUE
24417         IF(MINT(61).GE.1) ICASE=3-ICASE
24418         IF(ICASE.EQ.2) GOTO 210
24419  
24420       ELSEIF(KFLA.EQ.24) THEN
24421 C...W+/-:
24422         FAC=(AEM/(24D0*XW))*SHR
24423         DO 230 I=1,MDCY(KC,3)
24424           IDC=I+MDCY(KC,2)-1
24425           IF(MDME(IDC,1).LT.0) GOTO 230
24426           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24427           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24428           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 230
24429           WID2=1D0
24430           IF(I.LE.16) THEN
24431 C...W+/- -> q + qbar'
24432             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
24433             IF(KFLR.GT.0) THEN
24434               IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
24435               IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
24436               IF(I.GE.13) WID2=WID2*WIDS(7,3)
24437             ELSE
24438               IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
24439               IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
24440               IF(I.GE.13) WID2=WID2*WIDS(7,2)
24441             ENDIF
24442           ELSEIF(I.LE.20) THEN
24443 C...W+/- -> l+/- + nu
24444             FCOF=1D0
24445             IF(KFLR.GT.0) THEN
24446               IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
24447             ELSE
24448               IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
24449             ENDIF
24450           ENDIF
24451           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
24452      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
24453           WDTP(I)=FUDGE*WDTP(I)
24454           WDTP(0)=WDTP(0)+WDTP(I)
24455           IF(MDME(IDC,1).GT.0) THEN
24456             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24457             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24458             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24459             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24460           ENDIF
24461   230   CONTINUE
24462  
24463       ELSEIF(KFLA.EQ.25.OR.KFLA.EQ.35.OR.KFLA.EQ.36) THEN
24464 C...h0 (or H0, or A0):
24465         SHFS=SH
24466         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
24467         DO 270 I=1,MDCY(KFHIGG,3)
24468           IDC=I+MDCY(KFHIGG,2)-1
24469           IF(MDME(IDC,1).LT.0) GOTO 270
24470           KFC1=PYCOMP(KFDP(IDC,1))
24471           KFC2=PYCOMP(KFDP(IDC,2))
24472           RM1=PMAS(KFC1,1)**2/SH
24473           RM2=PMAS(KFC2,1)**2/SH
24474           IF(I.NE.16.AND.I.NE.17.AND.SQRT(RM1)+SQRT(RM2).GT.1D0)
24475      &    GOTO 270
24476           WID2=1D0
24477  
24478           IF(I.LE.8) THEN
24479 C...h0 -> q + qbar
24480             WDTP(I)=FAC*3D0*(PYMRUN(KFDP(IDC,1),SH)**2/SHFS)*
24481      &      SQRT(MAX(0D0,1D0-4D0*RM1))*RADC
24482 C...A0 behaves like beta, ho and H0 like beta**3.
24483             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
24484             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24485               IF(MOD(I,2).EQ.1) WDTP(I)=WDTP(I)*PARU(151+10*IHIGG)**2
24486               IF(MOD(I,2).EQ.0) WDTP(I)=WDTP(I)*PARU(152+10*IHIGG)**2
24487               IF(IMSS(1).NE.0.AND.KFC1.EQ.5) THEN
24488                 WDTP(I)=WDTP(I)/(1D0+RMSS(41))**2
24489                 IF(IHIGG.NE.3) THEN
24490                   WDTP(I)=WDTP(I)*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
24491      &            PARU(151+10*IHIGG))**2
24492                 ENDIF
24493               ENDIF
24494             ENDIF
24495             IF(I.EQ.6) WID2=WIDS(6,1)
24496             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24497           ELSEIF(I.LE.12) THEN
24498 C...h0 -> l+ + l-
24499             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))*(SH/SHFS)
24500 C...A0 behaves like beta, ho and H0 like beta**3.
24501             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
24502             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
24503      &      PARU(153+10*IHIGG)**2
24504             IF(I.EQ.12) WID2=WIDS(17,1)
24505  
24506           ELSEIF(I.EQ.13) THEN
24507 C...h0 -> g + g; quark loop contribution only
24508             ETARE=0D0
24509             ETAIM=0D0
24510             DO 240 J=1,2*MSTP(1)
24511               EPS=(2D0*PMAS(J,1))**2/SH
24512 C...Loop integral; function of eps=4m^2/shat; different for A0.
24513               IF(EPS.LE.1D0) THEN
24514                 IF(EPS.GT.1D-4) THEN
24515                   ROOT=SQRT(1D0-EPS)
24516                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
24517                 ELSE
24518                   RLN=LOG(4D0/EPS-2D0)
24519                 ENDIF
24520                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
24521                 PHIIM=0.5D0*PARU(1)*RLN
24522               ELSE
24523                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
24524                 PHIIM=0D0
24525               ENDIF
24526               IF(IHIGG.LE.2) THEN
24527                 ETAREJ=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
24528                 ETAIMJ=-0.5D0*EPS*(1D0-EPS)*PHIIM
24529               ELSE
24530                 ETAREJ=-0.5D0*EPS*PHIRE
24531                 ETAIMJ=-0.5D0*EPS*PHIIM
24532               ENDIF
24533 C...Couplings (=1 for standard model Higgs).
24534               IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24535                 IF(MOD(J,2).EQ.1) THEN
24536                   ETAREJ=ETAREJ*PARU(151+10*IHIGG)
24537                   ETAIMJ=ETAIMJ*PARU(151+10*IHIGG)
24538                 ELSE
24539                   ETAREJ=ETAREJ*PARU(152+10*IHIGG)
24540                   ETAIMJ=ETAIMJ*PARU(152+10*IHIGG)
24541                 ENDIF
24542               ENDIF
24543               ETARE=ETARE+ETAREJ
24544               ETAIM=ETAIM+ETAIMJ
24545   240       CONTINUE
24546             ETA2=ETARE**2+ETAIM**2
24547             WDTP(I)=FAC*(AS/PARU(1))**2*ETA2
24548  
24549           ELSEIF(I.EQ.14) THEN
24550 C...h0 -> gamma + gamma; quark, lepton, W+- and H+- loop contributions
24551             ETARE=0D0
24552             ETAIM=0D0
24553             JMAX=3*MSTP(1)+1
24554             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
24555             DO 250 J=1,JMAX
24556               IF(J.LE.2*MSTP(1)) THEN
24557                 EJ=KCHG(J,1)/3D0
24558                 EPS=(2D0*PMAS(J,1))**2/SH
24559               ELSEIF(J.LE.3*MSTP(1)) THEN
24560                 JL=2*(J-2*MSTP(1))-1
24561                 EJ=KCHG(10+JL,1)/3D0
24562                 EPS=(2D0*PMAS(10+JL,1))**2/SH
24563               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
24564                 EPS=(2D0*PMAS(24,1))**2/SH
24565               ELSE
24566                 EPS=(2D0*PMAS(37,1))**2/SH
24567               ENDIF
24568 C...Loop integral; function of eps=4m^2/shat.
24569               IF(EPS.LE.1D0) THEN
24570                 IF(EPS.GT.1D-4) THEN
24571                   ROOT=SQRT(1D0-EPS)
24572                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
24573                 ELSE
24574                   RLN=LOG(4D0/EPS-2D0)
24575                 ENDIF
24576                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
24577                 PHIIM=0.5D0*PARU(1)*RLN
24578               ELSE
24579                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
24580                 PHIIM=0D0
24581               ENDIF
24582               IF(J.LE.3*MSTP(1)) THEN
24583 C...Fermion loops: loop integral different for A0; charges.
24584                 IF(IHIGG.LE.2) THEN
24585                   PHIPRE=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
24586                   PHIPIM=-0.5D0*EPS*(1D0-EPS)*PHIIM
24587                 ELSE
24588                   PHIPRE=-0.5D0*EPS*PHIRE
24589                   PHIPIM=-0.5D0*EPS*PHIIM
24590                 ENDIF
24591                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
24592                   EJC=3D0*EJ**2
24593                   EJH=PARU(151+10*IHIGG)
24594                 ELSEIF(J.LE.2*MSTP(1)) THEN
24595                   EJC=3D0*EJ**2
24596                   EJH=PARU(152+10*IHIGG)
24597                 ELSE
24598                   EJC=EJ**2
24599                   EJH=PARU(153+10*IHIGG)
24600                 ENDIF
24601                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
24602                 ETAREJ=EJC*EJH*PHIPRE
24603                 ETAIMJ=EJC*EJH*PHIPIM
24604               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
24605 C...W loops: loop integral and charges.
24606                 ETAREJ=0.5D0+0.75D0*EPS*(1D0+(2D0-EPS)*PHIRE)
24607                 ETAIMJ=0.75D0*EPS*(2D0-EPS)*PHIIM
24608                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24609                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
24610                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
24611                 ENDIF
24612               ELSE
24613 C...Charged H loops: loop integral and charges.
24614                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*
24615      &          PARU(158+10*IHIGG+2*(IHIGG/3))
24616                 ETAREJ=EPS*(1D0-EPS*PHIRE)*FACHHH
24617                 ETAIMJ=-EPS**2*PHIIM*FACHHH
24618               ENDIF
24619               ETARE=ETARE+ETAREJ
24620               ETAIM=ETAIM+ETAIMJ
24621   250       CONTINUE
24622             ETA2=ETARE**2+ETAIM**2
24623             WDTP(I)=FAC*(AEM/PARU(1))**2*0.5D0*ETA2
24624  
24625           ELSEIF(I.EQ.15) THEN
24626 C...h0 -> gamma + Z0; quark, lepton, W and H+- loop contributions
24627             ETARE=0D0
24628             ETAIM=0D0
24629             JMAX=3*MSTP(1)+1
24630             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
24631             DO 260 J=1,JMAX
24632               IF(J.LE.2*MSTP(1)) THEN
24633                 EJ=KCHG(J,1)/3D0
24634                 AJ=SIGN(1D0,EJ+0.1D0)
24635                 VJ=AJ-4D0*EJ*XWV
24636                 EPS=(2D0*PMAS(J,1))**2/SH
24637                 EPSP=(2D0*PMAS(J,1)/PMAS(23,1))**2
24638               ELSEIF(J.LE.3*MSTP(1)) THEN
24639                 JL=2*(J-2*MSTP(1))-1
24640                 EJ=KCHG(10+JL,1)/3D0
24641                 AJ=SIGN(1D0,EJ+0.1D0)
24642                 VJ=AJ-4D0*EJ*XWV
24643                 EPS=(2D0*PMAS(10+JL,1))**2/SH
24644                 EPSP=(2D0*PMAS(10+JL,1)/PMAS(23,1))**2
24645               ELSE
24646                 EPS=(2D0*PMAS(24,1))**2/SH
24647                 EPSP=(2D0*PMAS(24,1)/PMAS(23,1))**2
24648               ENDIF
24649 C...Loop integrals; functions of eps=4m^2/shat and eps'=4m^2/m_Z^2.
24650               IF(EPS.LE.1D0) THEN
24651                 ROOT=SQRT(1D0-EPS)
24652                 IF(EPS.GT.1D-4) THEN
24653                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
24654                 ELSE
24655                   RLN=LOG(4D0/EPS-2D0)
24656                 ENDIF
24657                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
24658                 PHIIM=0.5D0*PARU(1)*RLN
24659                 PSIRE=0.5D0*ROOT*RLN
24660                 PSIIM=-0.5D0*ROOT*PARU(1)
24661               ELSE
24662                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
24663                 PHIIM=0D0
24664                 PSIRE=SQRT(EPS-1D0)*ASIN(1D0/SQRT(EPS))
24665                 PSIIM=0D0
24666               ENDIF
24667               IF(EPSP.LE.1D0) THEN
24668                 ROOT=SQRT(1D0-EPSP)
24669                 IF(EPSP.GT.1D-4) THEN
24670                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
24671                 ELSE
24672                   RLN=LOG(4D0/EPSP-2D0)
24673                 ENDIF
24674                 PHIREP=-0.25D0*(RLN**2-PARU(1)**2)
24675                 PHIIMP=0.5D0*PARU(1)*RLN
24676                 PSIREP=0.5D0*ROOT*RLN
24677                 PSIIMP=-0.5D0*ROOT*PARU(1)
24678               ELSE
24679                 PHIREP=(ASIN(1D0/SQRT(EPSP)))**2
24680                 PHIIMP=0D0
24681                 PSIREP=SQRT(EPSP-1D0)*ASIN(1D0/SQRT(EPSP))
24682                 PSIIMP=0D0
24683               ENDIF
24684               FXYRE=EPS*EPSP/(8D0*(EPS-EPSP))*(1D0+EPS*EPSP/(EPS-EPSP)*
24685      &        (PHIRE-PHIREP)+2D0*EPS/(EPS-EPSP)*(PSIRE-PSIREP))
24686               FXYIM=EPS**2*EPSP/(8D0*(EPS-EPSP)**2)*
24687      &        (EPSP*(PHIIM-PHIIMP)+2D0*(PSIIM-PSIIMP))
24688               F1RE=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIRE-PHIREP)
24689               F1IM=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIIM-PHIIMP)
24690               IF(J.LE.3*MSTP(1)) THEN
24691 C...Fermion loops: loop integral different for A0; charges.
24692                 IF(IHIGG.EQ.3) FXYRE=0D0
24693                 IF(IHIGG.EQ.3) FXYIM=0D0
24694                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
24695                   EJC=-3D0*EJ*VJ
24696                   EJH=PARU(151+10*IHIGG)
24697                 ELSEIF(J.LE.2*MSTP(1)) THEN
24698                   EJC=-3D0*EJ*VJ
24699                   EJH=PARU(152+10*IHIGG)
24700                 ELSE
24701                   EJC=-EJ*VJ
24702                   EJH=PARU(153+10*IHIGG)
24703                 ENDIF
24704                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
24705                 ETAREJ=EJC*EJH*(FXYRE-0.25D0*F1RE)
24706                 ETAIMJ=EJC*EJH*(FXYIM-0.25D0*F1IM)
24707               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
24708 C...W loops: loop integral and charges.
24709                 HEPS=(1D0+2D0/EPS)*XW/XW1-(5D0+2D0/EPS)
24710                 ETAREJ=-XW1*((3D0-XW/XW1)*F1RE+HEPS*FXYRE)
24711                 ETAIMJ=-XW1*((3D0-XW/XW1)*F1IM+HEPS*FXYIM)
24712                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24713                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
24714                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
24715                 ENDIF
24716               ELSE
24717 C...Charged H loops: loop integral and charges.
24718                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*(1D0-2D0*XW)*
24719      &          PARU(158+10*IHIGG+2*(IHIGG/3))
24720                 ETAREJ=FACHHH*FXYRE
24721                 ETAIMJ=FACHHH*FXYIM
24722               ENDIF
24723               ETARE=ETARE+ETAREJ
24724               ETAIM=ETAIM+ETAIMJ
24725   260       CONTINUE
24726             ETA2=(ETARE**2+ETAIM**2)/(XW*XW1)
24727             WDTP(I)=FAC*(AEM/PARU(1))**2*(1D0-PMAS(23,1)**2/SH)**3*ETA2
24728             WID2=WIDS(23,2)
24729  
24730           ELSEIF(I.LE.17) THEN
24731 C...h0 -> Z0 + Z0, W+ + W-
24732             PM1=PMAS(IABS(KFDP(IDC,1)),1)
24733             PG1=PMAS(IABS(KFDP(IDC,1)),2)
24734             IF(MINT(62).GE.1) THEN
24735               IF(MSTP(42).EQ.0.OR.(4D0*(PM1+10D0*PG1)**2.LT.SH.AND.
24736      &        CKIN(46).LT.CKIN(45).AND.CKIN(48).LT.CKIN(47).AND.
24737      &        MAX(CKIN(45),CKIN(47)).LT.PM1-10D0*PG1)) THEN
24738                 MOFSV(IHIGG,I-15)=0
24739                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
24740      &          1D0-4D0*RM1))
24741                 WID2=1D0
24742               ELSE
24743                 MOFSV(IHIGG,I-15)=1
24744                 RMAS=SQRT(MAX(0D0,SH))
24745                 CALL PYOFSH(1,KFLA,KFDP(IDC,1),KFDP(IDC,2),RMAS,WIDW,
24746      &          WID2)
24747                 WIDWSV(IHIGG,I-15)=WIDW
24748                 WID2SV(IHIGG,I-15)=WID2
24749               ENDIF
24750             ELSE
24751               IF(MOFSV(IHIGG,I-15).EQ.0) THEN
24752                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
24753      &          1D0-4D0*RM1))
24754                 WID2=1D0
24755               ELSE
24756                 WIDW=WIDWSV(IHIGG,I-15)
24757                 WID2=WID2SV(IHIGG,I-15)
24758               ENDIF
24759             ENDIF
24760             WDTP(I)=FAC*WIDW/(2D0*(18-I))
24761             IF(MSTP(49).NE.0) WDTP(I)=WDTP(I)*PMAS(KFHIGG,1)**2/SHFS
24762             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
24763      &      PARU(138+I+10*IHIGG)**2
24764             WID2=WID2*WIDS(7+I,1)
24765  
24766           ELSEIF(I.EQ.18.AND.IHIGG.GE.2) THEN
24767 C...H0 -> Z0 + h0, A0-> Z0 + h0
24768             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
24769      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
24770             IF(IHIGG.EQ.2) THEN
24771              WDTP(I)=WDTP(I)*PARU(179)**2
24772             ELSEIF(IHIGG.EQ.3) THEN
24773              WDTP(I)=WDTP(I)*PARU(186)**2
24774             ENDIF
24775             WID2=WIDS(23,2)*WIDS(25,2)
24776  
24777           ELSEIF(I.EQ.19.AND.IHIGG.GE.2) THEN
24778 C...H0 -> h0 + h0, A0-> h0 + h0
24779             WDTP(I)=FAC*0.25D0*
24780      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
24781             IF(IHIGG.EQ.2) THEN
24782              WDTP(I)=WDTP(I)*PARU(176)**2
24783             ELSEIF(IHIGG.EQ.3) THEN
24784              WDTP(I)=WDTP(I)*PARU(169)**2
24785             ENDIF
24786             WID2=WIDS(25,1)
24787           ELSEIF((I.EQ.20.OR.I.EQ.21).AND.IHIGG.GE.2) THEN
24788 C...H0 -> W+/- + H-/+, A0 -> W+/- + H-/+
24789             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
24790      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
24791      &      *PARU(195+IHIGG)**2
24792             IF(I.EQ.20) THEN
24793               WID2=WIDS(24,2)*WIDS(37,3)
24794             ELSEIF(I.EQ.21) THEN
24795               WID2=WIDS(24,3)*WIDS(37,2)
24796             ENDIF
24797  
24798           ELSEIF(I.EQ.22.AND.IHIGG.EQ.2) THEN
24799 C...H0 -> Z0 + A0.
24800             WDTP(I)=FAC*0.5D0*PARU(187)**2*SQRT(MAX(0D0,
24801      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
24802             WID2=WIDS(36,2)*WIDS(23,2)
24803  
24804           ELSEIF(I.EQ.23.AND.IHIGG.EQ.2) THEN
24805 C...H0 -> h0 + A0.
24806             WDTP(I)=FAC*0.5D0*PARU(180)**2*
24807      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
24808             WID2=WIDS(25,2)*WIDS(36,2)
24809  
24810           ELSEIF(I.EQ.24.AND.IHIGG.EQ.2) THEN
24811 C...H0 -> A0 + A0
24812             WDTP(I)=FAC*0.25D0*PARU(177)**2*
24813      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
24814             WID2=WIDS(36,1)
24815  
24816 CMRENNA++
24817           ELSE
24818 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
24819             RM10=RM1*SH/PMR**2
24820             RM20=RM2*SH/PMR**2
24821             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
24822             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
24823             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
24824               WFAC=0D0
24825             ELSE
24826               WFAC=WFAC/WFAC0
24827             ENDIF
24828             WDTP(I)=PMAS(KFLA,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
24829 CMRENNA--
24830             IF(KFC2.EQ.KFC1) THEN
24831               WID2=WIDS(KFC1,1)
24832             ELSE
24833               KSGN1=2
24834               IF(KFDP(IDC,1).LT.0) KSGN1=3
24835               KSGN2=2
24836               IF(KFDP(IDC,2).LT.0) KSGN2=3
24837               WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
24838             ENDIF
24839           ENDIF
24840           WDTP(I)=FUDGE*WDTP(I)
24841           WDTP(0)=WDTP(0)+WDTP(I)
24842           IF(MDME(IDC,1).GT.0) THEN
24843             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24844             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24845             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24846             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24847           ENDIF
24848   270   CONTINUE
24849  
24850       ELSEIF(KFLA.EQ.32) THEN
24851 C...Z'0:
24852         ICASE=1
24853         XWC=1D0/(16D0*XW*XW1)
24854         FAC=(AEM*XWC/3D0)*SHR
24855         VINT(117)=0D0
24856   280   CONTINUE
24857         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
24858           VINT(111)=0D0
24859           VINT(112)=0D0
24860           VINT(113)=0D0
24861           VINT(114)=0D0
24862           VINT(115)=0D0
24863           VINT(116)=0D0
24864         ENDIF
24865         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24866           KFAI=IABS(MINT(15))
24867           EI=KCHG(KFAI,1)/3D0
24868           AI=SIGN(1D0,EI+0.1D0)
24869           VI=AI-4D0*EI*XWV
24870           KFAIC=1
24871           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
24872           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
24873           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
24874           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
24875             VPI=PARU(119+2*KFAIC)
24876             API=PARU(120+2*KFAIC)
24877           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
24878             VPI=PARJ(178+2*KFAIC)
24879             API=PARJ(179+2*KFAIC)
24880           ELSE
24881             VPI=PARJ(186+2*KFAIC)
24882             API=PARJ(187+2*KFAIC)
24883           ENDIF
24884           SQMZ=PMAS(23,1)**2
24885           HZ=SHR*VINT(117)
24886           SQMZP=PMAS(32,1)**2
24887           HZP=SHR*WDTP(0)
24888           IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
24889      &    MSTP(44).EQ.7) VINT(111)=1D0
24890           IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=
24891      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
24892           IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=
24893      &    2D0*XWC*SH*(SH-SQMZP)/((SH-SQMZP)**2+HZP**2)
24894           IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
24895      &    MSTP(44).EQ.7) VINT(114)=XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
24896           IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=
24897      &    2D0*XWC**2*SH**2*((SH-SQMZ)*(SH-SQMZP)+HZ*HZP)/
24898      &    (((SH-SQMZ)**2+HZ**2)*((SH-SQMZP)**2+HZP**2))
24899           IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
24900      &    MSTP(44).EQ.7) VINT(116)=XWC**2*SH**2/((SH-SQMZP)**2+HZP**2)
24901         ENDIF
24902         DO 290 I=1,MDCY(KC,3)
24903           IDC=I+MDCY(KC,2)-1
24904           IF(MDME(IDC,1).LT.0) GOTO 290
24905           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24906           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24907           IF(SQRT(RM1)+SQRT(RM2).GT.1D0.OR.MDME(IDC,1).LT.0) GOTO 290
24908           WID2=1D0
24909           IF(I.LE.16) THEN
24910             IF(I.LE.8) THEN
24911 C...Z'0 -> q + qbar
24912               EF=KCHG(I,1)/3D0
24913               AF=SIGN(1D0,EF+0.1D0)
24914               VF=AF-4D0*EF*XWV
24915               IF(I.LE.2) THEN
24916                 VPF=PARU(123-2*MOD(I,2))
24917                 APF=PARU(124-2*MOD(I,2))
24918               ELSEIF(I.LE.4) THEN
24919                 VPF=PARJ(182-2*MOD(I,2))
24920                 APF=PARJ(183-2*MOD(I,2))
24921               ELSE
24922                 VPF=PARJ(190-2*MOD(I,2))
24923                 APF=PARJ(191-2*MOD(I,2))
24924               ENDIF
24925               FCOF=3D0*RADC
24926               IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
24927      &        PYHFTH(SH,SH*RM1,1D0)
24928               IF(I.EQ.6) WID2=WIDS(6,1)
24929               IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24930             ELSEIF(I.LE.16) THEN
24931 C...Z'0 -> l+ + l-, nu + nubar
24932               EF=KCHG(I+2,1)/3D0
24933               AF=SIGN(1D0,EF+0.1D0)
24934               VF=AF-4D0*EF*XWV
24935               IF(I.LE.10) THEN
24936                 VPF=PARU(127-2*MOD(I,2))
24937                 APF=PARU(128-2*MOD(I,2))
24938               ELSEIF(I.LE.12) THEN
24939                 VPF=PARJ(186-2*MOD(I,2))
24940                 APF=PARJ(187-2*MOD(I,2))
24941               ELSE
24942                 VPF=PARJ(194-2*MOD(I,2))
24943                 APF=PARJ(195-2*MOD(I,2))
24944               ENDIF
24945               FCOF=1D0
24946               IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
24947             ENDIF
24948             BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
24949             IF(ICASE.EQ.1) THEN
24950               WDTPZ=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
24951               WDTP(I)=FAC*FCOF*(VPF**2*(1D0+2D0*RM1)+
24952      &        APF**2*(1D0-4D0*RM1))*BE34
24953             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24954               WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
24955      &        EF*VF+EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
24956      &        VF**2+(VI*VPI+AI*API)*VINT(115)*VF*VPF+(VPI**2+API**2)*
24957      &        VINT(116)*VPF**2)*(1D0+2D0*RM1)+((VI**2+AI**2)*VINT(114)*
24958      &        AF**2+(VI*VPI+AI*API)*VINT(115)*AF*APF+(VPI**2+API**2)*
24959      &        VINT(116)*APF**2)*(1D0-4D0*RM1))*BE34
24960             ELSEIF(MINT(61).EQ.2) THEN
24961               FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
24962               FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
24963               FGZPF=FCOF*EF*VPF*(1D0+2D0*RM1)*BE34
24964               FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
24965               FZZPF=FCOF*(VF*VPF*(1D0+2D0*RM1)+AF*APF*(1D0-4D0*RM1))*
24966      &        BE34
24967               FZPZPF=FCOF*(VPF**2*(1D0+2D0*RM1)+APF**2*(1D0-4D0*RM1))*
24968      &        BE34
24969             ENDIF
24970           ELSEIF(I.EQ.17) THEN
24971 C...Z'0 -> W+ + W-
24972             WDTPZP=PARU(129)**2*XW1**2*
24973      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
24974      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
24975             IF(ICASE.EQ.1) THEN
24976               WDTPZ=0D0
24977               WDTP(I)=FAC*WDTPZP
24978             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24979               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
24980             ELSEIF(MINT(61).EQ.2) THEN
24981               FGGF=0D0
24982               FGZF=0D0
24983               FGZPF=0D0
24984               FZZF=0D0
24985               FZZPF=0D0
24986               FZPZPF=WDTPZP
24987             ENDIF
24988             WID2=WIDS(24,1)
24989           ELSEIF(I.EQ.18) THEN
24990 C...Z'0 -> H+ + H-
24991             CZC=2D0*(1D0-2D0*XW)
24992             BE34C=(1D0-4D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24993             IF(ICASE.EQ.1) THEN
24994               WDTPZ=0.25D0*PARU(142)**2*CZC**2*BE34C
24995               WDTP(I)=FAC*0.25D0*PARU(143)**2*CZC**2*BE34C
24996             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24997               WDTP(I)=FAC*0.25D0*(EI**2*VINT(111)+PARU(142)*EI*VI*
24998      &        VINT(112)*CZC+PARU(143)*EI*VPI*VINT(113)*CZC+PARU(142)**2*
24999      &        (VI**2+AI**2)*VINT(114)*CZC**2+PARU(142)*PARU(143)*
25000      &        (VI*VPI+AI*API)*VINT(115)*CZC**2+PARU(143)**2*
25001      &        (VPI**2+API**2)*VINT(116)*CZC**2)*BE34C
25002             ELSEIF(MINT(61).EQ.2) THEN
25003               FGGF=0.25D0*BE34C
25004               FGZF=0.25D0*PARU(142)*CZC*BE34C
25005               FGZPF=0.25D0*PARU(143)*CZC*BE34C
25006               FZZF=0.25D0*PARU(142)**2*CZC**2*BE34C
25007               FZZPF=0.25D0*PARU(142)*PARU(143)*CZC**2*BE34C
25008               FZPZPF=0.25D0*PARU(143)**2*CZC**2*BE34C
25009             ENDIF
25010             WID2=WIDS(37,1)
25011           ELSEIF(I.EQ.19) THEN
25012 C...Z'0 -> Z0 + gamma.
25013           ELSEIF(I.EQ.20) THEN
25014 C...Z'0 -> Z0 + h0
25015             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25016             WDTPZP=PARU(145)**2*4D0*ABS(1D0-2D0*XW)*
25017      &      (3D0*RM1+0.25D0*FLAM**2)*FLAM
25018             IF(ICASE.EQ.1) THEN
25019               WDTPZ=0D0
25020               WDTP(I)=FAC*WDTPZP
25021             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25022               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
25023             ELSEIF(MINT(61).EQ.2) THEN
25024               FGGF=0D0
25025               FGZF=0D0
25026               FGZPF=0D0
25027               FZZF=0D0
25028               FZZPF=0D0
25029               FZPZPF=WDTPZP
25030             ENDIF
25031             WID2=WIDS(23,2)*WIDS(25,2)
25032           ELSEIF(I.EQ.21.OR.I.EQ.22) THEN
25033 C...Z' -> h0 + A0 or H0 + A0.
25034             BE34C=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25035             IF(I.EQ.21) THEN
25036               CZAH=PARU(186)
25037               CZPAH=PARU(188)
25038             ELSE
25039               CZAH=PARU(187)
25040               CZPAH=PARU(189)
25041             ENDIF
25042             IF(ICASE.EQ.1) THEN
25043               WDTPZ=CZAH**2*BE34C
25044               WDTP(I)=FAC*CZPAH**2*BE34C
25045             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25046               WDTP(I)=FAC*(CZAH**2*(VI**2+AI**2)*VINT(114)+CZAH*CZPAH*
25047      &        (VI*VPI+AI*API)*VINT(115)+CZPAH**2*(VPI**2+API**2)*
25048      &        VINT(116))*BE34C
25049             ELSEIF(MINT(61).EQ.2) THEN
25050               FGGF=0D0
25051               FGZF=0D0
25052               FGZPF=0D0
25053               FZZF=CZAH**2*BE34C
25054               FZZPF=CZAH*CZPAH*BE34C
25055               FZPZPF=CZPAH**2*BE34C
25056             ENDIF
25057             IF(I.EQ.21) WID2=WIDS(25,2)*WIDS(36,2)
25058             IF(I.EQ.22) WID2=WIDS(35,2)*WIDS(36,2)
25059           ENDIF
25060           IF(ICASE.EQ.1) THEN
25061             VINT(117)=VINT(117)+FAC*WDTPZ
25062             WDTP(I)=FUDGE*WDTP(I)
25063             WDTP(0)=WDTP(0)+WDTP(I)
25064           ENDIF
25065           IF(MDME(IDC,1).GT.0) THEN
25066             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
25067      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
25068               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25069               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
25070      &        WDTE(I,MDME(IDC,1))
25071               WDTE(I,0)=WDTE(I,MDME(IDC,1))
25072               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25073             ENDIF
25074             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
25075               IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
25076      &        MSTP(44).EQ.7) VINT(111)=VINT(111)+FGGF*WID2
25077               IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=VINT(112)+
25078      &        FGZF*WID2
25079               IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=VINT(113)+
25080      &        FGZPF*WID2
25081               IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
25082      &        MSTP(44).EQ.7) VINT(114)=VINT(114)+FZZF*WID2
25083               IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=VINT(115)+
25084      &        FZZPF*WID2
25085               IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
25086      &        MSTP(44).EQ.7) VINT(116)=VINT(116)+FZPZPF*WID2
25087             ENDIF
25088           ENDIF
25089   290   CONTINUE
25090         IF(MINT(61).GE.1) ICASE=3-ICASE
25091         IF(ICASE.EQ.2) GOTO 280
25092  
25093       ELSEIF(KFLA.EQ.34) THEN
25094 C...W'+/-:
25095         FAC=(AEM/(24D0*XW))*SHR
25096         DO 300 I=1,MDCY(KC,3)
25097           IDC=I+MDCY(KC,2)-1
25098           IF(MDME(IDC,1).LT.0) GOTO 300
25099           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25100           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25101           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 300
25102           WID2=1D0
25103           IF(I.LE.20) THEN
25104             IF(I.LE.16) THEN
25105 C...W'+/- -> q + qbar'
25106               FCOF=3D0*RADC*(PARU(131)**2+PARU(132)**2)*
25107      &        VCKM((I-1)/4+1,MOD(I-1,4)+1)
25108               IF(KFLR.GT.0) THEN
25109                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
25110                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
25111                 IF(I.GE.13) WID2=WID2*WIDS(7,3)
25112               ELSE
25113                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
25114                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
25115                 IF(I.GE.13) WID2=WID2*WIDS(7,2)
25116               ENDIF
25117             ELSEIF(I.LE.20) THEN
25118 C...W'+/- -> l+/- + nu
25119               FCOF=PARU(133)**2+PARU(134)**2
25120               IF(KFLR.GT.0) THEN
25121                 IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
25122               ELSE
25123                 IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
25124               ENDIF
25125             ENDIF
25126             WDTP(I)=FAC*FCOF*0.5D0*(2D0-RM1-RM2-(RM1-RM2)**2)*
25127      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25128           ELSEIF(I.EQ.21) THEN
25129 C...W'+/- -> W+/- + Z0
25130             WDTP(I)=FAC*PARU(135)**2*0.5D0*XW1*(RM1/RM2)*
25131      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25132      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
25133             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(23,2)
25134             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(23,2)
25135           ELSEIF(I.EQ.23) THEN
25136 C...W'+/- -> W+/- + h0
25137             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25138             WDTP(I)=FAC*PARU(146)**2*2D0*(3D0*RM1+0.25D0*FLAM**2)*FLAM
25139             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
25140             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
25141           ENDIF
25142           WDTP(I)=FUDGE*WDTP(I)
25143           WDTP(0)=WDTP(0)+WDTP(I)
25144           IF(MDME(IDC,1).GT.0) THEN
25145             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25146             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25147             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25148             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25149           ENDIF
25150   300   CONTINUE
25151  
25152       ELSEIF(KFLA.EQ.37) THEN
25153 C...H+/-:
25154 C        IF(MSTP(49).EQ.0) THEN
25155         SHFS=SH
25156 C        ELSE
25157 C          SHFS=PMAS(37,1)**2
25158 C        ENDIF
25159         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
25160         DO 310 I=1,MDCY(KC,3)
25161           IDC=I+MDCY(KC,2)-1
25162           IF(MDME(IDC,1).LT.0) GOTO 310
25163           KFC1=PYCOMP(KFDP(IDC,1))
25164           KFC2=PYCOMP(KFDP(IDC,2))
25165           RM1=PMAS(KFC1,1)**2/SH
25166           RM2=PMAS(KFC2,1)**2/SH
25167           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 310
25168           WID2=1D0
25169           IF(I.LE.4) THEN
25170 C...H+/- -> q + qbar'
25171             RM1R=PYMRUN(KFDP(IDC,1),SH)**2/SH
25172             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
25173             WDTP(I)=FAC*3D0*RADC*MAX(0D0,(RM1R*PARU(141)**2+
25174      &      RM2R/PARU(141)**2)*(1D0-RM1R-RM2R)-4D0*RM1R*RM2R)*
25175      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
25176             IF(KFLR.GT.0) THEN
25177               IF(I.EQ.3) WID2=WIDS(6,2)
25178               IF(I.EQ.4) WID2=WIDS(7,3)*WIDS(8,2)
25179             ELSE
25180               IF(I.EQ.3) WID2=WIDS(6,3)
25181               IF(I.EQ.4) WID2=WIDS(7,2)*WIDS(8,3)
25182             ENDIF
25183           ELSEIF(I.LE.8) THEN
25184 C...H+/- -> l+/- + nu
25185             WDTP(I)=FAC*((RM1*PARU(141)**2+RM2/PARU(141)**2)*
25186      &      (1D0-RM1-RM2)-4D0*RM1*RM2)*SQRT(MAX(0D0,
25187      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
25188             IF(KFLR.GT.0) THEN
25189               IF(I.EQ.8) WID2=WIDS(17,3)*WIDS(18,2)
25190             ELSE
25191               IF(I.EQ.8) WID2=WIDS(17,2)*WIDS(18,3)
25192             ENDIF
25193           ELSEIF(I.EQ.9) THEN
25194 C...H+/- -> W+/- + h0.
25195             WDTP(I)=FAC*PARU(195)**2*0.5D0*SQRT(MAX(0D0,
25196      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25197             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
25198             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
25199  
25200 CMRENNA++
25201           ELSE
25202 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
25203             RM10=RM1*SH/PMR**2
25204             RM20=RM2*SH/PMR**2
25205             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
25206             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
25207             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
25208               WFAC=0D0
25209             ELSE
25210               WFAC=WFAC/WFAC0
25211             ENDIF
25212             WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
25213 CMRENNA--
25214             KSGN1=2
25215             IF(KFLS*KFDP(IDC,1).LT.0.AND.KCHG(KFC1,3).EQ.1) KSGN1=3
25216             KSGN2=2
25217             IF(KFLS*KFDP(IDC,2).LT.0.AND.KCHG(KFC2,3).EQ.1) KSGN2=3
25218             WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
25219           ENDIF
25220           WDTP(I)=FUDGE*WDTP(I)
25221           WDTP(0)=WDTP(0)+WDTP(I)
25222           IF(MDME(IDC,1).GT.0) THEN
25223             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25224             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25225             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25226             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25227           ENDIF
25228   310   CONTINUE
25229  
25230       ELSEIF(KFLA.EQ.41) THEN
25231 C...R:
25232         FAC=(AEM/(12D0*XW))*SHR
25233         DO 320 I=1,MDCY(KC,3)
25234           IDC=I+MDCY(KC,2)-1
25235           IF(MDME(IDC,1).LT.0) GOTO 320
25236           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25237           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25238           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 320
25239           WID2=1D0
25240           IF(I.LE.6) THEN
25241 C...R -> q + qbar'
25242             FCOF=3D0*RADC
25243           ELSEIF(I.LE.9) THEN
25244 C...R -> l+ + l'-
25245             FCOF=1D0
25246           ENDIF
25247           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
25248      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25249           IF(KFLR.GT.0) THEN
25250             IF(I.EQ.4) WID2=WIDS(6,3)
25251             IF(I.EQ.5) WID2=WIDS(7,3)
25252             IF(I.EQ.6) WID2=WIDS(6,2)*WIDS(8,3)
25253             IF(I.EQ.9) WID2=WIDS(17,3)
25254           ELSE
25255             IF(I.EQ.4) WID2=WIDS(6,2)
25256             IF(I.EQ.5) WID2=WIDS(7,2)
25257             IF(I.EQ.6) WID2=WIDS(6,3)*WIDS(8,2)
25258             IF(I.EQ.9) WID2=WIDS(17,2)
25259           ENDIF
25260           WDTP(I)=FUDGE*WDTP(I)
25261           WDTP(0)=WDTP(0)+WDTP(I)
25262           IF(MDME(IDC,1).GT.0) THEN
25263             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25264             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25265             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25266             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25267           ENDIF
25268   320   CONTINUE
25269  
25270       ELSEIF(KFLA.EQ.42) THEN
25271 C...LQ (leptoquark).
25272         FAC=(AEM/4D0)*PARU(151)*SHR
25273         DO 330 I=1,MDCY(KC,3)
25274           IDC=I+MDCY(KC,2)-1
25275           IF(MDME(IDC,1).LT.0) GOTO 330
25276           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25277           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25278           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 330
25279           WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25280           WID2=1D0
25281           ILQQ=KFDP(IDC,1)*ISIGN(1,KFLR)
25282           IF(ILQQ.GE.6) WID2=WIDS(ILQQ,2)
25283           IF(ILQQ.LE.-6) WID2=WIDS(-ILQQ,3)
25284           ILQL=KFDP(IDC,2)*ISIGN(1,KFLR)
25285           IF(ILQL.GE.17) WID2=WID2*WIDS(ILQL,2)
25286           IF(ILQL.LE.-17) WID2=WID2*WIDS(-ILQL,3)
25287           WDTP(I)=FUDGE*WDTP(I)
25288           WDTP(0)=WDTP(0)+WDTP(I)
25289           IF(MDME(IDC,1).GT.0) THEN
25290             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25291             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25292             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25293             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25294           ENDIF
25295   330   CONTINUE
25296  
25297       ELSEIF(KFLA.EQ.KTECHN+111.OR.KFLA.EQ.KTECHN+221) THEN
25298 C...Techni-pi0 and techni-pi0':
25299         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
25300         DO 340 I=1,MDCY(KC,3)
25301           IDC=I+MDCY(KC,2)-1
25302           IF(MDME(IDC,1).LT.0) GOTO 340
25303           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
25304           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
25305           RM1=PM1**2/SH
25306           RM2=PM2**2/SH
25307           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 340
25308           WID2=1D0
25309 C...pi_tc -> g + g
25310           IF(I.EQ.8) THEN
25311             FACP=(AS/(4D0*PARU(1))*ITCM(1)/RTCM(1))**2
25312      &      /(8D0*PARU(1))*SH*SHR
25313             IF(KFLA.EQ.KTECHN+111) THEN
25314               FACP=FACP*RTCM(9)
25315             ELSE
25316               FACP=FACP*RTCM(10)
25317             ENDIF
25318             WDTP(I)=FACP
25319           ELSE
25320 C...pi_tc -> f + fbar.
25321             FCOF=1D0
25322             IKA=IABS(KFDP(IDC,1))
25323             IF(IKA.LT.10) FCOF=3D0*RADC
25324             HM1=PM1
25325             HM2=PM2
25326             IF(IKA.GE.4.AND.IKA.LE.6) THEN
25327                FCOF=FCOF*RTCM(1+IKA)**2
25328                HM1=PYMRUN(KFDP(IDC,1),SH)
25329                HM2=PYMRUN(KFDP(IDC,2),SH)
25330             ELSEIF(IKA.EQ.15) THEN
25331                FCOF=FCOF*RTCM(8)**2
25332             ENDIF
25333             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
25334      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25335           ENDIF
25336           WDTP(I)=FUDGE*WDTP(I)
25337           WDTP(0)=WDTP(0)+WDTP(I)
25338           IF(MDME(IDC,1).GT.0) THEN
25339             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25340             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25341             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25342             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25343           ENDIF
25344   340   CONTINUE
25345  
25346       ELSEIF(KFLA.EQ.KTECHN+211) THEN
25347 C...pi+_tc
25348         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
25349         DO 350 I=1,MDCY(KC,3)
25350           IDC=I+MDCY(KC,2)-1
25351           IF(MDME(IDC,1).LT.0) GOTO 350
25352           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
25353           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
25354           PM3=0D0
25355           IF(I.EQ.5) PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
25356           RM1=PM1**2/SH
25357           RM2=PM2**2/SH
25358           RM3=PM3**2/SH
25359           IF(SQRT(RM1)+SQRT(RM2)+SQRT(RM3).GT.1D0) GOTO 350
25360           WID2=1D0
25361 C...pi_tc -> f + f'.
25362           FCOF=1D0
25363           IF(IABS(KFDP(IDC,1)).LT.10) FCOF=3D0*RADC
25364 C...pi_tc+ -> W b b~
25365           IF(I.EQ.5.AND.SHR.LT.PMAS(6,1)+PMAS(5,1)) THEN
25366             FCOF=3D0*RADC
25367             XMT2=PMAS(6,1)**2/SH
25368             FACP=FAC/(4D0*PARU(1))*FCOF*XMT2*RTCM(7)**2
25369             KFC3=PYCOMP(KFDP(IDC,3))
25370             CHECK = SQRT(RM1)+SQRT(RM2)+SQRT(RM3)
25371             CHECK = SQRT(RM1)
25372             T0 = (1D0-CHECK**2)*
25373      &      (XMT2*(6D0*XMT2**2+3D0*XMT2*RM1-4D0*RM1**2)-
25374      &      (5D0*XMT2**2+2D0*XMT2*RM1-8D0*RM1**2))/(4D0*XMT2**2)
25375             T1 = (1D0-XMT2)*(RM1-XMT2)*((XMT2**2+XMT2*RM1+4D0*RM1**2)
25376      &      -3D0*XMT2**2*(XMT2+RM1))/(2D0*XMT2**3)
25377             T3 = RM1**2/XMT2**3*(3D0*XMT2-4D0*RM1+4D0*XMT2*RM1)
25378             WDTP(I)=FACP*(T0 + T1*LOG((XMT2-CHECK**2)/(XMT2-1D0))
25379      &      +T3*LOG(CHECK))
25380             IF(KFLR.GT.0) THEN
25381                WID2=WIDS(24,2)
25382             ELSE
25383                WID2=WIDS(24,3)
25384             ENDIF
25385           ELSE
25386             FCOF=1D0
25387             IKA=IABS(KFDP(IDC,1))
25388             IF(IKA.LT.10) FCOF=3D0*RADC
25389             HM1=PM1
25390             HM2=PM2
25391             IF(I.GE.1.AND.I.LE.5) THEN
25392               IF(I.LE.2) THEN
25393                 FCOF=FCOF*RTCM(5)**2
25394               ELSEIF(I.LE.4) THEN
25395                 FCOF=FCOF*RTCM(6)**2
25396               ELSEIF(I.EQ.5) THEN
25397                 FCOF=FCOF*RTCM(7)**2
25398               ENDIF
25399               HM1=PYMRUN(KFDP(IDC,1),SH)
25400               HM2=PYMRUN(KFDP(IDC,2),SH)
25401             ELSEIF(I.EQ.8) THEN
25402               FCOF=FCOF*RTCM(8)**2
25403             ENDIF
25404             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
25405      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25406           ENDIF
25407           WDTP(I)=FUDGE*WDTP(I)
25408           WDTP(0)=WDTP(0)+WDTP(I)
25409           IF(MDME(IDC,1).GT.0) THEN
25410             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25411             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25412             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25413             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25414           ENDIF
25415   350     CONTINUE
25416  
25417       ELSEIF(KFLA.EQ.KTECHN+331) THEN
25418 C...Techni-eta.
25419         FAC=(SH/PARP(46)**2)*SHR
25420         DO 360 I=1,MDCY(KC,3)
25421           IDC=I+MDCY(KC,2)-1
25422           IF(MDME(IDC,1).LT.0) GOTO 360
25423           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25424           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25425           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 360
25426           WID2=1D0
25427           IF(I.LE.2) THEN
25428             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))/(4D0*PARU(1))
25429             IF(I.EQ.2) WID2=WIDS(6,1)
25430           ELSE
25431             WDTP(I)=FAC*5D0*AS**2/(96D0*PARU(1)**3)
25432           ENDIF
25433           WDTP(I)=FUDGE*WDTP(I)
25434           WDTP(0)=WDTP(0)+WDTP(I)
25435           IF(MDME(IDC,1).GT.0) THEN
25436             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25437             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25438             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25439             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25440           ENDIF
25441   360   CONTINUE
25442  
25443       ELSEIF(KFLA.EQ.KTECHN+113) THEN
25444 C...Techni-rho0:
25445         ALPRHT=2.16D0*(3D0/ITCM(1))
25446         FAC=(ALPRHT/12D0)*SHR
25447         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
25448         SQMZ=PMAS(23,1)**2
25449         SQMW=PMAS(24,1)**2
25450         SHP=SH
25451         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
25452         GMMZ=SHR*WDTPP(0)
25453         XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
25454         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
25455         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
25456         DO 370 I=1,MDCY(KC,3)
25457           IDC=I+MDCY(KC,2)-1
25458           IF(MDME(IDC,1).LT.0) GOTO 370
25459           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25460           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25461           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 370
25462           WID2=1D0
25463           IF(I.EQ.1) THEN
25464 C...rho_tc0 -> W+ + W-.
25465 C... Multiplied by  2 for W^+_T W^-_L + W^+_L W^-_T  
25466             WDTP(I)=FAC*RTCM(3)**4*
25467      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25468      &      2D0*AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25469      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
25470      &      RTCM(3)**2/4D0/XW/24D0/RTCM(13)**2*SHR**3
25471             WID2=WIDS(24,1)
25472           ELSEIF(I.EQ.2) THEN
25473 C...rho_tc0 -> W+ + pi_tc-.
25474 C... Multiplied by  2 for pi_T^+ W^-_T + pi_T^- W^+_T  
25475             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
25476      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25477      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25478      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*RM1)*
25479      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
25480             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
25481           ELSEIF(I.EQ.3) THEN
25482 C...rho_tc0 -> pi_tc+ + W-.
25483             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
25484      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25485      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25486      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*RM2)*
25487      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
25488             WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(24,3)
25489           ELSEIF(I.EQ.4) THEN
25490 C...rho_tc0 -> pi_tc+ + pi_tc-.
25491             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
25492      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25493             WID2=WIDS(PYCOMP(KTECHN+211),1)
25494           ELSEIF(I.EQ.5) THEN
25495 C...rho_tc0 -> gamma + pi_tc0
25496             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25497      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
25498      &      SHR**3
25499             WID2=WIDS(PYCOMP(KTECHN+111),2)
25500           ELSEIF(I.EQ.6) THEN
25501 C...rho_tc0 -> gamma + pi_tc0'
25502             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25503      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*SHR**3
25504             WID2=WIDS(PYCOMP(KTECHN+221),2)
25505           ELSEIF(I.EQ.7) THEN
25506 C...rho_tc0 -> Z0 + pi_tc0
25507             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25508      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
25509      &      XW/XW1*SHR**3
25510             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
25511           ELSEIF(I.EQ.8) THEN
25512 C...rho_tc0 -> Z0 + pi_tc0'
25513             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25514      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
25515      &      XW/XW1*SHR**3
25516             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
25517           ELSEIF(I.EQ.9) THEN
25518 C...rho_tc0 -> gamma + Z0
25519             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25520      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
25521             WID2=WIDS(23,2)
25522           ELSEIF(I.EQ.10) THEN
25523 C...rho_tc0 -> Z0 + Z0
25524             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25525      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2*XW/XW1/24D0/RTCM(12)**2*
25526      &      SHR**3
25527             WID2=WIDS(23,1)
25528           ELSE
25529 C...rho_tc0 -> f + fbar.
25530             WID2=1D0
25531             IF(I.LE.18) THEN
25532               IA=I-10
25533               FCOF=3D0*RADC
25534               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
25535             ELSE
25536               IA=I-6
25537               FCOF=1D0
25538               IF(IA.GE.17) WID2=WIDS(IA,1)
25539             ENDIF
25540             EI=KCHG(IA,1)/3D0
25541             AI=SIGN(1D0,EI+0.1D0)
25542             VI=AI-4D0*EI*XWV
25543             VALI=0.5D0*(VI+AI)
25544             VARI=0.5D0*(VI-AI)
25545             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
25546      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
25547      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
25548      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
25549           ENDIF
25550           WDTP(I)=FUDGE*WDTP(I)
25551           WDTP(0)=WDTP(0)+WDTP(I)
25552           IF(MDME(IDC,1).GT.0) THEN
25553             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25554             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25555             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25556             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25557           ENDIF
25558   370   CONTINUE
25559  
25560       ELSEIF(KFLA.EQ.KTECHN+213) THEN
25561 C...Techni-rho+/-:
25562         ALPRHT=2.16D0*(3D0/ITCM(1))
25563         FAC=(ALPRHT/12D0)*SHR
25564         SQMZ=PMAS(23,1)**2
25565         SQMW=PMAS(24,1)**2
25566         SHP=SH
25567         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
25568         GMMW=SHR*WDTPP(0)
25569         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
25570      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
25571         DO 380 I=1,MDCY(KC,3)
25572           IDC=I+MDCY(KC,2)-1
25573           IF(MDME(IDC,1).LT.0) GOTO 380
25574           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25575           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25576           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 380
25577           WID2=1D0
25578           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25579 c            WDTP(I)=AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
25580 c     &      /3D0*SHR**3
25581           IF(I.EQ.1) THEN
25582 C...rho_tc+ -> W+ + Z0.
25583 C......Goldstone
25584             WDTP(I)=FAC*RTCM(3)**4*
25585      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25586             VA2=RTCM(3)**2*(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(12)**2
25587             AA2=RTCM(3)**2/RTCM(13)**2/4D0/XW/XW1
25588 C......W_L Z_T
25589             WDTP(I)=WDTP(I)+AEM*PCM*(AA2*(PCM**2+1.5D0*RM2)+PCM**2*VA2)
25590      &      /3D0*SHR**3
25591             VA2=0D0
25592             AA2=RTCM(3)**2/RTCM(13)**2/4D0/XW
25593 C......W_T Z_L
25594             WDTP(I)=WDTP(I)+AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
25595      &      /3D0*SHR**3
25596             IF(KFLR.GT.0) THEN
25597               WID2=WIDS(24,2)*WIDS(23,2)
25598             ELSE
25599               WID2=WIDS(24,3)*WIDS(23,2)
25600             ENDIF
25601           ELSEIF(I.EQ.2) THEN
25602 C...rho_tc+ -> W+ + pi_tc0.
25603             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
25604      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25605      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25606      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
25607      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
25608             IF(KFLR.GT.0) THEN
25609               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+111),2)
25610             ELSE
25611               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+111),2)
25612             ENDIF
25613           ELSEIF(I.EQ.3) THEN
25614 C...rho_tc+ -> pi_tc+ + Z0.
25615             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
25616      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25617      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25618      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMZ/SH)*
25619      &      (1D0-RTCM(3)**2)/4D0/XW/XW1/24D0/RTCM(13)**2*SHR**3+
25620      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25621      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
25622      &      SHR**3*XW/XW1
25623             IF(KFLR.GT.0) THEN
25624               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(23,2)
25625             ELSE
25626               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(23,2)
25627             ENDIF
25628           ELSEIF(I.EQ.4) THEN
25629 C...rho_tc+ -> pi_tc+ + pi_tc0.
25630             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
25631      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25632             IF(KFLR.GT.0) THEN
25633               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(PYCOMP(KTECHN+111),2)
25634             ELSE
25635               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(PYCOMP(KTECHN+111),2)
25636             ENDIF
25637           ELSEIF(I.EQ.5) THEN
25638 C...rho_tc+ -> pi_tc+ + gamma
25639             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25640      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
25641      &      SHR**3
25642             IF(KFLR.GT.0) THEN
25643               WID2=WIDS(PYCOMP(KTECHN+211),2)
25644             ELSE
25645               WID2=WIDS(PYCOMP(KTECHN+211),3)
25646             ENDIF
25647           ELSEIF(I.EQ.6) THEN
25648 C...rho_tc+ -> W+ + pi_tc0'
25649             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25650      &      (1D0-RTCM(4)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3
25651             IF(KFLR.GT.0) THEN
25652               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+221),2)
25653             ELSE
25654               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+221),2)
25655             ENDIF
25656           ELSEIF(I.EQ.7) THEN
25657 C...rho_tc+ -> W+ + gamma
25658             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25659      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
25660             IF(KFLR.GT.0) THEN
25661               WID2=WIDS(24,2)
25662             ELSE
25663               WID2=WIDS(24,3)
25664             ENDIF
25665           ELSE
25666 C...rho_tc+ -> f + fbar'.
25667             IA=I-7
25668             WID2=1D0
25669             IF(IA.LE.16) THEN
25670               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
25671               IF(KFLR.GT.0) THEN
25672                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
25673                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
25674                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
25675               ELSE
25676                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
25677                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
25678                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
25679               ENDIF
25680             ELSE
25681               FCOF=1D0
25682               IF(KFLR.GT.0) THEN
25683                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
25684               ELSE
25685                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
25686               ENDIF
25687             ENDIF
25688             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
25689      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25690           ENDIF
25691           WDTP(I)=FUDGE*WDTP(I)
25692           WDTP(0)=WDTP(0)+WDTP(I)
25693           IF(MDME(IDC,1).GT.0) THEN
25694             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25695             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25696             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25697             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25698           ENDIF
25699   380   CONTINUE
25700  
25701       ELSEIF(KFLA.EQ.KTECHN+223) THEN
25702 C...Techni-omega:
25703         ALPRHT=2.16D0*(3D0/ITCM(1))
25704         FAC=(ALPRHT/12D0)*SHR
25705         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR*(2D0*RTCM(2)-1D0)**2
25706         SQMZ=PMAS(23,1)**2
25707         SHP=SH
25708         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
25709         GMMZ=SHR*WDTPP(0)
25710         BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
25711         BWZI=-(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
25712         DO 390 I=1,MDCY(KC,3)
25713           IDC=I+MDCY(KC,2)-1
25714           IF(MDME(IDC,1).LT.0) GOTO 390
25715           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25716           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25717           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 390
25718           WID2=1D0
25719           IF(I.EQ.1) THEN
25720 C...omega_tc0 -> gamma + pi_tc0.
25721             WDTP(I)=AEM/24D0/RTCM(12)**2*(1D0-RTCM(3)**2)*
25722      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*SHR**3
25723             WID2=WIDS(PYCOMP(KTECHN+111),2)
25724           ELSEIF(I.EQ.2) THEN
25725 C...omega_tc0 -> Z0 + pi_tc0
25726             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25727      &      (1D0-RTCM(3)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
25728      &      XW/XW1*SHR**3
25729             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
25730           ELSEIF(I.EQ.3) THEN
25731 C...omega_tc0 -> gamma + pi_tc0'
25732             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25733      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
25734      &      SHR**3
25735             WID2=WIDS(PYCOMP(KTECHN+221),2)
25736           ELSEIF(I.EQ.4) THEN
25737 C...omega_tc0 -> Z0 + pi_tc0'
25738             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25739      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
25740      &      XW/XW1*SHR**3
25741             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
25742           ELSEIF(I.EQ.5) THEN
25743 C...omega_tc0 -> W+ + pi_tc-
25744             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25745      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
25746      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
25747      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25748             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
25749           ELSEIF(I.EQ.6) THEN
25750 C...omega_tc0 -> pi_tc+ + W-
25751             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25752      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
25753      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
25754      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25755             WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
25756           ELSEIF(I.EQ.7) THEN
25757 C...omega_tc0 -> W+ + W-.
25758 C... Multiplied by  2 for W^+_T W^-_L + W^+_L W^-_T  
25759             WDTP(I)=FAC*RTCM(3)**4*RTCM(11)**2*
25760      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25761      &      2D0*AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25762      &      RTCM(3)**2/4D0/XW/24D0/RTCM(12)**2*SHR**3
25763             WID2=WIDS(24,1)
25764           ELSEIF(I.EQ.8) THEN
25765 C...omega_tc0 -> pi_tc+ + pi_tc-.
25766             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*RTCM(11)**2*
25767      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25768             WID2=WIDS(PYCOMP(KTECHN+211),1)
25769 C...omega_tc0 -> gamma + Z0
25770           ELSEIF(I.EQ.9) THEN
25771             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25772      &      RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
25773             WID2=WIDS(23,2)
25774 C...omega_tc0 -> Z0 + Z0
25775           ELSEIF(I.EQ.10) THEN
25776             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25777      &      RTCM(3)**2*(XW1-XW)**2/XW/XW1/4D0
25778      &      /24D0/RTCM(12)**2*SHR**3
25779             WID2=WIDS(23,1)
25780           ELSE
25781 C...omega_tc0 -> f + fbar.
25782             WID2=1D0
25783             IF(I.LE.18) THEN
25784               IA=I-10
25785               FCOF=3D0*RADC
25786               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
25787             ELSE
25788               IA=I-8
25789               FCOF=1D0
25790               IF(IA.GE.17) WID2=WIDS(IA,1)
25791             ENDIF
25792             EI=KCHG(IA,1)/3D0
25793             AI=SIGN(1D0,EI+0.1D0)
25794             VI=AI-4D0*EI*XWV
25795             VALI=-0.5D0*(VI+AI)
25796             VARI=-0.5D0*(VI-AI)
25797             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
25798      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
25799      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
25800      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
25801           ENDIF
25802           WDTP(I)=FUDGE*WDTP(I)
25803           WDTP(0)=WDTP(0)+WDTP(I)
25804           IF(MDME(IDC,1).GT.0) THEN
25805             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25806             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25807             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25808             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25809           ENDIF
25810   390   CONTINUE
25811  
25812 C.....V8 -> quark anti-quark
25813       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
25814         FAC=AS/6D0*SHR
25815         TANT3=RTCM(21)
25816         IF(ITCM(2).EQ.0) THEN
25817           IMDL=1
25818         ELSEIF(ITCM(2).EQ.1) THEN
25819           IMDL=2
25820         ENDIF
25821         DO 400 I=1,MDCY(KC,3)
25822           IDC=I+MDCY(KC,2)-1
25823           IF(MDME(IDC,1).LT.0) GOTO 400
25824           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
25825           RM1=PM1**2/SH
25826           IF(RM1.GT.0.25D0) GOTO 400
25827           WID2=1D0
25828           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
25829             FMIX=1D0/TANT3**2
25830           ELSE
25831             FMIX=TANT3**2
25832           ENDIF
25833           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
25834           IF(I.EQ.6) WID2=WIDS(6,1)
25835           WDTP(I)=FUDGE*WDTP(I)
25836           WDTP(0)=WDTP(0)+WDTP(I)
25837           IF(MDME(IDC,1).GT.0) THEN
25838             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25839             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25840             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25841             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25842           ENDIF
25843   400   CONTINUE
25844  
25845       ELSEIF(KFLA.EQ.KTECHN+100111.OR.KFLA.EQ.KTECHN+200111) THEN
25846         FAC=(1D0/(4D0*PARU(1)*RTCM(1)**2))*SHR
25847         CLEBF=0D0
25848         DO 410 I=1,MDCY(KC,3)
25849           IDC=I+MDCY(KC,2)-1
25850           IF(MDME(IDC,1).LT.0) GOTO 410
25851           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25852           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25853           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 410
25854           WID2=1D0
25855 C...pi_tc -> g + g
25856           IF(I.EQ.7) THEN
25857             IF(KFLA.EQ.KTECHN+100111) THEN
25858               CLEBG=4D0/3D0
25859             ELSE
25860               CLEBG=5D0/3D0
25861             ENDIF
25862             FACP=(AS/(8D0*PARU(1))*ITCM(1)/RTCM(1))**2
25863      &      /(2D0*PARU(1))*SH*SHR*CLEBG
25864             WDTP(I)=FACP
25865           ELSE
25866 C...pi_tc -> f + fbar.
25867             IF(I.EQ.6) WID2=WIDS(6,1)
25868             FCOF=1D0
25869             IKA=IABS(KFDP(IDC,1))
25870             IF(IKA.LT.10) FCOF=3D0*RADC
25871             HM1=PYMRUN(KFDP(IDC,1),SH)
25872             WDTP(I)=FAC*FCOF*HM1**2*CLEBF*
25873      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25874           ENDIF
25875           WDTP(I)=FUDGE*WDTP(I)
25876           WDTP(0)=WDTP(0)+WDTP(I)
25877           IF(MDME(IDC,1).GT.0) THEN
25878             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25879             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25880             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25881             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25882           ENDIF
25883   410   CONTINUE
25884  
25885       ELSEIF(KFLA.GE.KTECHN+100113.AND.KFLA.LE.KTECHN+400113) THEN
25886         FAC=AS/6D0*SHR
25887         ALPRHT=2.16D0*(3D0/ITCM(1))
25888         TANT3=RTCM(21)
25889         SIN2T=2D0*TANT3/(TANT3**2+1D0)
25890         SINT3=TANT3/SQRT(TANT3**2+1D0)
25891         CSXPP=RTCM(22)
25892         RM82=RTCM(27)**2
25893         X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
25894      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)
25895         X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
25896      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)
25897         X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
25898      &  SINT3**2)*2D0
25899         X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
25900      &  SINT3**2)*2D0
25901         CALL PYWIDX(KTECHN+100021,SH,WDTPP,WDTEP)
25902  
25903         IF(WDTPP(0).GT.RTCM(33)*SHR) WDTPP(0)=RTCM(33)*SHR
25904         GMV8=SHR*WDTPP(0)
25905         RMV8=PMAS(PYCOMP(KTECHN+100021),1)
25906         FV8RE=SH*(SH-RMV8**2)/((SH-RMV8**2)**2+GMV8**2)
25907         FV8IM=SH*GMV8/((SH-RMV8**2)**2+GMV8**2)
25908         IF(ITCM(2).EQ.0) THEN
25909           IMDL=1
25910         ELSE
25911           IMDL=2
25912         ENDIF
25913         DO 420 I=1,MDCY(KC,3)
25914           IF(I.EQ.7.AND.(KFLA.EQ.KTECHN+200113.OR.
25915      &    KFLA.EQ.KTECHN+300113)) GOTO 420
25916           IDC=I+MDCY(KC,2)-1
25917           IF(MDME(IDC,1).LT.0) GOTO 420
25918           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25919           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25920           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 420
25921           WID2=1D0
25922           IF(I.LE.6) THEN
25923             IF(I.EQ.6) WID2=WIDS(6,1)
25924             XIG=1D0
25925             IF(KFLA.EQ.KTECHN+200113) THEN
25926               XIG=0D0
25927               XIJ=X12
25928             ELSEIF(KFLA.EQ.KTECHN+300113) THEN
25929               XIG=0D0
25930               XIJ=X21
25931             ELSEIF(KFLA.EQ.KTECHN+100113) THEN
25932               XIJ=X11
25933             ELSE
25934               XIJ=X22
25935             ENDIF
25936             IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
25937               FMIX=1D0/TANT3/SIN2T
25938             ELSE
25939               FMIX=-TANT3/SIN2T
25940             ENDIF
25941             XFAC=(XIG+FMIX*XIJ*FV8RE)**2+(FMIX*XIJ*FV8IM)**2
25942             WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*AS/ALPRHT*XFAC
25943           ELSEIF(I.EQ.7) THEN
25944             WDTP(I)=SHR*AS**2/(4D0*ALPRHT)
25945           ELSEIF(KFLA.EQ.KTECHN+400113.AND.I.LE.9) THEN
25946             PSH=SHR*(1D0-RM1)/2D0
25947             WDTP(I)=AS/9D0*PSH**3/RM82
25948             IF(I.EQ.8) THEN
25949               WDTP(I)=2D0*WDTP(I)*CSXPP**2
25950               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
25951             ELSE
25952               WDTP(I)=5D0*WDTP(I)
25953               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
25954             ENDIF
25955           ENDIF
25956           WDTP(I)=FUDGE*WDTP(I)
25957           WDTP(0)=WDTP(0)+WDTP(I)
25958           IF(MDME(IDC,1).GT.0) THEN
25959             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25960             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25961             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25962             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25963           ENDIF
25964   420   CONTINUE
25965  
25966       ELSEIF(KFLA.EQ.KEXCIT+1) THEN
25967 C...d* excited quark.
25968         FAC=(SH/RTCM(41)**2)*SHR
25969         DO 430 I=1,MDCY(KC,3)
25970           IDC=I+MDCY(KC,2)-1
25971           IF(MDME(IDC,1).LT.0) GOTO 430
25972           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25973           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25974           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 430
25975           WID2=1D0
25976           IF(I.EQ.1) THEN
25977 C...d* -> g + d.
25978             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
25979             WID2=1D0
25980           ELSEIF(I.EQ.2) THEN
25981 C...d* -> gamma + d.
25982             QF=-RTCM(43)/2D0+RTCM(44)/6D0
25983             WDTP(I)=FAC*AEM*QF**2/4D0
25984             WID2=1D0
25985           ELSEIF(I.EQ.3) THEN
25986 C...d* -> Z0 + d.
25987             QF=-RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
25988             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
25989      &      (1D0-RM1)**2*(2D0+RM1)
25990             WID2=WIDS(23,2)
25991           ELSEIF(I.EQ.4) THEN
25992 C...d* -> W- + u.
25993             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
25994      &      (1D0-RM1)**2*(2D0+RM1)
25995             IF(KFLR.GT.0) WID2=WIDS(24,3)
25996             IF(KFLR.LT.0) WID2=WIDS(24,2)
25997           ENDIF
25998           WDTP(I)=FUDGE*WDTP(I)
25999           WDTP(0)=WDTP(0)+WDTP(I)
26000           IF(MDME(IDC,1).GT.0) THEN
26001             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26002             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26003             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26004             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26005           ENDIF
26006   430   CONTINUE
26007  
26008       ELSEIF(KFLA.EQ.KEXCIT+2) THEN
26009 C...u* excited quark.
26010         FAC=(SH/RTCM(41)**2)*SHR
26011         DO 440 I=1,MDCY(KC,3)
26012           IDC=I+MDCY(KC,2)-1
26013           IF(MDME(IDC,1).LT.0) GOTO 440
26014           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26015           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26016           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 440
26017           WID2=1D0
26018           IF(I.EQ.1) THEN
26019 C...u* -> g + u.
26020             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
26021             WID2=1D0
26022           ELSEIF(I.EQ.2) THEN
26023 C...u* -> gamma + u.
26024             QF=RTCM(43)/2D0+RTCM(44)/6D0
26025             WDTP(I)=FAC*AEM*QF**2/4D0
26026             WID2=1D0
26027           ELSEIF(I.EQ.3) THEN
26028 C...u* -> Z0 + u.
26029             QF=RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
26030             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26031      &      (1D0-RM1)**2*(2D0+RM1)
26032             WID2=WIDS(23,2)
26033           ELSEIF(I.EQ.4) THEN
26034 C...u* -> W+ + d.
26035             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26036      &      (1D0-RM1)**2*(2D0+RM1)
26037             IF(KFLR.GT.0) WID2=WIDS(24,2)
26038             IF(KFLR.LT.0) WID2=WIDS(24,3)
26039           ENDIF
26040           WDTP(I)=FUDGE*WDTP(I)
26041           WDTP(0)=WDTP(0)+WDTP(I)
26042           IF(MDME(IDC,1).GT.0) THEN
26043             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26044             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26045             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26046             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26047           ENDIF
26048   440   CONTINUE
26049  
26050       ELSEIF(KFLA.EQ.KEXCIT+11) THEN
26051 C...e* excited lepton.
26052         FAC=(SH/RTCM(41)**2)*SHR
26053         DO 450 I=1,MDCY(KC,3)
26054           IDC=I+MDCY(KC,2)-1
26055           IF(MDME(IDC,1).LT.0) GOTO 450
26056           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26057           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26058           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 450
26059           WID2=1D0
26060           IF(I.EQ.1) THEN
26061 C...e* -> gamma + e.
26062             QF=-RTCM(43)/2D0-RTCM(44)/2D0
26063             WDTP(I)=FAC*AEM*QF**2/4D0
26064             WID2=1D0
26065           ELSEIF(I.EQ.2) THEN
26066 C...e* -> Z0 + e.
26067             QF=-RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
26068             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26069      &      (1D0-RM1)**2*(2D0+RM1)
26070             WID2=WIDS(23,2)
26071           ELSEIF(I.EQ.3) THEN
26072 C...e* -> W- + nu.
26073             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26074      &      (1D0-RM1)**2*(2D0+RM1)
26075             IF(KFLR.GT.0) WID2=WIDS(24,3)
26076             IF(KFLR.LT.0) WID2=WIDS(24,2)
26077           ENDIF
26078           WDTP(I)=FUDGE*WDTP(I)
26079           WDTP(0)=WDTP(0)+WDTP(I)
26080           IF(MDME(IDC,1).GT.0) THEN
26081             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26082             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26083             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26084             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26085           ENDIF
26086   450   CONTINUE
26087  
26088       ELSEIF(KFLA.EQ.KEXCIT+12) THEN
26089 C...nu*_e excited neutrino.
26090         FAC=(SH/RTCM(41)**2)*SHR
26091         DO 460 I=1,MDCY(KC,3)
26092           IDC=I+MDCY(KC,2)-1
26093           IF(MDME(IDC,1).LT.0) GOTO 460
26094           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26095           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26096           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 460
26097           WID2=1D0
26098           IF(I.EQ.1) THEN
26099 C...nu*_e -> Z0 + nu*_e.
26100             QF=RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
26101             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26102      &      (1D0-RM1)**2*(2D0+RM1)
26103             WID2=WIDS(23,2)
26104           ELSEIF(I.EQ.2) THEN
26105 C...nu*_e -> W+ + e.
26106             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26107      &      (1D0-RM1)**2*(2D0+RM1)
26108             IF(KFLR.GT.0) WID2=WIDS(24,2)
26109             IF(KFLR.LT.0) WID2=WIDS(24,3)
26110           ENDIF
26111           WDTP(I)=FUDGE*WDTP(I)
26112           WDTP(0)=WDTP(0)+WDTP(I)
26113           IF(MDME(IDC,1).GT.0) THEN
26114             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26115             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26116             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26117             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26118           ENDIF
26119   460   CONTINUE
26120  
26121       ELSEIF(KFLA.EQ.KDIMEN+39) THEN
26122 C...G* (graviton resonance):
26123         FAC=(PARP(50)**2/PARU(1))*SHR
26124         DO 470 I=1,MDCY(KC,3)
26125           IDC=I+MDCY(KC,2)-1
26126           IF(MDME(IDC,1).LT.0) GOTO 470
26127           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26128           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26129           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 470
26130           WID2=1D0
26131           IF(I.LE.8) THEN
26132 C...G* -> q + qbar
26133             FCOF=3D0*RADC
26134             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
26135      &      PYHFTH(SH,SH*RM1,1D0)
26136             WDTP(I)=FAC*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
26137      &      (1D0+8D0*RM1/3D0)/320D0
26138             IF(I.EQ.6) WID2=WIDS(6,1)
26139             IF(I.EQ.7.OR.I.EQ.8) WID2=WIDS(I,1)
26140           ELSEIF(I.LE.16) THEN
26141 C...G* -> l+ + l-, nu + nubar
26142             FCOF=1D0
26143             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
26144      &      (1D0+8D0*RM1/3D0)/320D0
26145             IF(I.EQ.15.OR.I.EQ.16) WID2=WIDS(2+I,1)
26146           ELSEIF(I.EQ.17) THEN
26147 C...G* -> g + g.
26148             WDTP(I)=FAC/20D0
26149           ELSEIF(I.EQ.18) THEN
26150 C...G* -> gamma + gamma.
26151             WDTP(I)=FAC/160D0
26152           ELSEIF(I.EQ.19) THEN
26153 C...G* -> Z0 + Z0.
26154             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
26155      &      14D0*RM1/3D0+4D0*RM1**2)/160D0
26156             WID2=WIDS(23,1)
26157           ELSEIF(I.EQ.20) THEN
26158 C...G* -> W+ + W-.
26159             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
26160      &      14D0*RM1/3D0+4D0*RM1**2)/80D0
26161             WID2=WIDS(24,1)
26162           ENDIF
26163           WDTP(I)=FUDGE*WDTP(I)
26164           WDTP(0)=WDTP(0)+WDTP(I)
26165           IF(MDME(IDC,1).GT.0) THEN
26166             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26167             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26168             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26169             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26170           ENDIF
26171   470   CONTINUE
26172  
26173       ELSEIF(KFLA.EQ.9900012.OR.KFLA.EQ.9900014.OR.KFLA.EQ.9900016) THEN
26174 C...nu_eR, nu_muR, nu_tauR: righthanded Majorana neutrinos.
26175         PMWR=MAX(1.001D0*SHR,PMAS(PYCOMP(9900024),1))
26176         FAC=(AEM**2/(768D0*PARU(1)*XW**2))*SHR**5/PMWR**4
26177         DO 480 I=1,MDCY(KC,3)
26178           IDC=I+MDCY(KC,2)-1
26179           IF(MDME(IDC,1).LT.0) GOTO 480
26180           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
26181           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
26182           PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
26183           IF(PM1+PM2+PM3.GE.SHR) GOTO 480
26184           WID2=1D0
26185           IF(I.LE.9) THEN
26186 C...nu_lR -> l- qbar q'
26187             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
26188             IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
26189           ELSEIF(I.LE.18) THEN
26190 C...nu_lR -> l+ q qbar'
26191             FCOF=3D0*RADC*VCKM((I-10)/3+1,MOD(I-10,3)+1)
26192             IF(MOD(I-9,3).EQ.0) WID2=WIDS(6,3)
26193           ELSE
26194 C...nu_lR -> l- l'+ nu_lR' + charge conjugate.
26195             FCOF=1D0
26196             WID2=WIDS(PYCOMP(KFDP(IDC,3)),2)
26197           ENDIF
26198           X=(PM1+PM2+PM3)/SHR
26199           FX=1D0-8D0*X**2+8D0*X**6-X**8-24D0*X**4*LOG(X)
26200           Y=(SHR/PMWR)**2
26201           FY=(12D0*(1D0-Y)*LOG(1D0-Y)+12D0*Y-6D0*Y**2-2D0*Y**3)/Y**4
26202           WDTP(I)=FAC*FCOF*FX*FY
26203           WDTP(I)=FUDGE*WDTP(I)
26204           WDTP(0)=WDTP(0)+WDTP(I)
26205           IF(MDME(IDC,1).GT.0) THEN
26206             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26207             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26208             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26209             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26210           ENDIF
26211   480   CONTINUE
26212  
26213       ELSEIF(KFLA.EQ.9900023) THEN
26214 C...Z_R0:
26215         FAC=(AEM/(48D0*XW*XW1*(1D0-2D0*XW)))*SHR
26216         DO 490 I=1,MDCY(KC,3)
26217           IDC=I+MDCY(KC,2)-1
26218           IF(MDME(IDC,1).LT.0) GOTO 490
26219           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26220           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26221           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 490
26222           WID2=1D0
26223           SYMMET=1D0
26224           IF(I.LE.6) THEN
26225 C...Z_R0 -> q + qbar
26226             EF=KCHG(I,1)/3D0
26227             AF=SIGN(1D0,EF+0.1D0)*(1D0-2D0*XW)
26228             VF=SIGN(1D0,EF+0.1D0)-4D0*EF*XW
26229             FCOF=3D0*RADC
26230             IF(I.EQ.6) WID2=WIDS(6,1)
26231           ELSEIF(I.EQ.7.OR.I.EQ.10.OR.I.EQ.13) THEN
26232 C...Z_R0 -> l+ + l-
26233             AF=-(1D0-2D0*XW)
26234             VF=-1D0+4D0*XW
26235             FCOF=1D0
26236           ELSEIF(I.EQ.8.OR.I.EQ.11.OR.I.EQ.14) THEN
26237 C...Z0 -> nu_L + nu_Lbar, assumed Majorana.
26238             AF=-2D0*XW
26239             VF=0D0
26240             FCOF=1D0
26241             SYMMET=0.5D0
26242           ELSEIF(I.LE.15) THEN
26243 C...Z0 -> nu_R + nu_R, assumed Majorana.
26244             AF=2D0*XW1
26245             VF=0D0
26246             FCOF=1D0
26247             WID2=WIDS(PYCOMP(KFDP(IDC,1)),1)
26248             SYMMET=0.5D0
26249           ENDIF
26250           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
26251      &    SQRT(MAX(0D0,1D0-4D0*RM1))*SYMMET
26252           WDTP(I)=FUDGE*WDTP(I)
26253           WDTP(0)=WDTP(0)+WDTP(I)
26254           IF(MDME(IDC,1).GT.0) THEN
26255             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26256             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26257             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26258             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26259           ENDIF
26260   490   CONTINUE
26261  
26262       ELSEIF(KFLA.EQ.9900024) THEN
26263 C...W_R+/-:
26264         FAC=(AEM/(24D0*XW))*SHR
26265         DO 500 I=1,MDCY(KC,3)
26266           IDC=I+MDCY(KC,2)-1
26267           IF(MDME(IDC,1).LT.0) GOTO 500
26268           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26269           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26270           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 500
26271           WID2=1D0
26272           IF(I.LE.9) THEN
26273 C...W_R+/- -> q + qbar'
26274             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
26275             IF(KFLR.GT.0) THEN
26276               IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
26277             ELSE
26278               IF(MOD(I,3).EQ.0) WID2=WIDS(6,3)
26279             ENDIF
26280           ELSEIF(I.LE.12) THEN
26281 C...W_R+/- -> l+/- + nu_R
26282             FCOF=1D0
26283           ENDIF
26284           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
26285      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26286           WDTP(I)=FUDGE*WDTP(I)
26287           WDTP(0)=WDTP(0)+WDTP(I)
26288           IF(MDME(IDC,1).GT.0) THEN
26289             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26290             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26291             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26292             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26293           ENDIF
26294   500  CONTINUE
26295  
26296       ELSEIF(KFLA.EQ.9900041) THEN
26297 C...H_L++/--:
26298         FAC=(1D0/(8D0*PARU(1)))*SHR
26299         DO 510 I=1,MDCY(KC,3)
26300           IDC=I+MDCY(KC,2)-1
26301           IF(MDME(IDC,1).LT.0) GOTO 510
26302           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26303           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26304           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 510
26305           WID2=1D0
26306           IF(I.LE.6) THEN
26307 C...H_L++/-- -> l+/- + l'+/-
26308             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
26309      &      (IABS(KFDP(IDC,2))-9)/2)**2
26310             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
26311           ELSEIF(I.EQ.7) THEN
26312 C...H_L++/-- -> W_L+/- + W_L+/-
26313             FCOF=0.5D0*PARP(190)**4*PARP(192)**2/PMAS(24,1)**2*
26314      &      (3D0*RM1+0.25D0/RM1-1D0)
26315             WID2=WIDS(24,4+(1-KFLS)/2)
26316           ENDIF
26317           WDTP(I)=FAC*FCOF*
26318      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26319           WDTP(I)=FUDGE*WDTP(I)
26320           WDTP(0)=WDTP(0)+WDTP(I)
26321           IF(MDME(IDC,1).GT.0) THEN
26322             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26323             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26324             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26325             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26326           ENDIF
26327   510   CONTINUE
26328  
26329       ELSEIF(KFLA.EQ.9900042) THEN
26330 C...H_R++/--:
26331         FAC=(1D0/(8D0*PARU(1)))*SHR
26332         DO 520 I=1,MDCY(KC,3)
26333           IDC=I+MDCY(KC,2)-1
26334           IF(MDME(IDC,1).LT.0) GOTO 520
26335           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26336           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26337           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 520
26338           WID2=1D0
26339           IF(I.LE.6) THEN
26340 C...H_R++/-- -> l+/- + l'+/-
26341             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
26342      &      (IABS(KFDP(IDC,2))-9)/2)**2
26343             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
26344           ELSEIF(I.EQ.7) THEN
26345 C...H_R++/-- -> W_R+/- + W_R+/-
26346             FCOF=PARP(191)**2*(3D0*RM1+0.25D0/RM1-1D0)
26347             WID2=WIDS(PYCOMP(9900024),4+(1-KFLS)/2)
26348           ENDIF
26349           WDTP(I)=FAC*FCOF*
26350      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26351           WDTP(I)=FUDGE*WDTP(I)
26352           WDTP(0)=WDTP(0)+WDTP(I)
26353           IF(MDME(IDC,1).GT.0) THEN
26354             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26355             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26356             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26357             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26358           ENDIF
26359   520  CONTINUE
26360
26361       ELSEIF(KFLA.EQ.KTECHN+115) THEN
26362 C...Techni-a2:
26363 C...Need to update to alpha_rho
26364         ALPRHT=2.16D0*(3D0/ITCM(1))*RTCM(47)**2
26365         FAC=(ALPRHT/12D0)*SHR
26366         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
26367         SQMZ=PMAS(23,1)**2
26368         SQMW=PMAS(24,1)**2
26369         SHP=SH
26370         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
26371         GMMZ=SHR*WDTPP(0)
26372         XWRHT=1D0/(4D0*XW*(1D0-XW))
26373         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26374         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26375         DO 530 I=1,MDCY(KC,3)
26376           IDC=I+MDCY(KC,2)-1
26377           IF(MDME(IDC,1).LT.0) GOTO 530
26378           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26379           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26380           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 530
26381           WID2=1D0
26382           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26383           IF(I.LE.4) THEN
26384             FACPV=PCM**2
26385             FACPA=PCM**2+1.5D0*RM1            
26386             VA2=0D0
26387             AA2=0D0
26388 C...a2_tc0 -> W+ + W-
26389             IF(I.EQ.1) THEN
26390               AA2=2D0*RTCM(3)**2/4D0/XW/RTCM(49)**2
26391 C...Multiplied by 2 for W^+_T W^-_L + W^+_L W^-_T.(KL)
26392               WID2=WIDS(24,1)
26393 C...a2_tc0 -> W+ + pi_tc- + c.c.
26394             ELSEIF(I.EQ.2.OR.I.EQ.3) THEN
26395               AA2=(1D0-RTCM(3)**2)/4D0/XW/RTCM(49)**2
26396               IF(I.EQ.6) THEN
26397                 WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
26398               ELSE
26399                 WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
26400               ENDIF
26401             ELSEIF(I.EQ.4) THEN
26402 C...a2_tc0 -> Z0 + pi_tc0'
26403               VA2=(1D0-RTCM(4)**2)/4D0/XW/XW1/RTCM(48)**2
26404               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
26405             ENDIF
26406             WDTP(I)=AEM*SHR**3*PCM/3D0*(VA2*FACPV+AA2*FACPA)
26407           ELSEIF(I.GE.5.AND.I.LE.10) THEN
26408             FACPV=PCM**2*(1D0+RM1+RM2)+3D0*RM1*RM2
26409             FACPA=PCM**2*(1D0+RM1+RM2)
26410             VA2=0D0
26411             AA2=0D0
26412             IF(I.EQ.5) THEN
26413 C...a_T^0 -> gamma rho_T^0
26414               VA2=(2D0*RTCM(2)-1D0)**2/RTCM(50)**4
26415               WID2=WIDS(PYCOMP(KTECHN+113),2)
26416             ELSEIF(I.EQ.6) THEN
26417 C...a_T^0 -> gamma omega_T
26418               VA2=1D0/RTCM(50)**4
26419               WID2=WIDS(PYCOMP(KTECHN+223),2)
26420             ELSEIF(I.EQ.7.OR.I.EQ.8) THEN
26421 C...a_T^0 -> W^+- rho_T^-+
26422               AA2=.25D0/XW/RTCM(51)**4
26423               IF(I.EQ.7) THEN
26424                 WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+213),3)
26425               ELSE
26426                 WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+213),2)
26427               ENDIF
26428             ELSEIF(I.EQ.9) THEN
26429 C...a_T^0 -> Z^0 rho_T^0
26430               VA2=(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(50)**4
26431               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+113),2)
26432             ELSEIF(I.EQ.10) THEN
26433 C...a_T^0 -> Z^0 omega_T
26434               VA2=.25D0*(1D0-2D0*XW)**2/XW/XW1/RTCM(50)**4
26435               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+223),2)
26436             ENDIF            
26437             WDTP(I)=AEM*SHR**5*PCM/12D0*(VA2*FACPV+AA2*FACPA)
26438           ELSE
26439 C...a2_tc0 -> f + fbar.
26440             WID2=1D0
26441             IF(I.LE.18) THEN
26442               IA=I-10
26443               FCOF=3D0*RADC
26444               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
26445             ELSE
26446               IA=I-8
26447               FCOF=1D0
26448               IF(IA.GE.17) WID2=WIDS(IA,1)
26449             ENDIF
26450             EI=KCHG(IA,1)/3D0
26451             AI=SIGN(1D0,EI+0.1D0)
26452             VI=AI-4D0*EI*XWV
26453             VALI=0.5D0*(VI+AI)
26454             VARI=0.5D0*(VI-AI)
26455             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
26456      &      ((VALI*BWZR)**2+(VALI*BWZI)**2+
26457      &      (VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
26458      &      (VALI*BWZR)*(VARI*BWZR)+VALI*VARI*BWZI**2))
26459           ENDIF
26460           WDTP(I)=FUDGE*WDTP(I)
26461           WDTP(0)=WDTP(0)+WDTP(I)
26462           IF(MDME(IDC,1).GT.0) THEN
26463             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26464             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26465             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26466             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26467           ENDIF
26468   530   CONTINUE
26469  
26470       ELSEIF(KFLA.EQ.KTECHN+215) THEN
26471 C...Techni-a2+/-:
26472         ALPRHT=2.16D0*(3D0/ITCM(1))*RTCM(47)**2
26473         FAC=(ALPRHT/12D0)*SHR
26474         SQMZ=PMAS(23,1)**2
26475         SQMW=PMAS(24,1)**2
26476         SHP=SH
26477         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
26478         GMMW=SHR*WDTPP(0)
26479         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
26480      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
26481         DO 540 I=1,MDCY(KC,3)
26482           IDC=I+MDCY(KC,2)-1
26483           IF(MDME(IDC,1).LT.0) GOTO 540
26484           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26485           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26486           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 540
26487           WID2=1D0
26488           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26489           IF(KFLR.GT.0) THEN
26490             ICHANN=2
26491           ELSE
26492             ICHANN=3
26493           ENDIF
26494           IF(I.LE.7) THEN
26495             AA2=0
26496             VA2=0
26497 C...a2_tc+ -> gamma + W+.
26498             IF(I.EQ.1) THEN
26499               AA2=RTCM(3)**2/RTCM(49)**2
26500               WID2=WIDS(24,ICHANN)
26501 C...a2_tc+ -> gamma + pi_tc+.
26502             ELSEIF(I.EQ.2) THEN
26503               AA2=(1D0-RTCM(3)**2)/RTCM(49)**2
26504               WID2=WIDS(PYCOMP(KTECHN+211),ICHANN)
26505 C...a2_tc+ -> W+ + Z
26506             ELSEIF(I.EQ.3) THEN
26507               AA2=RTCM(3)**2*(1D0/4D0/XW1 +
26508      &                       (XW-XW1)**2/4./XW/XW1)/RTCM(49)**2
26509               WID2=WIDS(24,ICHANN)*WIDS(23,2)
26510 C...a2_tc+ -> W+ + pi_tc0.
26511             ELSEIF(I.EQ.4) THEN
26512               AA2=(1D0-RTCM(3)**2)/4D0/XW/RTCM(49)**2
26513               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+111),2)
26514 C...a2_tc+ -> W+ + pi_tc'0.
26515             ELSEIF(I.EQ.5) THEN
26516               VA2=(1D0-RTCM(4)**2)/4D0/XW/RTCM(48)**2
26517               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+221),2)
26518 C...a2_tc+ -> Z0 + pi_tc+.
26519             ELSEIF(I.EQ.6) THEN
26520               AA2=(1D0-RTCM(3)**2)/4D0/XW/XW1*(1D0-2D0*XW)**2/
26521      &         RTCM(49)**2
26522               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+211),ICHANN)
26523             ENDIF
26524             WDTP(I)=AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
26525      &      /3D0*SHR**3
26526           ELSEIF(I.LE.10) THEN
26527             FACPV=PCM**2*(1D0+RM1+RM2)+3D0*RM1*RM2
26528             FACPA=PCM**2*(1D0+RM1+RM2)
26529             VA2=0D0
26530             AA2=0D0
26531 C...a2_tc+ -> gamma + rho_tc+
26532             IF(I.EQ.7) THEN
26533               VA2=(2D0*RTCM(2)-1D0)**2/RTCM(50)**4
26534               WID2=WIDS(PYCOMP(KTECHN+213),ICHANN)
26535 C...a2_tc+ -> W+ + rho_T^0
26536             ELSEIF(I.EQ.8) THEN
26537               AA2=1D0/(4D0*XW)/RTCM(51)**4
26538               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+113),2)
26539 C...a2_tc+ -> W+ + omega_T
26540             ELSEIF(I.EQ.9) THEN
26541               VA2=.25D0/XW/RTCM(50)**4
26542               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+223),2)
26543 C...a2_tc+ -> Z^0  + rho_T^+
26544             ELSEIF(I.EQ.10) THEN
26545               VA2=(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(50)**4
26546               AA2=1D0/(4D0*XW*XW1)/RTCM(51)**4
26547               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+213),ICHANN)
26548             ENDIF            
26549             WDTP(I)=AEM*SHR**5*PCM/12D0*(VA2*FACPV+AA2*FACPA)
26550           ELSE
26551 C...a2_tc+ -> f + fbar'.
26552             IA=I-10
26553             WID2=1D0
26554             IF(IA.LE.16) THEN
26555               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
26556               IF(KFLR.GT.0) THEN
26557                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
26558                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
26559                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
26560               ELSE
26561                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
26562                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
26563                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
26564               ENDIF
26565             ELSE
26566               FCOF=1D0
26567               IF(KFLR.GT.0) THEN
26568                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
26569               ELSE
26570                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
26571               ENDIF
26572             ENDIF
26573             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
26574      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26575           ENDIF
26576           WDTP(I)=FUDGE*WDTP(I)
26577           WDTP(0)=WDTP(0)+WDTP(I)
26578           IF(MDME(IDC,1).GT.0) THEN
26579             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26580             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26581             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26582             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26583           ENDIF
26584   540   CONTINUE
26585  
26586       ENDIF
26587       MINT(61)=0
26588       MINT(62)=0
26589       MINT(63)=0
26590       RETURN
26591       END
26592  
26593 C***********************************************************************
26594  
26595 C...PYOFSH
26596 C...Calculates partial width and differential cross-section maxima
26597 C...of channels/processes not allowed on mass-shell, and selects
26598 C...masses in such channels/processes.
26599  
26600       SUBROUTINE PYOFSH(MOFSH,KFMO,KFD1,KFD2,PMMO,RET1,RET2)
26601  
26602 C...Double precision and integer declarations.
26603       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
26604       IMPLICIT INTEGER(I-N)
26605       INTEGER PYK,PYCHGE,PYCOMP
26606 C...Commonblocks.
26607       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
26608       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
26609       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
26610       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
26611       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
26612       COMMON/PYINT1/MINT(400),VINT(400)
26613       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
26614       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
26615       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
26616      &/PYINT2/,/PYINT5/
26617 C...Local arrays.
26618       DIMENSION KFD(2),MBW(2),PMD(2),PGD(2),PMG(2),PML(2),PMU(2),
26619      &PMH(2),ATL(2),ATU(2),ATH(2),RMG(2),INX1(100),XPT1(100),
26620      &FPT1(100),INX2(100),XPT2(100),FPT2(100),WDTP(0:400),
26621      &WDTE(0:400,0:5)
26622  
26623 C...Find if particles equal, maximum mass, matrix elements, etc.
26624       MINT(51)=0
26625       ISUB=MINT(1)
26626       KFD(1)=IABS(KFD1)
26627       KFD(2)=IABS(KFD2)
26628       MEQL=0
26629       IF(KFD(1).EQ.KFD(2)) MEQL=1
26630       MLM=0
26631       IF(MOFSH.GE.2.AND.MEQL.EQ.1) MLM=INT(1.5D0+PYR(0))
26632       IF(MOFSH.LE.2.OR.MOFSH.EQ.5) THEN
26633         NOFF=44
26634         PMMX=PMMO
26635       ELSE
26636         NOFF=40
26637         PMMX=VINT(1)
26638         IF(CKIN(2).GT.CKIN(1)) PMMX=MIN(CKIN(2),VINT(1))
26639       ENDIF
26640       MMED=0
26641       IF((KFMO.EQ.25.OR.KFMO.EQ.35.OR.KFMO.EQ.36).AND.MEQL.EQ.1.AND.
26642      &(KFD(1).EQ.23.OR.KFD(1).EQ.24)) MMED=1
26643       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(1).EQ.23.OR.
26644      &KFD(1).EQ.24).AND.(KFD(2).EQ.23.OR.KFD(2).EQ.24)) MMED=2
26645       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(2).EQ.25.OR.
26646      &KFD(2).EQ.35.OR.KFD(2).EQ.36)) MMED=3
26647       LOOP=1
26648  
26649 C...Find where Breit-Wigners are required, else select discrete masses.
26650   100 DO 110 I=1,2
26651         KFCA=PYCOMP(KFD(I))
26652         IF(KFCA.GT.0) THEN
26653           PMD(I)=PMAS(KFCA,1)
26654           PGD(I)=PMAS(KFCA,2)
26655         ELSE
26656           PMD(I)=0D0
26657           PGD(I)=0D0
26658         ENDIF
26659         IF(MSTP(42).LE.0.OR.PGD(I).LT.PARP(41)) THEN
26660           MBW(I)=0
26661           PMG(I)=PMD(I)
26662           RMG(I)=(PMG(I)/PMMX)**2
26663         ELSE
26664           MBW(I)=1
26665         ENDIF
26666   110 CONTINUE
26667  
26668 C...Find allowed mass range and Breit-Wigner parameters.
26669       DO 120 I=1,2
26670         IF(MOFSH.EQ.1.AND.LOOP.EQ.1.AND.MBW(I).EQ.1) THEN
26671           PML(I)=PARP(42)
26672           PMU(I)=PMMX-PARP(42)
26673           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
26674           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
26675         ELSEIF(MBW(I).EQ.1.AND.MOFSH.NE.5) THEN
26676           ILM=I
26677           IF(MLM.EQ.2) ILM=3-I
26678           PML(I)=MAX(CKIN(NOFF+2*ILM-1),PARP(42))
26679           IF(MBW(3-I).EQ.0) THEN
26680             PMU(I)=PMMX-PMD(3-I)
26681           ELSE
26682             PMU(I)=PMMX-MAX(CKIN(NOFF+5-2*ILM),PARP(42))
26683           ENDIF
26684           IF(CKIN(NOFF+2*ILM).GT.CKIN(NOFF+2*ILM-1)) PMU(I)=
26685      &    MIN(PMU(I),CKIN(NOFF+2*ILM))
26686           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
26687           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
26688           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
26689           IF(MBW(I).EQ.1) THEN
26690             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
26691             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
26692             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
26693      &      PGD(I)))
26694           ENDIF
26695         ELSEIF(MBW(I).EQ.1.AND.MOFSH.EQ.5) THEN
26696           ILM=I
26697           IF(MLM.EQ.2) ILM=3-I
26698           PML(I)=MAX(CKIN(48+I),PARP(42))
26699           PMU(I)=PMMX-MAX(CKIN(51-I),PARP(42))
26700           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
26701           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
26702           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
26703           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
26704           IF(MBW(I).EQ.1) THEN
26705             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
26706             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
26707             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
26708      &      PGD(I)))
26709           ENDIF
26710         ENDIF
26711   120 CONTINUE
26712       IF(MBW(1).LT.0.OR.MBW(2).LT.0.OR.(MBW(1).EQ.0.AND.MBW(2).EQ.0))
26713      &THEN
26714         CALL PYERRM(3,'(PYOFSH:) no allowed decay product masses')
26715         MINT(51)=1
26716         RETURN
26717       ENDIF
26718  
26719 C...Calculation of partial width of resonance.
26720       IF(MOFSH.EQ.1) THEN
26721  
26722 C..If only one integration, pick that to be the inner.
26723         IF(MBW(1).EQ.0) THEN
26724           PM2=PMD(1)
26725           PMD(1)=PMD(2)
26726           PGD(1)=PGD(2)
26727           PML(1)=PML(2)
26728           PMU(1)=PMU(2)
26729         ELSEIF(MBW(2).EQ.0) THEN
26730           PM2=PMD(2)
26731         ENDIF
26732  
26733 C...Start outer loop of integration.
26734         IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
26735           ATL2=ATAN((PML(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
26736           ATU2=ATAN((PMU(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
26737           NPT2=1
26738           XPT2(1)=1D0
26739           INX2(1)=0
26740           FMAX2=0D0
26741         ENDIF
26742   130   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
26743           PM2S=PMD(2)**2+PMD(2)*PGD(2)*TAN(ATL2+XPT2(NPT2)*(ATU2-ATL2))
26744           PM2=MIN(PMU(2),MAX(PML(2),SQRT(MAX(0D0,PM2S))))
26745         ENDIF
26746         RM2=(PM2/PMMX)**2
26747  
26748 C...Start inner loop of integration.
26749         PML1=PML(1)
26750         PMU1=MIN(PMU(1),PMMX-PM2)
26751         IF(MEQL.EQ.1) PMU1=MIN(PMU1,PM2)
26752         ATL1=ATAN((PML1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
26753         ATU1=ATAN((PMU1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
26754         IF(PML1+PARJ(64).GE.PMU1.OR.ATL1+1D-7.GE.ATU1) THEN
26755           FUNC2=0D0
26756           GOTO 180
26757         ENDIF
26758         NPT1=1
26759         XPT1(1)=1D0
26760         INX1(1)=0
26761         FMAX1=0D0
26762   140   PM1S=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL1+XPT1(NPT1)*(ATU1-ATL1))
26763         PM1=MIN(PMU1,MAX(PML1,SQRT(MAX(0D0,PM1S))))
26764         RM1=(PM1/PMMX)**2
26765  
26766 C...Evaluate function value - inner loop.
26767         FUNC1=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26768         IF(MMED.EQ.1) FUNC1=FUNC1*((1D0-RM1-RM2)**2+8D0*RM1*RM2)
26769         IF(MMED.EQ.2) FUNC1=FUNC1**3*(1D0+10D0*RM1+10D0*RM2+RM1**2+
26770      &  RM2**2+10D0*RM1*RM2)
26771         IF(FUNC1.GT.FMAX1) FMAX1=FUNC1
26772         FPT1(NPT1)=FUNC1
26773  
26774 C...Go to next position in inner loop.
26775         IF(NPT1.EQ.1) THEN
26776           NPT1=NPT1+1
26777           XPT1(NPT1)=0D0
26778           INX1(NPT1)=1
26779           GOTO 140
26780         ELSEIF(NPT1.LE.8) THEN
26781           NPT1=NPT1+1
26782           IF(NPT1.LE.4.OR.NPT1.EQ.6) ISH1=1
26783           ISH1=ISH1+1
26784           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
26785           INX1(NPT1)=INX1(ISH1)
26786           INX1(ISH1)=NPT1
26787           GOTO 140
26788         ELSEIF(NPT1.LT.100) THEN
26789           ISN1=ISH1
26790   150     ISH1=ISH1+1
26791           IF(ISH1.GT.NPT1) ISH1=2
26792           IF(ISH1.EQ.ISN1) GOTO 160
26793           DFPT1=ABS(FPT1(ISH1)-FPT1(INX1(ISH1)))
26794           IF(DFPT1.LT.PARP(43)*FMAX1) GOTO 150
26795           NPT1=NPT1+1
26796           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
26797           INX1(NPT1)=INX1(ISH1)
26798           INX1(ISH1)=NPT1
26799           GOTO 140
26800         ENDIF
26801  
26802 C...Calculate integral over inner loop.
26803   160   FSUM1=0D0
26804         DO 170 IPT1=2,NPT1
26805           FSUM1=FSUM1+0.5D0*(FPT1(IPT1)+FPT1(INX1(IPT1)))*
26806      &    (XPT1(INX1(IPT1))-XPT1(IPT1))
26807   170   CONTINUE
26808         FUNC2=FSUM1*(ATU1-ATL1)/PARU(1)
26809   180   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
26810           IF(FUNC2.GT.FMAX2) FMAX2=FUNC2
26811           FPT2(NPT2)=FUNC2
26812  
26813 C...Go to next position in outer loop.
26814           IF(NPT2.EQ.1) THEN
26815             NPT2=NPT2+1
26816             XPT2(NPT2)=0D0
26817             INX2(NPT2)=1
26818             GOTO 130
26819           ELSEIF(NPT2.LE.8) THEN
26820             NPT2=NPT2+1
26821             IF(NPT2.LE.4.OR.NPT2.EQ.6) ISH2=1
26822             ISH2=ISH2+1
26823             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
26824             INX2(NPT2)=INX2(ISH2)
26825             INX2(ISH2)=NPT2
26826             GOTO 130
26827           ELSEIF(NPT2.LT.100) THEN
26828             ISN2=ISH2
26829   190       ISH2=ISH2+1
26830             IF(ISH2.GT.NPT2) ISH2=2
26831             IF(ISH2.EQ.ISN2) GOTO 200
26832             DFPT2=ABS(FPT2(ISH2)-FPT2(INX2(ISH2)))
26833             IF(DFPT2.LT.PARP(43)*FMAX2) GOTO 190
26834             NPT2=NPT2+1
26835             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
26836             INX2(NPT2)=INX2(ISH2)
26837             INX2(ISH2)=NPT2
26838             GOTO 130
26839           ENDIF
26840  
26841 C...Calculate integral over outer loop.
26842   200     FSUM2=0D0
26843           DO 210 IPT2=2,NPT2
26844             FSUM2=FSUM2+0.5D0*(FPT2(IPT2)+FPT2(INX2(IPT2)))*
26845      &      (XPT2(INX2(IPT2))-XPT2(IPT2))
26846   210     CONTINUE
26847           FSUM2=FSUM2*(ATU2-ATL2)/PARU(1)
26848           IF(MEQL.EQ.1) FSUM2=2D0*FSUM2
26849         ELSE
26850           FSUM2=FUNC2
26851         ENDIF
26852  
26853 C...Save result; second integration for user-selected mass range.
26854         IF(LOOP.EQ.1) WIDW=FSUM2
26855         WID2=FSUM2
26856         IF(LOOP.EQ.1.AND.(CKIN(46).GE.CKIN(45).OR.CKIN(48).GE.CKIN(47)
26857      &  .OR.MAX(CKIN(45),CKIN(47)).GE.1.01D0*PARP(42))) THEN
26858           LOOP=2
26859           GOTO 100
26860         ENDIF
26861         RET1=WIDW
26862         RET2=WID2/WIDW
26863  
26864 C...Select two decay product masses of a resonance.
26865       ELSEIF(MOFSH.EQ.2.OR.MOFSH.EQ.5) THEN
26866   220   DO 230 I=1,2
26867           IF(MBW(I).EQ.0) GOTO 230
26868           PMBW=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*
26869      &    (ATU(I)-ATL(I)))
26870           PMG(I)=MIN(PMU(I),MAX(PML(I),SQRT(MAX(0D0,PMBW))))
26871           RMG(I)=(PMG(I)/PMMX)**2
26872   230   CONTINUE
26873         IF((MEQL.EQ.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
26874      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) GOTO 220
26875  
26876 C...Weight with matrix element (if none known, use beta factor).
26877         FLAM=SQRT(MAX(0D0,(1D0-RMG(1)-RMG(2))**2-4D0*RMG(1)*RMG(2)))
26878         IF(MMED.EQ.1) THEN
26879           WTBE=FLAM*((1D0-RMG(1)-RMG(2))**2+8D0*RMG(1)*RMG(2))
26880         ELSEIF(MMED.EQ.2) THEN
26881           WTBE=FLAM**3*(1D0+10D0*RMG(1)+10D0*RMG(2)+RMG(1)**2+
26882      &    RMG(2)**2+10D0*RMG(1)*RMG(2))
26883         ELSEIF(MMED.EQ.3) THEN
26884           WTBE=FLAM*(RMG(1)+FLAM**2/12D0)
26885         ELSE
26886           WTBE=FLAM
26887         ENDIF
26888         IF(WTBE.LT.PYR(0)) GOTO 220
26889         RET1=PMG(1)
26890         RET2=PMG(2)
26891  
26892 C...Find suitable set of masses for initialization of 2 -> 2 processes.
26893       ELSEIF(MOFSH.EQ.3) THEN
26894         IF(MBW(1).NE.0.AND.MBW(2).EQ.0) THEN
26895           PMG(1)=MIN(PMD(1),0.5D0*(PML(1)+PMU(1)))
26896           PMG(2)=PMD(2)
26897         ELSEIF(MBW(2).NE.0.AND.MBW(1).EQ.0) THEN
26898           PMG(1)=PMD(1)
26899           PMG(2)=MIN(PMD(2),0.5D0*(PML(2)+PMU(2)))
26900         ELSE
26901           IDIV=-1
26902   240     IDIV=IDIV+1
26903           PMG(1)=MIN(PMD(1),0.1D0*(IDIV*PML(1)+(10-IDIV)*PMU(1)))
26904           PMG(2)=MIN(PMD(2),0.1D0*(IDIV*PML(2)+(10-IDIV)*PMU(2)))
26905           IF(IDIV.LE.9.AND.PMG(1)+PMG(2).GT.0.9D0*PMMX) GOTO 240
26906         ENDIF
26907         RET1=PMG(1)
26908         RET2=PMG(2)
26909  
26910 C...Evaluate importance of excluded tails of Breit-Wigners.
26911         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
26912      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
26913         IF(MEQL.LE.1) THEN
26914           VINT(80)=1D0
26915           DO 250 I=1,2
26916             IF(MBW(I).NE.0) VINT(80)=VINT(80)*1.25D0*(ATU(I)-ATL(I))/
26917      &      PARU(1)
26918   250     CONTINUE
26919         ELSE
26920           VINT(80)=(1.25D0/PARU(1))**2*MAX((ATU(1)-ATL(1))*
26921      &    (ATH(2)-ATL(2)),(ATH(1)-ATL(1))*(ATU(2)-ATL(2)))
26922         ENDIF
26923         IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.30.OR.ISUB.EQ.35).AND.
26924      &  MSTP(43).NE.2) VINT(80)=2D0*VINT(80)
26925         IF(ISUB.EQ.22.AND.MSTP(43).NE.2) VINT(80)=4D0*VINT(80)
26926         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
26927  
26928 C...Pick one particle to be the lighter (if improves efficiency).
26929       ELSEIF(MOFSH.EQ.4) THEN
26930         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
26931      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
26932   260   IF(MEQL.EQ.2) MLM=INT(1.5D0+PYR(0))
26933  
26934 C...Select two masses according to Breit-Wigner + flat in s + 1/s.
26935         DO 270 I=1,2
26936           IF(MBW(I).EQ.0) GOTO 270
26937           PMV=PMU(I)
26938           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
26939           ATV=ATU(I)
26940           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
26941           RBR=PYR(0)
26942           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
26943      &    ISUB.EQ.35).AND.MSTP(43).NE.2) RBR=2D0*RBR
26944           IF(RBR.LT.0.8D0) THEN
26945             PMSR=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*(ATV-ATL(I)))
26946             PMG(I)=MIN(PMV,MAX(PML(I),SQRT(MAX(0D0,PMSR))))
26947           ELSEIF(RBR.LT.0.9D0) THEN
26948             PMG(I)=SQRT(MAX(0D0,PML(I)**2+PYR(0)*(PMV**2-PML(I)**2)))
26949           ELSEIF(RBR.LT.1.5D0) THEN
26950             PMG(I)=PML(I)*(PMV/PML(I))**PYR(0)
26951           ELSE
26952             PMG(I)=SQRT(MAX(0D0,PML(I)**2*PMV**2/(PML(I)**2+PYR(0)*
26953      &      (PMV**2-PML(I)**2))))
26954           ENDIF
26955   270   CONTINUE
26956         IF((MEQL.GE.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
26957      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN
26958           IF(MINT(48).EQ.1.AND.MSTP(171).EQ.0) THEN
26959             NGEN(0,1)=NGEN(0,1)+1
26960             NGEN(MINT(1),1)=NGEN(MINT(1),1)+1
26961             GOTO 260
26962           ELSE
26963             MINT(51)=1
26964             RETURN
26965           ENDIF
26966         ENDIF
26967         RET1=PMG(1)
26968         RET2=PMG(2)
26969  
26970 C...Give weight for selected mass distribution.
26971         VINT(80)=1D0
26972         DO 280 I=1,2
26973           IF(MBW(I).EQ.0) GOTO 280
26974           PMV=PMU(I)
26975           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
26976           ATV=ATU(I)
26977           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
26978           F0=PMD(I)*PGD(I)/((PMG(I)**2-PMD(I)**2)**2+
26979      &    (PMD(I)*PGD(I))**2)/PARU(1)
26980           F1=1D0
26981           F2=1D0/PMG(I)**2
26982           F3=1D0/PMG(I)**4
26983           FI0=(ATV-ATL(I))/PARU(1)
26984           FI1=PMV**2-PML(I)**2
26985           FI2=2D0*LOG(PMV/PML(I))
26986           FI3=1D0/PML(I)**2-1D0/PMV**2
26987           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
26988      &    ISUB.EQ.35).AND.MSTP(43).NE.2) THEN
26989             VINT(80)=VINT(80)*20D0/(8D0+(FI0/F0)*(F1/FI1+6D0*F2/FI2+
26990      &      5D0*F3/FI3))
26991           ELSE
26992             VINT(80)=VINT(80)*10D0/(8D0+(FI0/F0)*(F1/FI1+F2/FI2))
26993           ENDIF
26994           VINT(80)=VINT(80)*FI0
26995   280   CONTINUE
26996         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
26997       ENDIF
26998  
26999       RETURN
27000       END
27001  
27002 C***********************************************************************
27003  
27004 C...PYRECO
27005 C...Handles the possibility of colour reconnection in W+W- events,
27006 C...Based on the main scenarios of the Sjostrand and Khoze study:
27007 C...I, II, II', intermediate and instantaneous; plus one model
27008 C...along the lines of the Gustafson and Hakkinen: GH.
27009 C...Note: also handles Z0 Z0 and W-W+ events, but notation below
27010 C...is as if first resonance is W+ and second W-.
27011  
27012       SUBROUTINE PYRECO(IW1,IW2,NSD1,NAFT1)
27013  
27014 C...Double precision and integer declarations.
27015       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27016       IMPLICIT INTEGER(I-N)
27017       INTEGER PYK,PYCHGE,PYCOMP
27018 C...Parameter value; number of points in MC integration.
27019       PARAMETER (NPT=100)
27020 C...Commonblocks.
27021       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
27022       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27023       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27024       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27025       COMMON/PYINT1/MINT(400),VINT(400)
27026       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
27027 C...Local arrays.
27028       DIMENSION NBEG(2),NEND(2),INP(50),INM(50),BEWW(3),XP(3),XM(3),
27029      &V1(3),V2(3),BETP(50,4),DIRP(50,3),BETM(50,4),DIRM(50,3),
27030      &XD(4),XB(4),IAP(NPT),IAM(NPT),WTA(NPT),V1P(3),V2P(3),V1M(3),
27031      &V2M(3),Q(4,3),XPP(3),XMM(3),IPC(20),IMC(20),TC(0:20),TPC(20),
27032      &TMC(20),IJOIN(100)
27033  
27034 C...Functions to give four-product and to do determinants.
27035       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)
27036       DETER(I,J,L)=Q(I,1)*Q(J,2)*Q(L,3)-Q(I,1)*Q(L,2)*Q(J,3)+
27037      &Q(J,1)*Q(L,2)*Q(I,3)-Q(J,1)*Q(I,2)*Q(L,3)+
27038      &Q(L,1)*Q(I,2)*Q(J,3)-Q(L,1)*Q(J,2)*Q(I,3)
27039  
27040 C...Only allow fraction of recoupling for GH, intermediate and
27041 C...instantaneous.
27042       IF(MSTP(115).EQ.5.OR.MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
27043         IF(PYR(0).GT.PARP(120)) RETURN
27044       ENDIF
27045       ISUB=MINT(1)
27046  
27047 C...Common part for scenarios I, II, II', and GH.
27048       IF(MSTP(115).EQ.1.OR.MSTP(115).EQ.2.OR.MSTP(115).EQ.3.OR.
27049      &MSTP(115).EQ.5) THEN
27050  
27051 C...Read out frequently-used parameters.
27052         PI=PARU(1)
27053         HBAR=PARU(3)
27054         PMW=PMAS(24,1)
27055         IF(ISUB.EQ.22) PMW=PMAS(23,1)
27056         PGW=PMAS(24,2)
27057         IF(ISUB.EQ.22) PGW=PMAS(23,2)
27058         TFRAG=PARP(115)
27059         RHAD=PARP(116)
27060         FACT=PARP(117)
27061         BLOWR=PARP(118)
27062         BLOWT=PARP(119)
27063  
27064 C...Find range of decay products of the W's.
27065 C...Background: the W's are stored in IW1 and IW2.
27066 C...Their direct decay products in NSD1+1 through NSD1+4.
27067 C...Products after shower (if any) in NSD1+5 through NAFT1
27068 C...for first W and in NAFT1+1 through N for the second.
27069         IF(NAFT1.GT.NSD1+4) THEN
27070           NBEG(1)=NSD1+5
27071           NEND(1)=NAFT1
27072         ELSE
27073           NBEG(1)=NSD1+1
27074           NEND(1)=NSD1+2
27075         ENDIF
27076         IF(N.GT.NAFT1) THEN
27077           NBEG(2)=NAFT1+1
27078           NEND(2)=N
27079         ELSE
27080           NBEG(2)=NSD1+3
27081           NEND(2)=NSD1+4
27082         ENDIF
27083  
27084 C...Rearrange parton shower products along strings.
27085         NOLD=N
27086         CALL PYPREP(NSD1+1)
27087         IF(MINT(51).NE.0) RETURN
27088  
27089 C...Find partons pointing back to W+ and W-; store them with quark
27090 C...end of string first.
27091         NNP=0
27092         NNM=0
27093         ISGP=0
27094         ISGM=0
27095         DO 120 I=NOLD+1,N
27096           IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 120
27097           IF(IABS(K(I,2)).GE.22) GOTO 120
27098           IF(K(I,3).GE.NBEG(1).AND.K(I,3).LE.NEND(1)) THEN
27099             IF(ISGP.EQ.0) ISGP=ISIGN(1,K(I,2))
27100             NNP=NNP+1
27101             IF(ISGP.EQ.1) THEN
27102               INP(NNP)=I
27103             ELSE
27104               DO 100 I1=NNP,2,-1
27105                 INP(I1)=INP(I1-1)
27106   100         CONTINUE
27107               INP(1)=I
27108             ENDIF
27109             IF(K(I,1).EQ.1) ISGP=0
27110           ELSEIF(K(I,3).GE.NBEG(2).AND.K(I,3).LE.NEND(2)) THEN
27111             IF(ISGM.EQ.0) ISGM=ISIGN(1,K(I,2))
27112             NNM=NNM+1
27113             IF(ISGM.EQ.1) THEN
27114               INM(NNM)=I
27115             ELSE
27116               DO 110 I1=NNM,2,-1
27117                 INM(I1)=INM(I1-1)
27118   110         CONTINUE
27119               INM(1)=I
27120             ENDIF
27121             IF(K(I,1).EQ.1) ISGM=0
27122           ENDIF
27123   120   CONTINUE
27124  
27125 C...Boost to W+W- rest frame (not strictly needed).
27126         DO 130 J=1,3
27127           BEWW(J)=(P(IW1,J)+P(IW2,J))/(P(IW1,4)+P(IW2,4))
27128   130   CONTINUE
27129         CALL PYROBO(IW1,IW1,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27130         CALL PYROBO(IW2,IW2,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27131         CALL PYROBO(NOLD+1,N,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27132  
27133 C...Select decay vertices of W+ and W-.
27134         TP=HBAR*(-LOG(PYR(0)))*P(IW1,4)/
27135      &  SQRT((P(IW1,5)**2-PMW**2)**2+(P(IW1,5)**2*PGW/PMW)**2)
27136         TM=HBAR*(-LOG(PYR(0)))*P(IW2,4)/
27137      &  SQRT((P(IW2,5)**2-PMW**2)**2+(P(IW2,5)**2*PGW/PMW)**2)
27138         GTMAX=MAX(TP,TM)
27139         DO 140 J=1,3
27140           XP(J)=TP*P(IW1,J)/P(IW1,4)
27141           XM(J)=TM*P(IW2,J)/P(IW2,4)
27142   140   CONTINUE
27143  
27144 C...Begin scenario I specifics.
27145         IF(MSTP(115).EQ.1) THEN
27146  
27147 C...Reconstruct velocity and direction of W+ string pieces.
27148           DO 170 IIP=1,NNP-1
27149             IF(K(INP(IIP),2).LT.0) GOTO 170
27150             I1=INP(IIP)
27151             I2=INP(IIP+1)
27152             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
27153             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
27154             DO 150 J=1,3
27155               V1(J)=P(I1,J)/P1A
27156               V2(J)=P(I2,J)/P2A
27157               BETP(IIP,J)=0.5D0*(V1(J)+V2(J))
27158               DIRP(IIP,J)=V1(J)-V2(J)
27159   150       CONTINUE
27160             BETP(IIP,4)=1D0/SQRT(1D0-BETP(IIP,1)**2-BETP(IIP,2)**2-
27161      &      BETP(IIP,3)**2)
27162             DIRL=SQRT(DIRP(IIP,1)**2+DIRP(IIP,2)**2+DIRP(IIP,3)**2)
27163             DO 160 J=1,3
27164               DIRP(IIP,J)=DIRP(IIP,J)/DIRL
27165   160       CONTINUE
27166   170     CONTINUE
27167  
27168 C...Reconstruct velocity and direction of W- string pieces.
27169           DO 200 IIM=1,NNM-1
27170             IF(K(INM(IIM),2).LT.0) GOTO 200
27171             I1=INM(IIM)
27172             I2=INM(IIM+1)
27173             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
27174             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
27175             DO 180 J=1,3
27176               V1(J)=P(I1,J)/P1A
27177               V2(J)=P(I2,J)/P2A
27178               BETM(IIM,J)=0.5D0*(V1(J)+V2(J))
27179               DIRM(IIM,J)=V1(J)-V2(J)
27180   180       CONTINUE
27181             BETM(IIM,4)=1D0/SQRT(1D0-BETM(IIM,1)**2-BETM(IIM,2)**2-
27182      &      BETM(IIM,3)**2)
27183             DIRL=SQRT(DIRM(IIM,1)**2+DIRM(IIM,2)**2+DIRM(IIM,3)**2)
27184             DO 190 J=1,3
27185               DIRM(IIM,J)=DIRM(IIM,J)/DIRL
27186   190       CONTINUE
27187   200     CONTINUE
27188  
27189 C...Loop over number of space-time points.
27190           NACC=0
27191           SUM=0D0
27192           DO 250 IPT=1,NPT
27193  
27194 C...Pick x,y,z,t Gaussian (width RHAD and TFRAG, respectively).
27195             R=SQRT(-LOG(PYR(0)))
27196             PHI=2D0*PI*PYR(0)
27197             X=BLOWR*RHAD*R*COS(PHI)
27198             Y=BLOWR*RHAD*R*SIN(PHI)
27199             R=SQRT(-LOG(PYR(0)))
27200             PHI=2D0*PI*PYR(0)
27201             Z=BLOWR*RHAD*R*COS(PHI)
27202             T=GTMAX+BLOWT*SQRT(0.5D0)*TFRAG*R*ABS(SIN(PHI))
27203  
27204 C...Reject impossible points. Weight for sample distribution.
27205             IF(T**2-X**2-Y**2-Z**2.LT.0D0) GOTO 250
27206             WTSMP=EXP(-(X**2+Y**2+Z**2)/(BLOWR*RHAD)**2)*
27207      &      EXP(-2D0*(T-GTMAX)**2/(BLOWT*TFRAG)**2)
27208  
27209 C...Loop over W+ string pieces and find one with largest weight.
27210             IMAXP=0
27211             WTMAXP=1D-10
27212             XD(1)=X-XP(1)
27213             XD(2)=Y-XP(2)
27214             XD(3)=Z-XP(3)
27215             XD(4)=T-TP
27216             DO 220 IIP=1,NNP-1
27217               IF(K(INP(IIP),2).LT.0) GOTO 220
27218               BED=BETP(IIP,1)*XD(1)+BETP(IIP,2)*XD(2)+BETP(IIP,3)*XD(3)
27219               BEDG=BETP(IIP,4)*(BETP(IIP,4)*BED/(1D0+BETP(IIP,4))-XD(4))
27220               DO 210 J=1,3
27221                 XB(J)=XD(J)+BEDG*BETP(IIP,J)
27222   210         CONTINUE
27223               XB(4)=BETP(IIP,4)*(XD(4)-BED)
27224               SR2=XB(1)**2+XB(2)**2+XB(3)**2
27225               SZ2=(DIRP(IIP,1)*XB(1)+DIRP(IIP,2)*XB(2)+
27226      &        DIRP(IIP,3)*XB(3))**2
27227               WTP=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
27228      &        TFRAG**2)
27229               IF(XB(4)-SQRT(SR2).LT.0D0) WTP=0D0
27230               IF(WTP.GT.WTMAXP) THEN
27231                 IMAXP=IIP
27232                 WTMAXP=WTP
27233               ENDIF
27234   220       CONTINUE
27235  
27236 C...Loop over W- string pieces and find one with largest weight.
27237             IMAXM=0
27238             WTMAXM=1D-10
27239             XD(1)=X-XM(1)
27240             XD(2)=Y-XM(2)
27241             XD(3)=Z-XM(3)
27242             XD(4)=T-TM
27243             DO 240 IIM=1,NNM-1
27244               IF(K(INM(IIM),2).LT.0) GOTO 240
27245               BED=BETM(IIM,1)*XD(1)+BETM(IIM,2)*XD(2)+BETM(IIM,3)*XD(3)
27246               BEDG=BETM(IIM,4)*(BETM(IIM,4)*BED/(1D0+BETM(IIM,4))-XD(4))
27247               DO 230 J=1,3
27248                 XB(J)=XD(J)+BEDG*BETM(IIM,J)
27249   230         CONTINUE
27250               XB(4)=BETM(IIM,4)*(XD(4)-BED)
27251               SR2=XB(1)**2+XB(2)**2+XB(3)**2
27252               SZ2=(DIRM(IIM,1)*XB(1)+DIRM(IIM,2)*XB(2)+
27253      &        DIRM(IIM,3)*XB(3))**2
27254               WTM=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
27255      &        TFRAG**2)
27256               IF(XB(4)-SQRT(SR2).LT.0D0) WTM=0D0
27257               IF(WTM.GT.WTMAXM) THEN
27258                 IMAXM=IIM
27259                 WTMAXM=WTM
27260               ENDIF
27261   240       CONTINUE
27262  
27263 C...Result of integration.
27264             WT=0D0
27265             IF(IMAXP.NE.0.AND.IMAXM.NE.0) THEN
27266               WT=WTMAXP*WTMAXM/WTSMP
27267               SUM=SUM+WT
27268               NACC=NACC+1
27269               IAP(NACC)=IMAXP
27270               IAM(NACC)=IMAXM
27271               WTA(NACC)=WT
27272             ENDIF
27273   250     CONTINUE
27274           RES=BLOWR**3*BLOWT*SUM/NPT
27275  
27276 C...Decide whether to reconnect and, if so, where.
27277           IACC=0
27278           PREC=1D0-EXP(-FACT*RES)
27279           IF(PREC.GT.PYR(0)) THEN
27280             RSUM=PYR(0)*SUM
27281             DO 260 IA=1,NACC
27282               IACC=IA
27283               RSUM=RSUM-WTA(IA)
27284               IF(RSUM.LE.0D0) GOTO 270
27285   260       CONTINUE
27286   270       IIP=IAP(IACC)
27287             IIM=IAM(IACC)
27288           ENDIF
27289  
27290 C...Begin scenario II and II' specifics.
27291         ELSEIF(MSTP(115).EQ.2.OR.MSTP(115).EQ.3) THEN
27292  
27293 C...Loop through all string pieces, one from W+ and one from W-.
27294           NCROSS=0
27295           TC(0)=0D0
27296           DO 340 IIP=1,NNP-1
27297             IF(K(INP(IIP),2).LT.0) GOTO 340
27298             I1P=INP(IIP)
27299             I2P=INP(IIP+1)
27300             DO 330 IIM=1,NNM-1
27301               IF(K(INM(IIM),2).LT.0) GOTO 330
27302               I1M=INM(IIM)
27303               I2M=INM(IIM+1)
27304  
27305 C...Find endpoint velocity vectors.
27306               DO 280 J=1,3
27307                 V1P(J)=P(I1P,J)/P(I1P,4)
27308                 V2P(J)=P(I2P,J)/P(I2P,4)
27309                 V1M(J)=P(I1M,J)/P(I1M,4)
27310                 V2M(J)=P(I2M,J)/P(I2M,4)
27311   280         CONTINUE
27312  
27313 C...Define q matrix and find t.
27314               DO 290 J=1,3
27315                 Q(1,J)=V2P(J)-V1P(J)
27316                 Q(2,J)=-(V2M(J)-V1M(J))
27317                 Q(3,J)=XP(J)-XM(J)-TP*V1P(J)+TM*V1M(J)
27318                 Q(4,J)=V1P(J)-V1M(J)
27319   290         CONTINUE
27320               T=-DETER(1,2,3)/DETER(1,2,4)
27321  
27322 C...Find alpha and beta; i.e. coordinates of crossing point.
27323               S11=Q(1,1)*(T-TP)
27324               S12=Q(2,1)*(T-TM)
27325               S13=Q(3,1)+Q(4,1)*T
27326               S21=Q(1,2)*(T-TP)
27327               S22=Q(2,2)*(T-TM)
27328               S23=Q(3,2)+Q(4,2)*T
27329               DEN=S11*S22-S12*S21
27330               ALP=(S12*S23-S22*S13)/DEN
27331               BET=(S21*S13-S11*S23)/DEN
27332  
27333 C...Check if solution acceptable.
27334               IANSW=1
27335               IF(T.LT.GTMAX) IANSW=0
27336               IF(ALP.LT.0D0.OR.ALP.GT.1D0) IANSW=0
27337               IF(BET.LT.0D0.OR.BET.GT.1D0) IANSW=0
27338  
27339 C...Find point of crossing and check that not inconsistent.
27340               DO 300 J=1,3
27341                 XPP(J)=XP(J)+(V1P(J)+ALP*(V2P(J)-V1P(J)))*(T-TP)
27342                 XMM(J)=XM(J)+(V1M(J)+BET*(V2M(J)-V1M(J)))*(T-TM)
27343   300         CONTINUE
27344               D2PM=(XPP(1)-XMM(1))**2+(XPP(2)-XMM(2))**2+
27345      &        (XPP(3)-XMM(3))**2
27346               D2P=XPP(1)**2+XPP(2)**2+XPP(3)**2
27347               D2M=XMM(1)**2+XMM(2)**2+XMM(3)**2
27348               IF(D2PM.GT.1D-4*(D2P+D2M)) IANSW=-1
27349  
27350 C...Find string eigentimes at crossing.
27351               IF(IANSW.EQ.1) THEN
27352                 TAUP=SQRT(MAX(0D0,(T-TP)**2-(XPP(1)-XP(1))**2-
27353      &          (XPP(2)-XP(2))**2-(XPP(3)-XP(3))**2))
27354                 TAUM=SQRT(MAX(0D0,(T-TM)**2-(XMM(1)-XM(1))**2-
27355      &          (XMM(2)-XM(2))**2-(XMM(3)-XM(3))**2))
27356               ELSE
27357                 TAUP=0D0
27358                 TAUM=0D0
27359               ENDIF
27360  
27361 C...Order crossings by time. End loop over crossings.
27362               IF(IANSW.EQ.1.AND.NCROSS.LT.20) THEN
27363                 NCROSS=NCROSS+1
27364                 DO 310 I1=NCROSS,1,-1
27365                   IF(T.GT.TC(I1-1).OR.I1.EQ.1) THEN
27366                     IPC(I1)=IIP
27367                     IMC(I1)=IIM
27368                     TC(I1)=T
27369                     TPC(I1)=TAUP
27370                     TMC(I1)=TAUM
27371                     GOTO 320
27372                   ELSE
27373                     IPC(I1)=IPC(I1-1)
27374                     IMC(I1)=IMC(I1-1)
27375                     TC(I1)=TC(I1-1)
27376                     TPC(I1)=TPC(I1-1)
27377                     TMC(I1)=TMC(I1-1)
27378                   ENDIF
27379   310           CONTINUE
27380   320           CONTINUE
27381               ENDIF
27382   330       CONTINUE
27383   340     CONTINUE
27384  
27385 C...Loop over crossings; find first (if any) acceptable one.
27386           IACC=0
27387           IF(NCROSS.GE.1) THEN
27388             DO 350 IC=1,NCROSS
27389               PNFRAG=EXP(-(TPC(IC)**2+TMC(IC)**2)/TFRAG**2)
27390               IF(PNFRAG.GT.PYR(0)) THEN
27391 C...Scenario II: only compare with fragmentation time.
27392                 IF(MSTP(115).EQ.2) THEN
27393                   IACC=IC
27394                   IIP=IPC(IACC)
27395                   IIM=IMC(IACC)
27396                   GOTO 360
27397 C...Scenario II': also require that string length decreases.
27398                 ELSE
27399                   IIP=IPC(IC)
27400                   IIM=IMC(IC)
27401                   I1P=INP(IIP)
27402                   I2P=INP(IIP+1)
27403                   I1M=INM(IIM)
27404                   I2M=INM(IIM+1)
27405                   ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
27406                   ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
27407                   IF(ELNEW.LT.ELOLD) THEN
27408                     IACC=IC
27409                     IIP=IPC(IACC)
27410                     IIM=IMC(IACC)
27411                     GOTO 360
27412                   ENDIF
27413                 ENDIF
27414               ENDIF
27415   350       CONTINUE
27416   360       CONTINUE
27417           ENDIF
27418  
27419 C...Begin scenario GH specifics.
27420         ELSEIF(MSTP(115).EQ.5) THEN
27421  
27422 C...Loop through all string pieces, one from W+ and one from W-.
27423           IACC=0
27424           ELMIN=1D0
27425           DO 380 IIP=1,NNP-1
27426             IF(K(INP(IIP),2).LT.0) GOTO 380
27427             I1P=INP(IIP)
27428             I2P=INP(IIP+1)
27429             DO 370 IIM=1,NNM-1
27430               IF(K(INM(IIM),2).LT.0) GOTO 370
27431               I1M=INM(IIM)
27432               I2M=INM(IIM+1)
27433  
27434 C...Look for largest decrease of (exponent of) Lambda measure.
27435               ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
27436               ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
27437               ELDIF=ELNEW/MAX(1D-10,ELOLD)
27438               IF(ELDIF.LT.ELMIN) THEN
27439                 IACC=IIP+IIM
27440                 ELMIN=ELDIF
27441                 IPC(1)=IIP
27442                 IMC(1)=IIM
27443               ENDIF
27444   370       CONTINUE
27445   380     CONTINUE
27446           IIP=IPC(1)
27447           IIM=IMC(1)
27448         ENDIF
27449  
27450 C...Common for scenarios I, II, II' and GH: reconnect strings.
27451         IF(IACC.NE.0) THEN
27452           MINT(32)=1
27453           NJOIN=0
27454           DO 390 IS=1,NNP+NNM
27455             NJOIN=NJOIN+1
27456             IF(IS.LE.IIP) THEN
27457               I=INP(IS)
27458             ELSEIF(IS.LE.IIP+NNM-IIM) THEN
27459               I=INM(IS-IIP+IIM)
27460             ELSEIF(IS.LE.IIP+NNM) THEN
27461               I=INM(IS-IIP-NNM+IIM)
27462             ELSE
27463               I=INP(IS-NNM)
27464             ENDIF
27465             IJOIN(NJOIN)=I
27466             IF(K(I,2).LT.0) THEN
27467               CALL PYJOIN(NJOIN,IJOIN)
27468               NJOIN=0
27469             ENDIF
27470   390     CONTINUE
27471  
27472 C...Restore original event record if no reconnection.
27473         ELSE
27474           DO 400 I=NSD1+1,NOLD
27475             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
27476               K(I,4)=MOD(K(I,4),MSTU(5)**2)
27477               K(I,5)=MOD(K(I,5),MSTU(5)**2)
27478             ENDIF
27479   400     CONTINUE
27480           DO 410 I=NOLD+1,N
27481             K(K(I,3),1)=3
27482   410     CONTINUE
27483           N=NOLD
27484         ENDIF
27485  
27486 C...Boost back system.
27487         CALL PYROBO(IW1,IW1,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
27488         CALL PYROBO(IW2,IW2,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
27489         IF(N.GT.NOLD) CALL PYROBO(NOLD+1,N,0D0,0D0,
27490      &  BEWW(1),BEWW(2),BEWW(3))
27491  
27492 C...Common part for intermediate and instantaneous scenarios.
27493       ELSEIF(MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
27494         MINT(32)=1
27495  
27496 C...Remove old shower products and reset showering ones.
27497         N=NSD1+4
27498         DO 420 I=NSD1+1,NSD1+4
27499           K(I,1)=3
27500           K(I,4)=MOD(K(I,4),MSTU(5)**2)
27501           K(I,5)=MOD(K(I,5),MSTU(5)**2)
27502   420   CONTINUE
27503  
27504 C...Identify quark-antiquark pairs.
27505         IQ1=NSD1+1
27506         IQ2=NSD1+2
27507         IQ3=NSD1+3
27508         IF(K(IQ1,2)*K(IQ3,2).LT.0) IQ3=NSD1+4
27509         IQ4=2*NSD1+7-IQ3
27510  
27511 C...Reconnect strings.
27512         IJOIN(1)=IQ1
27513         IJOIN(2)=IQ4
27514         CALL PYJOIN(2,IJOIN)
27515         IJOIN(1)=IQ3
27516         IJOIN(2)=IQ2
27517         CALL PYJOIN(2,IJOIN)
27518  
27519 C...Do new parton showers in intermediate scenario.
27520         IF(MSTP(71).GE.1.AND.MSTP(115).EQ.11) THEN
27521           MSTJ50=MSTJ(50)
27522           MSTJ(50)=0
27523           CALL PYSHOW(IQ1,IQ2,P(IW1,5))
27524           CALL PYSHOW(IQ3,IQ4,P(IW2,5))
27525           MSTJ(50)=MSTJ50
27526  
27527 C...Do new parton showers in instantaneous scenario.
27528         ELSEIF(MSTP(71).GE.1.AND.MSTP(115).EQ.12) THEN
27529           PPM2=(P(IQ1,4)+P(IQ4,4))**2-(P(IQ1,1)+P(IQ4,1))**2-
27530      &    (P(IQ1,2)+P(IQ4,2))**2-(P(IQ1,3)+P(IQ4,3))**2
27531           PPM=SQRT(MAX(0D0,PPM2))
27532           CALL PYSHOW(IQ1,IQ4,PPM)
27533           PPM2=(P(IQ3,4)+P(IQ2,4))**2-(P(IQ3,1)+P(IQ2,1))**2-
27534      &    (P(IQ3,2)+P(IQ2,2))**2-(P(IQ3,3)+P(IQ2,3))**2
27535           PPM=SQRT(MAX(0D0,PPM2))
27536           CALL PYSHOW(IQ3,IQ2,PPM)
27537         ENDIF
27538       ENDIF
27539  
27540       RETURN
27541       END
27542  
27543 C***********************************************************************
27544  
27545 C...PYKLIM
27546 C...Checks generated variables against pre-set kinematical limits;
27547 C...also calculates limits on variables used in generation.
27548  
27549       SUBROUTINE PYKLIM(ILIM)
27550  
27551 C...Double precision and integer declarations.
27552       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27553       IMPLICIT INTEGER(I-N)
27554       INTEGER PYK,PYCHGE,PYCOMP
27555 C...Commonblocks.
27556       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
27557       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27558       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27559       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
27560       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
27561       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27562       COMMON/PYINT1/MINT(400),VINT(400)
27563       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
27564       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
27565      &/PYINT1/,/PYINT2/
27566  
27567 C...Common kinematical expressions.
27568       MINT(51)=0
27569       ISUB=MINT(1)
27570       ISTSB=ISET(ISUB)
27571       IF(ISUB.EQ.96) GOTO 100
27572       SQM3=VINT(63)
27573       SQM4=VINT(64)
27574       IF(ILIM.NE.0) THEN
27575         IF(ABS(SQM3).LT.1D-4.AND.ABS(SQM4).LT.1D-4) THEN
27576           CKIN09=MAX(CKIN(9),CKIN(13))
27577           CKIN10=MIN(CKIN(10),CKIN(14))
27578           CKIN11=MAX(CKIN(11),CKIN(15))
27579           CKIN12=MIN(CKIN(12),CKIN(16))
27580         ELSE
27581           CKIN09=MAX(CKIN(9),MIN(0D0,CKIN(13)))
27582           CKIN10=MIN(CKIN(10),MAX(0D0,CKIN(14)))
27583           CKIN11=MAX(CKIN(11),MIN(0D0,CKIN(15)))
27584           CKIN12=MIN(CKIN(12),MAX(0D0,CKIN(16)))
27585         ENDIF
27586       ENDIF
27587       IF(ILIM.NE.1) THEN
27588         TAU=VINT(21)
27589         RM3=SQM3/(TAU*VINT(2))
27590         RM4=SQM4/(TAU*VINT(2))
27591         BE34=SQRT(MAX(1D-20,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
27592       ENDIF
27593       PTHMIN=CKIN(3)
27594       IF(MIN(SQM3,SQM4).LT.CKIN(6)**2.AND.ISTSB.NE.1.AND.ISTSB.NE.3)
27595      &PTHMIN=MAX(CKIN(3),CKIN(5))
27596  
27597       IF(ILIM.EQ.0) THEN
27598 C...Check generated values of tau, y*, cos(theta-hat), and tau' against
27599 C...pre-set kinematical limits.
27600         YST=VINT(22)
27601         CTH=VINT(23)
27602         TAUP=VINT(26)
27603         TAUE=TAU
27604         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
27605         X1=SQRT(TAUE)*EXP(YST)
27606         X2=SQRT(TAUE)*EXP(-YST)
27607         XF=X1-X2
27608         IF(MINT(47).NE.1) THEN
27609           IF(TAU*VINT(2).LT.CKIN(1)**2) MINT(51)=1
27610           IF(CKIN(2).GE.0D0.AND.TAU*VINT(2).GT.CKIN(2)**2) MINT(51)=1
27611           IF(YST.LT.CKIN(7).OR.YST.GT.CKIN(8)) MINT(51)=1
27612           IF(XF.LT.CKIN(25).OR.XF.GT.CKIN(26)) MINT(51)=1
27613         ENDIF
27614         IF(MINT(45).NE.1) THEN
27615           IF(X1.LT.CKIN(21).OR.X1.GT.CKIN(22)) MINT(51)=1
27616         ENDIF
27617         IF(MINT(46).NE.1) THEN
27618           IF(X2.LT.CKIN(23).OR.X2.GT.CKIN(24)) MINT(51)=1
27619         ENDIF
27620         IF(MINT(45).EQ.2) THEN
27621           IF(X1.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
27622         ENDIF
27623         IF(MINT(46).EQ.2) THEN
27624           IF(X2.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
27625         ENDIF
27626         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
27627           PTH=0.5D0*BE34*SQRT(TAU*VINT(2)*MAX(0D0,1D0-CTH**2))
27628           EXPY3=MAX(1D-20,(1D0+RM3-RM4+BE34*CTH)/
27629      &    MAX(1D-20,(1D0+RM3-RM4-BE34*CTH)))
27630           EXPY4=MAX(1D-20,(1D0-RM3+RM4-BE34*CTH)/
27631      &    MAX(1D-20,(1D0-RM3+RM4+BE34*CTH)))
27632           Y3=YST+0.5D0*LOG(EXPY3)
27633           Y4=YST+0.5D0*LOG(EXPY4)
27634           YLARGE=MAX(Y3,Y4)
27635           YSMALL=MIN(Y3,Y4)
27636           ETALAR=20D0
27637           ETASMA=-20D0
27638           STH=SQRT(MAX(0D0,1D0-CTH**2))
27639           EXSQ3=SQRT(MAX(1D-20,((1D0+RM3-RM4)*COSH(YST)+BE34*SINH(YST)*
27640      &    CTH)**2-4D0*RM3))
27641           EXSQ4=SQRT(MAX(1D-20,((1D0-RM3+RM4)*COSH(YST)-BE34*SINH(YST)*
27642      &    CTH)**2-4D0*RM4))
27643           IF(STH.GE.1D-10) THEN
27644             EXPET3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH+EXSQ3)/
27645      &      (BE34*STH)
27646             EXPET4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH+EXSQ4)/
27647      &      (BE34*STH)
27648             ETA3=LOG(MIN(1D10,MAX(1D-10,EXPET3)))
27649             ETA4=LOG(MIN(1D10,MAX(1D-10,EXPET4)))
27650             ETALAR=MAX(ETA3,ETA4)
27651             ETASMA=MIN(ETA3,ETA4)
27652           ENDIF
27653           CTS3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH)/EXSQ3
27654           CTS4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH)/EXSQ4
27655           CTSLAR=MIN(1D0,MAX(-1D0,CTS3,CTS4))
27656           CTSSMA=MAX(-1D0,MIN(1D0,CTS3,CTS4))
27657           SH=TAU*VINT(2)
27658           RPTS=4D0*VINT(71)**2/SH
27659           BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
27660           RM34=MAX(1D-20,2D0*RM3*RM4)
27661           IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
27662      &    RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
27663           RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
27664           THA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
27665           UHA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
27666           IF(PTH.LT.PTHMIN) MINT(51)=1
27667           IF(CKIN(4).GE.0D0.AND.PTH.GT.CKIN(4)) MINT(51)=1
27668           IF(YLARGE.LT.CKIN(9).OR.YLARGE.GT.CKIN(10)) MINT(51)=1
27669           IF(YSMALL.LT.CKIN(11).OR.YSMALL.GT.CKIN(12)) MINT(51)=1
27670           IF(ETALAR.LT.CKIN(13).OR.ETALAR.GT.CKIN(14)) MINT(51)=1
27671           IF(ETASMA.LT.CKIN(15).OR.ETASMA.GT.CKIN(16)) MINT(51)=1
27672           IF(CTSLAR.LT.CKIN(17).OR.CTSLAR.GT.CKIN(18)) MINT(51)=1
27673           IF(CTSSMA.LT.CKIN(19).OR.CTSSMA.GT.CKIN(20)) MINT(51)=1
27674           IF(CTH.LT.CKIN(27).OR.CTH.GT.CKIN(28)) MINT(51)=1
27675           IF(THA.LT.CKIN(35)) MINT(51)=1
27676           IF(CKIN(36).GE.0D0.AND.THA.GT.CKIN(36)) MINT(51)=1
27677           IF(UHA.LT.CKIN(37)) MINT(51)=1
27678           IF(CKIN(38).GE.0D0.AND.UHA.GT.CKIN(38)) MINT(51)=1
27679         ENDIF
27680         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
27681           IF(TAUP*VINT(2).LT.CKIN(31)**2) MINT(51)=1
27682           IF(CKIN(32).GE.0D0.AND.TAUP*VINT(2).GT.CKIN(32)**2) MINT(51)=1
27683         ENDIF
27684  
27685 C...Additional cuts on W2 (approximately) in DIS.
27686         IF(ISUB.EQ.10.AND.MINT(43).GE.2) THEN
27687           XBJ=X2
27688           IF(IABS(MINT(12)).LT.20) XBJ=X1
27689           Q2BJ=THA
27690           W2BJ=Q2BJ*(1D0-XBJ)/XBJ
27691           IF(W2BJ.LT.CKIN(39)) MINT(51)=1
27692           IF(CKIN(40).GT.0D0.AND.W2BJ.GT.CKIN(40)) MINT(51)=1
27693         ENDIF
27694  
27695       ELSEIF(ILIM.EQ.1) THEN
27696 C...Calculate limits on tau
27697 C...0) due to definition
27698         TAUMN0=0D0
27699         TAUMX0=1D0
27700 C...1) due to limits on subsystem mass
27701         TAUMN1=CKIN(1)**2/VINT(2)
27702         TAUMX1=1D0
27703         IF(CKIN(2).GE.0D0) TAUMX1=CKIN(2)**2/VINT(2)
27704 C...2) due to limits on pT-hat (and non-overlapping rapidity intervals)
27705         TM3=SQRT(SQM3+PTHMIN**2)
27706         TM4=SQRT(SQM4+PTHMIN**2)
27707         YDCOSH=1D0
27708         IF(CKIN09.GT.CKIN12) YDCOSH=COSH(CKIN09-CKIN12)
27709         TAUMN2=(TM3**2+2D0*TM3*TM4*YDCOSH+TM4**2)/VINT(2)
27710         TAUMX2=1D0
27711 C...3) due to limits on pT-hat and cos(theta-hat)
27712         CTH2MN=MIN(CKIN(27)**2,CKIN(28)**2)
27713         CTH2MX=MAX(CKIN(27)**2,CKIN(28)**2)
27714         TAUMN3=0D0
27715         IF(CKIN(27)*CKIN(28).GT.0D0) TAUMN3=
27716      &  (SQRT(SQM3+PTHMIN**2/(1D0-CTH2MN))+
27717      &  SQRT(SQM4+PTHMIN**2/(1D0-CTH2MN)))**2/VINT(2)
27718         TAUMX3=1D0
27719         IF(CKIN(4).GE.0D0.AND.CTH2MX.LT.1D0) TAUMX3=
27720      &  (SQRT(SQM3+CKIN(4)**2/(1D0-CTH2MX))+
27721      &  SQRT(SQM4+CKIN(4)**2/(1D0-CTH2MX)))**2/VINT(2)
27722 C...4) due to limits on x1 and x2
27723         TAUMN4=CKIN(21)*CKIN(23)
27724         TAUMX4=CKIN(22)*CKIN(24)
27725 C...5) due to limits on xF
27726         TAUMN5=0D0
27727         TAUMX5=MAX(1D0-CKIN(25),1D0+CKIN(26))
27728 C...6) due to limits on that and uhat
27729         TAUMN6=(SQM3+SQM4+CKIN(35)+CKIN(37))/VINT(2)
27730         TAUMX6=1D0
27731         IF(CKIN(36).GT.0D0.AND.CKIN(38).GT.0D0) TAUMX6=
27732      &  (SQM3+SQM4+CKIN(36)+CKIN(38))/VINT(2)
27733  
27734 C...Net effect of all separate limits.
27735         VINT(11)=MAX(TAUMN0,TAUMN1,TAUMN2,TAUMN3,TAUMN4,TAUMN5,TAUMN6)
27736         VINT(31)=MIN(TAUMX0,TAUMX1,TAUMX2,TAUMX3,TAUMX4,TAUMX5,TAUMX6)
27737         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
27738           VINT(11)=1D0-1D-9
27739           VINT(31)=1D0+1D-9
27740         ELSEIF(MINT(47).EQ.5) THEN
27741           VINT(31)=MIN(VINT(31),1D0-2D-10)
27742         ELSEIF(MINT(47).GE.6) THEN
27743           VINT(31)=MIN(VINT(31),1D0-1D-10)
27744         ENDIF
27745         IF(VINT(31).LE.VINT(11)) MINT(51)=1
27746  
27747       ELSEIF(ILIM.EQ.2) THEN
27748 C...Calculate limits on y*
27749         TAUE=TAU
27750         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
27751         TAURT=SQRT(TAUE)
27752 C...0) due to kinematics
27753         YSTMN0=LOG(TAURT)
27754         YSTMX0=-YSTMN0
27755 C...1) due to explicit limits
27756         YSTMN1=CKIN(7)
27757         YSTMX1=CKIN(8)
27758 C...2) due to limits on x1
27759         YSTMN2=LOG(MAX(TAUE,CKIN(21))/TAURT)
27760         YSTMX2=LOG(MAX(TAUE,CKIN(22))/TAURT)
27761 C...3) due to limits on x2
27762         YSTMN3=-LOG(MAX(TAUE,CKIN(24))/TAURT)
27763         YSTMX3=-LOG(MAX(TAUE,CKIN(23))/TAURT)
27764 C...4) due to limits on xF
27765         YEPMN4=0.5D0*ABS(CKIN(25))/TAURT
27766         YSTMN4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMN4**2)+YEPMN4)),CKIN(25))
27767         YEPMX4=0.5D0*ABS(CKIN(26))/TAURT
27768         YSTMX4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMX4**2)+YEPMX4)),CKIN(26))
27769 C...5) due to simultaneous limits on y-large and y-small
27770         YEPSMN=(RM3-RM4)*SINH(CKIN09-CKIN11)
27771         YEPSMX=(RM3-RM4)*SINH(CKIN10-CKIN12)
27772         YDIFMN=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMN**2)-YEPSMN)))
27773         YDIFMX=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMX**2)-YEPSMX)))
27774         YSTMN5=0.5D0*(CKIN09+CKIN11-YDIFMN)
27775         YSTMX5=0.5D0*(CKIN10+CKIN12+YDIFMX)
27776 C...6) due to simultaneous limits on cos(theta-hat) and y-large or
27777 C...   y-small
27778         CTHLIM=SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAUE*VINT(2))))
27779         RZMN=BE34*MAX(CKIN(27),-CTHLIM)
27780         RZMX=BE34*MIN(CKIN(28),CTHLIM)
27781         YEX3MX=(1D0+RM3-RM4+RZMX)/MAX(1D-10,1D0+RM3-RM4-RZMX)
27782         YEX4MX=(1D0+RM4-RM3-RZMN)/MAX(1D-10,1D0+RM4-RM3+RZMN)
27783         YEX3MN=MAX(1D-10,1D0+RM3-RM4+RZMN)/(1D0+RM3-RM4-RZMN)
27784         YEX4MN=MAX(1D-10,1D0+RM4-RM3-RZMX)/(1D0+RM4-RM3+RZMX)
27785         YSTMN6=CKIN09-0.5D0*LOG(MAX(YEX3MX,YEX4MX))
27786         YSTMX6=CKIN12-0.5D0*LOG(MIN(YEX3MN,YEX4MN))
27787  
27788 C...Net effect of all separate limits.
27789         VINT(12)=MAX(YSTMN0,YSTMN1,YSTMN2,YSTMN3,YSTMN4,YSTMN5,YSTMN6)
27790         VINT(32)=MIN(YSTMX0,YSTMX1,YSTMX2,YSTMX3,YSTMX4,YSTMX5,YSTMX6)
27791         IF(MINT(47).EQ.1) THEN
27792           VINT(12)=-1D-9
27793           VINT(32)=1D-9
27794         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
27795           VINT(12)=(1D0-1D-9)*YSTMX0
27796           VINT(32)=(1D0+1D-9)*YSTMX0
27797         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
27798           VINT(12)=-(1D0+1D-9)*YSTMX0
27799           VINT(32)=-(1D0-1D-9)*YSTMX0
27800         ELSEIF(MINT(47).EQ.5) THEN
27801           YSTEE=LOG((1D0-1D-10)/TAURT)
27802           VINT(12)=MAX(VINT(12),-YSTEE)
27803           VINT(32)=MIN(VINT(32),YSTEE)
27804         ENDIF
27805         IF(VINT(32).LE.VINT(12)) MINT(51)=1
27806  
27807       ELSEIF(ILIM.EQ.3) THEN
27808 C...Calculate limits on cos(theta-hat)
27809         YST=VINT(22)
27810 C...0) due to definition
27811         CTNMN0=-1D0
27812         CTNMX0=0D0
27813         CTPMN0=0D0
27814         CTPMX0=1D0
27815 C...1) due to explicit limits
27816         CTNMN1=MIN(0D0,CKIN(27))
27817         CTNMX1=MIN(0D0,CKIN(28))
27818         CTPMN1=MAX(0D0,CKIN(27))
27819         CTPMX1=MAX(0D0,CKIN(28))
27820 C...2) due to limits on pT-hat
27821         CTNMN2=-SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAU*VINT(2))))
27822         CTPMX2=-CTNMN2
27823         CTNMX2=0D0
27824         CTPMN2=0D0
27825         IF(CKIN(4).GE.0D0) THEN
27826           CTNMX2=-SQRT(MAX(0D0,1D0-4D0*CKIN(4)**2/
27827      &    (BE34**2*TAU*VINT(2))))
27828           CTPMN2=-CTNMX2
27829         ENDIF
27830 C...3) due to limits on y-large and y-small
27831         CTNMN3=MIN(0D0,MAX((1D0+RM3-RM4)/BE34*TANH(CKIN11-YST),
27832      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN10-YST)))
27833         CTNMX3=MIN(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN12-YST),
27834      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN09-YST))
27835         CTPMN3=MAX(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN09-YST),
27836      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN12-YST))
27837         CTPMX3=MAX(0D0,MIN((1D0+RM3-RM4)/BE34*TANH(CKIN10-YST),
27838      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN11-YST)))
27839 C...4) due to limits on that
27840         CTNMN4=-1D0
27841         CTNMX4=0D0
27842         CTPMN4=0D0
27843         CTPMX4=1D0
27844         SH=TAU*VINT(2)
27845         IF(CKIN(35).GT.0D0) THEN
27846           CTLIM=(1D0-RM3-RM4-2D0*CKIN(35)/SH)/BE34
27847           IF(CTLIM.GT.0D0) THEN
27848             CTPMX4=CTLIM
27849           ELSE
27850             CTPMX4=0D0
27851             CTNMX4=CTLIM
27852           ENDIF
27853         ENDIF
27854         IF(CKIN(36).GT.0D0) THEN
27855           CTLIM=(1D0-RM3-RM4-2D0*CKIN(36)/SH)/BE34
27856           IF(CTLIM.LT.0D0) THEN
27857             CTNMN4=CTLIM
27858           ELSE
27859             CTNMN4=0D0
27860             CTPMN4=CTLIM
27861           ENDIF
27862         ENDIF
27863 C...5) due to limits on uhat
27864         CTNMN5=-1D0
27865         CTNMX5=0D0
27866         CTPMN5=0D0
27867         CTPMX5=1D0
27868         IF(CKIN(37).GT.0D0) THEN
27869           CTLIM=(2D0*CKIN(37)/SH-(1D0-RM3-RM4))/BE34
27870           IF(CTLIM.LT.0D0) THEN
27871             CTNMN5=CTLIM
27872           ELSE
27873             CTNMN5=0D0
27874             CTPMN5=CTLIM
27875           ENDIF
27876         ENDIF
27877         IF(CKIN(38).GT.0D0) THEN
27878           CTLIM=(2D0*CKIN(38)/SH-(1D0-RM3-RM4))/BE34
27879           IF(CTLIM.GT.0D0) THEN
27880             CTPMX5=CTLIM
27881           ELSE
27882             CTPMX5=0D0
27883             CTNMX5=CTLIM
27884           ENDIF
27885         ENDIF
27886  
27887 C...Net effect of all separate limits.
27888         VINT(13)=MAX(CTNMN0,CTNMN1,CTNMN2,CTNMN3,CTNMN4,CTNMN5)
27889         VINT(33)=MIN(CTNMX0,CTNMX1,CTNMX2,CTNMX3,CTNMX4,CTNMX5)
27890         VINT(14)=MAX(CTPMN0,CTPMN1,CTPMN2,CTPMN3,CTPMN4,CTPMN5)
27891         VINT(34)=MIN(CTPMX0,CTPMX1,CTPMX2,CTPMX3,CTPMX4,CTPMX5)
27892         IF(VINT(33).LE.VINT(13).AND.VINT(34).LE.VINT(14)) MINT(51)=1
27893
27894         IF(VINT(14).GT.VINT(34)) VINT(34)=VINT(14)
27895         IF(VINT(13).GT.VINT(33)) VINT(33)=VINT(13)
27896
27897       ELSEIF(ILIM.EQ.4) THEN
27898 C...Calculate limits on tau'
27899 C...0) due to kinematics
27900         TAPMN0=TAU
27901         IF(ISTSB.EQ.5.AND.VINT(201).GT.0D0) THEN
27902           PQRAT=(VINT(201)+VINT(206))/VINT(1)
27903           TAPMN0=(SQRT(TAU)+PQRAT)**2
27904         ENDIF
27905         TAPMX0=1D0
27906 C...1) due to explicit limits
27907         TAPMN1=CKIN(31)**2/VINT(2)
27908         TAPMX1=1D0
27909         IF(CKIN(32).GE.0D0) TAPMX1=CKIN(32)**2/VINT(2)
27910  
27911 C...Net effect of all separate limits.
27912         VINT(16)=MAX(TAPMN0,TAPMN1)
27913         VINT(36)=MIN(TAPMX0,TAPMX1)
27914         IF(MINT(47).EQ.1) THEN
27915           VINT(16)=1D0-1D-9
27916           VINT(36)=1D0+1D-9
27917         ELSEIF(MINT(47).EQ.5) THEN
27918           VINT(36)=MIN(VINT(36),1D0-2D-10)
27919         ELSEIF(MINT(47).EQ.6.OR.MINT(47).EQ.7) THEN
27920           VINT(36)=MIN(VINT(36),1D0-1D-10)
27921         ENDIF
27922         IF(VINT(36).LE.VINT(16)) MINT(51)=1
27923  
27924       ENDIF
27925       RETURN
27926  
27927 C...Special case for low-pT and multiple interactions:
27928 C...effective kinematical limits for tau, y*, cos(theta-hat).
27929   100 IF(ILIM.EQ.0) THEN
27930       ELSEIF(ILIM.EQ.1) THEN
27931         IF(MSTP(82).LE.1) THEN
27932           VINT(11)=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
27933      &    VINT(2)
27934         ELSE
27935           VINT(11)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/VINT(2)
27936         ENDIF
27937         VINT(31)=1D0
27938       ELSEIF(ILIM.EQ.2) THEN
27939         VINT(12)=0.5D0*LOG(VINT(21))
27940         VINT(32)=-VINT(12)
27941       ELSEIF(ILIM.EQ.3) THEN
27942         IF(MSTP(82).LE.1) THEN
27943           ST2EFF=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
27944      &    (VINT(21)*VINT(2))
27945         ELSE
27946           ST2EFF=0.01D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
27947      &    (VINT(21)*VINT(2))
27948         ENDIF
27949         VINT(13)=-SQRT(MAX(0D0,1D0-ST2EFF))
27950         VINT(33)=0D0
27951         VINT(14)=0D0
27952         VINT(34)=-VINT(13)
27953       ENDIF
27954  
27955       RETURN
27956       END
27957  
27958 C*********************************************************************
27959  
27960 C...PYKMAP
27961 C...Maps a uniform distribution into a distribution of a kinematical
27962 C...variable according to one of the possibilities allowed. It is
27963 C...assumed that kinematical limits have been set by a PYKLIM call.
27964  
27965       SUBROUTINE PYKMAP(IVAR,MVAR,VVAR)
27966  
27967 C...Double precision and integer declarations.
27968       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27969       IMPLICIT INTEGER(I-N)
27970       INTEGER PYK,PYCHGE,PYCOMP
27971 C...Commonblocks.
27972       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27973       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27974       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
27975       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27976       COMMON/PYINT1/MINT(400),VINT(400)
27977       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
27978       SAVE /PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
27979  
27980 C...Convert VVAR to tau variable.
27981       ISUB=MINT(1)
27982       ISTSB=ISET(ISUB)
27983       IF(IVAR.EQ.1) THEN
27984         TAUMIN=VINT(11)
27985         TAUMAX=VINT(31)
27986         IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
27987           TAURE=VINT(73)
27988           GAMRE=VINT(74)
27989         ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
27990           TAURE=VINT(75)
27991           GAMRE=VINT(76)
27992         ELSEIF(MVAR.EQ.8.OR.MVAR.EQ.9) THEN
27993           TAURE=VINT(77)
27994           GAMRE=VINT(78)
27995         ENDIF
27996         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
27997           TAU=1D0
27998         ELSEIF(MVAR.EQ.1) THEN
27999           TAU=TAUMIN*(TAUMAX/TAUMIN)**VVAR
28000         ELSEIF(MVAR.EQ.2) THEN
28001           TAU=TAUMAX*TAUMIN/(TAUMIN+(TAUMAX-TAUMIN)*VVAR)
28002         ELSEIF(MVAR.EQ.3.OR.MVAR.EQ.5.OR.MVAR.EQ.8) THEN
28003           RATGEN=(TAURE+TAUMAX)/(TAURE+TAUMIN)*TAUMIN/TAUMAX
28004           TAU=TAURE*TAUMIN/((TAURE+TAUMIN)*RATGEN**VVAR-TAUMIN)
28005         ELSEIF(MVAR.EQ.4.OR.MVAR.EQ.6.OR.MVAR.EQ.9) THEN
28006           AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
28007           ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
28008           TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
28009         ELSEIF(MINT(47).EQ.5) THEN
28010           AUPP=LOG(MAX(2D-10,1D0-TAUMAX))
28011           ALOW=LOG(MAX(2D-10,1D0-TAUMIN))
28012           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28013         ELSE
28014           AUPP=LOG(MAX(1D-10,1D0-TAUMAX))
28015           ALOW=LOG(MAX(1D-10,1D0-TAUMIN))
28016           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28017         ENDIF
28018         VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
28019  
28020 C...Convert VVAR to y* variable.
28021       ELSEIF(IVAR.EQ.2) THEN
28022         YSTMIN=VINT(12)
28023         YSTMAX=VINT(32)
28024         TAUE=VINT(21)
28025         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
28026         IF(MINT(47).EQ.1) THEN
28027           YST=0D0
28028         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
28029           YST=-0.5D0*LOG(TAUE)
28030         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
28031           YST=0.5D0*LOG(TAUE)
28032         ELSEIF(MVAR.EQ.1) THEN
28033           YST=YSTMIN+(YSTMAX-YSTMIN)*SQRT(VVAR)
28034         ELSEIF(MVAR.EQ.2) THEN
28035           YST=YSTMAX-(YSTMAX-YSTMIN)*SQRT(1D0-VVAR)
28036         ELSEIF(MVAR.EQ.3) THEN
28037           AUPP=ATAN(EXP(YSTMAX))
28038           ALOW=ATAN(EXP(YSTMIN))
28039           YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
28040         ELSEIF(MVAR.EQ.4) THEN
28041           YST0=-0.5D0*LOG(TAUE)
28042           AUPP=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0))
28043           ALOW=LOG(MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
28044           YST=YST0-LOG(1D0+EXP(ALOW+VVAR*(AUPP-ALOW)))
28045         ELSE
28046           YST0=-0.5D0*LOG(TAUE)
28047           AUPP=LOG(MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
28048           ALOW=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0))
28049           YST=LOG(1D0+EXP(AUPP+VVAR*(ALOW-AUPP)))-YST0
28050         ENDIF
28051         VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
28052  
28053 C...Convert VVAR to cos(theta-hat) variable.
28054       ELSEIF(IVAR.EQ.3) THEN
28055         RM34=MAX(1D-20,2D0*VINT(63)*VINT(64)/(VINT(21)*VINT(2))**2)
28056         RSQM=1D0+RM34
28057         IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
28058      &  RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
28059         CTNMIN=VINT(13)
28060         CTNMAX=VINT(33)
28061         CTPMIN=VINT(14)
28062         CTPMAX=VINT(34)
28063         IF(MVAR.EQ.1) THEN
28064           ANEG=CTNMAX-CTNMIN
28065           APOS=CTPMAX-CTPMIN
28066           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28067             VCTN=VVAR*(ANEG+APOS)/ANEG
28068             CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
28069           ELSE
28070             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28071             CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
28072           ENDIF
28073         ELSEIF(MVAR.EQ.2) THEN
28074           RMNMIN=MAX(RM34,RSQM-CTNMIN)
28075           RMNMAX=MAX(RM34,RSQM-CTNMAX)
28076           RMPMIN=MAX(RM34,RSQM-CTPMIN)
28077           RMPMAX=MAX(RM34,RSQM-CTPMAX)
28078           ANEG=LOG(RMNMIN/RMNMAX)
28079           APOS=LOG(RMPMIN/RMPMAX)
28080           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28081             VCTN=VVAR*(ANEG+APOS)/ANEG
28082             CTH=RSQM-RMNMIN*(RMNMAX/RMNMIN)**VCTN
28083           ELSE
28084             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28085             CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
28086           ENDIF
28087         ELSEIF(MVAR.EQ.3) THEN
28088           RMNMIN=MAX(RM34,RSQM+CTNMIN)
28089           RMNMAX=MAX(RM34,RSQM+CTNMAX)
28090           RMPMIN=MAX(RM34,RSQM+CTPMIN)
28091           RMPMAX=MAX(RM34,RSQM+CTPMAX)
28092           ANEG=LOG(RMNMAX/RMNMIN)
28093           APOS=LOG(RMPMAX/RMPMIN)
28094           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28095             VCTN=VVAR*(ANEG+APOS)/ANEG
28096             CTH=RMNMIN*(RMNMAX/RMNMIN)**VCTN-RSQM
28097           ELSE
28098             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28099             CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
28100           ENDIF
28101         ELSEIF(MVAR.EQ.4) THEN
28102           RMNMIN=MAX(RM34,RSQM-CTNMIN)
28103           RMNMAX=MAX(RM34,RSQM-CTNMAX)
28104           RMPMIN=MAX(RM34,RSQM-CTPMIN)
28105           RMPMAX=MAX(RM34,RSQM-CTPMAX)
28106           ANEG=1D0/RMNMAX-1D0/RMNMIN
28107           APOS=1D0/RMPMAX-1D0/RMPMIN
28108           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28109             VCTN=VVAR*(ANEG+APOS)/ANEG
28110             CTH=RSQM-1D0/(1D0/RMNMIN+ANEG*VCTN)
28111           ELSE
28112             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28113             CTH=RSQM-1D0/(1D0/RMPMIN+APOS*VCTP)
28114           ENDIF
28115         ELSEIF(MVAR.EQ.5) THEN
28116           RMNMIN=MAX(RM34,RSQM+CTNMIN)
28117           RMNMAX=MAX(RM34,RSQM+CTNMAX)
28118           RMPMIN=MAX(RM34,RSQM+CTPMIN)
28119           RMPMAX=MAX(RM34,RSQM+CTPMAX)
28120           ANEG=1D0/RMNMIN-1D0/RMNMAX
28121           APOS=1D0/RMPMIN-1D0/RMPMAX
28122           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28123             VCTN=VVAR*(ANEG+APOS)/ANEG
28124             CTH=1D0/(1D0/RMNMIN-ANEG*VCTN)-RSQM
28125           ELSE
28126             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28127             CTH=1D0/(1D0/RMPMIN-APOS*VCTP)-RSQM
28128           ENDIF
28129         ENDIF
28130         IF(CTH.LT.0D0) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
28131         IF(CTH.GT.0D0) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
28132         VINT(23)=CTH
28133  
28134 C...Convert VVAR to tau' variable.
28135       ELSEIF(IVAR.EQ.4) THEN
28136         TAU=VINT(21)
28137         TAUPMN=VINT(16)
28138         TAUPMX=VINT(36)
28139         IF(MINT(47).EQ.1) THEN
28140           TAUP=1D0
28141         ELSEIF(MVAR.EQ.1) THEN
28142           TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
28143         ELSEIF(MVAR.EQ.2) THEN
28144           AUPP=(1D0-TAU/TAUPMX)**4
28145           ALOW=(1D0-TAU/TAUPMN)**4
28146           TAUP=TAU/MAX(1D-10,1D0-(ALOW+(AUPP-ALOW)*VVAR)**0.25D0)
28147         ELSEIF(MINT(47).EQ.5) THEN
28148           AUPP=LOG(MAX(2D-10,1D0-TAUPMX))
28149           ALOW=LOG(MAX(2D-10,1D0-TAUPMN))
28150           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28151         ELSE
28152           AUPP=LOG(MAX(1D-10,1D0-TAUPMX))
28153           ALOW=LOG(MAX(1D-10,1D0-TAUPMN))
28154           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28155         ENDIF
28156         VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))
28157  
28158 C...Selection of extra variables needed in 2 -> 3 process:
28159 C...pT1, pT2, phi1, phi2, y3 for three outgoing particles.
28160 C...Since no options are available, the functions of PYKLIM
28161 C...and PYKMAP are joint for these choices.
28162       ELSEIF(IVAR.EQ.5) THEN
28163  
28164 C...Read out total energy and particle masses.
28165         MINT(51)=0
28166         MPTPK=1
28167         IF(ISUB.EQ.123.OR.ISUB.EQ.124.OR.ISUB.EQ.173.OR.ISUB.EQ.174
28168      &  .OR.ISUB.EQ.178.OR.ISUB.EQ.179.OR.ISUB.EQ.351.OR.ISUB.EQ.352)
28169      &  MPTPK=2
28170         SHP=VINT(26)*VINT(2)
28171         SHPR=SQRT(SHP)
28172         PM1=VINT(201)
28173         PM2=VINT(206)
28174         PM3=SQRT(VINT(21))*VINT(1)
28175         IF(PM1+PM2+PM3.GT.0.9999D0*SHPR) THEN
28176           MINT(51)=1
28177           RETURN
28178         ENDIF
28179         PMRS1=VINT(204)**2
28180         PMRS2=VINT(209)**2
28181  
28182 C...Specify coefficients of pT choice; upper and lower limits.
28183         IF(MPTPK.EQ.1) THEN
28184           HWT1=0.4D0
28185           HWT2=0.4D0
28186         ELSE
28187           HWT1=0.05D0
28188           HWT2=0.05D0
28189         ENDIF
28190         HWT3=1D0-HWT1-HWT2
28191         PTSMX1=((SHP-PM1**2-(PM2+PM3)**2)**2-(2D0*PM1*(PM2+PM3))**2)/
28192      &  (4D0*SHP)
28193         IF(CKIN(52).GT.0D0) PTSMX1=MIN(PTSMX1,CKIN(52)**2)
28194         PTSMN1=CKIN(51)**2
28195         PTSMX2=((SHP-PM2**2-(PM1+PM3)**2)**2-(2D0*PM2*(PM1+PM3))**2)/
28196      &  (4D0*SHP)
28197         IF(CKIN(54).GT.0D0) PTSMX2=MIN(PTSMX2,CKIN(54)**2)
28198         PTSMN2=CKIN(53)**2
28199  
28200 C...Select transverse momenta according to
28201 C...dp_T^2 * (a + b/(M^2 + p_T^2) + c/(M^2 + p_T^2)^2).
28202         HMX=PMRS1+PTSMX1
28203         HMN=PMRS1+PTSMN1
28204         IF(HMX.LT.1.0001D0*HMN) THEN
28205           MINT(51)=1
28206           RETURN
28207         ENDIF
28208         HDE=PTSMX1-PTSMN1
28209         RPT=PYR(0)
28210         IF(RPT.LT.HWT1) THEN
28211           PTS1=PTSMN1+PYR(0)*HDE
28212         ELSEIF(RPT.LT.HWT1+HWT2) THEN
28213           PTS1=MAX(PTSMN1,HMN*(HMX/HMN)**PYR(0)-PMRS1)
28214         ELSE
28215           PTS1=MAX(PTSMN1,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS1)
28216         ENDIF
28217         WTPTS1=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS1+PTS1))+
28218      &  HWT3*HMN*HMX/(PMRS1+PTS1)**2)
28219         HMX=PMRS2+PTSMX2
28220         HMN=PMRS2+PTSMN2
28221         IF(HMX.LT.1.0001D0*HMN) THEN
28222           MINT(51)=1
28223           RETURN
28224         ENDIF
28225         HDE=PTSMX2-PTSMN2
28226         RPT=PYR(0)
28227         IF(RPT.LT.HWT1) THEN
28228           PTS2=PTSMN2+PYR(0)*HDE
28229         ELSEIF(RPT.LT.HWT1+HWT2) THEN
28230           PTS2=MAX(PTSMN2,HMN*(HMX/HMN)**PYR(0)-PMRS2)
28231         ELSE
28232           PTS2=MAX(PTSMN2,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS2)
28233         ENDIF
28234         WTPTS2=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS2+PTS2))+
28235      &  HWT3*HMN*HMX/(PMRS2+PTS2)**2)
28236  
28237 C...Select azimuthal angles and check pT choice.
28238         PHI1=PARU(2)*PYR(0)
28239         PHI2=PARU(2)*PYR(0)
28240         PHIR=PHI2-PHI1
28241         PTS3=MAX(0D0,PTS1+PTS2+2D0*SQRT(PTS1*PTS2)*COS(PHIR))
28242         IF(PTS3.LT.CKIN(55)**2.OR.(CKIN(56).GT.0D0.AND.PTS3.GT.
28243      &  CKIN(56)**2)) THEN
28244           MINT(51)=1
28245           RETURN
28246         ENDIF
28247  
28248 C...Calculate transverse masses and check phase space not closed.
28249         PMS1=PM1**2+PTS1
28250         PMS2=PM2**2+PTS2
28251         PMS3=PM3**2+PTS3
28252         PMT1=SQRT(PMS1)
28253         PMT2=SQRT(PMS2)
28254         PMT3=SQRT(PMS3)
28255         PM12=(PMT1+PMT2)**2
28256         IF(PMT1+PMT2+PMT3.GT.0.9999D0*SHPR) THEN
28257           MINT(51)=1
28258           RETURN
28259         ENDIF
28260  
28261 C...Select rapidity for particle 3 and check phase space not closed.
28262         Y3MAX=LOG((SHP+PMS3-PM12+SQRT(MAX(0D0,(SHP-PMS3-PM12)**2-
28263      &  4D0*PMS3*PM12)))/(2D0*SHPR*PMT3))
28264         IF(Y3MAX.LT.1D-6) THEN
28265           MINT(51)=1
28266           RETURN
28267         ENDIF
28268         Y3=(2D0*PYR(0)-1D0)*0.999999D0*Y3MAX
28269         PZ3=PMT3*SINH(Y3)
28270         PE3=PMT3*COSH(Y3)
28271  
28272 C...Find momentum transfers in two mirror solutions (in 1-2 frame).
28273         PZ12=-PZ3
28274         PE12=SHPR-PE3
28275         PMS12=PE12**2-PZ12**2
28276         SQL12=SQRT(MAX(0D0,(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2))
28277         IF(SQL12.LT.1D-6*SHP) THEN
28278           MINT(51)=1
28279           RETURN
28280         ENDIF
28281         PMM1=PMS12+PMS1-PMS2
28282         PMM2=PMS12+PMS2-PMS1
28283         TFAC=-SHPR/(2D0*PMS12)
28284         T1P=TFAC*(PE12-PZ12)*(PMM1-SQL12)
28285         T1N=TFAC*(PE12-PZ12)*(PMM1+SQL12)
28286         T2P=TFAC*(PE12+PZ12)*(PMM2-SQL12)
28287         T2N=TFAC*(PE12+PZ12)*(PMM2+SQL12)
28288  
28289 C...Construct relative mirror weights and make choice.
28290         IF(MPTPK.EQ.1.OR.ISUB.EQ.351.OR.ISUB.EQ.352) THEN
28291           WTPU=1D0
28292           WTNU=1D0
28293         ELSE
28294           WTPU=1D0/((T1P-PMRS1)*(T2P-PMRS2))**2
28295           WTNU=1D0/((T1N-PMRS1)*(T2N-PMRS2))**2
28296         ENDIF
28297         WTP=WTPU/(WTPU+WTNU)
28298         WTN=WTNU/(WTPU+WTNU)
28299         EPS=1D0
28300         IF(WTN.GT.PYR(0)) EPS=-1D0
28301  
28302 C...Store result of variable choice and associated weights.
28303         VINT(202)=PTS1
28304         VINT(207)=PTS2
28305         VINT(203)=PHI1
28306         VINT(208)=PHI2
28307         VINT(205)=WTPTS1
28308         VINT(210)=WTPTS2
28309         VINT(211)=Y3
28310         VINT(212)=Y3MAX
28311         VINT(213)=EPS
28312         IF(EPS.GT.0D0) THEN
28313           VINT(214)=1D0/WTP
28314           VINT(215)=T1P
28315           VINT(216)=T2P
28316         ELSE
28317           VINT(214)=1D0/WTN
28318           VINT(215)=T1N
28319           VINT(216)=T2N
28320         ENDIF
28321         VINT(217)=-0.5D0*TFAC*(PE12-PZ12)*(PMM2+EPS*SQL12)
28322         VINT(218)=-0.5D0*TFAC*(PE12+PZ12)*(PMM1+EPS*SQL12)
28323         VINT(219)=0.5D0*(PMS12-PTS3)
28324         VINT(220)=SQL12
28325       ENDIF
28326  
28327       RETURN
28328       END
28329  
28330 C***********************************************************************
28331  
28332 C...PYSIGH
28333 C...Differential matrix elements for all included subprocesses
28334 C...Note that what is coded is (disregarding the COMFAC factor)
28335 C...1) for 2 -> 1 processes: s-hat/pi*d(sigma-hat), where,
28336 C...when d(sigma-hat) is given in the zero-width limit, the delta
28337 C...function in tau is replaced by a (modified) Breit-Wigner:
28338 C...1/pi*s*H_res/((s*tau-m_res^2)^2+H_res^2),
28339 C...where H_res = s-hat/m_res*Gamma_res(s-hat);
28340 C...2) for 2 -> 2 processes: (s-hat)**2/pi*d(sigma-hat)/d(t-hat);
28341 C...i.e., dimensionless quantities
28342 C...3) for 2 -> 3 processes: abs(M)^2, where the total cross-section is
28343 C...Integral abs(M)^2/(2shat') * (prod_(i=1)^3 d^3p_i/((2pi)^3*2E_i)) *
28344 C...(2pi)^4 delta^4(P - sum p_i)
28345 C...COMFAC contains the factor pi/s (or equivalent) and
28346 C...the conversion factor from GeV^-2 to mb
28347  
28348       SUBROUTINE PYSIGH(NCHN,SIGS)
28349  
28350 C...Double precision and integer declarations
28351       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28352       IMPLICIT INTEGER(I-N)
28353       INTEGER PYK,PYCHGE,PYCOMP
28354 C...Parameter statement to help give large particle numbers.
28355       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
28356      &KEXCIT=4000000,KDIMEN=5000000)
28357 C...Commonblocks
28358       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
28359       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28360       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28361       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
28362       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
28363       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28364       COMMON/PYINT1/MINT(400),VINT(400)
28365       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
28366       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
28367       COMMON/PYINT4/MWID(500),WIDS(500,5)
28368       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
28369       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
28370       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
28371       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
28372      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
28373       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
28374       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
28375      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
28376      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
28377      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
28378       COMMON/PYTCCO/COEFX(194:380,2)
28379       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
28380      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,
28381      &/PYMSSM/,/PYSSMT/,/PYTCSM/,/PYSGCM/,/PYTCCO/
28382 C...Local arrays and complex variables
28383       DIMENSION XPQ(-25:25)
28384  
28385 C...Map of processes onto which routine to call
28386 C...in order to evaluate cross section:
28387 C...0 = not implemented;
28388 C...1 = standard QCD (including photons);
28389 C...2 = heavy flavours;
28390 C...3 = W/Z;
28391 C...4 = Higgs (2 doublets; including longitudinal W/Z scattering);
28392 C...5 = SUSY;
28393 C...6 = Technicolor;
28394 C...7 = exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
28395       DIMENSION MAPPR(500)
28396       DATA (MAPPR(I),I=1,180)/
28397      &    3,  3,  4,  0,  4,  0,  0,  4,  0,  1,
28398      1    1,  1,  1,  1,  3,  3,  0,  1,  3,  3,
28399      2    0,  3,  3,  4,  3,  4,  0,  1,  1,  3,
28400      3    3,  4,  1,  1,  3,  3,  0,  0,  0,  0,
28401      4    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
28402      5    0,  0,  1,  1,  0,  0,  0,  1,  0,  0,
28403      6    0,  0,  0,  0,  0,  0,  0,  1,  3,  3,
28404      7    4,  4,  4,  0,  0,  4,  4,  0,  0,  1,
28405      8    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
28406      9    1,  1,  1,  1,  1,  1,  0,  0,  1,  0,
28407      &    0,  4,  4,  2,  2,  2,  2,  2,  0,  4,
28408      1    4,  4,  4,  1,  1,  0,  0,  0,  0,  0,
28409      2    4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
28410      3    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
28411      4    7,  7,  4,  7,  7,  7,  7,  7,  6,  0,
28412      5    4,  4,  4,  0,  0,  4,  4,  4,  0,  0,
28413      6    4,  7,  7,  7,  6,  6,  7,  7,  7,  0,
28414      7    4,  4,  4,  4,  0,  4,  4,  4,  4,  0/
28415       DATA (MAPPR(I),I=181,500)/
28416      8    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
28417      9    6,  6,  6,  6,  6,  0,  0,  0,  0,  0,
28418      &    100*5,
28419      &    5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
28420      1     30*0,
28421      4    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
28422      5    7,  7,  7,  7,  0,  0,  0,  0,  0,  0,
28423      6    6,  6,  6,  6,  6,  6,  6,  6,  0,  6,
28424      7    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
28425      8    6,  6,  6,  6,  6,  6,  6,  6,  0,  0,
28426      9    7,  7,  7,  7,  7,  0,  0,  0,  0,  0,
28427      &    4,  4,  18*0,
28428      2    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
28429      3    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
28430      4     20*0,
28431      6    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
28432      7    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
28433      8     20*0/
28434  
28435 C...Reset number of channels and cross-section
28436       NCHN=0
28437       SIGS=0D0
28438  
28439 C...Read process to consider.
28440       ISUB=MINT(1)
28441       ISUBSV=ISUB
28442       MAP=MAPPR(ISUB)
28443  
28444 C...Read kinematical variables and limits
28445       ISTSB=ISET(ISUBSV)
28446       TAUMIN=VINT(11)
28447       YSTMIN=VINT(12)
28448       CTNMIN=VINT(13)
28449       CTPMIN=VINT(14)
28450       TAUPMN=VINT(16)
28451       TAU=VINT(21)
28452       YST=VINT(22)
28453       CTH=VINT(23)
28454       XT2=VINT(25)
28455       TAUP=VINT(26)
28456       TAUMAX=VINT(31)
28457       YSTMAX=VINT(32)
28458       CTNMAX=VINT(33)
28459       CTPMAX=VINT(34)
28460       TAUPMX=VINT(36)
28461  
28462 C...Derive kinematical quantities
28463       TAUE=TAU
28464       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
28465       X(1)=SQRT(TAUE)*EXP(YST)
28466       X(2)=SQRT(TAUE)*EXP(-YST)
28467       IF(MINT(45).EQ.2.AND.ISTSB.GE.1) THEN
28468         IF(X(1).GT.1D0-1D-7) RETURN
28469       ELSEIF(MINT(45).EQ.3) THEN
28470         X(1)=MIN(1D0-1.1D-10,X(1))
28471       ENDIF
28472       IF(MINT(46).EQ.2.AND.ISTSB.GE.1) THEN
28473         IF(X(2).GT.1D0-1D-7) RETURN
28474       ELSEIF(MINT(46).EQ.3) THEN
28475         X(2)=MIN(1D0-1.1D-10,X(2))
28476       ENDIF
28477       SH=MAX(1D0,TAU*VINT(2))
28478       SQM3=VINT(63)
28479       SQM4=VINT(64)
28480       RM3=SQM3/SH
28481       RM4=SQM4/SH
28482       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
28483       RPTS=4D0*VINT(71)**2/SH
28484       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
28485       RM34=MAX(1D-20,2D0*RM3*RM4)
28486       RSQM=1D0+RM34
28487       IF(2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)).LT.0.0001D0)
28488      &RM34=MAX(RM34,2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)))
28489       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
28490       IF(ISTSB.EQ.0) THEN
28491         TH=VINT(45)
28492         UH=-0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
28493         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*VINT(59)**2)
28494       ELSE
28495 C...Kinematics with incoming masses tricky: now depends on how
28496 C...subprocess has been set up w.r.t. order of incoming partons.
28497         RM1=0D0
28498         IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) RM1=-VINT(3)**2/SH
28499         RM2=0D0
28500         IF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) RM2=-VINT(4)**2/SH
28501         IF(ISUB.EQ.35) THEN
28502           RM2=MIN(RM1,RM2)
28503           RM1=0D0
28504         ENDIF
28505         BE12=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
28506         TUCOM=(1D0-RM1-RM2)*(1D0-RM3-RM4)
28507         TH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM4-2D0*RM2*RM3-
28508      &  BE12*BE34*CTH)
28509         UH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM3-2D0*RM2*RM4+
28510      &  BE12*BE34*CTH)
28511         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*(1D0-CTH**2))
28512       ENDIF
28513       SHR=SQRT(SH)
28514       SH2=SH**2
28515       TH2=TH**2
28516       UH2=UH**2
28517  
28518 C...Choice of Q2 scale for hard process (e.g. alpha_s).
28519       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
28520         Q2=SH
28521       ELSEIF(ISTSB.EQ.8) THEN
28522         IF(MINT(107).EQ.4) Q2=VINT(307)
28523         IF(MINT(108).EQ.4) Q2=VINT(308)
28524       ELSEIF(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9) THEN
28525         Q2IN1=0D0
28526         IF(MINT(11).EQ.22.AND.VINT(3).LT.0D0) Q2IN1=VINT(3)**2
28527         Q2IN2=0D0
28528         IF(MINT(12).EQ.22.AND.VINT(4).LT.0D0) Q2IN2=VINT(4)**2
28529         IF(MSTP(32).EQ.1) THEN
28530           Q2=2D0*SH*TH*UH/(SH**2+TH**2+UH**2)
28531         ELSEIF(MSTP(32).EQ.2) THEN
28532           Q2=SQPTH+0.5D0*(SQM3+SQM4)
28533         ELSEIF(MSTP(32).EQ.3) THEN
28534           Q2=MIN(-TH,-UH)
28535         ELSEIF(MSTP(32).EQ.4) THEN
28536           Q2=SH
28537         ELSEIF(MSTP(32).EQ.5) THEN
28538           Q2=-TH
28539         ELSEIF(MSTP(32).EQ.6) THEN
28540           XSF1=X(1)
28541           IF(ISTSB.EQ.9) XSF1=X(1)/VINT(143)
28542           XSF2=X(2)
28543           IF(ISTSB.EQ.9) XSF2=X(2)/VINT(144)
28544           Q2=(1D0+XSF1*Q2IN1/SH+XSF2*Q2IN2/SH)*
28545      &    (SQPTH+0.5D0*(SQM3+SQM4))
28546         ELSEIF(MSTP(32).EQ.7) THEN
28547           Q2=(1D0+Q2IN1/SH+Q2IN2/SH)*(SQPTH+0.5D0*(SQM3+SQM4))
28548         ELSEIF(MSTP(32).EQ.8) THEN
28549           Q2=SQPTH+0.5D0*(Q2IN1+Q2IN2+SQM3+SQM4)
28550         ELSEIF(MSTP(32).EQ.9) THEN
28551           Q2=SQPTH+Q2IN1+Q2IN2+SQM3+SQM4
28552         ELSEIF(MSTP(32).EQ.10) THEN
28553           Q2=VINT(2)
28554 C..Begin JA 040914
28555         ELSEIF(MSTP(32).EQ.11) THEN
28556           Q2=0.25*(SQM3+SQM4+2*SQRT(SQM3*SQM4))
28557         ELSEIF(MSTP(32).EQ.12) THEN
28558           Q2=PARP(193)
28559 C..End JA
28560         ELSEIF(MSTP(32).EQ.13) THEN
28561           Q2=SQPTH
28562         ENDIF
28563         IF(MINT(35).LE.2.AND.ISTSB.EQ.9) Q2=SQPTH
28564         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2=Q2+
28565      &  (PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
28566       ENDIF
28567  
28568 C...Choice of Q2 scale for parton densities.
28569       Q2SF=Q2
28570 C..Begin JA 040914
28571       IF(MSTP(32).EQ.12.AND.(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9)
28572      &     .OR.MSTP(39).EQ.8.AND.(ISTSB.GE.3.AND.ISTSB.LE.5))
28573      &     Q2=PARP(194)
28574 C..End JA
28575       IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
28576         Q2SF=PMAS(23,1)**2
28577         IF(ISUB.EQ.8.OR.ISUB.EQ.76.OR.ISUB.EQ.77.OR.ISUB.EQ.124.OR.
28578      &  ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351) Q2SF=PMAS(24,1)**2 
28579         IF(ISUB.EQ.352) Q2SF=PMAS(PYCOMP(9900024),1)**2
28580         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
28581      &  ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402) THEN
28582           Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,2)),1)**2
28583           IF(MSTP(39).EQ.2) Q2SF=
28584      &         MAX(VINT(201)**2+VINT(202),VINT(206)**2+VINT(207))
28585           IF(MSTP(39).EQ.3) Q2SF=SH
28586           IF(MSTP(39).EQ.4) Q2SF=VINT(26)*VINT(2)
28587           IF(MSTP(39).EQ.5) Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,1)),1)**2
28588 C..Begin JA 040914
28589           IF(MSTP(39).EQ.6) Q2SF=0.25*(VINT(201)+SQRT(SH))**2
28590           IF(MSTP(39).EQ.7) Q2SF=
28591      &         (VINT(201)**2+VINT(202)+VINT(206)**2+VINT(207))/2d0
28592           IF(MSTP(39).EQ.8) Q2SF=PARP(193)
28593 C..End JA
28594         ENDIF
28595       ENDIF
28596       IF(MINT(35).GE.3.AND.ISTSB.EQ.9) Q2SF=SQPTH
28597  
28598       Q2PS=Q2SF
28599       Q2SF=Q2SF*PARP(34)
28600       IF(MSTP(69).GE.1.AND.MINT(47).EQ.5) Q2SF=VINT(2)
28601       IF(MSTP(69).GE.2) Q2SF=VINT(2)
28602  
28603 C...Identify to which class(es) subprocess belongs
28604       ISMECR=0
28605       ISQCD=0
28606       ISJETS=0
28607       IF (ISUBSV.EQ.1.OR.ISUBSV.EQ.2.OR.ISUBSV.EQ.3.OR.
28608      &     ISUBSV.EQ.102.OR.ISUBSV.EQ.141.OR.ISUBSV.EQ.142.OR.
28609      &     ISUBSV.EQ.144.OR.ISUBSV.EQ.151.OR.ISUBSV.EQ.152.OR.
28610      &     ISUBSV.EQ.156.OR.ISUBSV.EQ.157) ISMECR=1
28611       IF (ISUBSV.EQ.11.OR.ISUBSV.EQ.12.OR.ISUBSV.EQ.13.OR.
28612      &     ISUBSV.EQ.28.OR.ISUBSV.EQ.53.OR.ISUBSV.EQ.68) ISQCD=1
28613       IF ((ISUBSV.EQ.81.OR.ISUBSV.EQ.82).AND.MINT(55).LE.5) ISQCD=1
28614       IF (ISUBSV.GE.381.AND.ISUBSV.LE.386) ISQCD=1
28615       IF ((ISUBSV.EQ.387.OR.ISUBSV.EQ.388).AND.MINT(55).LE.5) ISQCD=1
28616       IF (ISTSB.EQ.9) ISQCD=1
28617       IF ((ISUBSV.GE.86.AND.ISUBSV.LE.89).OR.ISUBSV.EQ.107.OR.
28618      &     (ISUBSV.GE.14.AND.ISUBSV.LE.16).OR.(ISUBSV.GE.29.AND.
28619      &     ISUBSV.LE.32).OR.(ISUBSV.GE.111.AND.ISUBSV.LE.113).OR.
28620      &     ISUBSV.EQ.115.OR.(ISUBSV.GE.183.AND.ISUBSV.LE.185).OR.
28621      &     (ISUBSV.GE.188.AND.ISUBSV.LE.190).OR.ISUBSV.EQ.161.OR.
28622      &     ISUBSV.EQ.167.OR.ISUBSV.EQ.168.OR.(ISUBSV.GE.393.AND.
28623      &     ISUBSV.LE.395).OR.(ISUBSV.GE.421.AND.ISUBSV.LE.439).OR.
28624      &     (ISUBSV.GE.461.AND.ISUBSV.LE.479)) ISJETS=1
28625 C...WBF is special case of ISJETS
28626       IF (ISUBSV.EQ.5.OR.ISUBSV.EQ.8.OR.
28627      &    (ISUBSV.GE.71.AND.ISUBSV.LE.73).OR.
28628      &    ISUBSV.EQ.76.OR.ISUBSV.EQ.77.OR.
28629      &    (ISUBSV.GE.121.AND.ISUBSV.LE.124).OR.
28630      &    ISUBSV.EQ.173.OR.ISUBSV.EQ.174.OR.
28631      &    ISUBSV.EQ.178.OR.ISUBSV.EQ.179.OR.
28632      &    ISUBSV.EQ.181.OR.ISUBSV.EQ.182.OR.
28633      &    ISUBSV.EQ.186.OR.ISUBSV.EQ.187.OR.
28634      &    ISUBSV.EQ.351.OR.ISUBSV.EQ.352) ISJETS=2
28635 C...Some processes with photons also belong here.
28636       IF (ISUBSV.EQ.10.OR.(ISUBSV.GE.18.AND.ISUBSV.LE.20).OR.
28637      &     (ISUBSV.GE.33.AND.ISUBSV.LE.36).OR.ISUBSV.EQ.54.OR.
28638      &     ISUBSV.EQ.58.OR.ISUBSV.EQ.69.OR.ISUBSV.EQ.70.OR.
28639      &     ISUBSV.EQ.80.OR.(ISUBSV.GE.83.AND.ISUBSV.LE.85).OR.
28640      &     (ISUBSV.GE.106.AND.ISUBSV.LE.110).OR.ISUBSV.EQ.114.OR.
28641      &     (ISUBSV.GE.131.AND.ISUBSV.LE.140)) ISJETS=3
28642
28643 C...Choice of Q2 scale for parton-shower activity.
28644       IF(MSTP(22).GE.1.AND.(ISUB.EQ.10.OR.ISUB.EQ.83).AND.
28645      &(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
28646         XBJ=X(2)
28647         IF(MINT(43).EQ.3) XBJ=X(1)
28648         IF(MSTP(22).EQ.1) THEN
28649           Q2PS=-TH
28650         ELSEIF(MSTP(22).EQ.2) THEN
28651           Q2PS=((1D0-XBJ)/XBJ)*(-TH)
28652         ELSEIF(MSTP(22).EQ.3) THEN
28653           Q2PS=SQRT((1D0-XBJ)/XBJ)*(-TH)
28654         ELSE
28655           Q2PS=(1D0-XBJ)*MAX(1D0,-LOG(XBJ))*(-TH)
28656         ENDIF
28657       ENDIF
28658 C...For multiple interactions, start from scale defined above
28659 C...For all other QCD or "+jets"-type events, start shower from pThard.
28660       IF (ISJETS.EQ.1.OR.ISQCD.EQ.1.AND.ISTSB.NE.9) Q2PS=SQPTH
28661       IF((MSTP(68).EQ.1.OR.MSTP(68).EQ.3).AND.ISMECR.EQ.1) THEN
28662 C...Max shower scale = s for ME corrected processes.
28663 C...(pT-ordering: max pT2 is s/4)
28664         Q2PS=VINT(2)
28665         IF (MINT(35).GE.3) Q2PS=Q2PS*0.25D0
28666       ELSEIF(MSTP(68).GE.2.AND.ISQCD.EQ.0.AND.ISJETS.EQ.0) THEN
28667 C...Max shower scale = s for all non-QCD, non-"+ jet" type processes.
28668 C...(pT-ordering: max pT2 is s/4)
28669         Q2PS=VINT(2)
28670         IF (MINT(35).GE.3) Q2PS=Q2PS*0.25D0
28671       ENDIF
28672       IF(MINT(35).EQ.2.AND.ISTSB.EQ.9) Q2PS=SQPTH
28673
28674 C...Elastic and diffractive events not associated with scales so set 0.
28675       IF(ISUBSV.GE.91.AND.ISUBSV.LE.94) THEN
28676         Q2SF=0D0
28677         Q2PS=0D0
28678       ENDIF
28679  
28680 C...Store derived kinematical quantities
28681       VINT(41)=X(1)
28682       VINT(42)=X(2)
28683       VINT(44)=SH
28684       VINT(43)=SQRT(SH)
28685       VINT(45)=TH
28686       VINT(46)=UH
28687       IF(ISTSB.NE.8) VINT(48)=SQPTH
28688       IF(ISTSB.NE.8) VINT(47)=SQRT(SQPTH)
28689       VINT(50)=TAUP*VINT(2)
28690       VINT(49)=SQRT(MAX(0D0,VINT(50)))
28691       VINT(52)=Q2
28692       VINT(51)=SQRT(Q2)
28693       VINT(54)=Q2SF
28694       VINT(53)=SQRT(Q2SF)
28695       VINT(56)=Q2PS
28696       VINT(55)=SQRT(Q2PS)
28697  
28698 C...Set starting scale for multiple interactions
28699       IF (ISUBSV.EQ.95) THEN
28700         XT2GMX=0D0
28701       ELSEIF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
28702      &      ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
28703      &      ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
28704      &      ISUBSV.NE.96)) THEN
28705 C...All accessible phase space allowed.
28706         XT2GMX=(1D0-VINT(41))*(1D0-VINT(42))
28707       ELSE
28708 C...Scale of hard process sets limit.
28709 C...2 -> 1. Limit is tau = x1*x2.
28710 C...2 -> 2. Limit is XT2 for hard process + FS masses.
28711 C...2 -> n > 2. Limit is tau' = tau of outer process.
28712         XT2GMX=VINT(25)
28713         IF(ISTSB.EQ.1) XT2GMX=VINT(21)
28714         IF(ISTSB.EQ.2)
28715      &      XT2GMX=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
28716         IF(ISTSB.GE.3.AND.ISTSB.LE.5) XT2GMX=VINT(26)
28717       ENDIF
28718       VINT(62)=0.25D0*XT2GMX*VINT(2)
28719       VINT(61)=SQRT(MAX(0D0,VINT(62)))
28720  
28721 C...Calculate parton distributions
28722       IF(ISTSB.LE.0) GOTO 160
28723       IF(MINT(47).GE.2) THEN
28724         DO 110 I=3-MIN(2,MINT(45)),MIN(2,MINT(46))
28725           XSF=X(I)
28726           IF(ISTSB.EQ.9) XSF=X(I)/VINT(142+I)
28727           IF(ISUB.EQ.99) THEN
28728             IF(MINT(140+I).EQ.0) THEN
28729               XSF=VINT(309-I)/(VINT(2)+VINT(309-I)-VINT(I+2)**2)
28730             ELSE
28731               XSF=VINT(309-I)/(VINT(2)+VINT(307)+VINT(308))
28732             ENDIF
28733             VINT(40+I)=XSF
28734             Q2SF=VINT(309-I)
28735           ENDIF
28736           MINT(105)=MINT(102+I)
28737           MINT(109)=MINT(106+I)
28738           VINT(120)=VINT(2+I)
28739 C.... ALICE
28740 C.... Store side in MINT(124)
28741           MINT(124)=I
28742 C....
28743           IF(MSTP(57).LE.1) THEN
28744             CALL PYPDFU(MINT(10+I),XSF,Q2SF,XPQ)
28745           ELSE
28746             CALL PYPDFL(MINT(10+I),XSF,Q2SF,XPQ)
28747           ENDIF
28748 C...Safety margin against heavy flavour very close to threshold,
28749 C...e.g. caused by mismatch in c and b masses.
28750           IF(Q2SF.LT.1.1*PMAS(4,1)**2) THEN
28751             XPQ(4)=0D0
28752             XPQ(-4)=0D0
28753           ENDIF
28754           IF(Q2SF.LT.1.1*PMAS(5,1)**2) THEN
28755             XPQ(5)=0D0
28756             XPQ(-5)=0D0
28757           ENDIF
28758           DO 100 KFL=-25,25
28759             XSFX(I,KFL)=XPQ(KFL)
28760   100     CONTINUE
28761   110   CONTINUE
28762       ENDIF
28763  
28764 C...Calculate alpha_em, alpha_strong and K-factor
28765       XW=PARU(102)
28766       XWV=XW
28767       IF(MSTP(8).GE.2.OR.(ISUB.GE.71.AND.ISUB.LE.77)) XW=
28768      &1D0-(PMAS(24,1)/PMAS(23,1))**2
28769       XW1=1D0-XW
28770       XWC=1D0/(16D0*XW*XW1)
28771       AEM=PYALEM(Q2)
28772       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
28773       IF(MSTP(33).NE.3) AS=PYALPS(PARP(34)*Q2)
28774       FACK=1D0
28775       FACA=1D0
28776       IF(MSTP(33).EQ.1) THEN
28777         FACK=PARP(31)
28778       ELSEIF(MSTP(33).EQ.2) THEN
28779         FACK=PARP(31)
28780         FACA=PARP(32)/PARP(31)
28781       ELSEIF(MSTP(33).EQ.3) THEN
28782         Q2AS=PARP(33)*Q2
28783         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2AS=Q2AS+
28784      &  PARU(112)*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
28785         AS=PYALPS(Q2AS)
28786       ENDIF
28787       VINT(138)=1D0
28788       VINT(57)=AEM
28789       VINT(58)=AS
28790  
28791 C...Set flags for allowed reacting partons/leptons
28792       DO 140 I=1,2
28793         DO 120 J=-25,25
28794           KFAC(I,J)=0
28795   120   CONTINUE
28796         IF(MINT(44+I).EQ.1) THEN
28797           KFAC(I,MINT(10+I))=1
28798         ELSEIF(MINT(40+I).EQ.1.AND.MSTP(12).EQ.0) THEN
28799           KFAC(I,MINT(10+I))=1
28800           KFAC(I,22)=1
28801           KFAC(I,24)=1
28802           KFAC(I,-24)=1
28803         ELSE
28804           DO 130 J=-25,25
28805             KFAC(I,J)=KFIN(I,J)
28806             IF(IABS(J).GT.MSTP(58).AND.IABS(J).LE.10) KFAC(I,J)=0
28807             IF(XSFX(I,J).LT.1D-10) KFAC(I,J)=0
28808   130     CONTINUE
28809         ENDIF
28810   140 CONTINUE
28811  
28812 C...Lower and upper limit for fermion flavour loops
28813       MMIN1=0
28814       MMAX1=0
28815       MMIN2=0
28816       MMAX2=0
28817       DO 150 J=-20,20
28818         IF(KFAC(1,-J).EQ.1) MMIN1=-J
28819         IF(KFAC(1,J).EQ.1) MMAX1=J
28820         IF(KFAC(2,-J).EQ.1) MMIN2=-J
28821         IF(KFAC(2,J).EQ.1) MMAX2=J
28822   150 CONTINUE
28823       MMINA=MIN(MMIN1,MMIN2)
28824       MMAXA=MAX(MMAX1,MMAX2)
28825  
28826 C...Common resonance mass and width combinations
28827       SQMZ=PMAS(23,1)**2
28828       SQMW=PMAS(24,1)**2
28829       GMMZ=PMAS(23,1)*PMAS(23,2)
28830       GMMW=PMAS(24,1)*PMAS(24,2)
28831  
28832 C...Polarization factors...implemented so far for W+W-(25)
28833       POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
28834       POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
28835       POLRR=(1D0+PARJ(132))*(1D0+PARJ(131))
28836       POLLL=(1D0-PARJ(132))*(1D0-PARJ(131))
28837  
28838 C...Phase space integral in tau
28839       COMFAC=PARU(1)*PARU(5)/VINT(2)
28840       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) COMFAC=COMFAC*FACK
28841       IF((MINT(47).GE.2.OR.(ISTSB.GE.3.AND.ISTSB.LE.5)).AND.
28842      &ISTSB.NE.8.AND.ISTSB.NE.9) THEN
28843         ATAU1=LOG(TAUMAX/TAUMIN)
28844         ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
28845         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/TAU
28846         IF(MINT(72).GE.1) THEN
28847           TAUR1=VINT(73)
28848           GAMR1=VINT(74)
28849           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))
28850           ATAU3=ATAUD/TAUR1
28851           IF(ATAUD.GT.1D-10) H1=H1+
28852      &    (ATAU1/ATAU3)*COEF(ISUBSV,3)/(TAU+TAUR1)
28853           ATAUD=ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1)
28854           ATAU4=ATAUD/GAMR1
28855           IF(ATAUD.GT.1D-10) H1=H1+
28856      &    (ATAU1/ATAU4)*COEF(ISUBSV,4)*TAU/((TAU-TAUR1)**2+GAMR1**2)
28857         ENDIF
28858         IF(MINT(72).GE.2) THEN
28859           TAUR2=VINT(75)
28860           GAMR2=VINT(76)
28861           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))
28862           ATAU5=ATAUD/TAUR2
28863           IF(ATAUD.GT.1D-10) H1=H1+
28864      &    (ATAU1/ATAU5)*COEF(ISUBSV,5)/(TAU+TAUR2)
28865           ATAUD=ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2)
28866           ATAU6=ATAUD/GAMR2
28867           IF(ATAUD.GT.1D-10) H1=H1+
28868      &    (ATAU1/ATAU6)*COEF(ISUBSV,6)*TAU/((TAU-TAUR2)**2+GAMR2**2)
28869         ENDIF
28870         IF(MINT(72).EQ.3) THEN
28871           TAUR3=VINT(77)
28872           GAMR3=VINT(78)
28873           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR3)/(TAUMAX+TAUR3))
28874           ATAU50=ATAUD/TAUR3
28875           IF(ATAUD.GT.1D-10) H1=H1+
28876      &    (ATAU1/ATAU50)*COEFX(ISUBSV,1)/(TAU+TAUR3)
28877           ATAUD=ATAN((TAUMAX-TAUR3)/GAMR3)-ATAN((TAUMIN-TAUR3)/GAMR3)
28878           ATAU60=ATAUD/GAMR3
28879           IF(ATAUD.GT.1D-10) H1=H1+
28880      &    (ATAU1/ATAU60)*COEFX(ISUBSV,2)*TAU/((TAU-TAUR3)**2+GAMR3**2)
28881         ENDIF
28882         IF(MINT(47).EQ.5.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
28883           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
28884           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
28885      &    MAX(2D-10,1D0-TAU)
28886         ELSEIF(MINT(47).GE.6.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
28887           ATAU7=LOG(MAX(1D-10,1D0-TAUMIN)/MAX(1D-10,1D0-TAUMAX))
28888           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
28889      &    MAX(1D-10,1D0-TAU)
28890         ENDIF
28891         COMFAC=COMFAC*ATAU1/(TAU*H1)
28892       ENDIF
28893  
28894 C...Phase space integral in y*
28895       IF((MINT(47).EQ.4.OR.MINT(47).EQ.5).AND.ISTSB.NE.8.AND.ISTSB.NE.9)
28896      &THEN
28897         AYST0=YSTMAX-YSTMIN
28898         IF(AYST0.LT.1D-10) THEN
28899           COMFAC=0D0
28900         ELSE
28901           AYST1=0.5D0*(YSTMAX-YSTMIN)**2
28902           AYST2=AYST1
28903           AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
28904           H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
28905      &    (AYST0/AYST2)*COEF(ISUBSV,9)*(YSTMAX-YST)+
28906      &    (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
28907           IF(MINT(45).EQ.3) THEN
28908             YST0=-0.5D0*LOG(TAUE)
28909             AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
28910      &      MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
28911             IF(AYST4.GT.1D-10) H2=H2+(AYST0/AYST4)*COEF(ISUBSV,11)/
28912      &      MAX(1D-10,1D0-EXP(YST-YST0))
28913           ENDIF
28914           IF(MINT(46).EQ.3) THEN
28915             YST0=-0.5D0*LOG(TAUE)
28916             AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
28917      &      MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
28918             IF(AYST5.GT.1D-10) H2=H2+(AYST0/AYST5)*COEF(ISUBSV,12)/
28919      &      MAX(1D-10,1D0-EXP(-YST-YST0))
28920           ENDIF
28921           COMFAC=COMFAC*AYST0/H2
28922         ENDIF
28923       ENDIF
28924  
28925 C...2 -> 1 processes: reduction in angular part of phase space integral
28926 C...for case of decaying resonance
28927       ACTH0=CTNMAX-CTNMIN+CTPMAX-CTPMIN
28928       IF((ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5)) THEN
28929         IF(MDCY(PYCOMP(KFPR(ISUBSV,1)),1).EQ.1) THEN
28930           IF(KFPR(ISUB,1).EQ.25.OR.KFPR(ISUB,1).EQ.37.OR.
28931      &    KFPR(ISUB,1).EQ.39) THEN
28932             COMFAC=COMFAC*0.5D0*ACTH0
28933           ELSE
28934             COMFAC=COMFAC*0.125D0*(3D0*ACTH0+CTNMAX**3-CTNMIN**3+
28935      &      CTPMAX**3-CTPMIN**3)
28936           ENDIF
28937         ENDIF
28938  
28939 C...2 -> 2 processes: angular part of phase space integral
28940       ELSEIF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
28941         ACTH1=LOG((MAX(RM34,RSQM-CTNMIN)*MAX(RM34,RSQM-CTPMIN))/
28942      &  (MAX(RM34,RSQM-CTNMAX)*MAX(RM34,RSQM-CTPMAX)))
28943         ACTH2=LOG((MAX(RM34,RSQM+CTNMAX)*MAX(RM34,RSQM+CTPMAX))/
28944      &  (MAX(RM34,RSQM+CTNMIN)*MAX(RM34,RSQM+CTPMIN)))
28945         ACTH3=1D0/MAX(RM34,RSQM-CTNMAX)-1D0/MAX(RM34,RSQM-CTNMIN)+
28946      &  1D0/MAX(RM34,RSQM-CTPMAX)-1D0/MAX(RM34,RSQM-CTPMIN)
28947         ACTH4=1D0/MAX(RM34,RSQM+CTNMIN)-1D0/MAX(RM34,RSQM+CTNMAX)+
28948      &  1D0/MAX(RM34,RSQM+CTPMIN)-1D0/MAX(RM34,RSQM+CTPMAX)
28949         H3=COEF(ISUBSV,13)+
28950      &  (ACTH0/ACTH1)*COEF(ISUBSV,14)/MAX(RM34,RSQM-CTH)+
28951      &  (ACTH0/ACTH2)*COEF(ISUBSV,15)/MAX(RM34,RSQM+CTH)+
28952      &  (ACTH0/ACTH3)*COEF(ISUBSV,16)/MAX(RM34,RSQM-CTH)**2+
28953      &  (ACTH0/ACTH4)*COEF(ISUBSV,17)/MAX(RM34,RSQM+CTH)**2
28954         COMFAC=COMFAC*ACTH0*0.5D0*BE34/H3
28955  
28956 C...2 -> 2 processes: take into account final state Breit-Wigners
28957         COMFAC=COMFAC*VINT(80)
28958       ENDIF
28959  
28960 C...2 -> 3, 4 processes: phace space integral in tau'
28961       IF(MINT(47).GE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5) THEN
28962         ATAUP1=LOG(TAUPMX/TAUPMN)
28963         ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
28964         H4=COEF(ISUBSV,18)+
28965      &  (ATAUP1/ATAUP2)*COEF(ISUBSV,19)*(1D0-TAU/TAUP)**3/TAUP
28966         IF(MINT(47).EQ.5) THEN
28967           ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
28968           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(2D-10,1D0-TAUP)
28969         ELSEIF(MINT(47).GE.6) THEN
28970           ATAUP3=LOG(MAX(1D-10,1D0-TAUPMN)/MAX(1D-10,1D0-TAUPMX))
28971           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(1D-10,1D0-TAUP)
28972         ENDIF
28973         COMFAC=COMFAC*ATAUP1/H4
28974       ENDIF
28975  
28976 C...2 -> 3, 4 processes: effective W/Z parton distributions
28977       IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) THEN
28978         IF(1D0-TAU/TAUP.GT.1D-4) THEN
28979           FZW=(1D0+TAU/TAUP)*LOG(TAUP/TAU)-2D0*(1D0-TAU/TAUP)
28980         ELSE
28981           FZW=1D0/6D0*(1D0-TAU/TAUP)**3*TAU/TAUP
28982         ENDIF
28983         COMFAC=COMFAC*FZW
28984       ENDIF
28985  
28986 C...2 -> 3 processes: phase space integrals for pT1, pT2, y3, mirror
28987       IF(ISTSB.EQ.5) THEN
28988         COMFAC=COMFAC*VINT(205)*VINT(210)*VINT(212)*VINT(214)/
28989      &  (128D0*PARU(1)**4*VINT(220))*(TAU**2/TAUP)
28990       ENDIF
28991  
28992 C...Phase space integral for low-pT and multiple interactions
28993       IF(ISTSB.EQ.9) THEN
28994         COMFAC=PARU(1)*PARU(5)*FACK*0.5D0*VINT(2)/SH2
28995         ATAU1=LOG(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)
28996         ATAU2=2D0*ATAN(1D0/XT2-1D0)/SQRT(XT2)
28997         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/SQRT(TAU)
28998         COMFAC=COMFAC*ATAU1/H1
28999         AYST0=YSTMAX-YSTMIN
29000         AYST1=0.5D0*(YSTMAX-YSTMIN)**2
29001         AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
29002         H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
29003      &  (AYST0/AYST1)*COEF(ISUBSV,9)*(YSTMAX-YST)+
29004      &  (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
29005         COMFAC=COMFAC*AYST0/H2
29006         IF(MSTP(82).LE.1) COMFAC=COMFAC*XT2**2*(1D0/VINT(149)-1D0)
29007 C...For MSTP(82)>=2 an additional factor (xT2/(xT2+VINT(149))**2 is
29008 C...introduced to make cross-section finite for xT2 -> 0
29009         IF(MSTP(82).GE.2) COMFAC=COMFAC*XT2**2/(VINT(149)*
29010      &  (1D0+VINT(149)))
29011       ENDIF
29012  
29013 C...Real gamma + gamma: include factor 2 when different nature
29014   160 IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
29015      &MSTP(14).LE.10) COMFAC=2D0*COMFAC
29016  
29017 C...Extra factors to include the effects of
29018 C...longitudinal resolved photons (but not direct or DIS ones).
29019       DO 170 ISDE=1,2
29020         IF(MINT(10+ISDE).EQ.22.AND.MINT(106+ISDE).GE.1.AND.
29021      &  MINT(106+ISDE).LE.3) THEN
29022           VINT(314+ISDE)=1D0
29023           XY=PARP(166+ISDE)
29024           IF(MSTP(16).EQ.0) THEN
29025             IF(VINT(304+ISDE).GT.0D0.AND.VINT(304+ISDE).LT.1D0)
29026      &      XY=VINT(304+ISDE)
29027           ELSE
29028             IF(VINT(308+ISDE).GT.0D0.AND.VINT(308+ISDE).LT.1D0)
29029      &      XY=VINT(308+ISDE)
29030           ENDIF
29031           Q2GA=VINT(306+ISDE)
29032           IF(MSTP(17).GT.0.AND.XY.GT.0D0.AND.XY.LT.1D0.AND.
29033      &    Q2GA.GT.0D0) THEN
29034             REDUCE=0D0
29035             IF(MSTP(17).EQ.1) THEN
29036               REDUCE=4D0*Q2*Q2GA/(Q2+Q2GA)**2
29037             ELSEIF(MSTP(17).EQ.2) THEN
29038               REDUCE=4D0*Q2GA/(Q2+Q2GA)
29039             ELSEIF(MSTP(17).EQ.3) THEN
29040               PMVIRT=PMAS(PYCOMP(113),1)
29041               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29042             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.1) THEN
29043               PMVIRT=PMAS(PYCOMP(113),1)
29044               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
29045             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.2) THEN
29046               PMVIRT=PMAS(PYCOMP(113),1)
29047               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
29048             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.3) THEN
29049               PMVSMN=4D0*PARP(15)**2
29050               PMVSMX=4D0*VINT(154)**2
29051               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
29052               REDLON=(3D0*PMVSMN+Q2GA)/(PMVSMN+Q2GA)**3-
29053      &        (3D0*PMVSMX+Q2GA)/(PMVSMX+Q2GA)**3
29054               REDUCE=4D0*(Q2GA/6D0)*REDLON/REDTRA
29055             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.1) THEN
29056               PMVIRT=PMAS(PYCOMP(113),1)
29057               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29058             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.2) THEN
29059               PMVIRT=PMAS(PYCOMP(113),1)
29060               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29061             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.3) THEN
29062               PMVSMN=4D0*PARP(15)**2
29063               PMVSMX=4D0*VINT(154)**2
29064               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
29065               REDLON=1D0/(PMVSMN+Q2GA)**2-1D0/(PMVSMX+Q2GA)**2
29066               REDUCE=4D0*(Q2GA/2D0)*REDLON/REDTRA
29067             ENDIF
29068             BEAMAS=PYMASS(11)
29069             IF(VINT(302+ISDE).GT.0D0) BEAMAS=VINT(302+ISDE)
29070             FRACLT=1D0/(1D0+XY**2/2D0/(1D0-XY)*
29071      &      (1D0-2D0*BEAMAS**2/Q2GA))
29072             VINT(314+ISDE)=1D0+PARP(165)*REDUCE*FRACLT
29073           ENDIF
29074         ELSE
29075           VINT(314+ISDE)=1D0
29076         ENDIF
29077         COMFAC=COMFAC*VINT(314+ISDE)
29078   170 CONTINUE
29079  
29080 C...Evaluate cross sections - done in separate routines by kind
29081 C...of physics, to keep PYSIGH of sensible size.
29082       IF(MAP.EQ.1) THEN
29083 C...Standard QCD (including photons).
29084         CALL PYSGQC(NCHN,SIGS)
29085       ELSEIF(MAP.EQ.2) THEN
29086 C...Heavy flavours.
29087         CALL PYSGHF(NCHN,SIGS)
29088       ELSEIF(MAP.EQ.3) THEN
29089 C...W/Z.
29090         CALL PYSGWZ(NCHN,SIGS)
29091       ELSEIF(MAP.EQ.4) THEN
29092 C...Higgs (2 doublets; including longitudinal W/Z scattering).
29093         CALL PYSGHG(NCHN,SIGS)
29094       ELSEIF(MAP.EQ.5) THEN
29095 C...SUSY.
29096         CALL PYSGSU(NCHN,SIGS)
29097       ELSEIF(MAP.EQ.6) THEN
29098 C...Technicolor.
29099         CALL PYSGTC(NCHN,SIGS)
29100       ELSEIF(MAP.EQ.7) THEN
29101 C...Exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
29102         CALL PYSGEX(NCHN,SIGS)
29103       ENDIF
29104  
29105 C...Multiply with parton distributions
29106       IF(ISUB.LE.90.OR.ISUB.GE.96) THEN
29107         DO 180 ICHN=1,NCHN
29108           IF(MINT(45).GE.2) THEN
29109             KFL1=ISIG(ICHN,1)
29110             SIGH(ICHN)=SIGH(ICHN)*XSFX(1,KFL1)
29111           ENDIF
29112           IF(MINT(46).GE.2) THEN
29113             KFL2=ISIG(ICHN,2)
29114             SIGH(ICHN)=SIGH(ICHN)*XSFX(2,KFL2)
29115           ENDIF
29116           SIGS=SIGS+SIGH(ICHN)
29117   180   CONTINUE
29118       ENDIF
29119  
29120       RETURN
29121       END
29122  
29123 C*********************************************************************
29124  
29125 C...PYSGQC
29126 C...Subprocess cross sections for QCD processes,
29127 C...including photons.
29128 C...Auxiliary to PYSIGH.
29129  
29130       SUBROUTINE PYSGQC(NCHN,SIGS)
29131  
29132 C...Double precision and integer declarations
29133       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29134       IMPLICIT INTEGER(I-N)
29135       INTEGER PYK,PYCHGE,PYCOMP
29136 C...Parameter statement to help give large particle numbers.
29137       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
29138      &KEXCIT=4000000,KDIMEN=5000000)
29139 C...Commonblocks
29140       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29141       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29142       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
29143       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29144       COMMON/PYINT1/MINT(400),VINT(400)
29145       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
29146       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
29147       COMMON/PYINT4/MWID(500),WIDS(500,5)
29148       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
29149       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
29150      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
29151      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
29152      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
29153       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
29154      &/PYINT3/,/PYINT4/,/PYINT7/,/PYSGCM/
29155 C...Local arrays
29156       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
29157  
29158 C...Differential cross section expressions.
29159  
29160       IF(ISUB.LE.20) THEN
29161         IF(ISUB.EQ.10) THEN
29162 C...f + f' -> f + f' (gamma/Z/W exchange)
29163           FACGGF=COMFAC*AEM**2*2D0*(SH2+UH2)/TH2
29164           FACGZF=COMFAC*AEM**2*XWC*4D0*SH2/(TH*(TH-SQMZ))
29165           FACZZF=COMFAC*(AEM*XWC)**2*2D0*SH2/(TH-SQMZ)**2
29166           FACWWF=COMFAC*(0.5D0*AEM/XW)**2*SH2/(TH-SQMW)**2
29167           DO 110 I=MMIN1,MMAX1
29168             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 110
29169             IA=IABS(I)
29170             DO 100 J=MMIN2,MMAX2
29171               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 100
29172               JA=IABS(J)
29173 C...Electroweak couplings
29174               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
29175               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
29176               VI=AI-4D0*EI*XWV
29177               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
29178               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
29179               VJ=AJ-4D0*EJ*XWV
29180               EPSIJ=ISIGN(1,I*J)
29181 C...gamma/Z exchange, only gamma exchange, or only Z exchange
29182               IF(MSTP(21).GE.1.AND.MSTP(21).LE.4) THEN
29183                 IF(MSTP(21).EQ.1.OR.MSTP(21).EQ.4) THEN
29184                   FACNCF=FACGGF*EI**2*EJ**2+FACGZF*EI*EJ*
29185      &            (VI*VJ*(1D0+UH2/SH2)+AI*AJ*EPSIJ*(1D0-UH2/SH2))+
29186      &            FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*(1D0+UH2/SH2)+
29187      &            4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
29188                 ELSEIF(MSTP(21).EQ.2) THEN
29189                   FACNCF=FACGGF*EI**2*EJ**2
29190                 ELSE
29191                   FACNCF=FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*
29192      &            (1D0+UH2/SH2)+4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
29193                 ENDIF
29194 C...Extrafactor 2 for only one incoming neutrino spin state.
29195                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACNCF=2D0*FACNCF
29196                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACNCF=2D0*FACNCF
29197                 NCHN=NCHN+1
29198                 ISIG(NCHN,1)=I
29199                 ISIG(NCHN,2)=J
29200                 ISIG(NCHN,3)=1
29201                 SIGH(NCHN)=FACNCF
29202               ENDIF
29203 C...W exchange
29204               IF((MSTP(21).EQ.1.OR.MSTP(21).EQ.5).AND.AI*AJ.LT.0D0) THEN
29205                 FACCCF=FACWWF*VINT(180+I)*VINT(180+J)
29206                 IF(EPSIJ.LT.0D0) FACCCF=FACCCF*UH2/SH2
29207                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACCCF=2D0*FACCCF
29208                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACCCF=2D0*FACCCF
29209                 NCHN=NCHN+1
29210                 ISIG(NCHN,1)=I
29211                 ISIG(NCHN,2)=J
29212                 ISIG(NCHN,3)=2
29213                 SIGH(NCHN)=FACCCF
29214               ENDIF
29215   100       CONTINUE
29216   110     CONTINUE
29217  
29218         ELSEIF(ISUB.EQ.11) THEN
29219 C...f + f' -> f + f' (g exchange)
29220           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
29221           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
29222      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
29223           FACQQ2=COMFAC*AS**2*4D0/9D0*((SH2+TH2)/UH2-
29224      &    MSTP(34)*2D0/3D0*SH2/(TH*UH))
29225           DO 130 I=MMIN1,MMAX1
29226             IA=IABS(I)
29227             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 130
29228             DO 120 J=MMIN2,MMAX2
29229               JA=IABS(J)
29230               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 120
29231               NCHN=NCHN+1
29232               ISIG(NCHN,1)=I
29233               ISIG(NCHN,2)=J
29234               ISIG(NCHN,3)=1
29235               SIGH(NCHN)=FACQQ1
29236               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
29237               IF(I.EQ.J) THEN
29238                 SIGH(NCHN)=0.5D0*SIGH(NCHN)
29239                 NCHN=NCHN+1
29240                 ISIG(NCHN,1)=I
29241                 ISIG(NCHN,2)=J
29242                 ISIG(NCHN,3)=2
29243                 SIGH(NCHN)=0.5D0*FACQQ2
29244               ENDIF
29245   120       CONTINUE
29246   130     CONTINUE
29247  
29248         ELSEIF(ISUB.EQ.12) THEN
29249 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
29250           CALL PYWIDT(21,SH,WDTP,WDTE)
29251           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
29252      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
29253           DO 140 I=MMINA,MMAXA
29254             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
29255      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
29256             NCHN=NCHN+1
29257             ISIG(NCHN,1)=I
29258             ISIG(NCHN,2)=-I
29259             ISIG(NCHN,3)=1
29260             SIGH(NCHN)=FACQQB
29261   140     CONTINUE
29262  
29263         ELSEIF(ISUB.EQ.13) THEN
29264 C...f + fbar -> g + g (q + qbar -> g + g only)
29265           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
29266      &    UH2/SH2)
29267           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
29268      &    TH2/SH2)
29269           DO 150 I=MMINA,MMAXA
29270             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
29271      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
29272             NCHN=NCHN+1
29273             ISIG(NCHN,1)=I
29274             ISIG(NCHN,2)=-I
29275             ISIG(NCHN,3)=1
29276             SIGH(NCHN)=0.5D0*FACGG1
29277             NCHN=NCHN+1
29278             ISIG(NCHN,1)=I
29279             ISIG(NCHN,2)=-I
29280             ISIG(NCHN,3)=2
29281             SIGH(NCHN)=0.5D0*FACGG2
29282   150     CONTINUE
29283  
29284         ELSEIF(ISUB.EQ.14) THEN
29285 C...f + fbar -> g + gamma (q + qbar -> g + gamma only)
29286           FACGG=COMFAC*AS*AEM*8D0/9D0*(TH2+UH2)/(TH*UH)
29287           DO 160 I=MMINA,MMAXA
29288             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
29289      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
29290             EI=KCHG(IABS(I),1)/3D0
29291             NCHN=NCHN+1
29292             ISIG(NCHN,1)=I
29293             ISIG(NCHN,2)=-I
29294             ISIG(NCHN,3)=1
29295             SIGH(NCHN)=FACGG*EI**2
29296   160     CONTINUE
29297  
29298         ELSEIF(ISUB.EQ.18) THEN
29299 C...f + fbar -> gamma + gamma
29300           FACGG=COMFAC*AEM**2*2D0*(TH2+UH2)/(TH*UH)
29301           DO 170 I=MMINA,MMAXA
29302             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 170
29303             EI=KCHG(IABS(I),1)/3D0
29304             FCOI=1D0
29305             IF(IABS(I).LE.10) FCOI=FACA/3D0
29306             NCHN=NCHN+1
29307             ISIG(NCHN,1)=I
29308             ISIG(NCHN,2)=-I
29309             ISIG(NCHN,3)=1
29310             SIGH(NCHN)=0.5D0*FACGG*FCOI*EI**4
29311   170     CONTINUE
29312         ENDIF
29313  
29314       ELSEIF(ISUB.LE.40) THEN
29315         IF(ISUB.EQ.28) THEN
29316 C...f + g -> f + g (q + g -> q + g only)
29317           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
29318      &    UH/SH)*FACA
29319           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
29320      &    SH/UH)
29321           DO 190 I=MMINA,MMAXA
29322             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 190
29323             DO 180 ISDE=1,2
29324               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
29325               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
29326               NCHN=NCHN+1
29327               ISIG(NCHN,ISDE)=I
29328               ISIG(NCHN,3-ISDE)=21
29329               ISIG(NCHN,3)=1
29330               SIGH(NCHN)=FACQG1
29331               NCHN=NCHN+1
29332               ISIG(NCHN,ISDE)=I
29333               ISIG(NCHN,3-ISDE)=21
29334               ISIG(NCHN,3)=2
29335               SIGH(NCHN)=FACQG2
29336   180       CONTINUE
29337   190     CONTINUE
29338  
29339         ELSEIF(ISUB.EQ.29) THEN
29340 C...f + g -> f + gamma (q + g -> q + gamma only)
29341           FGQ=COMFAC*FACA*AS*AEM*1D0/3D0*(SH2+UH2)/(-SH*UH)
29342           DO 210 I=MMINA,MMAXA
29343             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 210
29344             EI=KCHG(IABS(I),1)/3D0
29345             FACGQ=FGQ*EI**2
29346             DO 200 ISDE=1,2
29347               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 200
29348               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 200
29349               NCHN=NCHN+1
29350               ISIG(NCHN,ISDE)=I
29351               ISIG(NCHN,3-ISDE)=21
29352               ISIG(NCHN,3)=1
29353               SIGH(NCHN)=FACGQ
29354   200       CONTINUE
29355   210     CONTINUE
29356  
29357         ELSEIF(ISUB.EQ.33) THEN
29358 C...f + gamma -> f + g (q + gamma -> q + g only)
29359           FGQ=COMFAC*AS*AEM*8D0/3D0*(SH2+UH2)/(-SH*UH)
29360           DO 230 I=MMINA,MMAXA
29361             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 230
29362             EI=KCHG(IABS(I),1)/3D0
29363             FACGQ=FGQ*EI**2
29364             DO 220 ISDE=1,2
29365               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 220
29366               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 220
29367               NCHN=NCHN+1
29368               ISIG(NCHN,ISDE)=I
29369               ISIG(NCHN,3-ISDE)=22
29370               ISIG(NCHN,3)=1
29371               SIGH(NCHN)=FACGQ
29372   220       CONTINUE
29373   230     CONTINUE
29374  
29375         ELSEIF(ISUB.EQ.34) THEN
29376 C...f + gamma -> f + gamma
29377           FGQ=COMFAC*AEM**2*2D0*(SH2+UH2)/(-SH*UH)
29378           DO 250 I=MMINA,MMAXA
29379             IF(I.EQ.0) GOTO 250
29380             EI=KCHG(IABS(I),1)/3D0
29381             FACGQ=FGQ*EI**4
29382             DO 240 ISDE=1,2
29383               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 240
29384               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 240
29385               NCHN=NCHN+1
29386               ISIG(NCHN,ISDE)=I
29387               ISIG(NCHN,3-ISDE)=22
29388               ISIG(NCHN,3)=1
29389               SIGH(NCHN)=FACGQ
29390   240       CONTINUE
29391   250     CONTINUE
29392         ENDIF
29393  
29394       ELSEIF(ISUB.LE.80) THEN
29395         IF(ISUB.EQ.53) THEN
29396 C...g + g -> f + fbar (g + g -> q + qbar only)
29397           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 270
29398           IDC0=MDCY(21,2)-1
29399 C...Begin by d, u, s flavours.
29400           FLAVWT=0D0
29401           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
29402      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
29403           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
29404      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
29405           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
29406      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
29407           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
29408      &    UH2/SH2)*FLAVWT*FACA
29409           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
29410      &    TH2/SH2)*FLAVWT*FACA
29411           NCHN=NCHN+1
29412           ISIG(NCHN,1)=21
29413           ISIG(NCHN,2)=21
29414           ISIG(NCHN,3)=1
29415           SIGH(NCHN)=FACQQ1
29416           NCHN=NCHN+1
29417           ISIG(NCHN,1)=21
29418           ISIG(NCHN,2)=21
29419           ISIG(NCHN,3)=2
29420           SIGH(NCHN)=FACQQ2
29421 C...Next c and b flavours: modified that and uhat for fixed
29422 C...cos(theta-hat).
29423           DO 260 IFL=4,5
29424           SQMAVG=PMAS(IFL,1)**2
29425           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
29426             BE34=SQRT(1D0-4D0*SQMAVG/SH)
29427             THQ=-0.5D0*SH*(1D0-BE34*CTH)
29428             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
29429             THUHQ=THQ*UHQ-SQMAVG*SH
29430             IF(MSTP(34).EQ.0) THEN
29431               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
29432               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
29433             ELSE
29434               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
29435      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
29436               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
29437      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
29438             ENDIF
29439             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
29440             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
29441             NCHN=NCHN+1
29442             ISIG(NCHN,1)=21
29443             ISIG(NCHN,2)=21
29444             ISIG(NCHN,3)=1+2*(IFL-3)
29445             SIGH(NCHN)=FACQQ1
29446             NCHN=NCHN+1
29447             ISIG(NCHN,1)=21
29448             ISIG(NCHN,2)=21
29449             ISIG(NCHN,3)=2+2*(IFL-3)
29450             SIGH(NCHN)=FACQQ2
29451           ENDIF
29452   260     CONTINUE
29453   270     CONTINUE
29454  
29455         ELSEIF(ISUB.EQ.54) THEN
29456 C...g + gamma -> f + fbar (g + gamma -> q + qbar only)
29457           CALL PYWIDT(21,SH,WDTP,WDTE)
29458           WDTESU=0D0
29459           DO 280 I=1,MIN(8,MDCY(21,3))
29460             EF=KCHG(I,1)/3D0
29461             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
29462      &      WDTE(I,4))
29463   280     CONTINUE
29464           FACQQ=COMFAC*AEM*AS*WDTESU*(TH2+UH2)/(TH*UH)
29465           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
29466             NCHN=NCHN+1
29467             ISIG(NCHN,1)=21
29468             ISIG(NCHN,2)=22
29469             ISIG(NCHN,3)=1
29470             SIGH(NCHN)=FACQQ
29471           ENDIF
29472           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
29473             NCHN=NCHN+1
29474             ISIG(NCHN,1)=22
29475             ISIG(NCHN,2)=21
29476             ISIG(NCHN,3)=1
29477             SIGH(NCHN)=FACQQ
29478           ENDIF
29479  
29480         ELSEIF(ISUB.EQ.58) THEN
29481 C...gamma + gamma -> f + fbar
29482           CALL PYWIDT(22,SH,WDTP,WDTE)
29483           WDTESU=0D0
29484           DO 290 I=1,MIN(12,MDCY(22,3))
29485             IF(I.LE.8) EF= KCHG(I,1)/3D0
29486             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
29487             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
29488      &      WDTE(I,4))
29489   290     CONTINUE
29490           FACFF=COMFAC*AEM**2*WDTESU*2D0*(TH2+UH2)/(TH*UH)
29491           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
29492             NCHN=NCHN+1
29493             ISIG(NCHN,1)=22
29494             ISIG(NCHN,2)=22
29495             ISIG(NCHN,3)=1
29496             SIGH(NCHN)=FACFF
29497           ENDIF
29498  
29499         ELSEIF(ISUB.EQ.68) THEN
29500 C...g + g -> g + g
29501           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 300
29502           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+2D0*TH/SH+
29503      &    TH2/SH2)*FACA
29504           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+2D0*SH/UH+
29505      &    SH2/UH2)*FACA
29506           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+2D0*UH/TH+
29507      &    UH2/TH2)
29508           NCHN=NCHN+1
29509           ISIG(NCHN,1)=21
29510           ISIG(NCHN,2)=21
29511           ISIG(NCHN,3)=1
29512           SIGH(NCHN)=0.5D0*FACGG1
29513           NCHN=NCHN+1
29514           ISIG(NCHN,1)=21
29515           ISIG(NCHN,2)=21
29516           ISIG(NCHN,3)=2
29517           SIGH(NCHN)=0.5D0*FACGG2
29518           NCHN=NCHN+1
29519           ISIG(NCHN,1)=21
29520           ISIG(NCHN,2)=21
29521           ISIG(NCHN,3)=3
29522           SIGH(NCHN)=0.5D0*FACGG3
29523   300     CONTINUE
29524  
29525         ELSEIF(ISUB.EQ.80) THEN
29526 C...q + gamma -> q' + pi+/-
29527           FQPI=COMFAC*(2D0*AEM/9D0)*(-SH/TH)*(1D0/SH2+1D0/TH2)
29528           ASSH=PYALPS(MAX(0.5D0,0.5D0*SH))
29529           Q2FPSH=0.55D0/LOG(MAX(2D0,2D0*SH))
29530           DELSH=UH*SQRT(ASSH*Q2FPSH)
29531           ASUH=PYALPS(MAX(0.5D0,-0.5D0*UH))
29532           Q2FPUH=0.55D0/LOG(MAX(2D0,-2D0*UH))
29533           DELUH=SH*SQRT(ASUH*Q2FPUH)
29534           DO 320 I=MAX(-2,MMINA),MIN(2,MMAXA)
29535             IF(I.EQ.0) GOTO 320
29536             EI=KCHG(IABS(I),1)/3D0
29537             EJ=SIGN(1D0-ABS(EI),EI)
29538             DO 310 ISDE=1,2
29539               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 310
29540               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 310
29541               NCHN=NCHN+1
29542               ISIG(NCHN,ISDE)=I
29543               ISIG(NCHN,3-ISDE)=22
29544               ISIG(NCHN,3)=1
29545               SIGH(NCHN)=FQPI*(EI*DELSH+EJ*DELUH)**2
29546   310       CONTINUE
29547   320     CONTINUE
29548         ENDIF
29549  
29550       ELSEIF(ISUB.LE.100) THEN
29551         IF(ISUB.EQ.91) THEN
29552 C...Elastic scattering
29553           SIGS=VINT(315)*VINT(316)*SIGT(0,0,1)
29554  
29555         ELSEIF(ISUB.EQ.92) THEN
29556 C...Single diffractive scattering (first side, i.e. XB)
29557           SIGS=VINT(315)*VINT(316)*SIGT(0,0,2)
29558  
29559         ELSEIF(ISUB.EQ.93) THEN
29560 C...Single diffractive scattering (second side, i.e. AX)
29561           SIGS=VINT(315)*VINT(316)*SIGT(0,0,3)
29562  
29563         ELSEIF(ISUB.EQ.94) THEN
29564 C...Double diffractive scattering
29565           SIGS=VINT(315)*VINT(316)*SIGT(0,0,4)
29566  
29567         ELSEIF(ISUB.EQ.95) THEN
29568 C...Low-pT scattering
29569           SIGS=VINT(315)*VINT(316)*SIGT(0,0,5)
29570  
29571         ELSEIF(ISUB.EQ.96) THEN
29572 C...Multiple interactions: sum of QCD processes
29573           CALL PYWIDT(21,SH,WDTP,WDTE)
29574  
29575 C...q + q' -> q + q'
29576           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
29577           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
29578      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
29579           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)/UH2
29580           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
29581           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
29582           DO 340 I=-5,5
29583             IF(I.EQ.0) GOTO 340
29584             DO 330 J=-5,5
29585               IF(J.EQ.0) GOTO 330
29586               NCHN=NCHN+1
29587               ISIG(NCHN,1)=I
29588               ISIG(NCHN,2)=J
29589               ISIG(NCHN,3)=111
29590               SIGH(NCHN)=FACQQ1
29591               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
29592               IF(I.EQ.J) THEN
29593                 SIGH(NCHN)=0.5D0*FACQQ1*RATQQI
29594                 NCHN=NCHN+1
29595                 ISIG(NCHN,1)=I
29596                 ISIG(NCHN,2)=J
29597                 ISIG(NCHN,3)=112
29598                 SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
29599               ENDIF
29600   330       CONTINUE
29601   340     CONTINUE
29602  
29603 C...q + qbar -> q' + qbar' or g + g
29604           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
29605      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))
29606           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
29607      &    UH2/SH2)
29608           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
29609      &    TH2/SH2)
29610           DO 350 I=-5,5
29611             IF(I.EQ.0) GOTO 350
29612             NCHN=NCHN+1
29613             ISIG(NCHN,1)=I
29614             ISIG(NCHN,2)=-I
29615             ISIG(NCHN,3)=121
29616             SIGH(NCHN)=FACQQB
29617             NCHN=NCHN+1
29618             ISIG(NCHN,1)=I
29619             ISIG(NCHN,2)=-I
29620             ISIG(NCHN,3)=131
29621             SIGH(NCHN)=0.5D0*FACGG1
29622             NCHN=NCHN+1
29623             ISIG(NCHN,1)=I
29624             ISIG(NCHN,2)=-I
29625             ISIG(NCHN,3)=132
29626             SIGH(NCHN)=0.5D0*FACGG2
29627   350     CONTINUE
29628  
29629 C...q + g -> q + g
29630           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
29631      &    UH/SH)*FACA
29632           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
29633      &    SH/UH)
29634           DO 370 I=-5,5
29635             IF(I.EQ.0) GOTO 370
29636             DO 360 ISDE=1,2
29637               NCHN=NCHN+1
29638               ISIG(NCHN,ISDE)=I
29639               ISIG(NCHN,3-ISDE)=21
29640               ISIG(NCHN,3)=281
29641               SIGH(NCHN)=FACQG1
29642               NCHN=NCHN+1
29643               ISIG(NCHN,ISDE)=I
29644               ISIG(NCHN,3-ISDE)=21
29645               ISIG(NCHN,3)=282
29646               SIGH(NCHN)=FACQG2
29647   360       CONTINUE
29648   370     CONTINUE
29649  
29650 C...g + g -> q + qbar (only d, u, s)
29651           IDC0=MDCY(21,2)-1
29652           FLAVWT=0D0
29653           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
29654      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
29655           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
29656      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
29657           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
29658      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
29659           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
29660      &    UH2/SH2)*FLAVWT*FACA
29661           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
29662      &    TH2/SH2)*FLAVWT*FACA
29663           NCHN=NCHN+1
29664           ISIG(NCHN,1)=21
29665           ISIG(NCHN,2)=21
29666           ISIG(NCHN,3)=531
29667           SIGH(NCHN)=FACQQ1
29668           NCHN=NCHN+1
29669           ISIG(NCHN,1)=21
29670           ISIG(NCHN,2)=21
29671           ISIG(NCHN,3)=532
29672           SIGH(NCHN)=FACQQ2
29673  
29674 C...g + g -> c + cbar, b + bbar: modified that/uhat for fixed
29675 C...cos(theta-hat)
29676           DO 380 IFL=4,5
29677           SQMAVG=PMAS(IFL,1)**2
29678           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
29679             BE34=SQRT(1D0-4D0*SQMAVG/SH)
29680             THQ=-0.5D0*SH*(1D0-BE34*CTH)
29681             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
29682             THUHQ=THQ*UHQ-SQMAVG*SH
29683             IF(MSTP(34).EQ.0) THEN
29684               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
29685               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
29686             ELSE
29687               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
29688      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
29689               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
29690      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
29691             ENDIF
29692             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
29693             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
29694             NCHN=NCHN+1
29695             ISIG(NCHN,1)=21
29696             ISIG(NCHN,2)=21
29697             ISIG(NCHN,3)=531+2*(IFL-3)
29698             SIGH(NCHN)=FACQQ1
29699             NCHN=NCHN+1
29700             ISIG(NCHN,1)=21
29701             ISIG(NCHN,2)=21
29702             ISIG(NCHN,3)=532+2*(IFL-3)
29703             SIGH(NCHN)=FACQQ2
29704           ENDIF
29705   380     CONTINUE
29706  
29707 C...g + g -> g + g
29708           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
29709      &    2D0*TH/SH+TH2/SH2)*FACA
29710           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
29711      &    2D0*SH/UH+SH2/UH2)*FACA
29712           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3+
29713      &    2D0*UH/TH+UH2/TH2)
29714           NCHN=NCHN+1
29715           ISIG(NCHN,1)=21
29716           ISIG(NCHN,2)=21
29717           ISIG(NCHN,3)=681
29718           SIGH(NCHN)=0.5D0*FACGG1
29719           NCHN=NCHN+1
29720           ISIG(NCHN,1)=21
29721           ISIG(NCHN,2)=21
29722           ISIG(NCHN,3)=682
29723           SIGH(NCHN)=0.5D0*FACGG2
29724           NCHN=NCHN+1
29725           ISIG(NCHN,1)=21
29726           ISIG(NCHN,2)=21
29727           ISIG(NCHN,3)=683
29728           SIGH(NCHN)=0.5D0*FACGG3
29729  
29730         ELSEIF(ISUB.EQ.99) THEN
29731 C...f + gamma* -> f.
29732           IF(MINT(107).EQ.4) THEN
29733             Q2GA=VINT(307)
29734             P2GA=VINT(308)
29735             ISDE=2
29736           ELSE
29737             Q2GA=VINT(308)
29738             P2GA=VINT(307)
29739             ISDE=1
29740           ENDIF
29741           COMFAC=PARU(5)*4D0*PARU(1)**2*PARU(101)*VINT(315)*VINT(316)
29742           PM2RHO=PMAS(PYCOMP(113),1)**2
29743           IF(MSTP(19).EQ.0) THEN
29744             COMFAC=COMFAC/Q2GA
29745           ELSEIF(MSTP(19).EQ.1) THEN
29746             COMFAC=COMFAC/(Q2GA+PM2RHO)
29747           ELSEIF(MSTP(19).EQ.2) THEN
29748             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
29749           ELSE
29750             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
29751             W2GA=VINT(2)
29752             IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
29753               RDRDS=4.1D-3*W2GA**2.167D0/((Q2GA+0.15D0*W2GA)**2*
29754      &        Q2GA**0.75D0)*(1D0+0.11D0*Q2GA*P2GA/(1D0+0.02D0*P2GA**2))
29755               XGA=Q2GA/(W2GA+VINT(307)+VINT(308))
29756             ELSE
29757               RDRDS=1.5D-4*W2GA**2.167D0/((Q2GA+0.041D0*W2GA)**2*
29758      &        Q2GA**0.57D0)
29759               XGA=Q2GA/(W2GA+Q2GA-PMAS(PYCOMP(MINT(10+ISDE)),1)**2)
29760             ENDIF
29761             COMFAC=COMFAC*EXP(-MAX(1D-10,RDRDS))
29762             IF(MSTP(19).EQ.4) COMFAC=COMFAC/MAX(1D-2,1D0-XGA)
29763           ENDIF
29764           DO 390 I=MMINA,MMAXA
29765             IF(I.EQ.0.OR.KFAC(ISDE,I).EQ.0) GOTO 390
29766             IF(IABS(I).LT.10.AND.IABS(I).GT.MSTP(58)) GOTO 390
29767             EI=KCHG(IABS(I),1)/3D0
29768             NCHN=NCHN+1
29769             ISIG(NCHN,ISDE)=I
29770             ISIG(NCHN,3-ISDE)=22
29771             ISIG(NCHN,3)=1
29772             SIGH(NCHN)=COMFAC*EI**2
29773   390     CONTINUE
29774         ENDIF
29775  
29776       ELSE
29777         IF(ISUB.EQ.114.OR.ISUB.EQ.115) THEN
29778 C...g + g -> gamma + gamma or g + g -> g + gamma
29779           A0STUR=0D0
29780           A0STUI=0D0
29781           A0TSUR=0D0
29782           A0TSUI=0D0
29783           A0UTSR=0D0
29784           A0UTSI=0D0
29785           A1STUR=0D0
29786           A1STUI=0D0
29787           A2STUR=0D0
29788           A2STUI=0D0
29789           ALST=LOG(-SH/TH)
29790           ALSU=LOG(-SH/UH)
29791           ALTU=LOG(TH/UH)
29792           IMAX=2*MSTP(1)
29793           IF(MSTP(38).GE.1.AND.MSTP(38).LE.8) IMAX=MSTP(38)
29794           DO 400 I=1,IMAX
29795             EI=KCHG(IABS(I),1)/3D0
29796             EIWT=EI**2
29797             IF(ISUB.EQ.115) EIWT=EI
29798             SQMQ=PMAS(I,1)**2
29799             EPSS=4D0*SQMQ/SH
29800             EPST=4D0*SQMQ/TH
29801             EPSU=4D0*SQMQ/UH
29802             IF((MSTP(38).GE.1.AND.MSTP(38).LE.8).OR.EPSS.LT.1D-4) THEN
29803               B0STUR=1D0+(TH-UH)/SH*ALTU+0.5D0*(TH2+UH2)/SH2*(ALTU**2+
29804      &        PARU(1)**2)
29805               B0STUI=0D0
29806               B0TSUR=1D0+(SH-UH)/TH*ALSU+0.5D0*(SH2+UH2)/TH2*ALSU**2
29807               B0TSUI=-PARU(1)*((SH-UH)/TH+(SH2+UH2)/TH2*ALSU)
29808               B0UTSR=1D0+(SH-TH)/UH*ALST+0.5D0*(SH2+TH2)/UH2*ALST**2
29809               B0UTSI=-PARU(1)*((SH-TH)/UH+(SH2+TH2)/UH2*ALST)
29810               B1STUR=-1D0
29811               B1STUI=0D0
29812               B2STUR=-1D0
29813               B2STUI=0D0
29814             ELSE
29815               CALL PYWAUX(1,EPSS,W1SR,W1SI)
29816               CALL PYWAUX(1,EPST,W1TR,W1TI)
29817               CALL PYWAUX(1,EPSU,W1UR,W1UI)
29818               CALL PYWAUX(2,EPSS,W2SR,W2SI)
29819               CALL PYWAUX(2,EPST,W2TR,W2TI)
29820               CALL PYWAUX(2,EPSU,W2UR,W2UI)
29821               CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
29822               CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
29823               CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
29824               CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
29825               CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
29826               CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
29827               B0STUR=1D0+(1D0+2D0*TH/SH)*W1TR+(1D0+2D0*UH/SH)*W1UR+
29828      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TR+W2UR)-
29829      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTR+Y3TUSR)-
29830      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUR+Y3UTSR)+
29831      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
29832      &        0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
29833               B0STUI=(1D0+2D0*TH/SH)*W1TI+(1D0+2D0*UH/SH)*W1UI+
29834      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TI+W2UI)-
29835      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTI+Y3TUSI)-
29836      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUI+Y3UTSI)+
29837      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
29838      &        0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
29839               B0TSUR=1D0+(1D0+2D0*SH/TH)*W1SR+(1D0+2D0*UH/TH)*W1UR+
29840      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SR+W2UR)-
29841      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSR+Y3SUTR)-
29842      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUR+Y3USTR)+
29843      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
29844      &        0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)
29845               B0TSUI=(1D0+2D0*SH/TH)*W1SI+(1D0+2D0*UH/TH)*W1UI+
29846      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SI+W2UI)-
29847      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSI+Y3SUTI)-
29848      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUI+Y3USTI)+
29849      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
29850      &        0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)
29851               B0UTSR=1D0+(1D0+2D0*TH/UH)*W1TR+(1D0+2D0*SH/UH)*W1SR+
29852      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TR+W2SR)-
29853      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTR+Y3TSUR)-
29854      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSR+Y3STUR)+
29855      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
29856      &        0.5D0*EPST*EPSS)*(Y3TUSR+Y3SUTR)
29857               B0UTSI=(1D0+2D0*TH/UH)*W1TI+(1D0+2D0*SH/UH)*W1SI+
29858      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TI+W2SI)-
29859      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTI+Y3TSUI)-
29860      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSI+Y3STUI)+
29861      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
29862      &        0.5D0*EPST*EPSS)*(Y3TUSI+Y3SUTI)
29863               B1STUR=-1D0-0.25D0*(EPSS+EPST+EPSU)*(W2SR+W2TR+W2UR)+
29864      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTR+Y3TUSR)+
29865      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)+
29866      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
29867               B1STUI=-0.25D0*(EPSS+EPST+EPSU)*(W2SI+W2TI+W2UI)+
29868      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTI+Y3TUSI)+
29869      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)+
29870      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
29871               B2STUR=-1D0+0.125D0*EPSS*EPST*(Y3SUTR+Y3TUSR)+
29872      &        0.125D0*EPSS*EPSU*(Y3STUR+Y3UTSR)+
29873      &        0.125D0*EPST*EPSU*(Y3TSUR+Y3USTR)
29874               B2STUI=0.125D0*EPSS*EPST*(Y3SUTI+Y3TUSI)+
29875      &        0.125D0*EPSS*EPSU*(Y3STUI+Y3UTSI)+
29876      &        0.125D0*EPST*EPSU*(Y3TSUI+Y3USTI)
29877             ENDIF
29878             A0STUR=A0STUR+EIWT*B0STUR
29879             A0STUI=A0STUI+EIWT*B0STUI
29880             A0TSUR=A0TSUR+EIWT*B0TSUR
29881             A0TSUI=A0TSUI+EIWT*B0TSUI
29882             A0UTSR=A0UTSR+EIWT*B0UTSR
29883             A0UTSI=A0UTSI+EIWT*B0UTSI
29884             A1STUR=A1STUR+EIWT*B1STUR
29885             A1STUI=A1STUI+EIWT*B1STUI
29886             A2STUR=A2STUR+EIWT*B2STUR
29887             A2STUI=A2STUI+EIWT*B2STUI
29888   400     CONTINUE
29889           ASQSUM=A0STUR**2+A0STUI**2+A0TSUR**2+A0TSUI**2+A0UTSR**2+
29890      &    A0UTSI**2+4D0*A1STUR**2+4D0*A1STUI**2+A2STUR**2+A2STUI**2
29891           FACGG=COMFAC*FACA/(16D0*PARU(1)**2)*AS**2*AEM**2*ASQSUM
29892           FACGP=COMFAC*FACA*5D0/(192D0*PARU(1)**2)*AS**3*AEM*ASQSUM
29893           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
29894           NCHN=NCHN+1
29895           ISIG(NCHN,1)=21
29896           ISIG(NCHN,2)=21
29897           ISIG(NCHN,3)=1
29898           IF(ISUB.EQ.114) SIGH(NCHN)=0.5D0*FACGG
29899           IF(ISUB.EQ.115) SIGH(NCHN)=FACGP
29900   410     CONTINUE
29901  
29902         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
29903 C...f + gamma*_(T,L) -> f + g (q + gamma*_(T,L) -> q + g only)
29904           PH=0D0
29905           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
29906      &    PH=VINT(3)**2
29907           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
29908      &    PH=VINT(4)**2
29909           IF(ISUB.EQ.131) THEN
29910             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**2*
29911      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
29912           ELSE
29913             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
29914           ENDIF
29915           DO 430 I=MMINA,MMAXA
29916             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
29917             EI=KCHG(IABS(I),1)/3D0
29918             FACGQ=FGQ*EI**2
29919             DO 420 ISDE=1,2
29920               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 420
29921               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 420
29922               NCHN=NCHN+1
29923               ISIG(NCHN,ISDE)=I
29924               ISIG(NCHN,3-ISDE)=22
29925               ISIG(NCHN,3)=1
29926               SIGH(NCHN)=FACGQ
29927   420       CONTINUE
29928   430     CONTINUE
29929  
29930         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
29931 C...f + gamma*_(T,L) -> f + gamma
29932           PH=0D0
29933           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
29934      &    PH=VINT(3)**2
29935           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
29936      &    PH=VINT(4)**2
29937           IF(ISUB.EQ.133) THEN
29938             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**2*
29939      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
29940           ELSE
29941             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
29942           ENDIF
29943           DO 450 I=MMINA,MMAXA
29944             IF(I.EQ.0) GOTO 450
29945             EI=KCHG(IABS(I),1)/3D0
29946             FACGQ=FGQ*EI**4
29947             DO 440 ISDE=1,2
29948               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 440
29949               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 440
29950               NCHN=NCHN+1
29951               ISIG(NCHN,ISDE)=I
29952               ISIG(NCHN,3-ISDE)=22
29953               ISIG(NCHN,3)=1
29954               SIGH(NCHN)=FACGQ
29955   440       CONTINUE
29956   450     CONTINUE
29957  
29958         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
29959 C...g + gamma*_(T,L) -> f + fbar (g + gamma*_(T,L) -> q + qbar only)
29960           PH=0D0
29961           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
29962      &    PH=VINT(3)**2
29963           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
29964      &    PH=VINT(4)**2
29965           CALL PYWIDT(21,SH,WDTP,WDTE)
29966           WDTESU=0D0
29967           DO 460 I=1,MIN(8,MDCY(21,3))
29968             EF=KCHG(I,1)/3D0
29969             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
29970      &      WDTE(I,4))
29971   460     CONTINUE
29972           IF(ISUB.EQ.135) THEN
29973             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**2*
29974      &      ((TH2+UH2-2D0*PH*SH)/(TH*UH)+4D0*PH*SH/(SH+PH)**2)
29975           ELSE
29976             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**4*8D0*PH*SH
29977           ENDIF
29978           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
29979             NCHN=NCHN+1
29980             ISIG(NCHN,1)=21
29981             ISIG(NCHN,2)=22
29982             ISIG(NCHN,3)=1
29983             SIGH(NCHN)=FACQQ
29984           ENDIF
29985           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
29986             NCHN=NCHN+1
29987             ISIG(NCHN,1)=22
29988             ISIG(NCHN,2)=21
29989             ISIG(NCHN,3)=1
29990             SIGH(NCHN)=FACQQ
29991           ENDIF
29992  
29993         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
29994 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar
29995           PH1=0D0
29996           IF(VINT(3).LT.0D0) PH1=VINT(3)**2
29997           PH2=0D0
29998           IF(VINT(4).LT.0D0) PH2=VINT(4)**2
29999           CALL PYWIDT(22,SH,WDTP,WDTE)
30000           WDTESU=0D0
30001           DO 470 I=1,MIN(12,MDCY(22,3))
30002             IF(I.LE.8) EF= KCHG(I,1)/3D0
30003             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
30004             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
30005      &      WDTE(I,4))
30006   470     CONTINUE
30007           DLAMB2=(TH+UH)**2-4D0*PH1*PH2
30008           IF(ISUB.EQ.137) THEN
30009             FPARAM=-SH*(TH+UH)/DLAMB2
30010             FACFF=COMFAC*AEM**2*WDTESU*2D0*SH2/(DLAMB2*TH2*UH2)*
30011      &      (TH*UH-PH1*PH2)*((TH2+UH2)*(1D0-2D0*FPARAM*(1D0-FPARAM))-
30012      &      2D0*PH1*PH2*FPARAM**2)
30013           ELSEIF(ISUB.EQ.138) THEN
30014             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
30015      &      PH2*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH1*SH*(TH-UH)**2/DLAMB2)+
30016      &      2D0*PH1**2*(TH-UH)**2)
30017           ELSEIF(ISUB.EQ.139) THEN
30018             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
30019      &      PH1*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH2*SH*(TH-UH)**2/DLAMB2)+
30020      &      2D0*PH2**2*(TH-UH)**2)
30021           ELSE
30022             FACFF=COMFAC*AEM**2*WDTESU*32D0*SH2**2/(DLAMB2**3*TH2*UH2)*
30023      &      PH1*PH2*(TH*UH-PH1*PH2)*(TH-UH)**2
30024           ENDIF
30025           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
30026             NCHN=NCHN+1
30027             ISIG(NCHN,1)=22
30028             ISIG(NCHN,2)=22
30029             ISIG(NCHN,3)=1
30030             SIGH(NCHN)=FACFF
30031           ENDIF
30032  
30033         ENDIF
30034       ENDIF
30035  
30036       RETURN
30037       END
30038  
30039 C*********************************************************************
30040  
30041 C...PYSGHF
30042 C...Subprocess cross sections for heavy flavour production,
30043 C...open and closed.
30044 C...Auxiliary to PYSIGH.
30045  
30046       SUBROUTINE PYSGHF(NCHN,SIGS)
30047  
30048 C...Double precision and integer declarations
30049       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30050       IMPLICIT INTEGER(I-N)
30051       INTEGER PYK,PYCHGE,PYCOMP
30052 C...Parameter statement to help give large particle numbers.
30053       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
30054      &KEXCIT=4000000,KDIMEN=5000000)
30055 C...Commonblocks
30056       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
30057       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
30058       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
30059       COMMON/PYINT1/MINT(400),VINT(400)
30060       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
30061       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
30062       COMMON/PYINT4/MWID(500),WIDS(500,5)
30063       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
30064      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
30065      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
30066      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
30067       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
30068      &/PYINT4/,/PYSGCM/
30069 C...Local arrays
30070       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
30071  
30072 C...Determine where are charmonium/bottomonium wave function parameters.
30073       IONIUM=140
30074       IF(ISUB.GE.461.AND.ISUB.LE.479) IONIUM=145
30075  
30076 C...Convert bottomonium process into equivalent charmonium ones.
30077       IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40
30078  
30079 C...Differential cross section expressions.
30080  
30081       IF(ISUB.LE.100) THEN
30082         IF(ISUB.EQ.81) THEN
30083 C...q + qbar -> Q + Qbar
30084           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30085           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30086           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30087           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
30088      &    2D0*SQMAVG/SH)
30089           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
30090           WID2=1D0
30091           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30092           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30093           FACQQB=FACQQB*WID2
30094           DO 100 I=MMINA,MMAXA
30095             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30096      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
30097             NCHN=NCHN+1
30098             ISIG(NCHN,1)=I
30099             ISIG(NCHN,2)=-I
30100             ISIG(NCHN,3)=1
30101             SIGH(NCHN)=FACQQB
30102   100     CONTINUE
30103  
30104         ELSEIF(ISUB.EQ.82) THEN
30105 C...g + g -> Q + Qbar
30106           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30107           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30108           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30109           THUHQ=THQ*UHQ-SQMAVG*SH
30110           IF(MSTP(34).EQ.0) THEN
30111             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
30112             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
30113           ELSE
30114             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30115      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
30116             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30117      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
30118           ENDIF
30119           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
30120           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
30121           IF(MSTP(35).GE.1) THEN
30122             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
30123             FACQQ1=FACQQ1*FATRE
30124             FACQQ2=FACQQ2*FATRE
30125           ENDIF
30126           WID2=1D0
30127           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30128           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30129           FACQQ1=FACQQ1*WID2
30130           FACQQ2=FACQQ2*WID2
30131           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 110
30132           NCHN=NCHN+1
30133           ISIG(NCHN,1)=21
30134           ISIG(NCHN,2)=21
30135           ISIG(NCHN,3)=1
30136           SIGH(NCHN)=FACQQ1
30137           NCHN=NCHN+1
30138           ISIG(NCHN,1)=21
30139           ISIG(NCHN,2)=21
30140           ISIG(NCHN,3)=2
30141           SIGH(NCHN)=FACQQ2
30142   110     CONTINUE
30143  
30144         ELSEIF(ISUB.EQ.83) THEN
30145 C...f + q -> f' + Q
30146           FACQQS=COMFAC*(0.5D0*AEM/XW)**2*SH*(SH-SQM3)/(SQMW-TH)**2
30147           FACQQU=COMFAC*(0.5D0*AEM/XW)**2*UH*(UH-SQM3)/(SQMW-TH)**2
30148           DO 130 I=MMIN1,MMAX1
30149             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 130
30150             DO 120 J=MMIN2,MMAX2
30151               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 120
30152               IF(I*J.GT.0.AND.MOD(IABS(I+J),2).EQ.0) GOTO 120
30153               IF(I*J.LT.0.AND.MOD(IABS(I+J),2).EQ.1) GOTO 120
30154               IF(IABS(I).LT.MINT(55).AND.MOD(IABS(I+MINT(55)),2).EQ.1)
30155      &        THEN
30156                 NCHN=NCHN+1
30157                 ISIG(NCHN,1)=I
30158                 ISIG(NCHN,2)=J
30159                 ISIG(NCHN,3)=1
30160                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
30161      &          (IABS(I)+1)/2)*VINT(180+J)
30162                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(I)/2,
30163      &          (MINT(55)+1)/2)*VINT(180+J)
30164                 WID2=1D0
30165                 IF(I.GT.0) THEN
30166                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
30167                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30168      &            WIDS(MINT(55),2)
30169                 ELSE
30170                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
30171                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30172      &            WIDS(MINT(55),3)
30173                 ENDIF
30174                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
30175                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
30176               ENDIF
30177               IF(IABS(J).LT.MINT(55).AND.MOD(IABS(J+MINT(55)),2).EQ.1)
30178      &        THEN
30179                 NCHN=NCHN+1
30180                 ISIG(NCHN,1)=I
30181                 ISIG(NCHN,2)=J
30182                 ISIG(NCHN,3)=2
30183                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
30184      &          (IABS(J)+1)/2)*VINT(180+I)
30185                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(J)/2,
30186      &          (MINT(55)+1)/2)*VINT(180+I)
30187                 IF(J.GT.0) THEN
30188                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
30189                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30190      &            WIDS(MINT(55),2)
30191                 ELSE
30192                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
30193                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30194      &            WIDS(MINT(55),3)
30195                 ENDIF
30196                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
30197                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
30198               ENDIF
30199   120       CONTINUE
30200   130     CONTINUE
30201  
30202         ELSEIF(ISUB.EQ.84) THEN
30203 C...g + gamma -> Q + Qbar
30204           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30205           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30206           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30207           FACQQ=COMFAC*AS*AEM*(KCHG(IABS(MINT(55)),1)/3D0)**2*
30208      &    (THQ**2+UHQ**2+4D0*SQMAVG*SH*(1D0-SQMAVG*SH/(THQ*UHQ)))/
30209      &    (THQ*UHQ)
30210           IF(MSTP(35).GE.1) FACQQ=FACQQ*PYHFTH(SH,SQMAVG,0D0)
30211           WID2=1D0
30212           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30213           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30214           FACQQ=FACQQ*WID2
30215           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30216             NCHN=NCHN+1
30217             ISIG(NCHN,1)=21
30218             ISIG(NCHN,2)=22
30219             ISIG(NCHN,3)=1
30220             SIGH(NCHN)=FACQQ
30221           ENDIF
30222           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
30223             NCHN=NCHN+1
30224             ISIG(NCHN,1)=22
30225             ISIG(NCHN,2)=21
30226             ISIG(NCHN,3)=1
30227             SIGH(NCHN)=FACQQ
30228           ENDIF
30229  
30230         ELSEIF(ISUB.EQ.85) THEN
30231 C...gamma + gamma -> F + Fbar (heavy fermion, quark or lepton)
30232           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30233           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30234           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30235           FACFF=COMFAC*AEM**2*(KCHG(IABS(MINT(56)),1)/3D0)**4*2D0*
30236      &    ((1D0-PARJ(131)*PARJ(132))*(THQ*UHQ-SQMAVG*SH)*
30237      &    (UHQ**2+THQ**2+2D0*SQMAVG*SH)+(1D0+PARJ(131)*PARJ(132))*
30238      &    SQMAVG*SH**2*(SH-2D0*SQMAVG))/(THQ*UHQ)**2
30239           IF(IABS(MINT(56)).LT.10) FACFF=3D0*FACFF
30240           IF(IABS(MINT(56)).LT.10.AND.MSTP(35).GE.1)
30241      &    FACFF=FACFF*PYHFTH(SH,SQMAVG,1D0)
30242           WID2=1D0
30243           IF(MINT(56).EQ.6) WID2=WIDS(6,1)
30244           IF(MINT(56).EQ.7.OR.MINT(56).EQ.8) WID2=WIDS(MINT(56),1)
30245           IF(MINT(56).EQ.17) WID2=WIDS(17,1)
30246           FACFF=FACFF*WID2
30247           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
30248             NCHN=NCHN+1
30249             ISIG(NCHN,1)=22
30250             ISIG(NCHN,2)=22
30251             ISIG(NCHN,3)=1
30252             SIGH(NCHN)=FACFF
30253           ENDIF
30254  
30255         ELSEIF(ISUB.EQ.86) THEN
30256 C...g + g -> J/Psi + g
30257           FACQQG=COMFAC*AS**3*(5D0/9D0)*PARP(38)*SQRT(SQM3)*
30258      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
30259      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
30260           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30261             NCHN=NCHN+1
30262             ISIG(NCHN,1)=21
30263             ISIG(NCHN,2)=21
30264             ISIG(NCHN,3)=1
30265             SIGH(NCHN)=FACQQG
30266           ENDIF
30267  
30268         ELSEIF(ISUB.EQ.87) THEN
30269 C...g + g -> chi_0c + g
30270           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
30271           QGTW=(SH*TH*UH)/SH**3
30272           RGTW=SQM3/SH
30273           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
30274      &    (9D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
30275      &    6D0*RGTW*PGTW**3*QGTW*(2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)-
30276      &    PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)+
30277      &    2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)+6D0*RGTW**2*QGTW**4)/
30278      &    (QGTW*(QGTW-RGTW*PGTW)**4)
30279           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30280             NCHN=NCHN+1
30281             ISIG(NCHN,1)=21
30282             ISIG(NCHN,2)=21
30283             ISIG(NCHN,3)=1
30284             SIGH(NCHN)=FACQQG
30285           ENDIF
30286  
30287         ELSEIF(ISUB.EQ.88) THEN
30288 C...g + g -> chi_1c + g
30289           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
30290           QGTW=(SH*TH*UH)/SH**3
30291           RGTW=SQM3/SH
30292           FACQQG=COMFAC*AS**3*12D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
30293      &    PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)+2D0*QGTW*(-RGTW**4+
30294      &    5D0*RGTW**2*PGTW+PGTW**2)-15D0*RGTW*QGTW**2)/
30295      &    (QGTW-RGTW*PGTW)**4
30296           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30297             NCHN=NCHN+1
30298             ISIG(NCHN,1)=21
30299             ISIG(NCHN,2)=21
30300             ISIG(NCHN,3)=1
30301             SIGH(NCHN)=FACQQG
30302           ENDIF
30303  
30304         ELSEIF(ISUB.EQ.89) THEN
30305 C...g + g -> chi_2c + g
30306           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
30307           QGTW=(SH*TH*UH)/SH**3
30308           RGTW=SQM3/SH
30309           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
30310      &    (12D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
30311      &    3D0*RGTW*PGTW**3*QGTW*(8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)+
30312      &    2D0*PGTW**2*QGTW**2*(-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)+
30313      &    RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)+12D0*RGTW**2*
30314      &    QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
30315           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30316             NCHN=NCHN+1
30317             ISIG(NCHN,1)=21
30318             ISIG(NCHN,2)=21
30319             ISIG(NCHN,3)=1
30320             SIGH(NCHN)=FACQQG
30321           ENDIF
30322         ENDIF
30323  
30324       ELSEIF(ISUB.LE.200) THEN
30325         IF(ISUB.EQ.104) THEN
30326 C...g + g -> chi_c0.
30327           KC=PYCOMP(10441)
30328           FACBW=COMFAC*12D0*AS**2*PARP(39)*PMAS(KC,2)/
30329      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
30330           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
30331           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30332             NCHN=NCHN+1
30333             ISIG(NCHN,1)=21
30334             ISIG(NCHN,2)=21
30335             ISIG(NCHN,3)=1
30336             SIGH(NCHN)=FACBW
30337           ENDIF
30338  
30339         ELSEIF(ISUB.EQ.105) THEN
30340 C...g + g -> chi_c2.
30341           KC=PYCOMP(445)
30342           FACBW=COMFAC*16D0*AS**2*PARP(39)*PMAS(KC,2)/
30343      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
30344           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
30345           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30346             NCHN=NCHN+1
30347             ISIG(NCHN,1)=21
30348             ISIG(NCHN,2)=21
30349             ISIG(NCHN,3)=1
30350             SIGH(NCHN)=FACBW
30351           ENDIF
30352  
30353         ELSEIF(ISUB.EQ.106) THEN
30354 C...g + g -> J/Psi + gamma.
30355           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
30356           FACQQG=COMFAC*AEM*EQ**2*AS**2*(4D0/3D0)*PARP(38)*SQRT(SQM3)*
30357      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
30358      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
30359           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30360             NCHN=NCHN+1
30361             ISIG(NCHN,1)=21
30362             ISIG(NCHN,2)=21
30363             ISIG(NCHN,3)=1
30364             SIGH(NCHN)=FACQQG
30365           ENDIF
30366  
30367         ELSEIF(ISUB.EQ.107) THEN
30368 C...g + gamma -> J/Psi + g.
30369           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
30370           FACQQG=COMFAC*AEM*EQ**2*AS**2*(32D0/3D0)*PARP(38)*SQRT(SQM3)*
30371      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
30372      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
30373           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30374             NCHN=NCHN+1
30375             ISIG(NCHN,1)=21
30376             ISIG(NCHN,2)=22
30377             ISIG(NCHN,3)=1
30378             SIGH(NCHN)=FACQQG
30379           ENDIF
30380           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
30381             NCHN=NCHN+1
30382             ISIG(NCHN,1)=22
30383             ISIG(NCHN,2)=21
30384             ISIG(NCHN,3)=1
30385             SIGH(NCHN)=FACQQG
30386           ENDIF
30387  
30388         ELSEIF(ISUB.EQ.108) THEN
30389 C...gamma + gamma -> J/Psi + gamma.
30390           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
30391           FACQQG=COMFAC*AEM**3*EQ**6*384D0*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,22)*KFAC(2,22).NE.0) THEN
30395             NCHN=NCHN+1
30396             ISIG(NCHN,1)=22
30397             ISIG(NCHN,2)=22
30398             ISIG(NCHN,3)=1
30399             SIGH(NCHN)=FACQQG
30400           ENDIF
30401         ENDIF
30402  
30403 C...QUARKONIA+++
30404 C...Additional code by Stefan Wolf
30405       ELSE
30406  
30407 C...Common code for quarkonium production.
30408         SHTH=SH+TH
30409         THUH=TH+UH
30410         UHSH=UH+SH
30411         SHTH2=SHTH**2
30412         THUH2=THUH**2
30413         UHSH2=UHSH**2
30414         IF ( (ISUB.GE.421.AND.ISUB.LE.424).OR.
30415      &       (ISUB.GE.431.AND.ISUB.LE.433)) THEN
30416           SQMQQ=SQM3
30417         ELSEIF((ISUB.GE.425.AND.ISUB.LE.430).OR.
30418      &         (ISUB.GE.434.AND.ISUB.LE.439)) THEN
30419           SQMQQ=SQM4
30420         ENDIF
30421         SQMQQR=SQRT(SQMQQ)
30422         IF(MSTP(145).EQ.1) THEN
30423            IF ( (ISUB.GE.421.AND.ISUB.LE.427).OR.
30424      &          (ISUB.GE.431.AND.ISUB.LE.436)) THEN
30425               AQ=UHSH/(2D0*X(1)) + SHTH/(2D0*X(2))
30426               BQ=UHSH/(2D0*X(1)) - SHTH/(2D0*X(2))
30427               ATILK1=X(1)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*AQ
30428               ATILK2=X(2)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*AQ
30429               BTILK1=-X(1)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*BQ
30430               BTILK2=X(2)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*BQ
30431            ELSEIF( (ISUB.GE.428.AND.ISUB.LE.430).OR.
30432      &             ISUB.GE.437) THEN
30433               AQ=SHTH/(2D0*X(1)) + UHSH/(2D0*X(2))
30434               BQ=SHTH/(2D0*X(1)) - UHSH/(2D0*X(2))
30435               ATILK1=X(1)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*AQ
30436               ATILK2=X(2)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*AQ
30437               BTILK1=-X(1)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*BQ
30438               BTILK2=X(2)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*BQ
30439            ENDIF
30440            AQ2=AQ**2
30441            BQ2=BQ**2
30442            SMQQ2=SQMQQ*VINT(2)
30443 C...Polarisation frames
30444            IF(MSTP(146).EQ.1) THEN
30445 C...Recoil frame
30446               POLH1=SQRT(AQ2-SMQQ2)
30447               POLH2=SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
30448               AZ=-SQMQQR/POLH1
30449               BZ=0D0
30450               AX=AQ*BQ/(POLH1*POLH2)
30451               BX=-POLH1/POLH2
30452            ELSEIF(MSTP(146).EQ.2) THEN
30453 C...Gottfried Jackson frame
30454               POLH1=AQ+BQ
30455               POLH2=POLH1*SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
30456               AZ=SQMQQR/POLH1
30457               BZ=AZ
30458               AX=-(BQ2+AQ*BQ+SMQQ2)/POLH2
30459               BX=(AQ2+AQ*BQ-SMQQ2)/POLH2
30460            ELSEIF(MSTP(146).EQ.3) THEN
30461 C...Target frame
30462               POLH1=AQ-BQ
30463               POLH2=POLH1*SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
30464               AZ=-SQMQQR/POLH1
30465               BZ=-AZ
30466               AX=-(BQ2-AQ*BQ+SMQQ2)/POLH2
30467               BX=-(AQ2-AQ*BQ-SMQQ2)/POLH2
30468            ELSEIF(MSTP(146).EQ.4) THEN
30469 C...Collins Soper frame
30470               POLH1=AQ2-BQ2
30471               POLH2=SQRT(VINT(2)*POLH1)
30472               AZ=-BQ/POLH2
30473               BZ=AQ/POLH2
30474               AX=-SQMQQR*AQ/SQRT(POLH1*(POLH1-SMQQ2))
30475               BX=SQMQQR*BQ/SQRT(POLH1*(POLH1-SMQQ2))
30476            ENDIF
30477 C...Contract EL1(lam) EL2(lam') with K1 and K2 (initial parton momenta)
30478            EL1K10=AZ*ATILK1+BZ*BTILK1
30479            EL1K20=AZ*ATILK2+BZ*BTILK2
30480            EL2K10=EL1K10
30481            EL2K20=EL1K20
30482            EL1K11=1D0/SQRT(2D0)*(AX*ATILK1+BX*BTILK1)
30483            EL1K21=1D0/SQRT(2D0)*(AX*ATILK2+BX*BTILK2)
30484            EL2K11=EL1K11
30485            EL2K21=EL1K21
30486         ENDIF
30487  
30488         IF(ISUB.EQ.421) THEN
30489 C...g + g -> QQ~[3S11] + g
30490           IF(MSTP(145).EQ.0) THEN
30491 *            FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
30492 *     &            (SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/(SHTH2*THUH2*UHSH2)
30493             FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
30494      &            (SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/SHTH2/THUH2/UHSH2
30495 *            FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
30496 *     &           (SH2/(SHTH2*UHSH2)+TH2/(SHTH2*THUH2)+UH2/(THUH2*UHSH2))
30497           ELSE
30498             FF=-PARU(1)*AS**3*(10D0/81D0)*SQMQQR/THUH2/SHTH2/UHSH2
30499             AA=(SHTH2*UH2+UHSH2*TH2+THUH2*SH2)/2D0
30500             BB=2D0*(SH2+TH2)
30501             CC=2D0*(SH2+UH2)
30502             DD=2D0*SH2
30503             IF(MSTP(147).EQ.0) THEN
30504                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30505      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30506             ELSEIF(MSTP(147).EQ.1) THEN
30507                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30508      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30509             ELSEIF(MSTP(147).EQ.3) THEN
30510                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30511      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30512             ELSEIF(MSTP(147).EQ.4) THEN
30513                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30514      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30515             ELSEIF(MSTP(147).EQ.5) THEN
30516                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30517      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30518             ELSEIF(MSTP(147).EQ.6) THEN
30519                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30520      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30521             ENDIF
30522             FACQQG=COMFAC*FF*FACQQG
30523           ENDIF
30524           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30525             NCHN=NCHN+1
30526             ISIG(NCHN,1)=21
30527             ISIG(NCHN,2)=21
30528             ISIG(NCHN,3)=1
30529             SIGH(NCHN)=FACQQG*PARP(IONIUM+1)
30530           ENDIF
30531  
30532         ELSEIF(ISUB.EQ.422) THEN
30533 C...g + g -> QQ~[3S18] + g
30534           IF(MSTP(145).EQ.0) THEN
30535             FACQQG=-COMFAC*PARU(1)*AS**3*(1D0/72D0)*
30536      &            (16D0*SQMQQ**2-27D0*(SHTH2+THUH2+UHSH2))/
30537      &            (SQMQQ*SQMQQR)*
30538      &            ((SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/SHTH2/THUH2/UHSH2)
30539           ELSE
30540             FF=PARU(1)*AS**3*(16D0*SQMQQ**2-27D0*(SHTH2+THUH2+UHSH2))/
30541      &            (72D0*SQMQQ*SQMQQR*SHTH2*THUH2*UHSH2)
30542             AA=(SHTH2*UH2+UHSH2*TH2+THUH2*SH2)/2D0
30543             BB=2D0*(SH2+TH2)
30544             CC=2D0*(SH2+UH2)
30545             DD=2D0*SH2
30546             IF(MSTP(147).EQ.0) THEN
30547                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30548      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30549             ELSEIF(MSTP(147).EQ.1) THEN
30550                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30551      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30552             ELSEIF(MSTP(147).EQ.3) THEN
30553                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30554      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30555             ELSEIF(MSTP(147).EQ.4) THEN
30556                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30557      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30558             ELSEIF(MSTP(147).EQ.5) THEN
30559                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30560      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30561             ELSEIF(MSTP(147).EQ.6) THEN
30562                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30563      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30564             ENDIF
30565             FACQQG=COMFAC*FF*FACQQG
30566           ENDIF
30567 C...Split total contribution into different colour flows just like
30568 C...in g g -> g g (recalculate kinematics for massless partons).
30569           THP=-0.5D0*SH*(1D0-CTH)
30570           UHP=-0.5D0*SH*(1D0+CTH)
30571           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
30572           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
30573           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
30574           FACGGS=FACGG1+FACGG2+FACGG3
30575           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30576              NCHN=NCHN+1
30577              ISIG(NCHN,1)=21
30578              ISIG(NCHN,2)=21
30579              ISIG(NCHN,3)=1
30580              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG1/FACGGS
30581              NCHN=NCHN+1
30582              ISIG(NCHN,1)=21
30583              ISIG(NCHN,2)=21
30584              ISIG(NCHN,3)=2
30585              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG2/FACGGS
30586              NCHN=NCHN+1
30587              ISIG(NCHN,1)=21
30588              ISIG(NCHN,2)=21
30589              ISIG(NCHN,3)=3
30590              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG3/FACGGS
30591           ENDIF
30592  
30593         ELSEIF(ISUB.EQ.423) THEN
30594 C...g + g -> QQ~[1S08] + g
30595           IF(MSTP(145).EQ.0) THEN
30596 *            FACQQG=COMFAC*PARU(1)*AS**3*(5D0/16D0)*
30597 *     &           (SHTH2*UH2+THUH2*SH2+UHSH2*TH2)/(SQMQQR*SH*TH*UH)*
30598 *     &           (12D0*SQMQQ*SH*TH*UH+SHTH2**2+THUH2**2+UHSH2**2)/
30599 *     &           (SHTH2*THUH2*UHSH2)
30600             FACQQG=COMFAC*PARU(1)*AS**3*(5D0/16D0)*SQMQQR*
30601      &            (UH2/(THUH2*UHSH2)+SH2/(SHTH2*UHSH2)+
30602      &            TH2/(SHTH2*THUH2))*
30603      &            (12D0+(SHTH2**2+THUH2**2+UHSH2**2)/(SQMQQ*SH*TH*UH))
30604           ELSE
30605             FA=PARU(1)*AS**3*(5D0/48D0)*SQMQQR*
30606      &            (UH2/(THUH2*UHSH2)+SH2/(SHTH2*UHSH2)+
30607      &            TH2/(SHTH2*THUH2))*
30608      &            (12D0+(SHTH2**2+THUH2**2+UHSH2**2)/(SQMQQ*SH*TH*UH))
30609             IF(MSTP(147).EQ.0) THEN
30610                FACQQG=COMFAC*FA
30611             ELSEIF(MSTP(147).EQ.1) THEN
30612                FACQQG=COMFAC*2D0*FA
30613             ELSEIF(MSTP(147).EQ.3) THEN
30614                FACQQG=COMFAC*FA
30615             ELSEIF(MSTP(147).EQ.4) THEN
30616                FACQQG=COMFAC*FA
30617             ELSEIF(MSTP(147).EQ.5) THEN
30618                FACQQG=0D0
30619             ELSEIF(MSTP(147).EQ.6) THEN
30620                FACQQG=0D0
30621             ENDIF
30622           ENDIF
30623 C...Split total contribution into different colour flows just like
30624 C...in g g -> g g (recalculate kinematics for massless partons).
30625           THP=-0.5D0*SH*(1D0-CTH)
30626           UHP=-0.5D0*SH*(1D0+CTH)
30627           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
30628           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
30629           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
30630           FACGGS=FACGG1+FACGG2+FACGG3
30631           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30632              NCHN=NCHN+1
30633              ISIG(NCHN,1)=21
30634              ISIG(NCHN,2)=21
30635              ISIG(NCHN,3)=1
30636              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG1/FACGGS
30637              NCHN=NCHN+1
30638              ISIG(NCHN,1)=21
30639              ISIG(NCHN,2)=21
30640              ISIG(NCHN,3)=2
30641              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG2/FACGGS
30642              NCHN=NCHN+1
30643              ISIG(NCHN,1)=21
30644              ISIG(NCHN,2)=21
30645              ISIG(NCHN,3)=3
30646              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG3/FACGGS
30647           ENDIF
30648  
30649         ELSEIF(ISUB.EQ.424) THEN
30650 C...g + g -> QQ~[3PJ8] + g
30651           POLY=SH2+SH*TH+TH2
30652           IF(MSTP(145).EQ.0) THEN
30653             FACQQG=COMFAC*5D0*PARU(1)*AS**3*(3D0*SH*TH*SHTH*POLY**4
30654      &            -SQMQQ*POLY**2*(7D0*SH**6+36D0*SH**5*TH+45D0*SH**4*TH2
30655      &            +28D0*SH**3*TH**3+45D0*SH2*TH**4+36D0*SH*TH**5
30656      &            +7D0*TH**6)
30657      &            +SQMQQ**2*SHTH*(35D0*SH**8+169D0*SH**7*TH
30658      &            +299D0*SH**6*TH2+401D0*SH**5*TH**3+418D0*SH**4*TH**4
30659      &            +401D0*SH**3*TH**5+299D0*SH2*TH**6+169D0*SH*TH**7
30660      &            +35D0*TH**8)
30661      &            -SQMQQ**3*(84D0*SH**8+432D0*SH**7*TH+905D0*SH**6*TH2
30662      &            +1287D0*SH**5*TH**3+1436D0*SH**4*TH**4
30663      &            +1287D0*SH**3*TH**5+905D0*SH2*TH**6+432D0*SH*TH**7
30664      &            +84D0*TH**8)
30665      &            +SQMQQ**4*SHTH*(126D0*SH**6+451D0*SH**5*TH
30666      &            +677D0*SH**4*TH2+836D0*SH**3*TH**3+677D0*SH2*TH**4
30667      &            +451D0*SH*TH**5+126D0*TH**6)
30668      &            -3D0*SQMQQ**5*(42D0*SH**6+171D0*SH**5*TH
30669      &            +304D0*SH**4*TH2+362D0*SH**3*TH**3+304D0*SH2*TH**4
30670      &            +171D0*SH*TH**5+42D0*TH**6)
30671      &            +2D0*SQMQQ**6*SHTH*(42D0*SH**4+106D0*SH**3*TH
30672      &            +119D0*SH2*TH2+106D0*SH*TH**3+42D0*TH**4)
30673      &            -SQMQQ**7*(35D0*SH**4+99D0*SH**3*TH+120D0*SH2*TH2
30674      &            +99D0*SH*TH**3+35D0*TH**4)
30675      &            +7D0*SQMQQ**8*SHTH*POLY)/
30676      &            (SH*TH*UH*SQMQQR*SQMQQ*
30677      &            SHTH*SHTH2*THUH*THUH2*UHSH*UHSH2)
30678           ELSE
30679             FF=-5D0*PARU(1)*AS**3/(SH2*TH2*UH2
30680      &            *SQMQQR*SQMQQ*SHTH*SHTH2*THUH*THUH2*UHSH*UHSH2)
30681             AA=SH*TH*UH*(SH*TH*SHTH*POLY**4
30682      &           -SQMQQ*SHTH2*POLY**2*
30683      &           (SH**4+6D0*SH**3*TH-6D0*SH2*TH2+6D0*SH*TH**3+TH**4)
30684      &           +SQMQQ**2*SHTH*(5D0*SH**8+35D0*SH**7*TH+49D0*SH**6*TH2
30685      &           +57D0*SH**5*TH**3+46D0*SH**4*TH**4+57D0*SH**3*TH**5
30686      &           +49D0*SH2*TH**6+35D0*SH*TH**7+5D0*TH**8)
30687      &           -SQMQQ**3*(16D0*SH**8+104D0*SH**7*TH+215D0*SH**6*TH2
30688      &           +291D0*SH**5*TH**3+316D0*SH**4*TH**4+291D0*SH**3*TH**5
30689      &           +215D0*SH2*TH**6+104D0*SH*TH**7+16D0*TH**8)
30690      &           +SQMQQ**4*SHTH*(34D0*SH**6+145D0*SH**5*TH
30691      &           +211D0*SH**4*TH2+262D0*SH**3*TH**3+211D0*SH2*TH**4
30692      &           +145D0*SH*TH**5+34D0*TH**6)
30693      &           -SQMQQ**5*(44D0*SH**6+193D0*SH**5*TH+346D0*SH**4*TH2
30694      &           +410D0*SH**3*TH**3+346D0*SH2*TH**4+193D0*SH*TH**5
30695      &           +44D0*TH**6)
30696      &           +2D0*SQMQQ**6*SHTH*(17D0*SH**4+45D0*SH**3*TH
30697      &           +49D0*SH2*TH2+45D0*SH*TH**3+17D0*TH**4)
30698      &           -SQMQQ**7*(3D0*SH2+2D0*SH*TH+3D0*TH2)
30699      &           *(5D0*SH2+11D0*SH*TH+5D0*TH2)
30700      &           +3D0*SQMQQ**8*SHTH*POLY)
30701             BB=4D0*SHTH2*POLY**3
30702      &           *(SH**4+SH**3*TH-SH2*TH2+SH*TH**3+TH**4)
30703      &           -SQMQQ*SHTH*(20D0*SH**10+84D0*SH**9*TH+166D0*SH**8*TH2
30704      &           +231D0*SH**7*TH**3+250D0*SH**6*TH**4+250D0*SH**5*TH**5
30705      &           +250D0*SH**4*TH**6+231D0*SH**3*TH**7+166D0*SH2*TH**8
30706      &           +84D0*SH*TH**9+20D0*TH**10)
30707      &           +SQMQQ**2*SHTH2*(40D0*SH**8+86D0*SH**7*TH
30708      &           +66D0*SH**6*TH2+67D0*SH**5*TH**3+6D0*SH**4*TH**4
30709      &           +67D0*SH**3*TH**5+66D0*SH2*TH**6+86D0*SH*TH**7
30710      &           +40D0*TH**8)
30711      &           -SQMQQ**3*SHTH*(40D0*SH**8+57D0*SH**7*TH
30712      &           -110D0*SH**6*TH2-263D0*SH**5*TH**3-384D0*SH**4*TH**4
30713      &           -263D0*SH**3*TH**5-110D0*SH2*TH**6+57D0*SH*TH**7
30714      &           +40D0*TH**8)
30715      &           +SQMQQ**4*(20D0*SH**8-33D0*SH**7*TH-368D0*SH**6*TH2
30716      &           -751D0*SH**5*TH**3-920D0*SH**4*TH**4-751D0*SH**3*TH**5
30717      &           -368D0*SH2*TH**6-33D0*SH*TH**7+20D0*TH**8)
30718      &           -SQMQQ**5*SHTH*(4D0*SH**6-81D0*SH**5*TH-242D0*SH**4*TH2
30719      &           -250D0*SH**3*TH**3-242D0*SH2*TH**4-81D0*SH*TH**5
30720      &           +4D0*TH**6)
30721      &           -SQMQQ**6*SH*TH*(41D0*SH**4+120D0*SH**3*TH
30722      &           +142D0*SH2*TH2+120D0*SH*TH**3+41D0*TH**4)
30723      &           +8D0*SQMQQ**7*SH*TH*SHTH*POLY
30724             CC=4D0*TH2*POLY**3
30725      &           *(-SH**4-2D0*SH**3*TH+2D0*SH2*TH2+3D0*SH*TH**3+TH**4)
30726      &           -SQMQQ*TH2*(-20D0*SH**9-56D0*SH**8*TH-24D0*SH**7*TH2
30727      &           +147D0*SH**6*TH**3+409D0*SH**5*TH**4+599D0*SH**4*TH**5
30728      &           +571D0*SH**3*TH**6+370D0*SH2*TH**7+148D0*SH*TH**8
30729      &           +28D0*TH**9)
30730      &           +SQMQQ**2*(4D0*SH**10+20D0*SH**9*TH-16D0*SH**8*TH2
30731      &           -48D0*SH**7*TH**3+150D0*SH**6*TH**4+611D0*SH**5*TH**5
30732      &           +1060D0*SH**4*TH**6+1155D0*SH**3*TH**7+854D0*SH2*TH**8
30733      &           +394D0*SH*TH**9+84D0*TH**10)
30734      &           -SQMQQ**3*SHTH*(20D0*SH**8+68D0*SH**7*TH-20D0*SH**6*TH2
30735      &           +32D0*SH**5*TH**3+286D0*SH**4*TH**4+577D0*SH**3*TH**5
30736      &           +618D0*SH2*TH**6+443D0*SH*TH**7+140D0*TH**8)
30737      &           +SQMQQ**4*(40D0*SH**8+152D0*SH**7*TH+94D0*SH**6*TH2
30738      &           +38D0*SH**5*TH**3+290D0*SH**4*TH**4+631D0*SH**3*TH**5
30739      &           +738D0*SH2*TH**6+513D0*SH*TH**7+140D0*TH**8)
30740      &           -SQMQQ**5*(40D0*SH**7+129D0*SH**6*TH+53D0*SH**5*TH2
30741      &           +7D0*SH**4*TH**3+129D0*SH**3*TH**4+264D0*SH2*TH**5
30742      &           +266D0*SH*TH**6+84D0*TH**7)
30743      &           +SQMQQ**6*(20D0*SH**6+55D0*SH**5*TH+2D0*SH**4*TH2
30744      &           -15D0*SH**3*TH**3+30D0*SH2*TH**4+76D0*SH*TH**5
30745      &           +28D0*TH**6)
30746      &           -SQMQQ**7*SHTH*(4D0*SH**4+7D0*SH**3*TH-14D0*SH2*TH2
30747      &           +7D0*SH*TH**3+4*TH**4)
30748      &           +SQMQQ**8*SH*(SH-TH)**2*TH
30749             DD=2D0*TH2*SHTH2*POLY**3
30750      &           *(-SH2+2*SH*TH+2*TH2)
30751      &           +SQMQQ*(4D0*SH**11+22D0*SH**10*TH+70D0*SH**9*TH2
30752      &           +115D0*SH**8*TH**3+71D0*SH**7*TH**4-119D0*SH**6*TH**5
30753      &           -381D0*SH**5*TH**6-552D0*SH**4*TH**7-512D0*SH**3*TH**8
30754      &           -320D0*SH2*TH**9-126D0*SH*TH**10-24D0*TH**11)
30755      &           -SQMQQ**2*SHTH*(20D0*SH**9+84D0*SH**8*TH
30756      &           +212D0*SH**7*TH2+247D0*SH**6*TH**3+105D0*SH**5*TH**4
30757      &           -178D0*SH**4*TH**5-380D0*SH**3*TH**6-364D0*SH2*TH**7
30758      &           -210D0*SH*TH**8-60D0*TH**9)
30759      &           +SQMQQ**3*SHTH*(40D0*SH**8+159D0*SH**7*TH
30760      &           +374D0*SH**6*TH2+404D0*SH**5*TH**3+192D0*SH**4*TH**4
30761      &           -141D0*SH**3*TH**5-264D0*SH2*TH**6-216D0*SH*TH**7
30762      &           -80D0*TH**8)
30763      &           -SQMQQ**4*(40D0*SH**8+197D0*SH**7*TH+506D0*SH**6*TH2
30764      &           +672D0*SH**5*TH**3+460D0*SH**4*TH**4+79D0*SH**3*TH**5
30765      &           -138D0*SH2*TH**6-164D0*SH*TH**7-60D0*TH**8)
30766      &           +SQMQQ**5*(20D0*SH**7+107D0*SH**6*TH+267D0*SH**5*TH2
30767      &           +307D0*SH**4*TH**3+185D0*SH**3*TH**4+56D0*SH2*TH**5
30768      &           -30D0*SH*TH**6-24D0*TH**7)
30769      &           -SQMQQ**6*(4D0*SH**6+31D0*SH**5*TH+74D0*SH**4*TH2
30770      &           +71D0*SH**3*TH**3+46D0*SH2*TH**4+10D0*SH*TH**5
30771      &           -4D0*TH**6)
30772      &           +4D0*SQMQQ**7*SH*TH*SHTH*POLY
30773             IF(MSTP(147).EQ.0) THEN
30774                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30775      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30776             ELSEIF(MSTP(147).EQ.1) THEN
30777                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30778      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30779             ELSEIF(MSTP(147).EQ.3) THEN
30780                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30781      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30782             ELSEIF(MSTP(147).EQ.4) THEN
30783                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30784      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30785             ELSEIF(MSTP(147).EQ.5) THEN
30786                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30787      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30788             ELSEIF(MSTP(147).EQ.6) THEN
30789                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30790      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30791             ENDIF
30792             FACQQG=COMFAC*FF*FACQQG
30793           ENDIF
30794 C...Split total contribution into different colour flows just like
30795 C...in g g -> g g (recalculate kinematics for massless partons).
30796           THP=-0.5D0*SH*(1D0-CTH)
30797           UHP=-0.5D0*SH*(1D0+CTH)
30798           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
30799           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
30800           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
30801           FACGGS=FACGG1+FACGG2+FACGG3
30802           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30803              NCHN=NCHN+1
30804              ISIG(NCHN,1)=21
30805              ISIG(NCHN,2)=21
30806              ISIG(NCHN,3)=1
30807              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG1/FACGGS
30808              NCHN=NCHN+1
30809              ISIG(NCHN,1)=21
30810              ISIG(NCHN,2)=21
30811              ISIG(NCHN,3)=2
30812              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG2/FACGGS
30813              NCHN=NCHN+1
30814              ISIG(NCHN,1)=21
30815              ISIG(NCHN,2)=21
30816              ISIG(NCHN,3)=3
30817              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG3/FACGGS
30818           ENDIF
30819  
30820         ELSEIF(ISUB.EQ.425) THEN
30821 C...q + g -> q + QQ~[3S18]
30822           IF(MSTP(145).EQ.0) THEN
30823             FACQQG=-COMFAC*PARU(1)*AS**3*(1D0/27D0)*
30824      &            (4D0*(SH2+UH2)-SH*UH)*(SHTH2+THUH2)/
30825      &            (SQMQQ*SQMQQR*SH*UH*UHSH2)
30826           ELSE
30827             FF=PARU(1)*AS**3*(4D0*(SH2+UH2)-SH*UH)/
30828      &            (54D0*SQMQQ*SQMQQR*SH*UH*UHSH2)
30829             AA=SHTH2+THUH2
30830             BB=4D0
30831             CC=8D0
30832             DD=4D0
30833             IF(MSTP(147).EQ.0) THEN
30834                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30835      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30836             ELSEIF(MSTP(147).EQ.1) THEN
30837                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30838      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30839             ELSEIF(MSTP(147).EQ.3) THEN
30840                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30841      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30842             ELSEIF(MSTP(147).EQ.4) THEN
30843                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30844      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30845             ELSEIF(MSTP(147).EQ.5) THEN
30846                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30847      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30848             ELSEIF(MSTP(147).EQ.6) THEN
30849                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30850      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30851             ENDIF
30852             FACQQG=COMFAC*FF*FACQQG
30853           ENDIF
30854 C...Split total contribution into different colour flows just like
30855 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
30856 C...(recalculate kinematics for massless partons).
30857           THP=-0.5D0*SH*(1D0-CTH)
30858           UHP=-0.5D0*SH*(1D0+CTH)
30859           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
30860           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
30861           FACQGS=FACQG1+FACQG2
30862           DO 2442 I=MMINA,MMAXA
30863             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2442
30864             DO 2441 ISDE=1,2
30865               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2441
30866               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2441
30867               NCHN=NCHN+1
30868               ISIG(NCHN,ISDE)=I
30869               ISIG(NCHN,3-ISDE)=21
30870               ISIG(NCHN,3)=1
30871               SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACQG1/FACQGS
30872               NCHN=NCHN+1
30873               ISIG(NCHN,ISDE)=I
30874               ISIG(NCHN,3-ISDE)=21
30875               ISIG(NCHN,3)=2
30876               SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACQG2/FACQGS
30877  2441       CONTINUE
30878  2442     CONTINUE
30879  
30880         ELSEIF(ISUB.EQ.426) THEN
30881 C...q + g -> q + QQ~[1S08]
30882           IF(MSTP(145).EQ.0) THEN
30883             FACQQG=-COMFAC*PARU(1)*AS**3*(5D0/18D0)*
30884      &            (SH2+UH2)/(SQMQQR*TH*UHSH2)
30885           ELSE
30886             FA=-PARU(1)*AS**3*(5D0/54D0)*(SH2+UH2)/(SQMQQR*TH*UHSH2)
30887             IF(MSTP(147).EQ.0) THEN
30888                FACQQG=COMFAC*FA
30889             ELSEIF(MSTP(147).EQ.1) THEN
30890                FACQQG=COMFAC*2D0*FA
30891             ELSEIF(MSTP(147).EQ.3) THEN
30892                FACQQG=COMFAC*FA
30893             ELSEIF(MSTP(147).EQ.4) THEN
30894                FACQQG=COMFAC*FA
30895             ELSEIF(MSTP(147).EQ.5) THEN
30896                FACQQG=0D0
30897             ELSEIF(MSTP(147).EQ.6) THEN
30898                FACQQG=0D0
30899             ENDIF
30900           ENDIF
30901 C...Split total contribution into different colour flows just like
30902 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
30903 C...(recalculate kinematics for massless partons).
30904           THP=-0.5D0*SH*(1D0-CTH)
30905           UHP=-0.5D0*SH*(1D0+CTH)
30906           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
30907           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
30908           FACQGS=FACQG1+FACQG2
30909           DO 2444 I=MMINA,MMAXA
30910             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2444
30911             DO 2443 ISDE=1,2
30912               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2443
30913               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2443
30914               NCHN=NCHN+1
30915               ISIG(NCHN,ISDE)=I
30916               ISIG(NCHN,3-ISDE)=21
30917               ISIG(NCHN,3)=1
30918               SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACQG1/FACQGS
30919               NCHN=NCHN+1
30920               ISIG(NCHN,ISDE)=I
30921               ISIG(NCHN,3-ISDE)=21
30922               ISIG(NCHN,3)=2
30923               SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACQG2/FACQGS
30924  2443       CONTINUE
30925  2444     CONTINUE
30926  
30927         ELSEIF(ISUB.EQ.427) THEN
30928 C...q + g -> q + QQ~[3PJ8]
30929           IF(MSTP(145).EQ.0) THEN
30930             FACQQG=-COMFAC*PARU(1)*AS**3*(10D0/9D0)*
30931      &            ((7D0*UHSH+8D0*TH)*(SH2+UH2)
30932      &            +4D0*TH*(2D0*SQMQQ**2-SHTH2-THUH2))/
30933      &            (SQMQQ*SQMQQR*TH*UHSH2*UHSH)
30934           ELSE
30935             FF=10D0*PARU(1)*AS**3/
30936      &            (9D0*SQMQQ*SQMQQR*TH2*UHSH2*UHSH)
30937             AA=TH*UHSH*(2D0*SQMQQ**2+SHTH2+THUH2)
30938             BB=8D0*(SHTH2+TH*UH)
30939             CC=8D0*UHSH*(SHTH+THUH)
30940             DD=4D0*(2D0*SQMQQ*SH+TH*UHSH)
30941             IF(MSTP(147).EQ.0) THEN
30942                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30943      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30944             ELSEIF(MSTP(147).EQ.1) THEN
30945                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30946      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30947             ELSEIF(MSTP(147).EQ.3) THEN
30948                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30949      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30950             ELSEIF(MSTP(147).EQ.4) THEN
30951                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30952      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30953             ELSEIF(MSTP(147).EQ.5) THEN
30954                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30955      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30956             ELSEIF(MSTP(147).EQ.6) THEN
30957                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30958      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30959             ENDIF
30960             FACQQG=COMFAC*FF*FACQQG
30961           ENDIF
30962 C...Split total contribution into different colour flows just like
30963 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
30964 C...(recalculate kinematics for massless partons).
30965           THP=-0.5D0*SH*(1D0-CTH)
30966           UHP=-0.5D0*SH*(1D0+CTH)
30967           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
30968           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
30969           FACQGS=FACQG1+FACQG2
30970           DO 2446 I=MMINA,MMAXA
30971             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2446
30972             DO 2445 ISDE=1,2
30973               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2445
30974               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2445
30975               NCHN=NCHN+1
30976               ISIG(NCHN,ISDE)=I
30977               ISIG(NCHN,3-ISDE)=21
30978               ISIG(NCHN,3)=1
30979               SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACQG1/FACQGS
30980               NCHN=NCHN+1
30981               ISIG(NCHN,ISDE)=I
30982               ISIG(NCHN,3-ISDE)=21
30983               ISIG(NCHN,3)=2
30984               SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACQG2/FACQGS
30985  2445       CONTINUE
30986  2446     CONTINUE
30987  
30988         ELSEIF(ISUB.EQ.428) THEN
30989 C...q + q~ -> g + QQ~[3S18]
30990           IF(MSTP(145).EQ.0) THEN
30991             FACQQG=COMFAC*PARU(1)*AS**3*(8D0/81D0)*
30992      &            (4D0*(TH2+UH2)-TH*UH)*(SHTH2+UHSH2)/
30993      &            (SQMQQ*SQMQQR*TH*UH*THUH2)
30994           ELSE
30995             FF=-4D0*PARU(1)*AS**3*(4D0*(TH2+UH2)-TH*UH)/
30996      &            (81D0*SQMQQ*SQMQQR*TH*UH*THUH2)
30997             AA=SHTH2+UHSH2
30998             BB=4D0
30999             CC=4D0
31000             DD=0D0
31001             IF(MSTP(147).EQ.0) THEN
31002                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31003      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31004             ELSEIF(MSTP(147).EQ.1) THEN
31005                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31006      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31007             ELSEIF(MSTP(147).EQ.3) THEN
31008                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31009      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31010             ELSEIF(MSTP(147).EQ.4) THEN
31011                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31012      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31013             ELSEIF(MSTP(147).EQ.5) THEN
31014                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31015      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31016             ELSEIF(MSTP(147).EQ.6) THEN
31017                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31018      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31019             ENDIF
31020             FACQQG=COMFAC*FF*FACQQG
31021           ENDIF
31022 C...Split total contribution into different colour flows just like
31023 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31024 C...(recalculate kinematics for massless partons).
31025           THP=-0.5D0*SH*(1D0-CTH)
31026           UHP=-0.5D0*SH*(1D0+CTH)
31027           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31028           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31029           FACGGS=FACGG1+FACGG2
31030           DO 2447 I=MMINA,MMAXA
31031             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31032      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2447
31033             NCHN=NCHN+1
31034             ISIG(NCHN,1)=I
31035             ISIG(NCHN,2)=-I
31036             ISIG(NCHN,3)=1
31037             SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG1/FACGGS
31038             NCHN=NCHN+1
31039             ISIG(NCHN,1)=I
31040             ISIG(NCHN,2)=-I
31041             ISIG(NCHN,3)=2
31042             SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG2/FACGGS
31043  2447     CONTINUE
31044  
31045         ELSEIF(ISUB.EQ.429) THEN
31046 C...q + q~ -> g + QQ~[1S08]
31047           IF(MSTP(145).EQ.0) THEN
31048             FACQQG=COMFAC*PARU(1)*AS**3*(20D0/27D0)*
31049      &            (TH2+UH2)/(SQMQQR*SH*THUH2)
31050           ELSE
31051             FA=PARU(1)*AS**3*(20D0/81D0)*(TH2+UH2)/(SQMQQR*SH*THUH2)
31052             IF(MSTP(147).EQ.0) THEN
31053                FACQQG=COMFAC*FA
31054             ELSEIF(MSTP(147).EQ.1) THEN
31055                FACQQG=COMFAC*2D0*FA
31056             ELSEIF(MSTP(147).EQ.3) THEN
31057                FACQQG=COMFAC*FA
31058             ELSEIF(MSTP(147).EQ.4) THEN
31059                FACQQG=COMFAC*FA
31060             ELSEIF(MSTP(147).EQ.5) THEN
31061                FACQQG=0D0
31062             ELSEIF(MSTP(147).EQ.6) THEN
31063                FACQQG=0D0
31064             ENDIF
31065           ENDIF
31066 C...Split total contribution into different colour flows just like
31067 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31068 C...(recalculate kinematics for massless partons).
31069           THP=-0.5D0*SH*(1D0-CTH)
31070           UHP=-0.5D0*SH*(1D0+CTH)
31071           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31072           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31073           FACGGS=FACGG1+FACGG2
31074           DO 2448 I=MMINA,MMAXA
31075             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31076      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2448
31077             NCHN=NCHN+1
31078             ISIG(NCHN,1)=I
31079             ISIG(NCHN,2)=-I
31080             ISIG(NCHN,3)=1
31081             SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG1/FACGGS
31082             NCHN=NCHN+1
31083             ISIG(NCHN,1)=I
31084             ISIG(NCHN,2)=-I
31085             ISIG(NCHN,3)=2
31086             SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG2/FACGGS
31087  2448     CONTINUE
31088  
31089         ELSEIF(ISUB.EQ.430) THEN
31090 C...q + q~ -> g + QQ~[3PJ8]
31091           IF(MSTP(145).EQ.0) THEN
31092             FACQQG=COMFAC*PARU(1)*AS**3*(80D0/27D0)*
31093      &            ((7D0*THUH+8D0*SH)*(TH2+UH2)
31094      &            +4D0*SH*(2D0*SQMQQ**2-SHTH2-UHSH2))/
31095      &            (SQMQQ*SQMQQR*SH*THUH2*THUH)
31096           ELSE
31097             FF=-80D0*PARU(1)*AS**3/(27D0*SQMQQ*SQMQQR*SH2*THUH2*THUH)
31098             AA=SH*THUH*(2D0*SQMQQ**2+SHTH2+UHSH2)
31099             BB=8D0*(UHSH2+SH*TH)
31100             CC=8D0*(SHTH2+SH*UH)
31101             DD=4D0*(SHTH2+UHSH2+SH*SQMQQ-SQMQQ**2)
31102             IF(MSTP(147).EQ.0) THEN
31103                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31104      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31105             ELSEIF(MSTP(147).EQ.1) THEN
31106                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31107      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31108             ELSEIF(MSTP(147).EQ.3) THEN
31109                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31110      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31111             ELSEIF(MSTP(147).EQ.4) THEN
31112                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31113      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31114             ELSEIF(MSTP(147).EQ.5) THEN
31115                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31116      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31117             ELSEIF(MSTP(147).EQ.6) THEN
31118                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31119      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31120             ENDIF
31121             FACQQG=COMFAC*FF*FACQQG
31122           ENDIF
31123 C...Split total contribution into different colour flows just like
31124 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31125 C...(recalculate kinematics for massless partons).
31126           THP=-0.5D0*SH*(1D0-CTH)
31127           UHP=-0.5D0*SH*(1D0+CTH)
31128           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31129           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31130           FACGGS=FACGG1+FACGG2
31131           DO 2449 I=MMINA,MMAXA
31132             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31133      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2449
31134             NCHN=NCHN+1
31135             ISIG(NCHN,1)=I
31136             ISIG(NCHN,2)=-I
31137             ISIG(NCHN,3)=1
31138             SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG1/FACGGS
31139             NCHN=NCHN+1
31140             ISIG(NCHN,1)=I
31141             ISIG(NCHN,2)=-I
31142             ISIG(NCHN,3)=2
31143             SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG2/FACGGS
31144  2449     CONTINUE
31145  
31146         ELSEIF(ISUB.EQ.431) THEN
31147 C...g + g -> QQ~[3P01] + g
31148           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31149           QGTW=(SH*TH*UH)/SH**3
31150           RGTW=SQMQQ/SH
31151           IF(MSTP(145).EQ.0) THEN
31152             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(9D0*SQMQQR*SH)*
31153      &            (9D0*RGTW**2*PGTW**4*
31154      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
31155      &            -6D0*RGTW*PGTW**3*QGTW*
31156      &            (2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)
31157      &            -PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)
31158      &            +2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)
31159      &            +6D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31160           ELSE
31161             FC1=PARU(1)*AS**3*8D0/(27D0*SQMQQR*SH)*
31162      &            (9D0*RGTW**2*PGTW**4*
31163      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
31164      &            -6D0*RGTW*PGTW**3*QGTW*
31165      &            (2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)
31166      &            -PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)
31167      &            +2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)
31168      &            +6D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31169             IF(MSTP(147).EQ.0) THEN
31170                FACQQG=COMFAC*FC1
31171             ELSEIF(MSTP(147).EQ.1) THEN
31172                FACQQG=COMFAC*2D0*FC1
31173             ELSEIF(MSTP(147).EQ.3) THEN
31174                FACQQG=COMFAC*FC1
31175             ELSEIF(MSTP(147).EQ.4) THEN
31176                FACQQG=COMFAC*FC1
31177             ELSEIF(MSTP(147).EQ.5) THEN
31178                FACQQG=0D0
31179             ELSEIF(MSTP(147).EQ.6) THEN
31180                FACQQG=0D0
31181             ENDIF
31182           ENDIF
31183           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31184             NCHN=NCHN+1
31185             ISIG(NCHN,1)=21
31186             ISIG(NCHN,2)=21
31187             ISIG(NCHN,3)=1
31188             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31189           ENDIF
31190  
31191         ELSEIF(ISUB.EQ.432) THEN
31192 C...g + g -> QQ~[3P11] + g
31193           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31194           QGTW=(SH*TH*UH)/SH**3
31195           RGTW=SQMQQ/SH
31196           IF(MSTP(145).EQ.0) THEN
31197             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(3D0*SQMQQR*SH)*
31198      &            PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)
31199      &            +2D0*QGTW*(-RGTW**4+5D0*RGTW**2*PGTW+PGTW**2)
31200      &            -15D0*RGTW*QGTW**2)/(QGTW-RGTW*PGTW)**4
31201           ELSE
31202             FF=4D0/3D0*PARU(1)*AS**3*SQMQQR/SHTH2**2/THUH2**2/UHSH2**2
31203             C1=(4D0*PGTW**5+23D0*PGTW**2*QGTW**2
31204      &            +(-14D0*PGTW**3*QGTW+3D0*QGTW**3)*RGTW
31205      &            -(PGTW**4+2D0*PGTW*QGTW**2)*RGTW**2
31206      &            +3D0*PGTW**2*QGTW*RGTW**3)*SH2**5
31207             C2=2D0*SHTH2*(SH2*THUH*(SH*THUH*(SH-TH)*(SH-UH)
31208      &            -TH*UH*(TH-UH)**2)+SH2**2*(TH-UH)*(TH2+UH2-SH*THUH)
31209      &            *(PGTW**2-QGTW*(SH+2D0*UH)/SH))
31210             C3=2D0*UHSH2*(SH2*THUH*(SH*THUH*(SH-TH)*(SH-UH)
31211      &            -TH*UH*(TH-UH)**2)-SH2**2*(TH-UH)*(TH2+UH2-SH*THUH)
31212      &            *(PGTW**2-QGTW*(SH+2D0*TH)/SH))
31213             C4=-4D0*THUH*(TH-UH)**2*
31214      &            (TH**3*UH**3+SH2**2*(2D0*TH+UH)*(TH+2D0*UH)
31215      &            -SH2*TH*UH*(TH2+UH2))
31216      &            +4D0*THUH2*(SH**3*(SH2**2+TH2**2+UH2**2)
31217      &            -SH*TH*UH*(SH2**2+TH*UH*(TH2-3D0*TH*UH+UH2)
31218      &            +SH2*(5D0*THUH2-17D0*TH*UH)))
31219             IF(MSTP(147).EQ.0) THEN
31220                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31221      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31222             ELSEIF(MSTP(147).EQ.1) THEN
31223                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31224      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
31225             ELSEIF(MSTP(147).EQ.3) THEN
31226                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31227      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31228             ELSEIF(MSTP(147).EQ.4) THEN
31229                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31230      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31231             ELSEIF(MSTP(147).EQ.5) THEN
31232                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
31233      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
31234             ELSEIF(MSTP(147).EQ.6) THEN
31235                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31236      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31237             ENDIF
31238             FACQQG=COMFAC*FF*FACQQG
31239           ENDIF
31240           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31241             NCHN=NCHN+1
31242             ISIG(NCHN,1)=21
31243             ISIG(NCHN,2)=21
31244             ISIG(NCHN,3)=1
31245             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31246           ENDIF
31247  
31248         ELSEIF(ISUB.EQ.433) THEN
31249 C...g + g -> QQ~[3P21] + g
31250           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31251           QGTW=(SH*TH*UH)/SH**3
31252           RGTW=SQMQQ/SH
31253           IF(MSTP(145).EQ.0) THEN
31254             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(9D0*SQMQQR*SH)*
31255      &            (12D0*RGTW**2*PGTW**4*
31256      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
31257      &            -3D0*RGTW*PGTW**3*QGTW*
31258      &            (8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)
31259      &            +2D0*PGTW**2*QGTW**2*
31260      &            (-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)
31261      &            +RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)
31262      &            +12D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31263           ELSE
31264             FF=(16D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/
31265      &            (3D0*SH2*TH2*UH2*SHTH2**2*THUH2**2*UHSH2**2)
31266             C1=PGTW**2*QGTW*(PGTW*RGTW-QGTW)**2*(RGTW**2-2D0*PGTW)
31267      &            *SH*SH2**7
31268             C2=2D0*SHTH2*(-SH2**3*TH2**3-SH**5*TH**5*UH*SHTH
31269      &            +SH2**2*TH2**2*UH2*(8D0*SHTH2-5D0*SH*TH)
31270      &            +SH**3*TH**3*UH**3*SHTH*(17D0*SHTH2-2D0*SH*TH)
31271      &            +SH2*TH2*UH2**2*(105D0*SH2*TH2+64D0*SH*TH*(SH2+TH2)
31272      &            +10D0*(SH2**2+TH2**2))
31273      &            +SH2*TH2*UH**5*SHTH*(32D0*SHTH2+7D0*SH*TH)
31274      &            -UH2**3*(SH2**3-87D0*SH**3*TH**3+TH2**3
31275      &            -45D0*SH2*TH2*(SH2+TH2)-5D0*SH*TH*(SH2**2+TH2**2))
31276      &            +SH*TH*UH**7*SHTH*(7D0*SHTH2+12D0*SH*TH)
31277      &            +4D0*SH*TH*UH2**4*SHTH2)
31278             C3=2D0*UHSH2*(-SH2**3*UH2**3-SH**5*UH**5*TH*UHSH
31279      &            +SH2**2*UH2**2*TH2*(8D0*UHSH2-5D0*SH*UH)
31280      &            +SH**3*UH**3*TH**3*UHSH*(17D0*UHSH2-2D0*SH*UH)
31281      &            +SH2*UH2*TH2**2*(105D0*SH2*UH2+64D0*SH*UH*(SH2+UH2)
31282      &            +10D0*(SH2**2+UH2**2))
31283      &            +SH2*UH2*TH**5*UHSH*(32D0*UHSH2+7D0*SH*UH)
31284      &            -TH2**3*(SH2**3-87D0*SH**3*UH**3+UH2**3
31285      &            -45D0*SH2*UH2*(SH2+UH2)-5D0*SH*UH*(SH2**2+UH2**2))
31286      &            +SH*UH*TH**7*UHSH*(7D0*UHSH2+12D0*SH*UH)
31287      &            +4D0*SH*UH*TH2**4*UHSH2)
31288             C4=-2D0*SHTH*UHSH*(-2D0*TH2**3*UH2**3
31289      &            -SH**5*TH2*UH2*THUH*(5D0*TH+3D0*UH)*(3D0*TH+5D0*UH)
31290      &            +SH2**3*(2D0*TH+UH)*(TH+2D0*UH)*(TH2-UH2)**2
31291      &            -SH*TH2**2*UH2**2*THUH*(5D0*THUH2-4D0*TH*UH)
31292      &            -SH2*TH**3*UH**3*THUH2*(13D0*THUH2-16D0*TH*UH)
31293      &            -SH**3*TH2*UH2*(92D0*TH2*UH2*THUH
31294      &            +53D0*TH*UH*(TH**3+UH**3)+11D0*(TH**5+UH**5))
31295      &            -SH2**2*TH*UH*(114D0*TH**3*UH**3
31296      &            +83D0*TH2*UH2*(TH2+UH2)+28D0*TH*UH*(TH2**2+UH2**2)
31297      &            +3D0*(TH2**3+UH2**3)))
31298             C5=4D0*SH*TH*UH2*SHTH2*(2D0*SH*TH+SH*UH+TH*UH)**2
31299      &            *(2D0*UH*SQMQQ**2+SHTH*(SH*TH-UH2))
31300             C6=4D0*SH*UH*TH2*UHSH2*(2D0*SH*UH+SH*TH+TH*UH)**2
31301      &            *(2D0*TH*SQMQQ**2+UHSH*(SH*UH-TH2))
31302             C7=4D0*SH*TH*UH2*SHTH*(SH2**2*TH**3*(11D0*SH+16D0*TH)
31303      &            +SH**3*TH2*UH*(31D0*SH2+83D0*SH*TH+61D0*TH2)
31304      &            +SH2*TH*UH2*(19D0*SH**3+110D0*SH2*TH+156D0*SH*TH2+
31305      &            82D0*TH**3)
31306      &            +SH*TH*UH**3*(43D0*SH**3+132D0*SH2*TH+124D0*SH*TH2
31307      &            +45D0*TH**3)
31308      &            +TH*UH2**2*(37D0*SH**3+68D0*SH2*TH+43D0*SH*TH2+
31309      &            8D0*TH**3)
31310      &            +TH*UH**5*(11D0*SH2+13D0*SH*TH+5D0*TH2)
31311      &            +SH**3*UH**3*(3D0*UHSH2-2D0*SH*UH)
31312      &            +TH**5*UHSH*(5D0*UHSH2+2D0*SH*UH))
31313             C8=4D0*SH*UH*TH2*UHSH*(SH2**2*UH**3*(11D0*SH+16D0*UH)
31314      &            +SH**3*UH2*TH*(31D0*SH2+83D0*SH*UH+61D0*UH2)
31315      &            +SH2*UH*TH2*(19D0*SH**3+110D0*SH2*UH+156D0*SH*UH2+
31316      &            82D0*UH**3)
31317      &            +SH*UH*TH**3*(43D0*SH**3+132D0*SH2*UH+124D0*SH*UH2
31318      &            +45D0*UH**3)
31319      &            +UH*TH2**2*(37D0*SH**3+68D0*SH2*UH+43D0*SH*UH2+
31320      &            8D0*UH**3)
31321      &            +UH*TH**5*(11D0*SH2+13D0*SH*UH+5D0*UH2)
31322      &            +SH**3*TH**3*(3D0*SHTH2-2D0*SH*TH)
31323      &            +UH**5*SHTH*(5D0*SHTH2+2D0*SH*TH))
31324             C9=4D0*SHTH*UHSH*(2D0*TH**5*UH**5*THUH
31325      &            +4D0*SH*TH2**2*UH2**2*THUH2
31326      &            -SH2*TH**3*UH**3*THUH*(TH2+UH2)
31327      &            -2D0*SH**3*TH2*UH2*(THUH2**2+2D0*TH*UH*THUH2-TH2*UH2)
31328      &            +SH2**2*TH*UH*THUH*(-TH*UH*THUH2+3D0*(TH2**2+UH2**2))
31329      &            +SH**5*(4D0*TH2*UH2*(THUH2-TH*UH)
31330      &            +5D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3)))
31331             C0=-4D0*(2D0*TH2**3*UH2**3*SQMQQ
31332      &            -SH2*TH2**2*UH2**2*THUH*(19D0*THUH2-4D0*TH*UH)
31333      &            -SH**3*TH**3*UH**3*THUH2*(32D0*THUH2+29D0*TH*UH)
31334      &            -SH2**2*TH2*UH2*THUH*(264D0*TH2*UH2
31335      &            +136D0*TH*UH*(TH2+UH2)+15D0*(TH2**2+UH2**2))
31336      &            +SH**5*TH*UH*(-428D0*TH**3*UH**3
31337      &            -256D0*TH2*UH2*(TH2+UH2)-43D0*TH*UH*(TH2**2+UH2**2)
31338      &            +2D0*(TH2**3+UH2**3))
31339      &            +SH**7*(-46D0*TH**3*UH**3-21D0*TH2*UH2*(TH2+UH2)
31340      &            +2D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3))
31341      &            +SH2**3*THUH*(-134*TH**3*UH**3-53D0*TH2*UH2*(TH2+UH2)
31342      &            +4D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3)))
31343             IF(MSTP(147).EQ.0) THEN
31344                FACQQG=1D0/3D0*(C1*3D0
31345      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
31346      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
31347      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
31348      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
31349      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
31350      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31351      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31352      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
31353      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31354      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31355      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
31356      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
31357             ELSEIF(MSTP(147).EQ.1) THEN
31358                FACQQG=C1*2D0
31359      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
31360      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
31361      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
31362      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
31363      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
31364      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
31365      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
31366      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
31367      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
31368      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
31369      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
31370      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
31371      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
31372             ELSEIF(MSTP(147).EQ.2) THEN
31373                FACQQG=2D0*(C1
31374      &              -C2*EL1K11*EL2K11
31375      &              -C3*EL1K21*EL2K21
31376      &              -C4*EL1K11*EL2K21
31377      &              +C5*(EL1K11*EL2K11)**2
31378      &              +C6*(EL1K21*EL2K21)**2
31379      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
31380      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
31381      &              +(C9+C0)*(EL1K11*EL2K21)**2)
31382             ENDIF
31383             FACQQG=COMFAC*FF*FACQQG
31384           ENDIF
31385           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31386             NCHN=NCHN+1
31387             ISIG(NCHN,1)=21
31388             ISIG(NCHN,2)=21
31389             ISIG(NCHN,3)=1
31390             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31391           ENDIF
31392  
31393         ELSEIF(ISUB.EQ.434) THEN
31394 C...q + g -> q + QQ~[3P01]
31395           IF(MSTP(145).EQ.0) THEN
31396             FACQQG=-COMFAC*PARU(1)*AS**3*(16D0/81D0)*
31397      &            (TH-3D0*SQMQQ)**2*(SH2+UH2)/(SQMQQR*TH*UHSH2**2)
31398           ELSE
31399             FA=-PARU(1)*AS**3*(16D0/243D0)*
31400      &            (TH-3D0*SQMQQ)**2*(SH2+UH2)/(SQMQQR*TH*UHSH2**2)
31401             IF(MSTP(147).EQ.0) THEN
31402                FACQQG=COMFAC*FA
31403             ELSEIF(MSTP(147).EQ.1) THEN
31404                FACQQG=COMFAC*2D0*FA
31405             ELSEIF(MSTP(147).EQ.3) THEN
31406                FACQQG=COMFAC*FA
31407             ELSEIF(MSTP(147).EQ.4) THEN
31408                FACQQG=COMFAC*FA
31409             ELSEIF(MSTP(147).EQ.5) THEN
31410                FACQQG=0D0
31411             ELSEIF(MSTP(147).EQ.6) THEN
31412                FACQQG=0D0
31413             ENDIF
31414           ENDIF
31415           DO 2452 I=MMINA,MMAXA
31416             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2452
31417             DO 2451 ISDE=1,2
31418               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2451
31419               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2451
31420               NCHN=NCHN+1
31421               ISIG(NCHN,ISDE)=I
31422               ISIG(NCHN,3-ISDE)=21
31423               ISIG(NCHN,3)=1
31424               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31425  2451       CONTINUE
31426  2452     CONTINUE
31427  
31428         ELSEIF(ISUB.EQ.435) THEN
31429 C...q + g -> q + QQ~[3P11]
31430           IF(MSTP(145).EQ.0) THEN
31431             FACQQG=-COMFAC*PARU(1)*AS**3*(32D0/27D0)*
31432      &            (4D0*SQMQQ*SH*UH+TH*(SH2+UH2))/(SQMQQR*UHSH2**2)
31433           ELSE
31434             FF=(64D0*PARU(1)*AS**3*SQMQQR)/(27D0*UHSH2**2)
31435             C1=SH*UH
31436             C2=2D0*SH
31437             C3=0D0
31438             C4=2D0*(SH-UH)
31439             IF(MSTP(147).EQ.0) THEN
31440                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31441      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31442             ELSEIF(MSTP(147).EQ.1) THEN
31443                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31444      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
31445             ELSEIF(MSTP(147).EQ.3) THEN
31446                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31447      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31448             ELSEIF(MSTP(147).EQ.4) THEN
31449                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31450      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31451             ELSEIF(MSTP(147).EQ.5) THEN
31452                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
31453      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
31454             ELSEIF(MSTP(147).EQ.6) THEN
31455                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31456      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31457             ENDIF
31458             FACQQG=COMFAC*FF*FACQQG
31459           ENDIF
31460           DO 2454 I=MMINA,MMAXA
31461             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2454
31462             DO 2453 ISDE=1,2
31463               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2453
31464               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2453
31465               NCHN=NCHN+1
31466               ISIG(NCHN,ISDE)=I
31467               ISIG(NCHN,3-ISDE)=21
31468               ISIG(NCHN,3)=1
31469               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31470  2453       CONTINUE
31471  2454     CONTINUE
31472  
31473         ELSEIF(ISUB.EQ.436) THEN
31474 C...q + g -> q + QQ~[3P21]
31475           IF(MSTP(145).EQ.0) THEN
31476             FACQQG=-COMFAC*PARU(1)*AS**3*(32D0/81D0)*
31477      &            ((6D0*SQMQQ**2+TH2)*UHSH2
31478      &            -2D0*SH*UH*(TH2+6D0*SQMQQ*UHSH))/
31479      &            (SQMQQR*TH*UHSH2**2)
31480           ELSE
31481             FF=-(32D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/(27D0*TH2*UHSH2**2)
31482             C1=TH*UHSH2
31483             C2=4D0*(SH2+TH2+2D0*TH*UHSH)
31484             C3=4D0*UHSH2
31485             C4=8D0*SH*UHSH
31486             C5=8D0*TH
31487             C6=0D0
31488             C7=16D0*TH
31489             C8=0D0
31490             C9=-16D0*UHSH
31491             C0=16D0*SQMQQ
31492             IF(MSTP(147).EQ.0) THEN
31493                FACQQG=1D0/3D0*(C1*3D0
31494      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
31495      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
31496      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
31497      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
31498      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
31499      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31500      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31501      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
31502      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31503      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31504      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
31505      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
31506             ELSEIF(MSTP(147).EQ.1) THEN
31507                FACQQG=C1*2D0
31508      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
31509      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
31510      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
31511      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
31512      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
31513      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
31514      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
31515      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
31516      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
31517      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
31518      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
31519      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
31520      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
31521             ELSEIF(MSTP(147).EQ.2) THEN
31522                FACQQG=2D0*(C1
31523      &              -C2*EL1K11*EL2K11
31524      &              -C3*EL1K21*EL2K21
31525      &              -C4*EL1K11*EL2K21
31526      &              +C5*(EL1K11*EL2K11)**2
31527      &              +C6*(EL1K21*EL2K21)**2
31528      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
31529      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
31530      &              +(C9+C0)*(EL1K11*EL2K21)**2)
31531             ENDIF
31532             FACQQG=COMFAC*FF*FACQQG
31533           ENDIF
31534           DO 2456 I=MMINA,MMAXA
31535             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2456
31536             DO 2455 ISDE=1,2
31537               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2455
31538               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2455
31539               NCHN=NCHN+1
31540               ISIG(NCHN,ISDE)=I
31541               ISIG(NCHN,3-ISDE)=21
31542               ISIG(NCHN,3)=1
31543               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31544  2455       CONTINUE
31545  2456     CONTINUE
31546  
31547         ELSEIF(ISUB.EQ.437) THEN
31548 C...q + q~ -> g + QQ~[3P01]
31549           IF(MSTP(145).EQ.0) THEN
31550             FACQQG=COMFAC*PARU(1)*AS**3*(128D0/243D0)*
31551      &            (SH-3D0*SQMQQ)**2*(TH2+UH2)/(SQMQQR*SH*THUH2**2)
31552           ELSE
31553             FA=PARU(1)*AS**3*(128D0/729D0)*
31554      &            (SH-3D0*SQMQQ)**2*(TH2+UH2)/(SQMQQR*SH*THUH2**2)
31555             IF(MSTP(147).EQ.0) THEN
31556                FACQQG=COMFAC*FA
31557             ELSEIF(MSTP(147).EQ.1) THEN
31558                FACQQG=COMFAC*2D0*FA
31559             ELSEIF(MSTP(147).EQ.3) THEN
31560                FACQQG=COMFAC*FA
31561             ELSEIF(MSTP(147).EQ.4) THEN
31562                FACQQG=COMFAC*FA
31563             ELSEIF(MSTP(147).EQ.5) THEN
31564                FACQQG=0D0
31565             ELSEIF(MSTP(147).EQ.6) THEN
31566                FACQQG=0D0
31567             ENDIF
31568           ENDIF
31569           DO 2457 I=MMINA,MMAXA
31570             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31571      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2457
31572             NCHN=NCHN+1
31573             ISIG(NCHN,1)=I
31574             ISIG(NCHN,2)=-I
31575             ISIG(NCHN,3)=1
31576             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31577  2457     CONTINUE
31578  
31579         ELSEIF(ISUB.EQ.438) THEN
31580 C...q + q~ -> g + QQ~[3P11]
31581           IF(MSTP(145).EQ.0) THEN
31582             FACQQG=COMFAC*PARU(1)*AS**3*256D0/81D0*
31583      &            (4D0*SQMQQ*TH*UH+SH*(TH2+UH2))/(SQMQQR*THUH2**2)
31584           ELSE
31585             FF=-(512D0*PARU(1)*AS**3*SQMQQR)/(81D0*THUH2**2)
31586             C1=TH*UH
31587             C2=2D0*UH
31588             C3=2D0*TH
31589             C4=2D0*THUH
31590             IF(MSTP(147).EQ.0) THEN
31591                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31592      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31593             ELSEIF(MSTP(147).EQ.1) THEN
31594                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31595      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
31596             ELSEIF(MSTP(147).EQ.3) THEN
31597                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31598      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31599             ELSEIF(MSTP(147).EQ.4) THEN
31600                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31601      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31602             ELSEIF(MSTP(147).EQ.5) THEN
31603                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
31604      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
31605             ELSEIF(MSTP(147).EQ.6) THEN
31606                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31607      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31608             ENDIF
31609             FACQQG=COMFAC*FF*FACQQG
31610           ENDIF
31611           DO 2458 I=MMINA,MMAXA
31612             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31613      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2458
31614             NCHN=NCHN+1
31615             ISIG(NCHN,1)=I
31616             ISIG(NCHN,2)=-I
31617             ISIG(NCHN,3)=1
31618             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31619  2458     CONTINUE
31620  
31621         ELSEIF(ISUB.EQ.439) THEN
31622 C...q + q~ -> g + QQ~[3P21]
31623           IF(MSTP(145).EQ.0) THEN
31624             FACQQG=COMFAC*PARU(1)*AS**3*(256D0/243D0)*
31625      &            ((6D0*SQMQQ**2+SH2)*THUH2
31626      &            -2D0*TH*UH*(SH2+6D0*SQMQQ*THUH))/
31627      &            (SQMQQR*SH*THUH2**2)
31628           ELSE
31629             FF=(256D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/(81D0*SH2*THUH2**2)
31630             C1=SH*THUH2
31631             C2=4D0*(SH2+UH2+2D0*SH*THUH)
31632             C3=4D0*(SH2+TH2+2D0*SH*THUH)
31633             C4=8D0*(SH2-TH*UH+2D0*SH*THUH)
31634             C5=8D0*SH
31635             C6=C5
31636             C7=16D0*SH
31637             C8=C7
31638             C9=-16D0*THUH
31639             C0=16D0*SQMQQ
31640             IF(MSTP(147).EQ.0) THEN
31641                FACQQG=1D0/3D0*(C1*3D0
31642      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
31643      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
31644      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
31645      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
31646      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
31647      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31648      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31649      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
31650      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31651      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31652      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
31653      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
31654             ELSEIF(MSTP(147).EQ.1) THEN
31655                FACQQG=C1*2D0
31656      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
31657      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
31658      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
31659      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
31660      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
31661      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
31662      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
31663      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
31664      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
31665      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
31666      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
31667      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
31668      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
31669             ELSEIF(MSTP(147).EQ.2) THEN
31670                FACQQG=2D0*(C1
31671      &              -C2*EL1K11*EL2K11
31672      &              -C3*EL1K21*EL2K21
31673      &              -C4*EL1K11*EL2K21
31674      &              +C5*(EL1K11*EL2K11)**2
31675      &              +C6*(EL1K21*EL2K21)**2
31676      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
31677      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
31678      &              +(C9+C0)*(EL1K11*EL2K21)**2)
31679             ENDIF
31680             FACQQG=COMFAC*FF*FACQQG
31681           ENDIF
31682           DO 2459 I=MMINA,MMAXA
31683             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31684      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2459
31685             NCHN=NCHN+1
31686             ISIG(NCHN,1)=I
31687             ISIG(NCHN,2)=-I
31688             ISIG(NCHN,3)=1
31689             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31690  2459     CONTINUE
31691         ENDIF
31692 C...QUARKONIA---
31693  
31694       ENDIF
31695  
31696       RETURN
31697       END
31698  
31699 C*********************************************************************
31700  
31701 C...PYSGWZ
31702 C...Subprocess cross sections for W/Z processes,
31703 C...except that longitudinal WW scattering is in Higgs sector.
31704 C...Auxiliary to PYSIGH.
31705  
31706       SUBROUTINE PYSGWZ(NCHN,SIGS)
31707  
31708 C...Double precision and integer declarations
31709       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31710       IMPLICIT INTEGER(I-N)
31711       INTEGER PYK,PYCHGE,PYCOMP
31712 C...Parameter statement to help give large particle numbers.
31713       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
31714      &KEXCIT=4000000,KDIMEN=5000000)
31715 C...Commonblocks
31716       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31717       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
31718       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
31719       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
31720       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31721       COMMON/PYINT1/MINT(400),VINT(400)
31722       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
31723       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
31724       COMMON/PYINT4/MWID(500),WIDS(500,5)
31725       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
31726       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
31727      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
31728      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
31729      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
31730       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
31731      &/PYINT2/,/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
31732 C...Local arrays and complex numbers
31733       DIMENSION WDTP(0:400),WDTE(0:400,0:5),HGZ(6,3),HL3(3),HR3(3),
31734      &HL4(3),HR4(3)
31735       COMPLEX*16 COULCK,COULCP,COULCD,COULCR,COULCS
31736  
31737 C...Differential cross section expressions.
31738  
31739       IF(ISUB.LE.20) THEN
31740         IF(ISUB.EQ.1) THEN
31741 C...f + fbar -> gamma*/Z0
31742           MINT(61)=2
31743           CALL PYWIDT(23,SH,WDTP,WDTE)
31744           HS=SHR*WDTP(0)
31745           FACZ=4D0*COMFAC*3D0
31746           HP0=AEM/3D0*SH
31747           HP1=AEM/3D0*XWC*SH
31748           DO 100 I=MMINA,MMAXA
31749             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
31750             EI=KCHG(IABS(I),1)/3D0
31751             AI=SIGN(1D0,EI)
31752             VI=AI-4D0*EI*XWV
31753             HI0=HP0
31754             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
31755             HI1=HP1
31756             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
31757             NCHN=NCHN+1
31758             ISIG(NCHN,1)=I
31759             ISIG(NCHN,2)=-I
31760             ISIG(NCHN,3)=1
31761             SIGH(NCHN)=FACZ*(EI**2/SH2*HI0*HP0*VINT(111)+
31762      &      EI*VI*(1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*
31763      &      (HI0*HP1+HI1*HP0)*VINT(112)+(VI**2+AI**2)/
31764      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114))
31765   100     CONTINUE
31766  
31767         ELSEIF(ISUB.EQ.2) THEN
31768 C...f + fbar' -> W+/-
31769           CALL PYWIDT(24,SH,WDTP,WDTE)
31770           HS=SHR*WDTP(0)
31771           FACBW=4D0*COMFAC/((SH-SQMW)**2+HS**2)*3D0
31772           HP=AEM/(24D0*XW)*SH
31773           DO 120 I=MMIN1,MMAX1
31774             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
31775             IA=IABS(I)
31776             DO 110 J=MMIN2,MMAX2
31777               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
31778               JA=IABS(J)
31779               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
31780               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
31781      &        GOTO 110
31782               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
31783               HI=HP*2D0
31784               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
31785               NCHN=NCHN+1
31786               ISIG(NCHN,1)=I
31787               ISIG(NCHN,2)=J
31788               ISIG(NCHN,3)=1
31789               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
31790               SIGH(NCHN)=HI*FACBW*HF
31791   110       CONTINUE
31792   120     CONTINUE
31793  
31794         ELSEIF(ISUB.EQ.15) THEN
31795 C...f + fbar -> g + (gamma*/Z0) (q + qbar -> g + (gamma*/Z0) only)
31796           FACZG=COMFAC*AS*AEM*(8D0/9D0)*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
31797 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
31798           HFGG=0D0
31799           HFGZ=0D0
31800           HFZZ=0D0
31801           RADC4=1D0+PYALPS(SQM4)/PARU(1)
31802           DO 130 I=1,MIN(16,MDCY(23,3))
31803             IDC=I+MDCY(23,2)-1
31804             IF(MDME(IDC,1).LT.0) GOTO 130
31805             IMDM=0
31806             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
31807      &      IMDM=1
31808             IF(I.LE.8) THEN
31809               EF=KCHG(I,1)/3D0
31810               AF=SIGN(1D0,EF+0.1D0)
31811               VF=AF-4D0*EF*XWV
31812             ELSEIF(I.LE.16) THEN
31813               EF=KCHG(I+2,1)/3D0
31814               AF=SIGN(1D0,EF+0.1D0)
31815               VF=AF-4D0*EF*XWV
31816             ENDIF
31817             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
31818             IF(4D0*RM1.LT.1D0) THEN
31819               FCOF=1D0
31820               IF(I.LE.8) FCOF=3D0*RADC4
31821               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
31822               IF(IMDM.EQ.1) THEN
31823                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
31824                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
31825                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
31826      &          AF**2*(1D0-4D0*RM1))*BE34
31827               ENDIF
31828             ENDIF
31829   130     CONTINUE
31830 C...Propagators: as simulated in PYOFSH and as desired
31831           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
31832           MINT15=MINT(15)
31833           MINT(15)=1
31834           MINT(61)=1
31835           CALL PYWIDT(23,SQM4,WDTP,WDTE)
31836           MINT(15)=MINT15
31837           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
31838           HFGG=HFGG*HFAEM*VINT(111)/SQM4
31839           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
31840           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
31841 C...Loop over flavours; consider full gamma/Z structure
31842           DO 140 I=MMINA,MMAXA
31843             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31844      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
31845             EI=KCHG(IABS(I),1)/3D0
31846             AI=SIGN(1D0,EI)
31847             VI=AI-4D0*EI*XWV
31848             NCHN=NCHN+1
31849             ISIG(NCHN,1)=I
31850             ISIG(NCHN,2)=-I
31851             ISIG(NCHN,3)=1
31852             SIGH(NCHN)=FACZG*(EI**2*HFGG+EI*VI*HFGZ+
31853      &      (VI**2+AI**2)*HFZZ)/HBW4
31854   140     CONTINUE
31855  
31856         ELSEIF(ISUB.EQ.16) THEN
31857 C...f + fbar' -> g + W+/- (q + qbar' -> g + W+/- only)
31858           FACWG=COMFAC*AS*AEM/XW*2D0/9D0*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
31859 C...Propagators: as simulated in PYOFSH and as desired
31860           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
31861           CALL PYWIDT(24,SQM4,WDTP,WDTE)
31862           GMMWC=SQRT(SQM4)*WDTP(0)
31863           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
31864           FACWG=FACWG*HBW4C/HBW4
31865           DO 160 I=MMIN1,MMAX1
31866             IA=IABS(I)
31867             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 160
31868             DO 150 J=MMIN2,MMAX2
31869               JA=IABS(J)
31870               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 150
31871               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 150
31872               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
31873               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
31874               FCKM=VCKM((IA+1)/2,(JA+1)/2)
31875               NCHN=NCHN+1
31876               ISIG(NCHN,1)=I
31877               ISIG(NCHN,2)=J
31878               ISIG(NCHN,3)=1
31879               SIGH(NCHN)=FACWG*FCKM*WIDSC
31880   150       CONTINUE
31881   160     CONTINUE
31882  
31883         ELSEIF(ISUB.EQ.19) THEN
31884 C...f + fbar -> gamma + (gamma*/Z0)
31885           FACGZ=COMFAC*2D0*AEM**2*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
31886 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
31887           HFGG=0D0
31888           HFGZ=0D0
31889           HFZZ=0D0
31890           RADC4=1D0+PYALPS(SQM4)/PARU(1)
31891           DO 170 I=1,MIN(16,MDCY(23,3))
31892             IDC=I+MDCY(23,2)-1
31893             IF(MDME(IDC,1).LT.0) GOTO 170
31894             IMDM=0
31895             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
31896      &      IMDM=1
31897             IF(I.LE.8) THEN
31898               EF=KCHG(I,1)/3D0
31899               AF=SIGN(1D0,EF+0.1D0)
31900               VF=AF-4D0*EF*XWV
31901             ELSEIF(I.LE.16) THEN
31902               EF=KCHG(I+2,1)/3D0
31903               AF=SIGN(1D0,EF+0.1D0)
31904               VF=AF-4D0*EF*XWV
31905             ENDIF
31906             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
31907             IF(4D0*RM1.LT.1D0) THEN
31908               FCOF=1D0
31909               IF(I.LE.8) FCOF=3D0*RADC4
31910               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
31911               IF(IMDM.EQ.1) THEN
31912                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
31913                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
31914                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
31915      &          AF**2*(1D0-4D0*RM1))*BE34
31916               ENDIF
31917             ENDIF
31918   170     CONTINUE
31919 C...Propagators: as simulated in PYOFSH and as desired
31920           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
31921           MINT15=MINT(15)
31922           MINT(15)=1
31923           MINT(61)=1
31924           CALL PYWIDT(23,SQM4,WDTP,WDTE)
31925           MINT(15)=MINT15
31926           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
31927           HFGG=HFGG*HFAEM*VINT(111)/SQM4
31928           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
31929           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
31930 C...Loop over flavours; consider full gamma/Z structure
31931           DO 180 I=MMINA,MMAXA
31932             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 180
31933             EI=KCHG(IABS(I),1)/3D0
31934             AI=SIGN(1D0,EI)
31935             VI=AI-4D0*EI*XWV
31936             FCOI=1D0
31937             IF(IABS(I).LE.10) FCOI=FACA/3D0
31938             NCHN=NCHN+1
31939             ISIG(NCHN,1)=I
31940             ISIG(NCHN,2)=-I
31941             ISIG(NCHN,3)=1
31942             SIGH(NCHN)=FACGZ*FCOI*EI**2*(EI**2*HFGG+EI*VI*HFGZ+
31943      &      (VI**2+AI**2)*HFZZ)/HBW4
31944   180     CONTINUE
31945  
31946         ELSEIF(ISUB.EQ.20) THEN
31947 C...f + fbar' -> gamma + W+/-
31948           FACGW=COMFAC*0.5D0*AEM**2/XW
31949 C...Propagators: as simulated in PYOFSH and as desired
31950           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
31951           CALL PYWIDT(24,SQM4,WDTP,WDTE)
31952           GMMWC=SQRT(SQM4)*WDTP(0)
31953           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
31954           FACGW=FACGW*HBW4C/HBW4
31955 C...Anomalous couplings
31956           TERM1=(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
31957           TERM2=0D0
31958           TERM3=0D0
31959           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
31960             TERM2=RTCM(46)*(TH-UH)/(TH+UH)
31961             TERM3=0.5D0*RTCM(46)**2*(TH*UH+(TH2+UH2)*SH/
31962      &      (4D0*SQMW))/(TH+UH)**2
31963           ENDIF
31964           DO 200 I=MMIN1,MMAX1
31965             IA=IABS(I)
31966             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 200
31967             DO 190 J=MMIN2,MMAX2
31968               JA=IABS(J)
31969               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 190
31970               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 190
31971               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
31972      &        GOTO 190
31973               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
31974               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
31975               IF(IA.LE.10) THEN
31976                 FACWR=UH/(TH+UH)-1D0/3D0
31977                 FCKM=VCKM((IA+1)/2,(JA+1)/2)
31978                 FCOI=FACA/3D0
31979               ELSE
31980                 FACWR=-TH/(TH+UH)
31981                 FCKM=1D0
31982                 FCOI=1D0
31983               ENDIF
31984               FACWK=TERM1*FACWR**2+TERM2*FACWR+TERM3
31985               NCHN=NCHN+1
31986               ISIG(NCHN,1)=I
31987               ISIG(NCHN,2)=J
31988               ISIG(NCHN,3)=1
31989               SIGH(NCHN)=FACGW*FACWK*FCOI*FCKM*WIDSC
31990   190       CONTINUE
31991   200     CONTINUE
31992         ENDIF
31993  
31994       ELSEIF(ISUB.LE.40) THEN
31995         IF(ISUB.EQ.22) THEN
31996 C...f + fbar -> (gamma*/Z0) + (gamma*/Z0)
31997 C...Kinematics dependence
31998           FACZZ=COMFAC*AEM**2*((TH2+UH2+2D0*(SQM3+SQM4)*SH)/(TH*UH)-
31999      &    SQM3*SQM4*(1D0/TH2+1D0/UH2))
32000 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32001           DO 220 I=1,6
32002             DO 210 J=1,3
32003               HGZ(I,J)=0D0
32004   210       CONTINUE
32005   220     CONTINUE
32006           RADC3=1D0+PYALPS(SQM3)/PARU(1)
32007           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32008           DO 230 I=1,MIN(16,MDCY(23,3))
32009             IDC=I+MDCY(23,2)-1
32010             IF(MDME(IDC,1).LT.0) GOTO 230
32011             IMDM=0
32012             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2) IMDM=1
32013             IF(MDME(IDC,1).EQ.4.OR.MDME(IDC,1).EQ.5) IMDM=MDME(IDC,1)-2
32014             IF(I.LE.8) THEN
32015               EF=KCHG(I,1)/3D0
32016               AF=SIGN(1D0,EF+0.1D0)
32017               VF=AF-4D0*EF*XWV
32018             ELSEIF(I.LE.16) THEN
32019               EF=KCHG(I+2,1)/3D0
32020               AF=SIGN(1D0,EF+0.1D0)
32021               VF=AF-4D0*EF*XWV
32022             ENDIF
32023             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM3
32024             IF(4D0*RM1.LT.1D0) THEN
32025               FCOF=1D0
32026               IF(I.LE.8) FCOF=3D0*RADC3
32027               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32028               IF(IMDM.GE.1) THEN
32029                 HGZ(1,IMDM)=HGZ(1,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32030                 HGZ(2,IMDM)=HGZ(2,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32031                 HGZ(3,IMDM)=HGZ(3,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
32032      &          AF**2*(1D0-4D0*RM1))*BE34
32033               ENDIF
32034             ENDIF
32035             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32036             IF(4D0*RM1.LT.1D0) THEN
32037               FCOF=1D0
32038               IF(I.LE.8) FCOF=3D0*RADC4
32039               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32040               IF(IMDM.GE.1) THEN
32041                 HGZ(4,IMDM)=HGZ(4,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32042                 HGZ(5,IMDM)=HGZ(5,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32043                 HGZ(6,IMDM)=HGZ(6,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
32044      &          AF**2*(1D0-4D0*RM1))*BE34
32045               ENDIF
32046             ENDIF
32047   230     CONTINUE
32048 C...Propagators: as simulated in PYOFSH and as desired
32049           HBW3=(1D0/PARU(1))*GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
32050           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32051           MINT15=MINT(15)
32052           MINT(15)=1
32053           MINT(61)=1
32054           CALL PYWIDT(23,SQM3,WDTP,WDTE)
32055           MINT(15)=MINT15
32056           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32057           DO 240 J=1,3
32058             HGZ(1,J)=HGZ(1,J)*HFAEM*VINT(111)/SQM3
32059             HGZ(2,J)=HGZ(2,J)*HFAEM*VINT(112)/SQM3
32060             HGZ(3,J)=HGZ(3,J)*HFAEM*VINT(114)/SQM3
32061   240     CONTINUE
32062           MINT15=MINT(15)
32063           MINT(15)=1
32064           MINT(61)=1
32065           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32066           MINT(15)=MINT15
32067           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32068           DO 250 J=1,3
32069             HGZ(4,J)=HGZ(4,J)*HFAEM*VINT(111)/SQM4
32070             HGZ(5,J)=HGZ(5,J)*HFAEM*VINT(112)/SQM4
32071             HGZ(6,J)=HGZ(6,J)*HFAEM*VINT(114)/SQM4
32072   250     CONTINUE
32073 C...Loop over flavours; separate left- and right-handed couplings
32074           DO 270 I=MMINA,MMAXA
32075             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 270
32076             EI=KCHG(IABS(I),1)/3D0
32077             AI=SIGN(1D0,EI)
32078             VI=AI-4D0*EI*XWV
32079             VALI=VI-AI
32080             VARI=VI+AI
32081             FCOI=1D0
32082             IF(IABS(I).LE.10) FCOI=FACA/3D0
32083             DO 260 J=1,3
32084               HL3(J)=EI**2*HGZ(1,J)+EI*VALI*HGZ(2,J)+VALI**2*HGZ(3,J)
32085               HR3(J)=EI**2*HGZ(1,J)+EI*VARI*HGZ(2,J)+VARI**2*HGZ(3,J)
32086               HL4(J)=EI**2*HGZ(4,J)+EI*VALI*HGZ(5,J)+VALI**2*HGZ(6,J)
32087               HR4(J)=EI**2*HGZ(4,J)+EI*VARI*HGZ(5,J)+VARI**2*HGZ(6,J)
32088   260       CONTINUE
32089             FACLR=HL3(1)*HL4(1)+HL3(1)*(HL4(2)+HL4(3))+
32090      &      HL4(1)*(HL3(2)+HL3(3))+HL3(2)*HL4(3)+HL4(2)*HL3(3)+
32091      &      HR3(1)*HR4(1)+HR3(1)*(HR4(2)+HR4(3))+
32092      &      HR4(1)*(HR3(2)+HR3(3))+HR3(2)*HR4(3)+HR4(2)*HR3(3)
32093             NCHN=NCHN+1
32094             ISIG(NCHN,1)=I
32095             ISIG(NCHN,2)=-I
32096             ISIG(NCHN,3)=1
32097             SIGH(NCHN)=0.5D0*FACZZ*FCOI*FACLR/(HBW3*HBW4)
32098   270     CONTINUE
32099  
32100         ELSEIF(ISUB.EQ.23) THEN
32101 C...f + fbar' -> Z0 + W+/- (Z0 only, i.e. no gamma* admixture.)
32102           FACZW=COMFAC*0.5D0*(AEM/XW)**2
32103           FACZW=FACZW*WIDS(23,2)
32104           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32105           FACBW=1D0/((SH-SQMW)**2+GMMW**2)
32106           DO 290 I=MMIN1,MMAX1
32107             IA=IABS(I)
32108             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 290
32109             DO 280 J=MMIN2,MMAX2
32110               JA=IABS(J)
32111               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 280
32112               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 280
32113               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
32114      &        GOTO 280
32115               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
32116               EI=KCHG(IA,1)/3D0
32117               AI=SIGN(1D0,EI+0.1D0)
32118               VI=AI-4D0*EI*XWV
32119               EJ=KCHG(JA,1)/3D0
32120               AJ=SIGN(1D0,EJ+0.1D0)
32121               VJ=AJ-4D0*EJ*XWV
32122               IF(VI+AI.GT.0) THEN
32123                 VISAV=VI
32124                 AISAV=AI
32125                 VI=VJ
32126                 AI=AJ
32127                 VJ=VISAV
32128                 AJ=AISAV
32129               ENDIF
32130               FCKM=1D0
32131               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
32132               FCOI=1D0
32133               IF(IA.LE.10) FCOI=FACA/3D0
32134               NCHN=NCHN+1
32135               ISIG(NCHN,1)=I
32136               ISIG(NCHN,2)=J
32137               ISIG(NCHN,3)=1
32138               SIGH(NCHN)=FACZW*FCOI*FCKM*(FACBW*((9D0-8D0*XW)/4D0*THUH+
32139      &        (8D0*XW-6D0)/4D0*SH*(SQM3+SQM4))+(THUH-SH*(SQM3+SQM4))*
32140      &        (SH-SQMW)*FACBW*0.5D0*((VJ+AJ)/TH-(VI+AI)/UH)+
32141      &        THUH/(16D0*XW1)*((VJ+AJ)**2/TH2+(VI+AI)**2/UH2)+
32142      &        SH*(SQM3+SQM4)/(8D0*XW1)*(VI+AI)*(VJ+AJ)/(TH*UH))*
32143      &        WIDS(24,(5-KCHW)/2)
32144 C***Protect against slightly negative cross sections. (Reason yet to be
32145 C***sorted out. One possibility: addition of width to the W propagator.)
32146               SIGH(NCHN)=MAX(0D0,SIGH(NCHN))
32147   280       CONTINUE
32148   290     CONTINUE
32149  
32150         ELSEIF(ISUB.EQ.25) THEN
32151 C...f + fbar -> W+ + W-
32152 C...Propagators: Z0, W+- as simulated in PYOFSH and as desired
32153           GMMZC=GMMZ
32154           HBWZC=SH**2/((SH-SQMZ)**2+GMMZC**2)
32155           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
32156           CALL PYWIDT(24,SQM3,WDTP,WDTE)
32157           GMMW3=SQRT(SQM3)*WDTP(0)
32158           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
32159           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32160           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32161           GMMW4=SQRT(SQM4)*WDTP(0)
32162           HBW4C=GMMW4/((SQM4-SQMW)**2+GMMW4**2)
32163 C...Kinematical functions
32164           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32165           THUH34=(2D0*SH*(SQM3+SQM4)+THUH)/(SQM3*SQM4)
32166           GS=(((SH-SQM3-SQM4)**2-4D0*SQM3*SQM4)*THUH34+12D0*THUH)/SH2
32167           GT=THUH34+4D0*THUH/TH2
32168           GST=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/TH)/SH
32169           GU=THUH34+4D0*THUH/UH2
32170           GSU=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/UH)/SH
32171 C...Common factors and couplings
32172           FACWW=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)
32173           FACWW=FACWW*WIDS(24,1)
32174           CGG=AEM**2/2D0
32175           CGZ=AEM**2/(4D0*XW)*HBWZC*(1D0-SQMZ/SH)
32176           CZZ=AEM**2/(32D0*XW**2)*HBWZC
32177           CNG=AEM**2/(4D0*XW)
32178           CNZ=AEM**2/(16D0*XW**2)*HBWZC*(1D0-SQMZ/SH)
32179           CNN=AEM**2/(16D0*XW**2)
32180 C...Coulomb factor for W+W- pair
32181           IF(MSTP(40).GE.1.AND.MSTP(40).LE.3) THEN
32182             COULE=(SH-4D0*SQMW)/(4D0*PMAS(24,1))
32183             COULP=MAX(1D-10,0.5D0*BE34*SQRT(SH))
32184             IF(COULE.LT.100D0*PMAS(24,2)) THEN
32185               COULP1=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
32186      &        PMAS(24,2)**2)-COULE))
32187             ELSE
32188               COULP1=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/COULE))
32189             ENDIF
32190             IF(COULE.GT.-100D0*PMAS(24,2)) THEN
32191               COULP2=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
32192      &        PMAS(24,2)**2)+COULE))
32193             ELSE
32194               COULP2=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/
32195      &        ABS(COULE)))
32196             ENDIF
32197             IF(MSTP(40).EQ.1) THEN
32198               COULDC=PARU(1)-2D0*ATAN((COULP1**2+COULP2**2-COULP**2)/
32199      &        MAX(1D-10,2D0*COULP*COULP1))
32200               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
32201             ELSEIF(MSTP(40).EQ.2) THEN
32202               COULCK=DCMPLX(DBLE(COULP1),DBLE(COULP2))
32203               COULCP=DCMPLX(0D0,DBLE(COULP))
32204               COULCD=(COULCK+COULCP)/(COULCK-COULCP)
32205               COULCR=1D0+DBLE(PARU(101)*SQRT(SH))/
32206      &        (4D0*COULCP)*LOG(COULCD)
32207               COULCS=DCMPLX(0D0,0D0)
32208               NSTP=100
32209               DO 300 ISTP=1,NSTP
32210                 COULXX=(ISTP-0.5)/NSTP
32211                 COULCS=COULCS+(1D0/COULXX)*LOG((1D0+COULXX*COULCD)/
32212      &          (1D0+COULXX/COULCD))
32213   300         CONTINUE
32214               COULCR=COULCR+DBLE(PARU(101)**2*SH)/(16D0*COULCP*COULCK)*
32215      &        (COULCS/NSTP)
32216               FACCOU=ABS(COULCR)**2
32217             ELSEIF(MSTP(40).EQ.3) THEN
32218               COULDC=PARU(1)-2D0*(1D0-BE34)**2*ATAN((COULP1**2+
32219      &        COULP2**2-COULP**2)/MAX(1D-10,2D0*COULP*COULP1))
32220               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
32221             ENDIF
32222           ELSEIF(MSTP(40).EQ.4) THEN
32223             FACCOU=1D0+0.5D0*PARU(101)*PARU(1)/MAX(1D-5,BE34)
32224           ELSE
32225             FACCOU=1D0
32226           ENDIF
32227           VINT(95)=FACCOU
32228           FACWW=FACWW*FACCOU
32229 C...Loop over allowed flavours
32230           DO 310 I=MMINA,MMAXA
32231             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
32232             EI=KCHG(IABS(I),1)/3D0
32233             AI=SIGN(1D0,EI+0.1D0)
32234             VI=AI-4D0*EI*XWV
32235             FCOI=1D0
32236             IF(IABS(I).LE.10) FCOI=FACA/3D0
32237             IF(MSTP(50).LE.0.OR.IABS(I).LE.10) THEN
32238               IF(AI.LT.0D0) THEN
32239                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS+
32240      &          (CNG*EI+CNZ*(VI+AI))*GST+CNN*GT
32241               ELSE
32242                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS-
32243      &          (CNG*EI+CNZ*(VI+AI))*GSU+CNN*GU
32244               ENDIF
32245             ELSE
32246               XMW02=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
32247               BET=SQRT(1D0-4D0*XMW02/SH)
32248               GAT=1D0/SQRT(1D0-BET**2)
32249               STHE2=1D0-CTH**2
32250               AMPZG=BET**3*(16D0+(4D0*BET**2*GAT**2+3D0/GAT**2)*STHE2)
32251               AMPNU=BET*(2D0+BET**2*GAT**2*STHE2/2D0+
32252      &        2D0*BET**2*(1D0-BET**2)*STHE2/(1D0-2D0*BET*CTH+BET**2)**2)
32253               AMPNG=BET*((1D0+BET**2)*(4D0+BET**2*GAT**2*STHE2)+
32254      &        2D0*(1D0-BET**2)*(BET**2*STHE2-2D0*(1D0-BET**2))/
32255      &        (1D0-2D0*BET*CTH+BET**2))
32256               PROPI1=(0.25D0*SQMZ/XMW02)*HBWZC*(1D0-SQMZ/SH)
32257               PROPI2=(0.25D0*SQMZ/XMW02)**2*HBWZC
32258               A0=(2D0*(XMW02/SQMZ)-(1D0-BET**2)*XW)*POLL
32259               A1=(2D0*(XMW02/SQMZ)**2-2*XMW02/SQMZ*(1D0-BET**2)*XW)*POLL
32260               A2=(1D0-BET**2)**2*XW**2*(POLR+POLL)/2D0
32261               ATOT=AMPNU*POLL+(A1+A2)*PROPI2*AMPZG-A0*PROPI1*AMPNG
32262               ATOT=ATOT*CNN/SQMW*SH/BET*2D0
32263               DSIGWW=ATOT
32264             ENDIF
32265             NCHN=NCHN+1
32266             ISIG(NCHN,1)=I
32267             ISIG(NCHN,2)=-I
32268             ISIG(NCHN,3)=1
32269             SIGH(NCHN)=FACWW*FCOI*DSIGWW
32270   310     CONTINUE
32271  
32272         ELSEIF(ISUB.EQ.30) THEN
32273 C...f + g -> f + (gamma*/Z0) (q + g -> q + (gamma*/Z0) only)
32274           FZQ=COMFAC*FACA*AS*AEM*(1D0/3D0)*(SH2+UH2+2D0*SQM4*TH)/
32275      &    (-SH*UH)
32276 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32277           HFGG=0D0
32278           HFGZ=0D0
32279           HFZZ=0D0
32280           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32281           DO 320 I=1,MIN(16,MDCY(23,3))
32282             IDC=I+MDCY(23,2)-1
32283             IF(MDME(IDC,1).LT.0) GOTO 320
32284             IMDM=0
32285             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
32286      &      IMDM=1
32287             IF(I.LE.8) THEN
32288               EF=KCHG(I,1)/3D0
32289               AF=SIGN(1D0,EF+0.1D0)
32290               VF=AF-4D0*EF*XWV
32291             ELSEIF(I.LE.16) THEN
32292               EF=KCHG(I+2,1)/3D0
32293               AF=SIGN(1D0,EF+0.1D0)
32294               VF=AF-4D0*EF*XWV
32295             ENDIF
32296             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32297             IF(4D0*RM1.LT.1D0) THEN
32298               FCOF=1D0
32299               IF(I.LE.8) FCOF=3D0*RADC4
32300               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32301               IF(IMDM.EQ.1) THEN
32302                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32303                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32304                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
32305      &          AF**2*(1D0-4D0*RM1))*BE34
32306               ENDIF
32307             ENDIF
32308   320     CONTINUE
32309 C...Propagators: as simulated in PYOFSH and as desired
32310           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32311           MINT15=MINT(15)
32312           MINT(15)=1
32313           MINT(61)=1
32314           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32315           MINT(15)=MINT15
32316           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32317           HFGG=HFGG*HFAEM*VINT(111)/SQM4
32318           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
32319           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
32320 C...Loop over flavours; consider full gamma/Z structure
32321           DO 340 I=MMINA,MMAXA
32322             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
32323             EI=KCHG(IABS(I),1)/3D0
32324             AI=SIGN(1D0,EI)
32325             VI=AI-4D0*EI*XWV
32326             FACZQ=FZQ*(EI**2*HFGG+EI*VI*HFGZ+
32327      &      (VI**2+AI**2)*HFZZ)/HBW4
32328             DO 330 ISDE=1,2
32329               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
32330               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
32331               NCHN=NCHN+1
32332               ISIG(NCHN,ISDE)=I
32333               ISIG(NCHN,3-ISDE)=21
32334               ISIG(NCHN,3)=1
32335               SIGH(NCHN)=FACZQ
32336   330       CONTINUE
32337   340     CONTINUE
32338  
32339         ELSEIF(ISUB.EQ.31) THEN
32340 C...f + g -> f' + W+/- (q + g -> q' + W+/- only)
32341           FACWQ=COMFAC*FACA*AS*AEM/XW*1D0/12D0*
32342      &    (SH2+UH2+2D0*SQM4*TH)/(-SH*UH)
32343 C...Propagators: as simulated in PYOFSH and as desired
32344           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32345           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32346           GMMWC=SQRT(SQM4)*WDTP(0)
32347           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
32348           FACWQ=FACWQ*HBW4C/HBW4
32349           DO 360 I=MMINA,MMAXA
32350             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
32351             IA=IABS(I)
32352             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
32353             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
32354             DO 350 ISDE=1,2
32355               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
32356               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
32357               NCHN=NCHN+1
32358               ISIG(NCHN,ISDE)=I
32359               ISIG(NCHN,3-ISDE)=21
32360               ISIG(NCHN,3)=1
32361               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
32362   350       CONTINUE
32363   360     CONTINUE
32364  
32365         ELSEIF(ISUB.EQ.35) THEN
32366 C...f + gamma -> f + (gamma*/Z0)
32367           IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) THEN
32368             FZQN=SH2+UH2+2D0*(SQM4-VINT(3)**2)*TH
32369             FZQDTM=VINT(3)**2*SQM4-SH*(UH-VINT(4)**2)
32370           ELSEIF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) THEN
32371             FZQN=SH2+UH2+2D0*(SQM4-VINT(4)**2)*TH
32372             FZQDTM=VINT(4)**2*SQM4-SH*(UH-VINT(3)**2)
32373           ELSE
32374             FZQN=SH2+UH2+2D0*SQM4*TH
32375             FZQDTM=-SH*UH
32376           ENDIF
32377           FZQN=COMFAC*2D0*AEM**2*MAX(0D0,FZQN)
32378 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32379           HFGG=0D0
32380           HFGZ=0D0
32381           HFZZ=0D0
32382           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32383           DO 370 I=1,MIN(16,MDCY(23,3))
32384             IDC=I+MDCY(23,2)-1
32385             IF(MDME(IDC,1).LT.0) GOTO 370
32386             IMDM=0
32387             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
32388      &      IMDM=1
32389             IF(I.LE.8) THEN
32390               EF=KCHG(I,1)/3D0
32391               AF=SIGN(1D0,EF+0.1D0)
32392               VF=AF-4D0*EF*XWV
32393             ELSEIF(I.LE.16) THEN
32394               EF=KCHG(I+2,1)/3D0
32395               AF=SIGN(1D0,EF+0.1D0)
32396               VF=AF-4D0*EF*XWV
32397             ENDIF
32398             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32399             IF(4D0*RM1.LT.1D0) THEN
32400               FCOF=1D0
32401               IF(I.LE.8) FCOF=3D0*RADC4
32402               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32403               IF(IMDM.EQ.1) THEN
32404                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32405                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32406                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
32407      &          AF**2*(1D0-4D0*RM1))*BE34
32408               ENDIF
32409             ENDIF
32410   370     CONTINUE
32411 C...Propagators: as simulated in PYOFSH and as desired
32412           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32413           MINT15=MINT(15)
32414           MINT(15)=1
32415           MINT(61)=1
32416           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32417           MINT(15)=MINT15
32418           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32419           HFGG=HFGG*HFAEM*VINT(111)/SQM4
32420           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
32421           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
32422 C...Loop over flavours; consider full gamma/Z structure
32423           DO 390 I=MMINA,MMAXA
32424             IF(I.EQ.0) GOTO 390
32425             EI=KCHG(IABS(I),1)/3D0
32426             AI=SIGN(1D0,EI)
32427             VI=AI-4D0*EI*XWV
32428             FACZQ=EI**2*(EI**2*HFGG+EI*VI*HFGZ+
32429      &      (VI**2+AI**2)*HFZZ)/HBW4
32430             FZQD=MAX(PMAS(IABS(I),1)**2*SQM4,FZQDTM)
32431             DO 380 ISDE=1,2
32432               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 380
32433               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 380
32434               NCHN=NCHN+1
32435               ISIG(NCHN,ISDE)=I
32436               ISIG(NCHN,3-ISDE)=22
32437               ISIG(NCHN,3)=1
32438               SIGH(NCHN)=FACZQ*FZQN/FZQD
32439   380       CONTINUE
32440   390     CONTINUE
32441  
32442         ELSEIF(ISUB.EQ.36) THEN
32443 C...f + gamma -> f' + W+/-
32444           FWQ=COMFAC*AEM**2/(2D0*XW)*
32445      &    (SH2+UH2+2D0*SQM4*TH)/(SQPTH*SQM4-SH*UH)
32446 C...Propagators: as simulated in PYOFSH and as desired
32447           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32448           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32449           GMMWC=SQRT(SQM4)*WDTP(0)
32450           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
32451           FWQ=FWQ*HBW4C/HBW4
32452           DO 410 I=MMINA,MMAXA
32453             IF(I.EQ.0) GOTO 410
32454             IA=IABS(I)
32455             EIA=ABS(KCHG(IABS(I),1)/3D0)
32456             FACWQ=FWQ*(EIA-SH/(SH+UH))**2
32457             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
32458             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
32459             DO 400 ISDE=1,2
32460               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 400
32461               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 400
32462               NCHN=NCHN+1
32463               ISIG(NCHN,ISDE)=I
32464               ISIG(NCHN,3-ISDE)=22
32465               ISIG(NCHN,3)=1
32466               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
32467   400       CONTINUE
32468   410     CONTINUE
32469         ENDIF
32470  
32471       ELSEIF(ISUB.LE.100) THEN
32472         IF(ISUB.EQ.69) THEN
32473 C...gamma + gamma -> W+ + W-
32474           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
32475           FPROP=SH2/((SQMWE-TH)*(SQMWE-UH))
32476           FACWW=COMFAC*6D0*AEM**2*(1D0-FPROP*(4D0/3D0+2D0*SQMWE/SH)+
32477      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/SH)**2))*WIDS(24,1)
32478           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 420
32479           NCHN=NCHN+1
32480           ISIG(NCHN,1)=22
32481           ISIG(NCHN,2)=22
32482           ISIG(NCHN,3)=1
32483           SIGH(NCHN)=FACWW
32484   420     CONTINUE
32485  
32486         ELSEIF(ISUB.EQ.70) THEN
32487 C...gamma + W+/- -> Z0 + W+/-
32488           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
32489           FPROP=(TH-SQMWE)**2/(-SH*(SQMWE-UH))
32490           FACZW=COMFAC*6D0*AEM**2*(XW1/XW)*
32491      &    (1D0-FPROP*(4D0/3D0+2D0*SQMWE/(TH-SQMWE))+
32492      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/(TH-SQMWE))**2))*WIDS(23,2)
32493           DO 440 KCHW=1,-1,-2
32494             DO 430 ISDE=1,2
32495               IF(KFAC(ISDE,22)*KFAC(3-ISDE,24*KCHW).EQ.0) GOTO 430
32496               NCHN=NCHN+1
32497               ISIG(NCHN,ISDE)=22
32498               ISIG(NCHN,3-ISDE)=24*KCHW
32499               ISIG(NCHN,3)=1
32500               SIGH(NCHN)=FACZW*WIDS(24,(5-KCHW)/2)
32501   430       CONTINUE
32502   440     CONTINUE
32503         ENDIF
32504       ENDIF
32505  
32506       RETURN
32507       END
32508  
32509 C*********************************************************************
32510  
32511 C...PYSGHG
32512 C...Subprocess cross sections for Higgs processes,
32513 C...except Higgs pairs in PYSGSU, but including WW scattering.
32514 C...Auxiliary to PYSIGH.
32515  
32516       SUBROUTINE PYSGHG(NCHN,SIGS)
32517  
32518 C...Double precision and integer declarations
32519       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
32520       IMPLICIT INTEGER(I-N)
32521       INTEGER PYK,PYCHGE,PYCOMP
32522 C...Parameter statement to help give large particle numbers.
32523       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
32524      &KEXCIT=4000000,KDIMEN=5000000)
32525 C...Commonblocks
32526       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
32527       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
32528       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
32529       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
32530       COMMON/PYINT1/MINT(400),VINT(400)
32531       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
32532       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
32533       COMMON/PYINT4/MWID(500),WIDS(500,5)
32534       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
32535       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
32536       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
32537      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
32538      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
32539      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
32540       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
32541      &/PYINT3/,/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/
32542 C...Local arrays and complex variables
32543       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
32544       COMPLEX*16 A004,A204,A114,A00U,A20U,A11U
32545       COMPLEX*16 CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF
32546  
32547 C...Convert H or A process into equivalent h one
32548       IHIGG=1
32549       KFHIGG=25
32550       IF(ISUB.EQ.401.OR.ISUB.EQ.402) THEN
32551          KFHIGG=KFPR(ISUB,1)
32552       END IF
32553       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
32554      &ISUB.LE.190)) THEN
32555         IHIGG=2
32556         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
32557         KFHIGG=33+IHIGG
32558         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
32559         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
32560         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
32561         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
32562         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
32563         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
32564         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
32565         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
32566         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
32567         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
32568         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
32569         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
32570       ENDIF
32571       SQMH=PMAS(KFHIGG,1)**2
32572       GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2)
32573  
32574 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
32575       IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ.
32576      &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN
32577 C...Calculate M_R and N_R functions for Higgs-like and QCD-like models
32578         IF(MSTP(46).LE.4) THEN
32579           HDTLH=LOG(PMAS(25,1)/PARP(44))
32580           HDTMR=(4.5D0*PARU(1)/SQRT(3D0)-74D0/9D0)/8D0+HDTLH/12D0
32581           HDTNR=-1D0/18D0+HDTLH/6D0
32582         ELSE
32583           HDTNM=0.125D0*(1D0/(288D0*PARU(1)**2)+(PARP(47)/PARP(45))**2)
32584           HDTLQ=LOG(PARP(45)/PARP(44))
32585           HDTMR=-(4D0*PARU(1))**2*0.5D0*HDTNM+HDTLQ/12D0
32586           HDTNR=(4D0*PARU(1))**2*HDTNM+HDTLQ/6D0
32587         ENDIF
32588  
32589 C...Calculate lowest and next-to-lowest order partial wave amplitudes
32590         HDTV=1D0/(16D0*PARU(1)*PARP(47)**2)
32591         A00L=DBLE(HDTV*SH)
32592         A20L=-0.5D0*A00L
32593         A11L=A00L/6D0
32594         HDTLS=LOG(SH/PARP(44)**2)
32595         A004=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
32596      &  CMPLX(DBLE((176D0*HDTMR+112D0*HDTNR)/3D0+11D0/27D0-
32597      &  (50D0/9D0)*HDTLS),DBLE(4D0*PARU(1)))
32598         A204=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
32599      &  CMPLX(DBLE(32D0*(HDTMR+2D0*HDTNR)/3D0+25D0/54D0-
32600      &  (20D0/9D0)*HDTLS),DBLE(PARU(1)))
32601         A114=DBLE((HDTV*SH)**2/(6D0*PARU(1)))*
32602      &  CMPLX(DBLE(4D0*(-2D0*HDTMR+HDTNR)-1D0/18D0),DBLE(PARU(1)/6D0))
32603  
32604 C...Unitarize partial wave amplitudes with Pade or K-matrix method
32605         IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN
32606           A00U=A00L/(1D0-A004/A00L)
32607           A20U=A20L/(1D0-A204/A20L)
32608           A11U=A11L/(1D0-A114/A11L)
32609         ELSE
32610           A00U=(A00L+DBLE(A004))/(1D0-DCMPLX(0.D0,A00L+DBLE(A004)))
32611           A20U=(A20L+DBLE(A204))/(1D0-DCMPLX(0.D0,A20L+DBLE(A204)))
32612           A11U=(A11L+DBLE(A114))/(1D0-DCMPLX(0.D0,A11L+DBLE(A114)))
32613         ENDIF
32614       ENDIF
32615  
32616 C...Differential cross section expressions.
32617  
32618       IF(ISUB.LE.60) THEN
32619         IF(ISUB.EQ.3) THEN
32620 C...f + fbar -> h0 (or H0, or A0)
32621           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
32622           HS=SHR*WDTP(0)
32623           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
32624           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
32625      &    FACBW=0D0
32626           HP=AEM/(8D0*XW)*SH/SQMW*SH
32627           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
32628           DO 100 I=MMINA,MMAXA
32629             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
32630             IA=IABS(I)
32631             RMQ=PYMRUN(IA,SH)**2/SH
32632             HI=HP*RMQ
32633             IF(IA.LE.10) HI=HP*RMQ*FACA/3D0
32634             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
32635               IKFI=1
32636               IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
32637               IF(IA.GT.10) IKFI=3
32638               HI=HI*PARU(150+10*IHIGG+IKFI)**2
32639               IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
32640                 HI=HI/(1D0+RMSS(41))**2
32641                 IF(IHIGG.NE.3) THEN
32642                   HI=HI*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
32643      &            PARU(151+10*IHIGG))**2
32644                 ENDIF
32645               ENDIF
32646             ENDIF
32647             NCHN=NCHN+1
32648             ISIG(NCHN,1)=I
32649             ISIG(NCHN,2)=-I
32650             ISIG(NCHN,3)=1
32651             SIGH(NCHN)=HI*FACBW*HF
32652   100     CONTINUE
32653  
32654         ELSEIF(ISUB.EQ.5) THEN
32655 C...Z0 + Z0 -> h0
32656           CALL PYWIDT(25,SH,WDTP,WDTE)
32657           HS=SHR*WDTP(0)
32658           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
32659           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
32660           HP=AEM/(8D0*XW)*SH/SQMW*SH
32661           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
32662           HI=HP/4D0
32663           FACI=8D0/(PARU(1)**2*XW1)*(AEM*XWC)**2
32664           DO 120 I=MMIN1,MMAX1
32665             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
32666             DO 110 J=MMIN2,MMAX2
32667               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
32668               EI=KCHG(IABS(I),1)/3D0
32669               AI=SIGN(1D0,EI)
32670               VI=AI-4D0*EI*XWV
32671               EJ=KCHG(IABS(J),1)/3D0
32672               AJ=SIGN(1D0,EJ)
32673               VJ=AJ-4D0*EJ*XWV
32674               NCHN=NCHN+1
32675               ISIG(NCHN,1)=I
32676               ISIG(NCHN,2)=J
32677               ISIG(NCHN,3)=1
32678               SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF
32679   110       CONTINUE
32680   120     CONTINUE
32681  
32682         ELSEIF(ISUB.EQ.8) THEN
32683 C...W+ + W- -> h0
32684           CALL PYWIDT(25,SH,WDTP,WDTE)
32685           HS=SHR*WDTP(0)
32686           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
32687           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
32688           HP=AEM/(8D0*XW)*SH/SQMW*SH
32689           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
32690           HI=HP/2D0
32691           FACI=1D0/(4D0*PARU(1)**2)*(AEM/XW)**2
32692           DO 140 I=MMIN1,MMAX1
32693             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
32694             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
32695             DO 130 J=MMIN2,MMAX2
32696               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
32697               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
32698               IF(EI*EJ.GT.0D0) GOTO 130
32699               NCHN=NCHN+1
32700               ISIG(NCHN,1)=I
32701               ISIG(NCHN,2)=J
32702               ISIG(NCHN,3)=1
32703               SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF
32704   130       CONTINUE
32705   140     CONTINUE
32706  
32707         ELSEIF(ISUB.EQ.24) THEN
32708 C...f + fbar -> Z0 + h0 (or H0, or A0)
32709 C...Propagators: Z0, h0 as simulated in PYOFSH and as desired
32710           HBW3=GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
32711           CALL PYWIDT(23,SQM3,WDTP,WDTE)
32712           GMMZ3=SQRT(SQM3)*WDTP(0)
32713           HBW3C=GMMZ3/((SQM3-SQMZ)**2+GMMZ3**2)
32714           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
32715           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
32716           GMMH4=SQRT(SQM4)*WDTP(0)
32717           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
32718           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32719           FACHZ=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*8D0*(AEM*XWC)**2*
32720      &    (THUH+2D0*SH*SQM3)/((SH-SQMZ)**2+GMMZ**2)
32721           FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2)
32722           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ*
32723      &    PARU(154+10*IHIGG)**2
32724           DO 150 I=MMINA,MMAXA
32725             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
32726             EI=KCHG(IABS(I),1)/3D0
32727             AI=SIGN(1D0,EI)
32728             VI=AI-4D0*EI*XWV
32729             FCOI=1D0
32730             IF(IABS(I).LE.10) FCOI=FACA/3D0
32731             NCHN=NCHN+1
32732             ISIG(NCHN,1)=I
32733             ISIG(NCHN,2)=-I
32734             ISIG(NCHN,3)=1
32735             SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2)
32736   150     CONTINUE
32737  
32738         ELSEIF(ISUB.EQ.26) THEN
32739 C...f + fbar' -> W+/- + h0 (or H0, or A0)
32740 C...Propagators: W+-, h0 as simulated in PYOFSH and as desired
32741           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
32742           CALL PYWIDT(24,SQM3,WDTP,WDTE)
32743           GMMW3=SQRT(SQM3)*WDTP(0)
32744           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
32745           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
32746           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
32747           GMMH4=SQRT(SQM4)*WDTP(0)
32748           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
32749           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32750           FACHW=COMFAC*0.125D0*(AEM/XW)**2*(THUH+2D0*SH*SQM3)/
32751      &    ((SH-SQMW)**2+GMMW**2)*(HBW3C/HBW3)*(HBW4C/HBW4)
32752           FACHW=FACHW*WIDS(KFHIGG,2)
32753           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW*
32754      &    PARU(155+10*IHIGG)**2
32755           DO 170 I=MMIN1,MMAX1
32756             IA=IABS(I)
32757             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 170
32758             DO 160 J=MMIN2,MMAX2
32759               JA=IABS(J)
32760               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 160
32761               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 160
32762               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
32763      &        GOTO 160
32764               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
32765               FCKM=1D0
32766               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
32767               FCOI=1D0
32768               IF(IA.LE.10) FCOI=FACA/3D0
32769               NCHN=NCHN+1
32770               ISIG(NCHN,1)=I
32771               ISIG(NCHN,2)=J
32772               ISIG(NCHN,3)=1
32773               SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2)
32774   160       CONTINUE
32775   170     CONTINUE
32776  
32777         ELSEIF(ISUB.EQ.32) THEN
32778 C...f + g -> f + h0 (q + g -> q + h0 only)
32779           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24D0
32780 C...H propagator: as simulated in PYOFSH and as desired
32781           SQMHC=PMAS(25,1)**2
32782           GMMHC=PMAS(25,1)*PMAS(25,2)
32783           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
32784           CALL PYWIDT(25,SQM4,WDTP,WDTE)
32785           GMMHCC=SQRT(SQM4)*WDTP(0)
32786           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
32787           FHCQ=FHCQ*HBW4C/HBW4
32788           DO 190 I=MMINA,MMAXA
32789             IA=IABS(I)
32790             IF(IA.NE.5) GOTO 190
32791             SQML=PYMRUN(IA,SH)**2
32792             SQMQ=PMAS(IA,1)**2
32793             FACHCQ=FHCQ*SQML/SQMW*
32794      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQM4-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH-
32795      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQM4-UH)/(SQMQ-UH)*
32796      &      (SQM4-SQMQ-SH)/SH)
32797             DO 180 ISDE=1,2
32798               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
32799               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
32800               NCHN=NCHN+1
32801               ISIG(NCHN,ISDE)=I
32802               ISIG(NCHN,3-ISDE)=21
32803               ISIG(NCHN,3)=1
32804               SIGH(NCHN)=FACHCQ*WIDS(25,2)
32805   180       CONTINUE
32806   190     CONTINUE
32807         ENDIF
32808  
32809       ELSEIF(ISUB.LE.80) THEN
32810         IF(ISUB.EQ.71) THEN
32811 C...Z0 + Z0 -> Z0 + Z0
32812           IF(SH.LE.4.01D0*SQMZ) GOTO 220
32813  
32814           IF(MSTP(46).LE.2) THEN
32815 C...Exact scattering ME:s for on-mass-shell gauge bosons
32816             BE2=1D0-4D0*SQMZ/SH
32817             TH=-0.5D0*SH*BE2*(1D0-CTH)
32818             UH=-0.5D0*SH*BE2*(1D0+CTH)
32819             IF(MAX(TH,UH).GT.-1D0) GOTO 220
32820             SHANG=1D0/XW1*SQMW/SQMZ*(1D0+BE2)**2
32821             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
32822             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
32823             THANG=1D0/XW1*SQMW/SQMZ*(BE2-CTH)**2
32824             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
32825             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
32826             UHANG=1D0/XW1*SQMW/SQMZ*(BE2+CTH)**2
32827             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
32828             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
32829             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
32830      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
32831             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
32832             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+
32833      &      (ASHIM+ATHIM+AUHIM)**2)
32834             IF(MSTP(46).EQ.2) FACZZ=0D0
32835  
32836           ELSE
32837 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
32838             FACZZ=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
32839      &      ABS(A00U+2D0*A20U)**2
32840           ENDIF
32841           FACZZ=FACZZ*WIDS(23,1)
32842  
32843           DO 210 I=MMIN1,MMAX1
32844             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 210
32845             EI=KCHG(IABS(I),1)/3D0
32846             AI=SIGN(1D0,EI)
32847             VI=AI-4D0*EI*XWV
32848             AVI=AI**2+VI**2
32849             DO 200 J=MMIN2,MMAX2
32850               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 200
32851               EJ=KCHG(IABS(J),1)/3D0
32852               AJ=SIGN(1D0,EJ)
32853               VJ=AJ-4D0*EJ*XWV
32854               AVJ=AJ**2+VJ**2
32855               NCHN=NCHN+1
32856               ISIG(NCHN,1)=I
32857               ISIG(NCHN,2)=J
32858               ISIG(NCHN,3)=1
32859               SIGH(NCHN)=0.5D0*FACZZ*AVI*AVJ
32860   200       CONTINUE
32861   210     CONTINUE
32862   220     CONTINUE
32863  
32864         ELSEIF(ISUB.EQ.72) THEN
32865 C...Z0 + Z0 -> W+ + W-
32866           IF(SH.LE.4.01D0*SQMZ) GOTO 250
32867  
32868           IF(MSTP(46).LE.2) THEN
32869 C...Exact scattering ME:s for on-mass-shell gauge bosons
32870             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
32871             CTH2=CTH**2
32872             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
32873             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
32874             IF(MAX(TH,UH).GT.-1D0) GOTO 250
32875             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
32876      &      (1D0-2D0*SQMZ/SH)
32877             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
32878             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
32879             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
32880      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
32881      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
32882      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
32883      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
32884             ATWIM=0D0
32885             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
32886      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
32887      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
32888      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
32889      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
32890             AUWIM=0D0
32891             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
32892             A4IM=0D0
32893             FACWW=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
32894      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
32895             IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2)
32896             IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+
32897      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
32898             IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+
32899      &      (ATWIM+AUWIM+A4IM)**2)
32900  
32901           ELSE
32902 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
32903             FACWW=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
32904      &      ABS(A00U-A20U)**2
32905           ENDIF
32906           FACWW=FACWW*WIDS(24,1)
32907  
32908           DO 240 I=MMIN1,MMAX1
32909             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240
32910             EI=KCHG(IABS(I),1)/3D0
32911             AI=SIGN(1D0,EI)
32912             VI=AI-4D0*EI*XWV
32913             AVI=AI**2+VI**2
32914             DO 230 J=MMIN2,MMAX2
32915               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230
32916               EJ=KCHG(IABS(J),1)/3D0
32917               AJ=SIGN(1D0,EJ)
32918               VJ=AJ-4D0*EJ*XWV
32919               AVJ=AJ**2+VJ**2
32920               NCHN=NCHN+1
32921               ISIG(NCHN,1)=I
32922               ISIG(NCHN,2)=J
32923               ISIG(NCHN,3)=1
32924               SIGH(NCHN)=FACWW*AVI*AVJ
32925   230       CONTINUE
32926   240     CONTINUE
32927   250     CONTINUE
32928  
32929         ELSEIF(ISUB.EQ.73) THEN
32930 C...Z0 + W+/- -> Z0 + W+/-
32931           IF(SH.LE.2D0*SQMZ+2D0*SQMW) GOTO 280
32932  
32933           IF(MSTP(46).LE.2) THEN
32934 C...Exact scattering ME:s for on-mass-shell gauge bosons
32935             BE2=1D0-2D0*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2
32936             EP1=1D0-(SQMZ-SQMW)/SH
32937             EP2=1D0+(SQMZ-SQMW)/SH
32938             TH=-0.5D0*SH*BE2*(1D0-CTH)
32939             UH=(SQMZ-SQMW)**2/SH-0.5D0*SH*BE2*(1D0+CTH)
32940             IF(MAX(TH,UH).GT.-1D0) GOTO 280
32941             THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH)
32942             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
32943             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
32944             ASWRE=-XW1/SQMZ*SH/(SH-SQMW)*(-BE2*(EP1+EP2)**4*CTH+
32945      &      1D0/4D0*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4D0*BE2*CTH)+
32946      &      2D0*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH-
32947      &      1D0/16D0*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)
32948             ASWIM=0D0
32949             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-BE2*(EP2+EP1*CTH)*
32950      &      (EP1+EP2*CTH)*(BE2+EP1*EP2)+BE2*(EP2+EP1*CTH)*
32951      &      (BE2+EP1*EP2*CTH)*(2D0*EP2-EP2*CTH+EP1)-
32952      &      BE2*(EP2+EP1*CTH)**2*(BE2-EP2**2*CTH)-1D0/8D0*
32953      &      (BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+
32954      &      1D0/32D0*SH/SQMW*(BE2+EP1*EP2*CTH)**2*
32955      &      (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)*
32956      &      (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)*
32957      &      (2D0*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2*
32958      &      (BE2-EP1**2*CTH)-1D0/8D0*(BE2+EP1*EP2*CTH)**2*
32959      &      ((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+1D0/32D0*SH/SQMW*
32960      &      (BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2)
32961             AUWIM=0D0
32962             A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1D0)-
32963      &      2D0*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2D0*BE2*EP1*EP2)
32964             A4IM=0D0
32965             FACZW=COMFAC*1D0/(4096D0*PARU(1)**2*4D0*XW1)*(AEM/XW)**4*
32966      &      (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2
32967             IF(MSTP(46).LE.0) FACZW=0D0
32968             IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+
32969      &      (ATHIM+ASWIM+AUWIM+A4IM)**2)
32970             IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+
32971      &      (ASWIM+AUWIM+A4IM)**2)
32972  
32973           ELSE
32974 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
32975             FACZW=COMFAC*AEM**2/(64D0*PARU(1)**2*XW**2*XW1)*16D0*
32976      &      ABS(A20U+3D0*A11U*DBLE(CTH))**2
32977           ENDIF
32978           FACZW=FACZW*WIDS(23,2)
32979  
32980           DO 270 I=MMIN1,MMAX1
32981             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 270
32982             EI=KCHG(IABS(I),1)/3D0
32983             AI=SIGN(1D0,EI)
32984             VI=AI-4D0*EI*XWV
32985             AVI=AI**2+VI**2
32986             KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I))
32987             DO 260 J=MMIN2,MMAX2
32988               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 260
32989               EJ=KCHG(IABS(J),1)/3D0
32990               AJ=SIGN(1D0,EJ)
32991               VJ=AI-4D0*EJ*XWV
32992               AVJ=AJ**2+VJ**2
32993               KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J))
32994               NCHN=NCHN+1
32995               ISIG(NCHN,1)=I
32996               ISIG(NCHN,2)=J
32997               ISIG(NCHN,3)=1
32998               SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2)
32999               NCHN=NCHN+1
33000               ISIG(NCHN,1)=I
33001               ISIG(NCHN,2)=J
33002               ISIG(NCHN,3)=2
33003               SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ
33004   260       CONTINUE
33005   270     CONTINUE
33006   280     CONTINUE
33007  
33008         ELSEIF(ISUB.EQ.75) THEN
33009 C...W+ + W- -> gamma + gamma
33010  
33011         ELSEIF(ISUB.EQ.76) THEN
33012 C...W+ + W- -> Z0 + Z0
33013           IF(SH.LE.4.01D0*SQMZ) GOTO 310
33014  
33015           IF(MSTP(46).LE.2) THEN
33016 C...Exact scattering ME:s for on-mass-shell gauge bosons
33017             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
33018             CTH2=CTH**2
33019             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
33020             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
33021             IF(MAX(TH,UH).GT.-1D0) GOTO 310
33022             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
33023      &      (1D0-2D0*SQMZ/SH)
33024             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
33025             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
33026             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
33027      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
33028      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
33029      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
33030      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
33031             ATWIM=0D0
33032             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
33033      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
33034      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
33035      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
33036      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
33037             AUWIM=0D0
33038             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
33039             A4IM=0D0
33040             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
33041      &      (SH/SQMW)**2*SH2
33042             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
33043             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+
33044      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
33045             IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+
33046      &      (ATWIM+AUWIM+A4IM)**2)
33047  
33048           ELSE
33049 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33050             FACZZ=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
33051      &      ABS(A00U-A20U)**2
33052           ENDIF
33053           FACZZ=FACZZ*WIDS(23,1)
33054  
33055           DO 300 I=MMIN1,MMAX1
33056             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 300
33057             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33058             DO 290 J=MMIN2,MMAX2
33059               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 290
33060               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33061               IF(EI*EJ.GT.0D0) GOTO 290
33062               NCHN=NCHN+1
33063               ISIG(NCHN,1)=I
33064               ISIG(NCHN,2)=J
33065               ISIG(NCHN,3)=1
33066               SIGH(NCHN)=0.5D0*FACZZ*VINT(180+I)*VINT(180+J)
33067   290       CONTINUE
33068   300     CONTINUE
33069   310     CONTINUE
33070  
33071         ELSEIF(ISUB.EQ.77) THEN
33072 C...W+/- + W+/- -> W+/- + W+/-
33073           IF(SH.LE.4.01D0*SQMW) GOTO 340
33074  
33075           IF(MSTP(46).LE.2) THEN
33076 C...Exact scattering ME:s for on-mass-shell gauge bosons
33077             BE2=1D0-4D0*SQMW/SH
33078             BE4=BE2**2
33079             CTH2=CTH**2
33080             CTH3=CTH**3
33081             TH=-0.5D0*SH*BE2*(1D0-CTH)
33082             UH=-0.5D0*SH*BE2*(1D0+CTH)
33083             IF(MAX(TH,UH).GT.-1D0) GOTO 340
33084             SHANG=(1D0+BE2)**2
33085             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
33086             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
33087             THANG=(BE2-CTH)**2
33088             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
33089             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
33090             UHANG=(BE2+CTH)**2
33091             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
33092             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
33093             SGZANG=1D0/SQMW*BE2*(3D0-BE2)**2*CTH
33094             ASGRE=XW*SGZANG
33095             ASGIM=0D0
33096             ASZRE=XW1*SH/(SH-SQMZ)*SGZANG
33097             ASZIM=0D0
33098             TGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)+BE2*(4D0-10D0*BE2+
33099      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2+BE2*CTH3)
33100             ATGRE=0.5D0*XW*SH/TH*TGZANG
33101             ATGIM=0D0
33102             ATZRE=0.5D0*XW1*SH/(TH-SQMZ)*TGZANG
33103             ATZIM=0D0
33104             UGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)-BE2*(4D0-10D0*BE2+
33105      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2-BE2*CTH3)
33106             AUGRE=0.5D0*XW*SH/UH*UGZANG
33107             AUGIM=0D0
33108             AUZRE=0.5D0*XW1*SH/(UH-SQMZ)*UGZANG
33109             AUZIM=0D0
33110             A4ARE=1D0/SQMW*(1D0+2D0*BE2-6D0*BE2*CTH-CTH2)
33111             A4AIM=0D0
33112             A4SRE=2D0/SQMW*(1D0+2D0*BE2-CTH2)
33113             A4SIM=0D0
33114             FWW=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
33115      &      (SH/SQMW)**2*SH2
33116             IF(MSTP(46).LE.0) THEN
33117               AWWARE=ASHRE
33118               AWWAIM=ASHIM
33119               AWWSRE=0D0
33120               AWWSIM=0D0
33121             ELSEIF(MSTP(46).EQ.1) THEN
33122               AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
33123               AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
33124               AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
33125               AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
33126             ELSE
33127               AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
33128               AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
33129               AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
33130               AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
33131             ENDIF
33132             AWWA2=AWWARE**2+AWWAIM**2
33133             AWWS2=AWWSRE**2+AWWSIM**2
33134  
33135           ELSE
33136 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33137             FWWA=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
33138      &      ABS(A00U+0.5D0*A20U+4.5D0*A11U*DBLE(CTH))**2
33139             FWWS=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*64D0*ABS(A20U)**2
33140           ENDIF
33141  
33142           DO 330 I=MMIN1,MMAX1
33143             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 330
33144             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33145             DO 320 J=MMIN2,MMAX2
33146               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 320
33147               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33148               IF(EI*EJ.LT.0D0) THEN
33149 C...W+W-
33150                 IF(MSTP(45).EQ.1) GOTO 320
33151                 IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1)
33152                 IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1)
33153               ELSE
33154 C...W+W+/W-W-
33155                 IF(MSTP(45).EQ.2) GOTO 320
33156                 IF(MSTP(46).LE.2) FACWW=FWW*AWWS2
33157                 IF(MSTP(46).GE.3) FACWW=FWWS
33158                 IF(EI.GT.0D0) FACWW=FACWW*WIDS(24,4)
33159                 IF(EI.LT.0D0) FACWW=FACWW*WIDS(24,5)
33160               ENDIF
33161               NCHN=NCHN+1
33162               ISIG(NCHN,1)=I
33163               ISIG(NCHN,2)=J
33164               ISIG(NCHN,3)=1
33165               SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J)
33166               IF(EI*EJ.GT.0D0) SIGH(NCHN)=0.5D0*SIGH(NCHN)
33167   320       CONTINUE
33168   330     CONTINUE
33169   340     CONTINUE
33170         ENDIF
33171  
33172       ELSEIF(ISUB.LE.120) THEN
33173         IF(ISUB.EQ.102) THEN
33174 C...g + g -> h0 (or H0, or A0)
33175           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33176           WDTP13=0D0
33177           DO 345 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33178             IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33179      &      KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33180   345     CONTINUE
33181           IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33182      &    '(PYSGHG:) did not find Higgs -> g g channel')  
33183           HS=SHR*WDTP(0)
33184           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33185           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33186           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33187      &    FACBW=0D0
33188           HI=SHR*WDTP13/32D0
33189           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 350
33190           NCHN=NCHN+1
33191           ISIG(NCHN,1)=21
33192           ISIG(NCHN,2)=21
33193           ISIG(NCHN,3)=1
33194           SIGH(NCHN)=HI*FACBW*HF
33195   350     CONTINUE
33196  
33197         ELSEIF(ISUB.EQ.103) THEN
33198 C...gamma + gamma -> h0 (or H0, or A0)
33199           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33200           WDTP14=0D0
33201           DO 355 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33202             IF(KFDP(IDC,1).EQ.22.AND.KFDP(IDC,2).EQ.22.AND.
33203      &      KFDP(IDC,3).EQ.0) WDTP14=PMAS(KFHIGG,2)*BRAT(IDC)
33204   355     CONTINUE
33205           IF(WDTP14.EQ.0D0) CALL PYERRM(26,
33206      &    '(PYSGHG:) did not find Higgs -> gamma gamma channel')  
33207           HS=SHR*WDTP(0)
33208           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33209           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33210           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33211      &    FACBW=0D0
33212           HI=SHR*WDTP14*2D0
33213           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 360
33214           NCHN=NCHN+1
33215           ISIG(NCHN,1)=22
33216           ISIG(NCHN,2)=22
33217           ISIG(NCHN,3)=1
33218           SIGH(NCHN)=HI*FACBW*HF
33219   360     CONTINUE
33220  
33221         ELSEIF(ISUB.EQ.110) THEN
33222 C...f + fbar -> gamma + h0
33223           THUH=MAX(TH*UH,SH*CKIN(3)**2)
33224           FACHG=COMFAC*(3D0*AEM**4)/(2D0*PARU(1)**2*XW*SQMW)*SH*THUH
33225           FACHG=FACHG*WIDS(KFHIGG,2)
33226 C...Calculate loop contributions for intermediate gamma* and Z0
33227           CIGTOT=DCMPLX(0D0,0D0)
33228           CIZTOT=DCMPLX(0D0,0D0)
33229           JMAX=3*MSTP(1)+1
33230           DO 370 J=1,JMAX
33231             IF(J.LE.2*MSTP(1)) THEN
33232               FNC=1D0
33233               EJ=KCHG(J,1)/3D0
33234               AJ=SIGN(1D0,EJ+0.1D0)
33235               VJ=AJ-4D0*EJ*XWV
33236               BALP=SQM4/(2D0*PMAS(J,1))**2
33237               BBET=SH/(2D0*PMAS(J,1))**2
33238             ELSEIF(J.LE.3*MSTP(1)) THEN
33239               FNC=3D0
33240               JL=2*(J-2*MSTP(1))-1
33241               EJ=KCHG(10+JL,1)/3D0
33242               AJ=SIGN(1D0,EJ+0.1D0)
33243               VJ=AJ-4D0*EJ*XWV
33244               BALP=SQM4/(2D0*PMAS(10+JL,1))**2
33245               BBET=SH/(2D0*PMAS(10+JL,1))**2
33246             ELSE
33247               BALP=SQM4/(2D0*PMAS(24,1))**2
33248               BBET=SH/(2D0*PMAS(24,1))**2
33249             ENDIF
33250             BABI=1D0/(BALP-BBET)
33251             IF(BALP.LT.1D0) THEN
33252               F0ALP=DCMPLX(DBLE(ASIN(SQRT(BALP))),0D0)
33253               F1ALP=F0ALP**2
33254             ELSE
33255               F0ALP=DCMPLX(DBLE(LOG(SQRT(BALP)+SQRT(BALP-1D0))),
33256      &        -DBLE(0.5D0*PARU(1)))
33257               F1ALP=-F0ALP**2
33258             ENDIF
33259             F2ALP=DBLE(SQRT(ABS(BALP-1D0)/BALP))*F0ALP
33260             IF(BBET.LT.1D0) THEN
33261               F0BET=DCMPLX(DBLE(ASIN(SQRT(BBET))),0D0)
33262               F1BET=F0BET**2
33263             ELSE
33264               F0BET=DCMPLX(DBLE(LOG(SQRT(BBET)+SQRT(BBET-1D0))),
33265      &        -DBLE(0.5D0*PARU(1)))
33266               F1BET=-F0BET**2
33267             ENDIF
33268             F2BET=DBLE(SQRT(ABS(BBET-1D0)/BBET))*F0BET
33269             IF(J.LE.3*MSTP(1)) THEN
33270               FIF=DBLE(0.5D0*BABI)+DBLE(BABI**2)*(DBLE(0.5D0*(1D0-BALP+
33271      &        BBET))*(F1BET-F1ALP)+DBLE(BBET)*(F2BET-F2ALP))
33272               CIGTOT=CIGTOT+DBLE(FNC*EJ**2)*FIF
33273               CIZTOT=CIZTOT+DBLE(FNC*EJ*VJ)*FIF
33274             ELSE
33275               TXW=XW/XW1
33276               CIGTOT=CIGTOT-0.5*(DBLE(BABI*(1.5D0+BALP))+DBLE(BABI**2)*
33277      &        (DBLE(1.5D0-3D0*BALP+4D0*BBET)*(F1BET-F1ALP)+
33278      &        DBLE(BBET*(2D0*BALP+3D0))*(F2BET-F2ALP)))
33279               CIZTOT=CIZTOT-DBLE(0.5D0*BABI*XW1)*(DBLE(5D0-TXW+2D0*BALP*
33280      &        (1D0-TXW))*(1D0+DBLE(2D0*BABI*BBET)*(F2BET-F2ALP))+
33281      &        DBLE(BABI*(4D0*BBET*(3D0-TXW)-(2D0*BALP-1D0)*(5D0-TXW)))*
33282      &        (F1BET-F1ALP))
33283             ENDIF
33284   370     CONTINUE
33285           CIGTOT=CIGTOT/DBLE(SH)
33286           CIZTOT=CIZTOT*DBLE(XWC)/DCMPLX(DBLE(SH-SQMZ),DBLE(GMMZ))
33287 C...Loop over initial flavours
33288           DO 380 I=MMINA,MMAXA
33289             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
33290             EI=KCHG(IABS(I),1)/3D0
33291             AI=SIGN(1D0,EI)
33292             VI=AI-4D0*EI*XWV
33293             FCOI=1D0
33294             IF(IABS(I).LE.10) FCOI=FACA/3D0
33295             NCHN=NCHN+1
33296             ISIG(NCHN,1)=I
33297             ISIG(NCHN,2)=-I
33298             ISIG(NCHN,3)=1
33299             SIGH(NCHN)=FACHG*FCOI*(ABS(DBLE(EI)*CIGTOT+DBLE(VI)*
33300      &      CIZTOT)**2+AI**2*ABS(CIZTOT)**2)
33301   380     CONTINUE
33302  
33303         ELSEIF(ISUB.EQ.111) THEN
33304 C...f + fbar -> g + h0 (q + qbar -> g + h0 only)
33305           IF(MSTP(38).NE.0) THEN
33306 C...Simple case: only do gg <-> h exactly.
33307           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
33308           WDTP13=0D0
33309           DO 385 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33310             IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33311      &      KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33312   385     CONTINUE
33313           IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33314      &    '(PYSGHG:) did not find Higgs -> g g channel')  
33315           FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP13/SQRT(SQM4))*
33316      &    (TH**2+UH**2)/(SH*SQM4)
33317 C...Propagators: as simulated in PYOFSH and as desired
33318           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
33319           GMMHC=SQRT(SQM4)*WDTP(0)
33320           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
33321      &    ((SQM4-SQMH)**2+GMMHC**2)
33322           FACGH=FACGH*HBW4C/HBW4
33323           ELSE
33324 C...Messy case: do full loop integrals
33325           A5STUR=0D0
33326           A5STUI=0D0
33327           DO 390 I=1,2*MSTP(1)
33328             SQMQ=PMAS(I,1)**2
33329             EPSS=4D0*SQMQ/SH
33330             EPSH=4D0*SQMQ/SQMH
33331             CALL PYWAUX(1,EPSS,W1SR,W1SI)
33332             CALL PYWAUX(1,EPSH,W1HR,W1HI)
33333             CALL PYWAUX(2,EPSS,W2SR,W2SI)
33334             CALL PYWAUX(2,EPSH,W2HR,W2HI)
33335             A5STUR=A5STUR+EPSH*(1D0+SH/(TH+UH)*(W1SR-W1HR)+
33336      &      (0.25D0-SQMQ/(TH+UH))*(W2SR-W2HR))
33337             A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+
33338      &      (0.25D0-SQMQ/(TH+UH))*(W2SI-W2HI))
33339   390     CONTINUE
33340           FACGH=COMFAC*FACA/(144D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
33341      &    SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2)
33342           FACGH=FACGH*WIDS(25,2)
33343           ENDIF
33344           DO 400 I=MMINA,MMAXA
33345             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33346      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
33347             NCHN=NCHN+1
33348             ISIG(NCHN,1)=I
33349             ISIG(NCHN,2)=-I
33350             ISIG(NCHN,3)=1
33351             SIGH(NCHN)=FACGH
33352   400     CONTINUE
33353  
33354         ELSEIF(ISUB.EQ.112) THEN
33355 C...f + g -> f + h0 (q + g -> q + h0 only)
33356           IF(MSTP(38).NE.0) THEN
33357 C...Simple case: only do gg <-> h exactly.
33358           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
33359           WDTP13=0D0
33360           DO 405 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33361             IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33362      &      KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33363   405     CONTINUE
33364           IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33365      &    '(PYSGHG:) did not find Higgs -> g g channel')  
33366           FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP13/SQRT(SQM4))*
33367      &    (SH**2+UH**2)/(-TH*SQM4)
33368 C...Propagators: as simulated in PYOFSH and as desired
33369           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
33370           GMMHC=SQRT(SQM4)*WDTP(0)
33371           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
33372      &    ((SQM4-SQMH)**2+GMMHC**2)
33373           FACQH=FACQH*HBW4C/HBW4
33374           ELSE
33375 C...Messy case: do full loop integrals
33376           A5TSUR=0D0
33377           A5TSUI=0D0
33378           DO 410 I=1,2*MSTP(1)
33379             SQMQ=PMAS(I,1)**2
33380             EPST=4D0*SQMQ/TH
33381             EPSH=4D0*SQMQ/SQMH
33382             CALL PYWAUX(1,EPST,W1TR,W1TI)
33383             CALL PYWAUX(1,EPSH,W1HR,W1HI)
33384             CALL PYWAUX(2,EPST,W2TR,W2TI)
33385             CALL PYWAUX(2,EPSH,W2HR,W2HI)
33386             A5TSUR=A5TSUR+EPSH*(1D0+TH/(SH+UH)*(W1TR-W1HR)+
33387      &      (0.25D0-SQMQ/(SH+UH))*(W2TR-W2HR))
33388             A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+
33389      &      (0.25D0-SQMQ/(SH+UH))*(W2TI-W2HI))
33390   410     CONTINUE
33391           FACQH=COMFAC*FACA/(384D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
33392      &    SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2)
33393           FACQH=FACQH*WIDS(25,2)
33394           ENDIF
33395           DO 430 I=MMINA,MMAXA
33396             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
33397             DO 420 ISDE=1,2
33398               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 420
33399               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 420
33400               NCHN=NCHN+1
33401               ISIG(NCHN,ISDE)=I
33402               ISIG(NCHN,3-ISDE)=21
33403               ISIG(NCHN,3)=1
33404               SIGH(NCHN)=FACQH
33405   420       CONTINUE
33406   430     CONTINUE
33407  
33408         ELSEIF(ISUB.EQ.113) THEN
33409 C...g + g -> g + h0
33410           IF(MSTP(38).NE.0) THEN
33411 C...Simple case: only do gg <-> h exactly.
33412           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
33413           WDTP13=0D0
33414           DO 435 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33415             IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33416      &      KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33417   435     CONTINUE
33418           IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33419      &    '(PYSGHG:) did not find Higgs -> g g channel')  
33420           FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP13/SQRT(SQM4))*
33421      &    (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4)
33422 C...Propagators: as simulated in PYOFSH and as desired
33423           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
33424           GMMHC=SQRT(SQM4)*WDTP(0)
33425           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
33426      &    ((SQM4-SQMH)**2+GMMHC**2)
33427           FACGH=FACGH*HBW4C/HBW4
33428           ELSE
33429 C...Messy case: do full loop integrals
33430           A2STUR=0D0
33431           A2STUI=0D0
33432           A2USTR=0D0
33433           A2USTI=0D0
33434           A2TUSR=0D0
33435           A2TUSI=0D0
33436           A4STUR=0D0
33437           A4STUI=0D0
33438           DO 440 I=1,2*MSTP(1)
33439             SQMQ=PMAS(I,1)**2
33440             EPSS=4D0*SQMQ/SH
33441             EPST=4D0*SQMQ/TH
33442             EPSU=4D0*SQMQ/UH
33443             EPSH=4D0*SQMQ/SQMH
33444             IF(EPSH.LT.1D-6) GOTO 440
33445             CALL PYWAUX(1,EPSS,W1SR,W1SI)
33446             CALL PYWAUX(1,EPST,W1TR,W1TI)
33447             CALL PYWAUX(1,EPSU,W1UR,W1UI)
33448             CALL PYWAUX(1,EPSH,W1HR,W1HI)
33449             CALL PYWAUX(2,EPSS,W2SR,W2SI)
33450             CALL PYWAUX(2,EPST,W2TR,W2TI)
33451             CALL PYWAUX(2,EPSU,W2UR,W2UI)
33452             CALL PYWAUX(2,EPSH,W2HR,W2HI)
33453             CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
33454             CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
33455             CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
33456             CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
33457             CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
33458             CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
33459             CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI)
33460             CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI)
33461             CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI)
33462             CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI)
33463             CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI)
33464             CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI)
33465             W3STUR=YHSTUR-Y3STUR-Y3UTSR
33466             W3STUI=YHSTUI-Y3STUI-Y3UTSI
33467             W3SUTR=YHSUTR-Y3SUTR-Y3TUSR
33468             W3SUTI=YHSUTI-Y3SUTI-Y3TUSI
33469             W3TSUR=YHTSUR-Y3TSUR-Y3USTR
33470             W3TSUI=YHTSUI-Y3TSUI-Y3USTI
33471             W3TUSR=YHTUSR-Y3TUSR-Y3SUTR
33472             W3TUSI=YHTUSI-Y3TUSI-Y3SUTI
33473             W3USTR=YHUSTR-Y3USTR-Y3TSUR
33474             W3USTI=YHUSTI-Y3USTI-Y3TSUI
33475             W3UTSR=YHUTSR-Y3UTSR-Y3STUR
33476             W3UTSI=YHUTSI-Y3UTSI-Y3STUI
33477             B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2D0*TH*UH*
33478      &      (UH+2D0*SH)/(SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4D0)*
33479      &      (0.5D0*W2SR+0.5D0*W2HR-W2TR+W3STUR)+SH2*(2D0*SQMQ/
33480      &      (SH+UH)**2-0.5D0/(SH+UH))*(W2TR-W2HR)+0.5D0*TH*UH/SH*
33481      &      (W2HR-2D0*W2TR)+0.125D0*(SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUR)
33482             B2STUI=SQMQ/SQMH**2*(2D0*TH*UH*(UH+2D0*SH)/(SH+UH)**2*
33483      &      (W1TI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2TI+
33484      &      W3STUI)+SH2*(2D0*SQMQ/(SH+UH)**2-0.5D0/(SH+UH))*
33485      &      (W2TI-W2HI)+0.5D0*TH*UH/SH*(W2HI-2D0*W2TI)+0.125D0*
33486      &      (SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUI)
33487             B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2D0*UH*TH*
33488      &      (TH+2D0*SH)/(SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4D0)*
33489      &      (0.5D0*W2SR+0.5D0*W2HR-W2UR+W3SUTR)+SH2*(2D0*SQMQ/
33490      &      (SH+TH)**2-0.5D0/(SH+TH))*(W2UR-W2HR)+0.5D0*UH*TH/SH*
33491      &      (W2HR-2D0*W2UR)+0.125D0*(SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTR)
33492             B2SUTI=SQMQ/SQMH**2*(2D0*UH*TH*(TH+2D0*SH)/(SH+TH)**2*
33493      &      (W1UI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2UI+
33494      &      W3SUTI)+SH2*(2D0*SQMQ/(SH+TH)**2-0.5D0/(SH+TH))*
33495      &      (W2UI-W2HI)+0.5D0*UH*TH/SH*(W2HI-2D0*W2UI)+0.125D0*
33496      &      (SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTI)
33497             B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2D0*SH*UH*
33498      &      (UH+2D0*TH)/(TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4D0)*
33499      &      (0.5D0*W2TR+0.5D0*W2HR-W2SR+W3TSUR)+TH2*(2D0*SQMQ/
33500      &      (TH+UH)**2-0.5D0/(TH+UH))*(W2SR-W2HR)+0.5D0*SH*UH/TH*
33501      &      (W2HR-2D0*W2SR)+0.125D0*(TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUR)
33502             B2TSUI=SQMQ/SQMH**2*(2D0*SH*UH*(UH+2D0*TH)/(TH+UH)**2*
33503      &      (W1SI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2SI+
33504      &      W3TSUI)+TH2*(2D0*SQMQ/(TH+UH)**2-0.5D0/(TH+UH))*
33505      &      (W2SI-W2HI)+0.5D0*SH*UH/TH*(W2HI-2D0*W2SI)+0.125D0*
33506      &      (TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUI)
33507             B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2D0*UH*SH*
33508      &      (SH+2D0*TH)/(TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4D0)*
33509      &      (0.5D0*W2TR+0.5D0*W2HR-W2UR+W3TUSR)+TH2*(2D0*SQMQ/
33510      &      (TH+SH)**2-0.5D0/(TH+SH))*(W2UR-W2HR)+0.5D0*UH*SH/TH*
33511      &      (W2HR-2D0*W2UR)+0.125D0*(TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSR)
33512             B2TUSI=SQMQ/SQMH**2*(2D0*UH*SH*(SH+2D0*TH)/(TH+SH)**2*
33513      &      (W1UI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2UI+
33514      &      W3TUSI)+TH2*(2D0*SQMQ/(TH+SH)**2-0.5D0/(TH+SH))*
33515      &      (W2UI-W2HI)+0.5D0*UH*SH/TH*(W2HI-2D0*W2UI)+0.125D0*
33516      &      (TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSI)
33517             B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2D0*SH*TH*
33518      &      (TH+2D0*UH)/(UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4D0)*
33519      &      (0.5D0*W2UR+0.5D0*W2HR-W2SR+W3USTR)+UH2*(2D0*SQMQ/
33520      &      (UH+TH)**2-0.5D0/(UH+TH))*(W2SR-W2HR)+0.5D0*SH*TH/UH*
33521      &      (W2HR-2D0*W2SR)+0.125D0*(UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTR)
33522             B2USTI=SQMQ/SQMH**2*(2D0*SH*TH*(TH+2D0*UH)/(UH+TH)**2*
33523      &      (W1SI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2SI+
33524      &      W3USTI)+UH2*(2D0*SQMQ/(UH+TH)**2-0.5D0/(UH+TH))*
33525      &      (W2SI-W2HI)+0.5D0*SH*TH/UH*(W2HI-2D0*W2SI)+0.125D0*
33526      &      (UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTI)
33527             B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2D0*TH*SH*
33528      &      (SH+2D0*UH)/(UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4D0)*
33529      &      (0.5D0*W2UR+0.5D0*W2HR-W2TR+W3UTSR)+UH2*(2D0*SQMQ/
33530      &      (UH+SH)**2-0.5D0/(UH+SH))*(W2TR-W2HR)+0.5D0*TH*SH/UH*
33531      &      (W2HR-2D0*W2TR)+0.125D0*(UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSR)
33532             B2UTSI=SQMQ/SQMH**2*(2D0*TH*SH*(SH+2D0*UH)/(UH+SH)**2*
33533      &      (W1TI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2TI+
33534      &      W3UTSI)+UH2*(2D0*SQMQ/(UH+SH)**2-0.5D0/(UH+SH))*
33535      &      (W2TI-W2HI)+0.5D0*TH*SH/UH*(W2HI-2D0*W2TI)+0.125D0*
33536      &      (UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSI)
33537             B4STUR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
33538      &      (W2SR-W2HR+W3STUR))
33539             B4STUI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2SI-W2HI+W3STUI)
33540             B4TUSR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
33541      &      (W2TR-W2HR+W3TUSR))
33542             B4TUSI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2TI-W2HI+W3TUSI)
33543             B4USTR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
33544      &      (W2UR-W2HR+W3USTR))
33545             B4USTI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2UI-W2HI+W3USTI)
33546             A2STUR=A2STUR+B2STUR+B2SUTR
33547             A2STUI=A2STUI+B2STUI+B2SUTI
33548             A2USTR=A2USTR+B2USTR+B2UTSR
33549             A2USTI=A2USTI+B2USTI+B2UTSI
33550             A2TUSR=A2TUSR+B2TUSR+B2TSUR
33551             A2TUSI=A2TUSI+B2TUSI+B2TSUI
33552             A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR
33553             A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI
33554   440     CONTINUE
33555           FACGH=COMFAC*FACA*3D0/(128D0*PARU(1)**2)*AEM/XW*AS**3*
33556      &    SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+
33557      &    A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2)
33558           FACGH=FACGH*WIDS(25,2)
33559           ENDIF
33560           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 450
33561           NCHN=NCHN+1
33562           ISIG(NCHN,1)=21
33563           ISIG(NCHN,2)=21
33564           ISIG(NCHN,3)=1
33565           SIGH(NCHN)=FACGH
33566   450     CONTINUE
33567         ENDIF
33568  
33569       ELSEIF(ISUB.LE.170) THEN
33570         IF(ISUB.EQ.121) THEN
33571 C...g + g -> Q + Qbar + h0
33572           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 460
33573           IA=KFPR(ISUBSV,2)
33574           PMF=PYMRUN(IA,SH)
33575           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
33576      &    (0.5D0*PMF/PMAS(24,1))**2
33577           WID2=1D0
33578           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
33579           FACQQH=FACQQH*WID2
33580           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
33581             IKFI=1
33582             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
33583             IF(IA.GT.10) IKFI=3
33584             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
33585             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
33586               FACQQH=FACQQH/(1D0+RMSS(41))**2
33587               IF(IHIGG.NE.3) THEN
33588                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
33589      &          PARU(151+10*IHIGG))**2
33590               ENDIF
33591             ENDIF
33592           ENDIF
33593           CALL PYQQBH(WTQQBH)
33594           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33595           HS=SHR*WDTP(0)
33596           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33597           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
33598           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33599      &    FACBW=0D0
33600           NCHN=NCHN+1
33601           ISIG(NCHN,1)=21
33602           ISIG(NCHN,2)=21
33603           ISIG(NCHN,3)=1
33604           SIGH(NCHN)=FACQQH*WTQQBH*FACBW
33605   460     CONTINUE
33606  
33607         ELSEIF(ISUB.EQ.122) THEN
33608 C...q + qbar -> Q + Qbar + h0
33609           IA=KFPR(ISUBSV,2)
33610           PMF=PYMRUN(IA,SH)
33611           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
33612      &    (0.5D0*PMF/PMAS(24,1))**2
33613           WID2=1D0
33614           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
33615           FACQQH=FACQQH*WID2
33616           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
33617             IKFI=1
33618             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
33619             IF(IA.GT.10) IKFI=3
33620             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
33621             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
33622               FACQQH=FACQQH/(1D0+RMSS(41))**2
33623               IF(IHIGG.NE.3) THEN
33624                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
33625      &          PARU(151+10*IHIGG))**2
33626               ENDIF
33627             ENDIF
33628           ENDIF
33629           CALL PYQQBH(WTQQBH)
33630           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33631           HS=SHR*WDTP(0)
33632           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33633           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
33634           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33635      &    FACBW=0D0
33636           DO 470 I=MMINA,MMAXA
33637             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33638      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 470
33639             NCHN=NCHN+1
33640             ISIG(NCHN,1)=I
33641             ISIG(NCHN,2)=-I
33642             ISIG(NCHN,3)=1
33643             SIGH(NCHN)=FACQQH*WTQQBH*FACBW
33644   470     CONTINUE
33645  
33646         ELSEIF(ISUB.EQ.123) THEN
33647 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
33648 C...inner process)
33649           FACNOR=COMFAC*(4D0*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32D0
33650           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
33651      &    PARU(154+10*IHIGG)**2
33652           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
33653      &    (VINT(216)-VINT(209)**2))**2
33654           FACZZ1=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
33655           FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218)
33656           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33657           HS=SHR*WDTP(0)
33658           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33659           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
33660           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33661      &    FACBW=0D0
33662           DO 490 I=MMIN1,MMAX1
33663             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 490
33664             IA=IABS(I)
33665             DO 480 J=MMIN2,MMAX2
33666               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 480
33667               JA=IABS(J)
33668               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
33669               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
33670               VI=AI-4D0*EI*XWV
33671               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
33672               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
33673               VJ=AJ-4D0*EJ*XWV
33674               FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4D0*VI*AI*VJ*AJ
33675               FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4D0*VI*AI*VJ*AJ
33676               NCHN=NCHN+1
33677               ISIG(NCHN,1)=I
33678               ISIG(NCHN,2)=J
33679               ISIG(NCHN,3)=1
33680               SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW
33681   480       CONTINUE
33682   490     CONTINUE
33683  
33684         ELSEIF(ISUB.EQ.124) THEN
33685 C...f + f' -> f" + f"' + h0 (or H0, or A0) (W+ + W- -> h0 as
33686 C...inner process)
33687           FACNOR=COMFAC*(4D0*PARU(1)*AEM/XW)**3*SQMW
33688           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
33689      &    PARU(155+10*IHIGG)**2
33690           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
33691      &    (VINT(216)-VINT(209)**2))**2
33692           FACWW=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
33693           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33694           HS=SHR*WDTP(0)
33695           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33696           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
33697           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33698      &    FACBW=0D0
33699           DO 510 I=MMIN1,MMAX1
33700             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 510
33701             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33702             DO 500 J=MMIN2,MMAX2
33703               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 500
33704               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33705               IF(EI*EJ.GT.0D0) GOTO 500
33706               FACLR=VINT(180+I)*VINT(180+J)
33707               NCHN=NCHN+1
33708               ISIG(NCHN,1)=I
33709               ISIG(NCHN,2)=J
33710               ISIG(NCHN,3)=1
33711               SIGH(NCHN)=FACLR*FACWW*FACBW
33712   500       CONTINUE
33713   510     CONTINUE
33714  
33715         ELSEIF(ISUB.EQ.143) THEN
33716 C...f + fbar' -> H+/-
33717           SQMHC=PMAS(37,1)**2
33718           CALL PYWIDT(37,SH,WDTP,WDTE)
33719           HS=SHR*WDTP(0)
33720           FACBW=4D0*COMFAC/((SH-SQMHC)**2+HS**2)
33721           HP=AEM/(8D0*XW)*SH/SQMW*SH
33722           DO 530 I=MMIN1,MMAX1
33723             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 530
33724             IA=IABS(I)
33725             IM=(MOD(IA,10)+1)/2
33726             DO 520 J=MMIN2,MMAX2
33727               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 520
33728               JA=IABS(J)
33729               JM=(MOD(JA,10)+1)/2
33730               IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 520
33731               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
33732      &        GOTO 520
33733               IF(MOD(IA,2).EQ.0) THEN
33734                 IU=IA
33735                 IL=JA
33736               ELSE
33737                 IU=JA
33738                 IL=IA
33739               ENDIF
33740               RML=PYMRUN(IL,SH)**2/SH
33741               RMU=PYMRUN(IU,SH)**2/SH
33742               HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2)
33743               IF(IA.LE.10) HI=HI*FACA/3D0
33744               KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
33745               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4))
33746               NCHN=NCHN+1
33747               ISIG(NCHN,1)=I
33748               ISIG(NCHN,2)=J
33749               ISIG(NCHN,3)=1
33750               SIGH(NCHN)=HI*FACBW*HF
33751   520       CONTINUE
33752   530     CONTINUE
33753  
33754         ELSEIF(ISUB.EQ.161) THEN
33755 C...f + g -> f' + H+/- (b + g -> t + H+/- only)
33756 C...(choice of only b and t to avoid kinematics problems)
33757           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24
33758 C...H propagator: as simulated in PYOFSH and as desired
33759           SQMHC=PMAS(37,1)**2
33760           GMMHC=PMAS(37,1)*PMAS(37,2)
33761           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
33762           CALL PYWIDT(37,SQM4,WDTP,WDTE)
33763           GMMHCC=SQRT(SQM4)*WDTP(0)
33764           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
33765           FHCQ=FHCQ*HBW4C/HBW4
33766           Q2RM=SH
33767           IF(MSTP(32).EQ.12) Q2RM=PARP(194)
33768           DO 550 I=MMINA,MMAXA
33769             IA=IABS(I)
33770             IF(IA.NE.5) GOTO 550
33771             SQML=PYMRUN(IA,Q2RM)**2
33772             IUA=IA+MOD(IA,2)
33773             SQMQ=PYMRUN(IUA,Q2RM)**2
33774             FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW*
33775      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH-
33776      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)*
33777      &      (SQMHC-SQMQ-SH)/SH)
33778             KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
33779             DO 540 ISDE=1,2
33780               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 540
33781               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 540
33782               NCHN=NCHN+1
33783               ISIG(NCHN,ISDE)=I
33784               ISIG(NCHN,3-ISDE)=21
33785               ISIG(NCHN,3)=1
33786               SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
33787               IF(IUA.EQ.6) SIGH(NCHN)=SIGH(NCHN)*WIDS(6,(5+KCHHC)/2)
33788   540       CONTINUE
33789   550     CONTINUE
33790         ENDIF
33791  
33792       ELSEIF(ISUB.LE.402) THEN
33793         IF(ISUB.EQ.401) THEN
33794 C...  g + g -> t + bbar + H-
33795           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 560
33796           IA=KFPR(ISUBSV,2)
33797           CALL PYSTBH(WTTBH)
33798           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33799           HS=SHR*WDTP(0)
33800           FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2)
33801           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33802      &       FACBW=0D0
33803           NCHN=NCHN+1
33804           ISIG(NCHN,1)=21
33805           ISIG(NCHN,2)=21
33806           ISIG(NCHN,3)=1
33807           SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW
33808 c     Since we don't know yet if H+ or H-, assume H+
33809 c     when calculating suppression due to closed channels.
33810           SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3)
33811           IF(ABS(WIDS(37,2)-WIDS(37,3))
33812      &       .GE.1D-6*(WIDS(37,2)+WIDS(37,3)).OR.
33813      &       ABS(WIDS(6,2)-WIDS(6,3))
33814      &       .GE.1D-6*(WIDS(6,2)+WIDS(6,3))) THEN
33815             WRITE(*,*)'Error: Process 401 cannot handle different'
33816             WRITE(*,*)'decays for H+ and H- or t and tbar.'
33817             WRITE(*,*)'Execution stopped.'
33818             CALL PYSTOP(108)
33819           END IF
33820  560      CONTINUE
33821  
33822         ELSEIF(ISUB.EQ.402) THEN
33823 C...  q + qbar -> t + bbar + H-
33824           IA=KFPR(ISUBSV,2)
33825           CALL PYSTBH(WTTBH)
33826           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33827           HS=SHR*WDTP(0)
33828           FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2)
33829           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33830      &       FACBW=0D0
33831           DO 570 I=MMINA,MMAXA
33832             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33833      &         KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 570
33834             NCHN=NCHN+1
33835             ISIG(NCHN,1)=I
33836             ISIG(NCHN,2)=-I
33837             ISIG(NCHN,3)=1
33838             SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW
33839 c     Since we don't know yet if H+ or H-, assume H+
33840 c     when calculating suppression due to closed channels.
33841             SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3)
33842             IF(ABS(WIDS(37,2)-WIDS(37,3))/(WIDS(37,2)+WIDS(37,3))
33843      &         .GE.1D-6.OR.
33844      &         ABS(WIDS(6,2)-WIDS(6,3))/(WIDS(6,2)+WIDS(6,3))
33845      &         .GE.1D-6) THEN
33846               WRITE(*,*)'Error: Process 402 cannot handle different'
33847               WRITE(*,*)'decays for H+ and H- or t and tbar.'
33848               WRITE(*,*)'Execution stopped.'
33849               CALL PYSTOP(108)
33850             END IF
33851  570      CONTINUE
33852         ENDIF
33853       ENDIF
33854  
33855       RETURN
33856       END
33857  
33858 C*********************************************************************
33859  
33860 C...PYSGSU
33861 C...Subprocess cross sections for SUSY processes,
33862 C...including Higgs pair production.
33863 C...Auxiliary to PYSIGH.
33864  
33865       SUBROUTINE PYSGSU(NCHN,SIGS)
33866  
33867 C...Double precision and integer declarations
33868       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33869       IMPLICIT INTEGER(I-N)
33870       INTEGER PYK,PYCHGE,PYCOMP
33871 C...Parameter statement to help give large particle numbers.
33872       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33873      &KEXCIT=4000000,KDIMEN=5000000)
33874 C...Commonblocks
33875       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33876       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33877       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
33878       COMMON/PYINT1/MINT(400),VINT(400)
33879       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
33880       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
33881       COMMON/PYINT4/MWID(500),WIDS(500,5)
33882       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33883       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
33884      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
33885       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
33886      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
33887      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
33888      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
33889       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
33890      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYSGCM/
33891 C...Local arrays and complex variables
33892       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
33893       COMPLEX*16 OLPP,ORPP,OLP,ORP,OL,OR,QLL,QLR
33894       COMPLEX*16 QRR,QRL,GLIJ,GRIJ,PROPW,PROPZ
33895       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
33896  
33897 CMRENNA++
33898 C...Z and W width, combinations of weak mixing angle
33899       ZWID=PMAS(23,2)
33900       WWID=PMAS(24,2)
33901       TANW=SQRT(XW/XW1)
33902       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
33903  
33904 C...Convert almost equivalent SUSY processes into each other
33905 C...Extract differences in flavours and couplings
33906  
33907 C...Sleptons and sneutrinos
33908       IF(ISUB.EQ.201.OR.ISUB.EQ.204.OR.ISUB.EQ.207) THEN
33909         KFID=MOD(KFPR(ISUB,1),KSUSY1)
33910         ISUB=201
33911         ILR=0
33912       ELSEIF(ISUB.EQ.202.OR.ISUB.EQ.205.OR.ISUB.EQ.208) THEN
33913         KFID=MOD(KFPR(ISUB,1),KSUSY1)
33914         ISUB=201
33915         ILR=1
33916       ELSEIF(ISUB.EQ.203.OR.ISUB.EQ.206.OR.ISUB.EQ.209) THEN
33917         KFID=MOD(KFPR(ISUB,1),KSUSY1)
33918         ISUB=203
33919       ELSEIF(ISUB.GE.210.AND.ISUB.LE.212) THEN
33920         IF(ISUB.EQ.210) THEN
33921           RKF=2.0D0
33922         ELSEIF(ISUB.EQ.211) THEN
33923           RKF=SFMIX(15,1)**2
33924         ELSEIF(ISUB.EQ.212) THEN
33925           RKF=SFMIX(15,2)**2
33926         ENDIF
33927           ISUB=210
33928       ELSEIF(ISUB.EQ.213.OR.ISUB.EQ.214) THEN
33929         IF(ISUB.EQ.213) THEN
33930           KFID=MOD(KFPR(ISUB,1),KSUSY1)
33931           RKF=2.0D0
33932         ELSEIF(ISUB.EQ.214) THEN
33933           KFID=16
33934           RKF=1.0D0
33935         ENDIF
33936         ISUB=213
33937  
33938 C...Neutralinos
33939       ELSEIF(ISUB.GE.216.AND.ISUB.LE.225) THEN
33940         IF(ISUB.EQ.216) THEN
33941           IZID1=1
33942           IZID2=1
33943         ELSEIF(ISUB.EQ.217) THEN
33944           IZID1=2
33945           IZID2=2
33946         ELSEIF(ISUB.EQ.218) THEN
33947           IZID1=3
33948           IZID2=3
33949         ELSEIF(ISUB.EQ.219) THEN
33950           IZID1=4
33951           IZID2=4
33952         ELSEIF(ISUB.EQ.220) THEN
33953           IZID1=1
33954           IZID2=2
33955         ELSEIF(ISUB.EQ.221) THEN
33956           IZID1=1
33957           IZID2=3
33958         ELSEIF(ISUB.EQ.222) THEN
33959           IZID1=1
33960           IZID2=4
33961         ELSEIF(ISUB.EQ.223) THEN
33962           IZID1=2
33963           IZID2=3
33964         ELSEIF(ISUB.EQ.224) THEN
33965           IZID1=2
33966           IZID2=4
33967         ELSEIF(ISUB.EQ.225) THEN
33968           IZID1=3
33969           IZID2=4
33970         ENDIF
33971         ISUB=216
33972  
33973 C...Charginos
33974       ELSEIF(ISUB.GE.226.AND.ISUB.LE.228) THEN
33975         IF(ISUB.EQ.226) THEN
33976           IZID1=1
33977           IZID2=1
33978         ELSEIF(ISUB.EQ.227) THEN
33979           IZID1=2
33980           IZID2=2
33981         ELSEIF(ISUB.EQ.228) THEN
33982           IZID1=1
33983           IZID2=2
33984         ENDIF
33985         ISUB=226
33986  
33987 C...Neutralino + chargino
33988       ELSEIF(ISUB.GE.229.AND.ISUB.LE.236) THEN
33989         IF(ISUB.EQ.229) THEN
33990           IZID1=1
33991           IZID2=1
33992         ELSEIF(ISUB.EQ.230) THEN
33993           IZID1=1
33994           IZID2=2
33995         ELSEIF(ISUB.EQ.231) THEN
33996           IZID1=1
33997           IZID2=3
33998         ELSEIF(ISUB.EQ.232) THEN
33999           IZID1=1
34000           IZID2=4
34001         ELSEIF(ISUB.EQ.233) THEN
34002           IZID1=2
34003           IZID2=1
34004         ELSEIF(ISUB.EQ.234) THEN
34005           IZID1=2
34006           IZID2=2
34007         ELSEIF(ISUB.EQ.235) THEN
34008           IZID1=2
34009           IZID2=3
34010         ELSEIF(ISUB.EQ.236) THEN
34011           IZID1=2
34012           IZID2=4
34013         ENDIF
34014         ISUB=229
34015  
34016 C...Gluino + neutralino
34017       ELSEIF(ISUB.GE.237.AND.ISUB.LE.240) THEN
34018         IF(ISUB.EQ.237) THEN
34019           IZID=1
34020         ELSEIF(ISUB.EQ.238) THEN
34021           IZID=2
34022         ELSEIF(ISUB.EQ.239) THEN
34023           IZID=3
34024         ELSEIF(ISUB.EQ.240) THEN
34025           IZID=4
34026         ENDIF
34027         ISUB=237
34028  
34029 C...Gluino + chargino
34030       ELSEIF(ISUB.GE.241.AND.ISUB.LE.242) THEN
34031         IF(ISUB.EQ.241) THEN
34032           IZID=1
34033         ELSEIF(ISUB.EQ.242) THEN
34034           IZID=2
34035         ENDIF
34036         ISUB=241
34037  
34038 C...Squark + neutralino
34039       ELSEIF(ISUB.GE.246.AND.ISUB.LE.253) THEN
34040         ILR=0
34041         IF(MOD(ISUB,2).NE.0) ILR=1
34042         IF(ISUB.LE.247) THEN
34043           IZID=1
34044         ELSEIF(ISUB.LE.249) THEN
34045           IZID=2
34046         ELSEIF(ISUB.LE.251) THEN
34047           IZID=3
34048         ELSEIF(ISUB.LE.253) THEN
34049           IZID=4
34050         ENDIF
34051         ISUB=246
34052         RKF=5D0
34053  
34054 C...Squark + chargino
34055       ELSEIF(ISUB.GE.254.AND.ISUB.LE.257) THEN
34056         IF(ISUB.LE.255) THEN
34057           IZID=1
34058         ELSEIF(ISUB.LE.257) THEN
34059           IZID=2
34060         ENDIF
34061         IF(MOD(ISUB,2).EQ.0) THEN
34062           ILR=0
34063         ELSE
34064           ILR=1
34065         ENDIF
34066         ISUB=254
34067         RKF=5D0
34068  
34069 C...Squark + gluino
34070       ELSEIF(ISUB.EQ.258.OR.ISUB.EQ.259) THEN
34071         ISUB=258
34072         RKF=4D0
34073  
34074 C...Stops
34075       ELSEIF(ISUB.EQ.261.OR.ISUB.EQ.262) THEN
34076         ILR=0
34077         IF(ISUB.EQ.262) ILR=1
34078         ISUB=261
34079       ELSEIF(ISUB.EQ.265) THEN
34080         ISUB=264
34081  
34082 C...Squarks
34083       ELSEIF(ISUB.GE.271.AND.ISUB.LE.280) THEN
34084         ILR=0
34085         IF(ISUB.LE.273) THEN
34086           IF(ISUB.EQ.273) ILR=1
34087           ISUB=271
34088           RKF=16D0
34089         ELSEIF(ISUB.LE.276) THEN
34090           IF(ISUB.EQ.276) ILR=1
34091           ISUB=274
34092           RKF=16D0
34093         ELSEIF(ISUB.LE.278) THEN
34094           IF(ISUB.EQ.278) ILR=1
34095           ISUB=277
34096           RKF=4D0
34097         ELSE
34098           IF(ISUB.EQ.280) ILR=1
34099           ISUB=279
34100           RKF=4D0
34101         ENDIF
34102 C...Sbottoms
34103       ELSEIF(ISUB.GE.281.AND.ISUB.LE.296) THEN
34104         ILR=0
34105         IF(ISUB.LE.283) THEN
34106           IF(ISUB.EQ.283) ILR=1
34107           ISUB=271
34108           RKF=4D0
34109         ELSEIF(ISUB.LE.286) THEN
34110           IF(ISUB.EQ.286) ILR=1
34111           ISUB=274
34112           RKF=4D0
34113         ELSEIF(ISUB.LE.288) THEN
34114           IF(ISUB.EQ.288) ILR=1
34115           ISUB=277
34116           RKF=1D0
34117         ELSEIF(ISUB.LE.290) THEN
34118           IF(ISUB.EQ.290) ILR=1
34119           ISUB=279
34120           RKF=1D0
34121         ELSEIF(ISUB.LE.293) THEN
34122           IF(ISUB.EQ.293) ILR=1
34123           ISUB=271
34124           RKF=1D0
34125         ELSEIF(ISUB.EQ.296) THEN
34126           ILR=1
34127           ISUB=274
34128           RKF=1D0
34129 C...Squark + gluino
34130         ELSEIF(ISUB.EQ.294.OR.ISUB.EQ.295) THEN
34131           ISUB=258
34132           RKF=1D0
34133         ENDIF
34134 C...H+/- + H0
34135       ELSEIF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
34136         IF(ISUB.EQ.297) THEN
34137           RKF=.5D0*PARU(195)**2
34138         ELSEIF(ISUB.EQ.298) THEN
34139           RKF=.5D0*(1D0-PARU(195)**2)
34140         ENDIF
34141         ISUB=210
34142 C...A0 + H0
34143       ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
34144         IF(ISUB.EQ.299) THEN
34145           RKF=PARU(186)**2
34146           KFID=25
34147         ELSEIF(ISUB.EQ.300) THEN
34148           RKF=PARU(187)**2
34149           KFID=35
34150         ENDIF
34151         ISUB=213
34152 C...H+ + H-
34153       ELSEIF(ISUB.EQ.301) THEN
34154         KFID=37
34155         RKF=1D0
34156         ISUB=201
34157       ENDIF
34158  
34159 C...Supersymmetric processes - all of type 2 -> 2 :
34160 C...correct final-state Breit-Wigners from fixed to running width.
34161       IF(MSTP(42).GT.0) THEN
34162         DO 100 I=1,2
34163         KFLW=KFPR(ISUBSV,I)
34164         KCW=PYCOMP(KFLW)
34165         IF(PMAS(KCW,2).LT.PARP(41)) GOTO 100
34166         IF(I.EQ.1) SQMI=SQM3
34167         IF(I.EQ.2) SQMI=SQM4
34168         SQMS=PMAS(KCW,1)**2
34169         GMMS=PMAS(KCW,1)*PMAS(KCW,2)
34170         HBWS=GMMS/((SQMI-SQMS)**2+GMMS**2)
34171         CALL PYWIDT(KFLW,SQMI,WDTP,WDTE)
34172         GMMI=SQRT(SQMI)*WDTP(0)
34173         HBWI=GMMI/((SQMI-SQMS)**2+GMMI**2)
34174         COMFAC=COMFAC*(HBWI/HBWS)
34175   100   CONTINUE
34176       ENDIF
34177  
34178 C...Differential cross section expressions.
34179  
34180       IF(ISUB.LE.210) THEN
34181         IF(ISUB.EQ.201) THEN
34182 C...f + fbar -> e_L + e_Lbar
34183           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34184           DO 130 I=MMIN1,MMAX1
34185             IA=IABS(I)
34186             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 130
34187             EI=KCHG(IA,1)/3D0
34188             TT3I=SIGN(1D0,EI+1D-6)/2D0
34189             EJ=-1D0
34190             TT3J=-1D0/2D0
34191             FCOL=1D0
34192 C...Color factor for e+ e-
34193             IF(IA.GE.11) FCOL=3D0
34194             IF(ISUBSV.EQ.301) THEN
34195               A1=1D0
34196               A2=0D0
34197             ELSEIF(ILR.EQ.1) THEN
34198               A1=SFMIX(KFID,3)**2
34199               A2=SFMIX(KFID,4)**2
34200             ELSEIF(ILR.EQ.0) THEN
34201               A1=SFMIX(KFID,1)**2
34202               A2=SFMIX(KFID,2)**2
34203             ENDIF
34204             XLQ=(TT3J-EJ*XW)*A1
34205             XRQ=(-EJ*XW)*A2
34206             XLF=(TT3I-EI*XW)
34207             XRF=(-EI*XW)
34208             TAA=(EI*EJ)**2*(POLL+POLR)
34209             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ+XRQ)**2/XW**2/XW1**2
34210             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*ZWID/SH**2)
34211             TAZ=2D0*EI*EJ*(XLQ+XRQ)*(XLF*POLL+XRF*POLR)/XW/XW1
34212             TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
34213             TNN=0.0D0
34214             TAN=0.0D0
34215             TZN=0.0D0
34216             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
34217               FAC2=SQRT(2D0)
34218               TNN1=0D0
34219               TNN2=0D0
34220               TNN3=0D0
34221               DO 120 II=1,4
34222                 DK=1D0/(TH-SMZ(II)**2)
34223                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
34224      &          ZMIX(II,1))
34225                 FREK=FAC2*TANW*EI*ZMIX(II,1)
34226                 TNN1=TNN1+FLEK**2*DK
34227                 TNN2=TNN2+FREK**2*DK
34228                 DO 110 JJ=1,4
34229                   DL=1D0/(TH-SMZ(JJ)**2)
34230                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
34231      &            ZMIX(JJ,1))
34232                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
34233                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
34234   110           CONTINUE
34235   120         CONTINUE
34236               TNN=(UH*TH-SQM3*SQM4)*(A1**2*TNN1**2*POLL+
34237      &        A2**2*TNN2**2*POLR)
34238               TNN=(TNN+SH*A1*A2*TNN3*((1D0-PARJ(131))*(1D0-PARJ(132))+
34239      &        (1D0+PARJ(131))*(1D0+PARJ(132))))/4D0/XW**2
34240               TZN=(UH*TH-SQM3*SQM4)*(XLQ+XRQ)*
34241      &        (TNN1*XLF*A1*POLL+TNN2*XRF*A2*POLR)
34242               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
34243      &        (1D0-SQMZ/SH)/SH
34244               TZN=TZN/XW**2/XW1
34245               TAN=EI*EJ*(UH*TH-SQM3*SQM4)/SH*(A1*TNN1*POLL+
34246      &        A2*TNN2*POLR)/XW
34247             ENDIF
34248             FACQQ1=COMFAC*AEM**2*(TAA+TZZ+TAZ)*FCOL/3D0
34249             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH**2
34250             FACQQ2=COMFAC*AEM**2*(TNN+TZN+TAN)*FCOL/3D0
34251             NCHN=NCHN+1
34252             ISIG(NCHN,1)=I
34253             ISIG(NCHN,2)=-I
34254             ISIG(NCHN,3)=1
34255             SIGH(NCHN)=FACQQ1+FACQQ2
34256   130     CONTINUE
34257  
34258         ELSEIF(ISUB.EQ.203) THEN
34259 C...f + fbar -> e_L + e_Rbar
34260           DO 160 I=MMIN1,MMAX1
34261             IA=IABS(I)
34262             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
34263             EI=KCHG(IABS(I),1)/3D0
34264             TT3I=SIGN(1D0,EI)/2D0
34265             EJ=-1
34266             TT3J=-1D0/2D0
34267             FCOL=1D0
34268 C...Color factor for e+ e-
34269             IF(IA.GE.11) FCOL=3D0
34270             A1=SFMIX(KFID,1)**2
34271             A2=SFMIX(KFID,2)**2
34272             XLQ=(TT3J-EJ*XW)
34273             XRQ=(-EJ*XW)
34274             XLF=(TT3I-EI*XW)
34275             XRF=(-EI*XW)
34276             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ-XRQ)**2
34277      &      /XW**2/XW1**2*A1*A2
34278             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
34279             TNN=0.0D0
34280             TZN=0.0D0
34281             TNNA=0D0
34282             TNNB=0D0
34283             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
34284               FAC2=SQRT(2D0)
34285               TNN1=0D0
34286               TNN2=0D0
34287               TNN3=0D0
34288               DO 150 II=1,4
34289                 DK=1D0/(TH-SMZ(II)**2)
34290                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
34291      &          ZMIX(II,1))
34292                 FREK=FAC2*TANW*EI*ZMIX(II,1)
34293                 TNN1=TNN1+FLEK**2*DK
34294                 TNN2=TNN2+FREK**2*DK
34295                 DO 140 JJ=1,4
34296                   DL=1D0/(TH-SMZ(JJ)**2)
34297                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
34298      &            ZMIX(JJ,1))
34299                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
34300                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
34301   140           CONTINUE
34302   150         CONTINUE
34303               TNN=(UH*TH-SQM3*SQM4)*A1*A2*(TNN2**2*POLR+TNN1**2*POLL)
34304               TNNA=(TNN+SH*(A1**2*POLLL+A2**2*POLRR)*TNN3)/4D0
34305               TNNB=(TNN+SH*(A1**2*POLRR+A2**2*POLLL)*TNN3)/4D0
34306               TZN=(UH*TH-SQM3*SQM4)*A1*A2
34307               TZN=TZN*(XLQ-XRQ)*(XLF*TNN1*POLL-XRF*TNN2*POLR)/XW1
34308               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
34309      &        (1D0-SQMZ/SH)/SH
34310             ENDIF
34311             FACQQ0=COMFAC*AEM**2*TZZ*FCOL/3D0*(UH*TH-SQM3*SQM4)/SH2
34312             FACQQ2=COMFAC*AEM**2/XW**2*(TNNA+TZN)*FCOL/3D0
34313             FACQQ1=COMFAC*AEM**2/XW**2*(TNNB+TZN)*FCOL/3D0
34314 C%%%%%%%%%%%
34315             NCHN=NCHN+1
34316             ISIG(NCHN,1)=I
34317             ISIG(NCHN,2)=-I
34318             ISIG(NCHN,3)=1
34319             SIGH(NCHN)=(FACQQ0+FACQQ1)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34320      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
34321             NCHN=NCHN+1
34322             ISIG(NCHN,1)=I
34323             ISIG(NCHN,2)=-I
34324             ISIG(NCHN,3)=2
34325             SIGH(NCHN)=(FACQQ0+FACQQ2)*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
34326      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34327   160     CONTINUE
34328  
34329         ELSEIF(ISUB.EQ.210) THEN
34330 C...q + qbar' -> W*- > ~l_L + ~nu_L
34331           FAC0=RKF*COMFAC*AEM**2/XW**2/12D0
34332           FAC1=(TH*UH-SQM3*SQM4)/((SH-SQMW)**2+WWID**2*SQMW)
34333           DO 180 I=MMIN1,MMAX1
34334             IA=IABS(I)
34335             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 180
34336             DO 170 J=MMIN2,MMAX2
34337               JA=IABS(J)
34338               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 170
34339               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 170
34340               FCKM=3D0
34341               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
34342               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
34343               KCHW=2
34344               IF(KCHSUM.LT.0) KCHW=3
34345               NCHN=NCHN+1
34346               ISIG(NCHN,1)=I
34347               ISIG(NCHN,2)=J
34348               ISIG(NCHN,3)=1
34349               IF(ISUBSV.EQ.297.OR.ISUBSV.EQ.298) THEN
34350                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
34351      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34352               ELSE
34353                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
34354      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
34355               ENDIF
34356               SIGH(NCHN)=FAC0*FAC1*FCKM*FACR
34357   170       CONTINUE
34358   180     CONTINUE
34359         ENDIF
34360  
34361       ELSEIF(ISUB.LE.220) THEN
34362         IF(ISUB.EQ.213) THEN
34363 C...f + fbar -> ~nu_L + ~nu_Lbar
34364           IF(ISUBSV.EQ.299.OR.ISUBSV.EQ.300) THEN
34365             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34366      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34367           ELSE
34368             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34369           ENDIF
34370           COMFAC=COMFAC*FACR
34371           PROPZ2=(SH-SQMZ)**2+ZWID**2*SQMZ
34372           XLL=0.5D0
34373           XLR=0.0D0
34374           DO 190 I=MMIN1,MMAX1
34375             IA=IABS(I)
34376             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 190
34377             EI=KCHG(IA,1)/3D0
34378             FCOL=1D0
34379 C...Color factor for e+ e-
34380             IF(IA.GE.11) FCOL=3D0
34381             XLQ=(SIGN(1D0,EI)-2D0*EI*XW)/2D0
34382             XRQ=-EI*XW
34383             TZC=0.0D0
34384             TCC=0.0D0
34385             IF(IA.GE.11.AND.KFID.EQ.IA+1) THEN
34386               TZC=VMIX(1,1)**2/(TH-SMW(1)**2)+VMIX(2,1)**2/
34387      &        (TH-SMW(2)**2)
34388               TCC=TZC**2
34389               TZC=TZC/XW1*(SH-SQMZ)/PROPZ2*XLQ*XLL
34390             ENDIF
34391             FACQQ1=(XLQ**2+XRQ**2)*(XLL+XLR)**2/XW1**2/PROPZ2
34392             FACQQ2=TZC+TCC/4D0
34393             NCHN=NCHN+1
34394             ISIG(NCHN,1)=I
34395             ISIG(NCHN,2)=-I
34396             ISIG(NCHN,3)=1
34397             SIGH(NCHN)=(FACQQ1+FACQQ2)*RKF*(UH*TH-SQM3*SQM4)*COMFAC
34398      &      *AEM**2*FCOL/3D0/XW**2
34399   190     CONTINUE
34400  
34401         ELSEIF(ISUB.EQ.216) THEN
34402 C...q + qbar -> ~chi0_1 + ~chi0_1
34403           IF(IZID1.EQ.IZID2) THEN
34404             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34405           ELSE
34406             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34407      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34408           ENDIF
34409           FACXX=COMFAC*AEM**2/3D0/XW**2
34410           IF(IZID1.EQ.IZID2) FACXX=FACXX/2D0
34411           ZM12=SQM3
34412           ZM22=SQM4
34413           WU2 = (UH-ZM12)*(UH-ZM22)
34414           WT2 = (TH-ZM12)*(TH-ZM22)
34415           WS2 = SMZ(IZID1)*SMZ(IZID2)*SH
34416           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
34417           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
34418           DO 200 I=1,4
34419             ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
34420             IF(IZID2.NE.IZID1) THEN
34421               ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
34422             ENDIF
34423   200     CONTINUE
34424           OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
34425      &    ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
34426           ORPP=DCONJG(OLPP)
34427           DO 210 I=MMINA,MMAXA
34428             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 210
34429             EI=KCHG(IABS(I),1)/3D0
34430             T3I=SIGN(1D0,EI+1D-6)/2D0
34431             XML2=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2
34432             XMR2=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2
34433             GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
34434      &      DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
34435             GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
34436             QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
34437             QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
34438      &      /DCMPLX(TH-XML2)
34439             QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
34440             QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
34441      &      -DCONJG(GRIJ)/DCMPLX(UH-XMR2)
34442             FCOL=1D0
34443             IF(IABS(I).GE.11) FCOL=3D0
34444             FACGG1=(ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
34445      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
34446      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
34447      &      QRL*DCONJG(QRR)*POLR)*WS2
34448             NCHN=NCHN+1
34449             ISIG(NCHN,1)=I
34450             ISIG(NCHN,2)=-I
34451             ISIG(NCHN,3)=1
34452             SIGH(NCHN)=FACXX*FACGG1*FCOL
34453   210     CONTINUE
34454         ENDIF
34455  
34456       ELSEIF(ISUB.LE.230) THEN
34457         IF(ISUB.EQ.226) THEN
34458 C...f + fbar -> ~chi+_1 + ~chi-_1
34459           FACXX=COMFAC*AEM**2/3D0
34460           ZM12=SQM3
34461           ZM22=SQM4
34462           WU2 = (UH-ZM12)*(UH-ZM22)
34463           WT2 = (TH-ZM12)*(TH-ZM22)
34464           WS2 = SMW(IZID1)*SMW(IZID2)*SH
34465           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
34466           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
34467           DIFF=0D0
34468           IF(IZID1.EQ.IZID2) DIFF=1D0
34469           DO 220 I=1,2
34470             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
34471             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
34472             IF(IZID2.NE.IZID1) THEN
34473               VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
34474               UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
34475             ENDIF
34476   220     CONTINUE
34477           OLP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
34478      &    VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0+DCMPLX(XW*DIFF)
34479           ORP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
34480      &    UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0+DCMPLX(XW*DIFF)
34481           DO 230 I=MMINA,MMAXA
34482             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 230
34483             EI=KCHG(IABS(I),1)/3D0
34484             T3I=SIGN(1D0,EI+1D-6)/2D0
34485             QRL=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*ORP
34486             QLL=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*PROPZ*ORP
34487             QRR=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*OLP
34488             IF(MOD(I,2).EQ.0) THEN
34489               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)-1),1)**2
34490               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
34491      &        PROPZ*OLP-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*
34492      &        DCMPLX(T3I/XW/(TH-XML2))
34493             ELSE
34494               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)+1),1)**2
34495               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
34496      &        PROPZ*OLP-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*
34497      &        DCMPLX(T3I/XW/(TH-XML2))
34498             ENDIF
34499             FCOL=1D0
34500             IF(IABS(I).GE.11) FCOL=3D0
34501             FACSUM=((ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
34502      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
34503      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
34504      &      QRL*DCONJG(QRR)*POLR)*WS2)*FACXX*FCOL
34505             NCHN=NCHN+1
34506             ISIG(NCHN,1)=I
34507             ISIG(NCHN,2)=-I
34508             ISIG(NCHN,3)=1
34509             IF(IZID1.EQ.IZID2) THEN
34510               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34511             ELSE
34512               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
34513      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34514               NCHN=NCHN+1
34515               ISIG(NCHN,1)=I
34516               ISIG(NCHN,2)=-I
34517               ISIG(NCHN,3)=2
34518               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34519      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
34520             ENDIF
34521   230     CONTINUE
34522  
34523         ELSEIF(ISUB.EQ.229) THEN
34524 C...q + qbar' -> ~chi0_1 + ~chi+-_1
34525           FACXX=COMFAC*AEM**2/6D0/XW**2
34526           ZM12=SQM3
34527           ZM22=SQM4
34528           WU2 = (UH-ZM12)*(UH-ZM22)
34529           WT2 = (TH-ZM12)*(TH-ZM22)
34530           WS2 = SMW(IZID1)*SMZ(IZID2)*SH
34531           RT2I = 1D0/SQRT(2D0)
34532           PROPW = DCMPLX(SH-SQMW,-WWID*PMAS(24,1))/
34533      &    DCMPLX((SH-SQMW)**2+WWID**2*SQMW,0D0)
34534           DO 240 I=1,2
34535             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
34536             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
34537   240     CONTINUE
34538           DO 250 I=1,4
34539             ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
34540   250     CONTINUE
34541           OL=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
34542      &    DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)*PROPW
34543           OR=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
34544      &    ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)*PROPW
34545  
34546           DO 270 I=MMIN1,MMAX1
34547             IA=IABS(I)
34548             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 270
34549             EI=KCHG(IA,1)/3D0
34550             T3I=SIGN(1D0,EI+1D-6)/2D0
34551             DO 260 J=MMIN2,MMAX2
34552               JA=IABS(J)
34553               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 260
34554               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 260
34555               EJ=KCHG(JA,1)/3D0
34556               T3J=SIGN(1D0,EJ+1D-6)/2D0
34557               FCKM=3D0
34558               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
34559               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
34560               KCHW=2
34561               IF(KCHSUM.LT.0) KCHW=3
34562               IF(MOD(IA,2).EQ.0) THEN
34563                 ZMI2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
34564                 ZMJ2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
34565                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
34566      &          TANW+ZMIXC(IZID2,2)*T3I)/DCMPLX(UH-ZMI2)
34567                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
34568      &          ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
34569      &          /DCMPLX(TH-ZMJ2)
34570               ELSE
34571                 ZMI2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
34572                 ZMJ2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
34573                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
34574      &          TANW+ZMIXC(IZID2,2)*T3J)/DCMPLX(UH-ZMJ2)
34575                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
34576      &          ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
34577      &          /DCMPLX(TH-ZMI2)
34578               ENDIF
34579               ZINTR=DBLE(QLR*DCONJG(QLL))
34580               FACGG1=FACXX*(ABS(QLL)**2*WU2+ABS(QLR)**2*WT2+
34581      &        2D0*ZINTR*WS2)
34582               NCHN=NCHN+1
34583               ISIG(NCHN,1)=I
34584               ISIG(NCHN,2)=J
34585               ISIG(NCHN,3)=1
34586               SIGH(NCHN)=FACGG1*FCKM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34587      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
34588   260       CONTINUE
34589   270     CONTINUE
34590         ENDIF
34591  
34592       ELSEIF(ISUB.LE.240) THEN
34593         IF(ISUB.EQ.237) THEN
34594 C...q + qbar -> gluino + ~chi0_1
34595           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34596      &    WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34597           ASYUK=RMSS(42)*AS
34598           FAC0=COMFAC*ASYUK*AEM*4D0/9D0/XW
34599           GM2=SQM3
34600           ZM2=SQM4
34601           DO 280 I=MMINA,MMAXA
34602             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 280
34603             EI=KCHG(IABS(I),1)/3D0
34604             IA=IABS(I)
34605             XLQC = -TANW*EI*ZMIX(IZID,1)
34606             XRQC =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
34607      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
34608             XLQ2=XLQC**2
34609             XRQ2=XRQC**2
34610             XML2=PMAS(PYCOMP(KSUSY1+IA),1)**2
34611             XMR2=PMAS(PYCOMP(KSUSY2+IA),1)**2
34612             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XML2)**2
34613             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XML2)**2
34614             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XML2)/(UH-XML2)
34615             SGCHIL=XLQ2*(ATKIN+AUKIN-2D0*ATUKIN)
34616             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMR2)**2
34617             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMR2)**2
34618             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XMR2)/(UH-XMR2)
34619             SGCHIR=XRQ2*(ATKIN+AUKIN-2D0*ATUKIN)
34620             NCHN=NCHN+1
34621             ISIG(NCHN,1)=I
34622             ISIG(NCHN,2)=-I
34623             ISIG(NCHN,3)=1
34624             SIGH(NCHN)=FAC0*(SGCHIL+SGCHIR)
34625   280     CONTINUE
34626         ENDIF
34627  
34628       ELSEIF(ISUB.LE.250) THEN
34629         IF(ISUB.EQ.241) THEN
34630 C...q + qbar' -> ~chi+-_1 + gluino
34631           FACWG=COMFAC*AS*AEM/XW*2D0/9D0
34632           GM2=SQM3
34633           ZM2=SQM4
34634           FAC01=2D0*UMIX(IZID,1)*VMIX(IZID,1)
34635           FAC0=UMIX(IZID,1)**2
34636           FAC1=VMIX(IZID,1)**2
34637           DO 300 I=MMIN1,MMAX1
34638             IA=IABS(I)
34639             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 300
34640             DO 290 J=MMIN2,MMAX2
34641               JA=IABS(J)
34642               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 290
34643               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 290
34644               FCKM=1D0
34645               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
34646               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
34647               KCHW=2
34648               IF(KCHSUM.LT.0) KCHW=3
34649               XMU2=PMAS(PYCOMP(KSUSY1+2),1)**2
34650               XMD2=PMAS(PYCOMP(KSUSY1+1),1)**2
34651               ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2
34652               AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2
34653               ATUKIN=SMW(IZID)*SQRT(GM2)*SH/(TH-XMU2)/(UH-XMD2)
34654               XMU2=PMAS(PYCOMP(KSUSY2+2),1)**2
34655               XMD2=PMAS(PYCOMP(KSUSY2+1),1)**2
34656               ATKIN=(ATKIN+(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2)/2D0
34657               AUKIN=(AUKIN+(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2)/2D0
34658               ATUKIN=(ATUKIN+SMW(IZID)*SQRT(GM2)*
34659      &        SH/(TH-XMU2)/(UH-XMD2))/2D0
34660               NCHN=NCHN+1
34661               ISIG(NCHN,1)=I
34662               ISIG(NCHN,2)=J
34663               ISIG(NCHN,3)=1
34664               SIGH(NCHN)=FACWG*FCKM*(FAC0*ATKIN+FAC1*AUKIN-
34665      &        FAC01*ATUKIN)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34666      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
34667   290       CONTINUE
34668   300     CONTINUE
34669  
34670         ELSEIF(ISUB.EQ.243) THEN
34671 C...q + qbar -> gluino + gluino
34672           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34673           XMT=SQM3-TH
34674           XMU=SQM3-UH
34675           DO 310 I=MMINA,MMAXA
34676             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
34677      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
34678             NCHN=NCHN+1
34679             XSU=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-UH
34680             XST=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-TH
34681             FACGG1=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
34682      &      2D0*SQM3*SH)/SH2 + RMSS(42)**2*(4D0/9D0*(XMT**2/XST**2+
34683      &      XMU**2/XSU**2) + SQM3*SH/XST/XSU/9D0) - RMSS(42)*(
34684      &      (XMT**2+SH*SQM3)/SH/XST + (XMU**2+SH*SQM3)/SH/XSU ))
34685             XSU=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-UH
34686             XST=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-TH
34687             FACGG2=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
34688      &      2D0*SQM3*SH)/SH2 + RMSS(42)**2*(4D0/9D0*(XMT**2/XST**2+
34689      &      XMU**2/XSU**2) + SQM3*SH/XST/XSU/9D0) - RMSS(42)*(
34690      &      (XMT**2+SH*SQM3)/SH/XST + (XMU**2+SH*SQM3)/SH/XSU ))
34691             ISIG(NCHN,1)=I
34692             ISIG(NCHN,2)=-I
34693             ISIG(NCHN,3)=1
34694 C...1/2 for identical particles
34695             SIGH(NCHN)=0.25D0*(FACGG1+FACGG2)
34696   310     CONTINUE
34697  
34698         ELSEIF(ISUB.EQ.244) THEN
34699 C...g + g -> gluino + gluino
34700           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34701           XMT=SQM3-TH
34702           XMU=SQM3-UH
34703           FACQQ1=COMFAC*AS**2*9D0/4D0*(
34704      &    (XMT*XMU-2D0*SQM3*(TH+SQM3))/XMT**2 -
34705      &    (XMT*XMU+SQM3*(UH-TH))/SH/XMT )
34706           FACQQ2=COMFAC*AS**2*9D0/4D0*(
34707      &    (XMU*XMT-2D0*SQM3*(UH+SQM3))/XMU**2 -
34708      &    (XMU*XMT+SQM3*(TH-UH))/SH/XMU )
34709           FACQQ3=COMFAC*AS**2*9D0/4D0*(2D0*XMT*XMU/SH2 +
34710      &    SQM3*(SH-4D0*SQM3)/XMT/XMU)
34711           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 320
34712           NCHN=NCHN+1
34713           ISIG(NCHN,1)=21
34714           ISIG(NCHN,2)=21
34715           ISIG(NCHN,3)=1
34716           SIGH(NCHN)=FACQQ1/2D0
34717           NCHN=NCHN+1
34718           ISIG(NCHN,1)=21
34719           ISIG(NCHN,2)=21
34720           ISIG(NCHN,3)=2
34721           SIGH(NCHN)=FACQQ2/2D0
34722           NCHN=NCHN+1
34723           ISIG(NCHN,1)=21
34724           ISIG(NCHN,2)=21
34725           ISIG(NCHN,3)=3
34726           SIGH(NCHN)=FACQQ3/2D0
34727   320     CONTINUE
34728  
34729         ELSEIF(ISUB.EQ.246) THEN
34730 C...g + q_j -> ~chi0_1 + ~q_j
34731           FAC0=COMFAC*AS*AEM/6D0/XW
34732           ZM2=SQM4
34733           QM2=SQM3
34734           FACZQ0=FAC0*( (ZM2-TH)/SH +
34735      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
34736      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
34737           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
34738           DO 340 I=-KFNSQ,KFNSQ,2*KFNSQ
34739             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 340
34740             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
34741             EI=KCHG(IABS(I),1)/3D0
34742             IA=IABS(I)
34743             XRQZ = -TANW*EI*ZMIX(IZID,1)
34744             XLQZ =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
34745      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
34746             IF(ILR.EQ.0) THEN
34747               BS=XLQZ**2*SFMIX(IA,1)**2+XRQZ**2*SFMIX(IA,2)**2
34748             ELSE
34749               BS=XLQZ**2*SFMIX(IA,3)**2+XRQZ**2*SFMIX(IA,4)**2
34750             ENDIF
34751             FACZQ=FACZQ0*BS
34752             KCHQ=2
34753             IF(I.LT.0) KCHQ=3
34754             DO 330 ISDE=1,2
34755               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
34756               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
34757               NCHN=NCHN+1
34758               ISIG(NCHN,ISDE)=I
34759               ISIG(NCHN,3-ISDE)=21
34760               ISIG(NCHN,3)=1
34761               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
34762      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34763   330       CONTINUE
34764   340     CONTINUE
34765         ENDIF
34766  
34767       ELSEIF(ISUB.LE.260) THEN
34768         IF(ISUB.EQ.254) THEN
34769 C...g + q_j -> ~chi1_1 + ~q_i
34770           FAC0=COMFAC*AS*AEM/12D0/XW
34771           ZM2=SQM4
34772           QM2=SQM3
34773           AU=UMIX(IZID,1)**2
34774           AD=VMIX(IZID,1)**2
34775           FACZQ0=FAC0*( (ZM2-TH)/SH +
34776      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
34777      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
34778           KFNSQ1=MOD(KFPR(ISUBSV,1),KSUSY1)
34779           IF(MOD(KFNSQ1,2).EQ.0) THEN
34780             KFNSQ=KFNSQ1-1
34781             KCHW=2
34782           ELSE
34783             KFNSQ=KFNSQ1+1
34784             KCHW=3
34785           ENDIF
34786           DO 360 I=-KFNSQ,KFNSQ,2*KFNSQ
34787             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 360
34788             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
34789             IA=IABS(I)
34790             IF(MOD(IA,2).EQ.0) THEN
34791               FACZQ=FACZQ0*AU
34792             ELSE
34793               FACZQ=FACZQ0*AD
34794             ENDIF
34795             FACZQ=FACZQ*SFMIX(KFNSQ1,1+2*ILR)**2
34796             KCHQ=2
34797             IF(I.LT.0) KCHQ=3
34798             KCHWQ=KCHW
34799             IF(I.LT.0) KCHWQ=5-KCHW
34800             DO 350 ISDE=1,2
34801               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
34802               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
34803               NCHN=NCHN+1
34804               ISIG(NCHN,ISDE)=I
34805               ISIG(NCHN,3-ISDE)=21
34806               ISIG(NCHN,3)=1
34807               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
34808      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHWQ)
34809   350       CONTINUE
34810   360     CONTINUE
34811  
34812         ELSEIF(ISUB.EQ.258) THEN
34813 C...g + q_j -> gluino + ~q_i
34814           XG2=SQM4
34815           XQ2=SQM3
34816           XMT=XG2-TH
34817           XMU=XG2-UH
34818           XST=XQ2-TH
34819           XSU=XQ2-UH
34820           FACQG1=0.5D0*4D0/9D0*XMT/SH + (XMT*SH+2D0*XG2*XST)/XMT**2 -
34821      &    ( (SH-XQ2+XG2)*(-XST)-SH*XG2 )/SH/(-XMT) +
34822      &    0.5D0*1D0/2D0*( XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST) +
34823      &    (-XMU)*(TH+XG2+2D0*XQ2) )/2D0/XMT/XSU
34824           FACQG2= 4D0/9D0*(-XMU)*(UH+XQ2)/XSU**2 + 1D0/18D0*
34825      &    (SH*(UH+XG2)
34826      &    +2D0*(XQ2-XG2)*XMU)/SH/(-XSU) + 0.5D0*4D0/9D0*XMT/SH +
34827      &    0.5D0*1D0/2D0*(XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST)+
34828      &    (-XMU)*(TH+XG2+2D0*XQ2))/2D0/XMT/XSU
34829           ASYUK=RMSS(42)*AS
34830           FACQG1=COMFAC*AS*ASYUK*FACQG1/2D0
34831           FACQG2=COMFAC*AS*ASYUK*FACQG2/2D0
34832           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
34833           DO 380 I=-KFNSQ,KFNSQ,2*KFNSQ
34834             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 380
34835             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 380
34836             KCHQ=2
34837             IF(I.LT.0) KCHQ=3
34838             FACSEL=RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
34839      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34840             DO 370 ISDE=1,2
34841               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 370
34842               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 370
34843               NCHN=NCHN+1
34844               ISIG(NCHN,ISDE)=I
34845               ISIG(NCHN,3-ISDE)=21
34846               ISIG(NCHN,3)=1
34847               SIGH(NCHN)=FACQG1*FACSEL
34848               NCHN=NCHN+1
34849               ISIG(NCHN,ISDE)=I
34850               ISIG(NCHN,3-ISDE)=21
34851               ISIG(NCHN,3)=2
34852               SIGH(NCHN)=FACQG2*FACSEL
34853   370       CONTINUE
34854   380     CONTINUE
34855         ENDIF
34856  
34857       ELSEIF(ISUB.LE.270) THEN
34858         IF(ISUB.EQ.261) THEN
34859 C...q_i + q_ibar -> ~t_1 + ~t_1bar
34860           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )*
34861      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34862           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
34863           FAC0=AS**2*4D0/9D0
34864           DO 390 I=MMIN1,MMAX1
34865             IA=IABS(I)
34866             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 390
34867             IF(IA.GE.11.AND.IA.LE.18) THEN
34868               EI=KCHG(IA,1)/3D0
34869               EJ=KCHG(KFNSQ,1)/3D0
34870               T3I=SIGN(1D0,EI)/2D0
34871               T3J=SIGN(1D0,EJ)/2D0
34872               XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,2*ILR+1)**2
34873               XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2*ILR+2)**2
34874               XLF=2D0*(T3I-EI*XW)
34875               XRF=2D0*(-EI*XW)
34876               TAA=0.5D0*(EI*EJ)**2
34877               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
34878               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
34879               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
34880               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
34881               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
34882             ENDIF
34883             NCHN=NCHN+1
34884             ISIG(NCHN,1)=I
34885             ISIG(NCHN,2)=-I
34886             ISIG(NCHN,3)=1
34887             SIGH(NCHN)=FACQQ1*FAC0
34888   390     CONTINUE
34889  
34890         ELSEIF(ISUB.EQ.263) THEN
34891 C...f + fbar -> ~t1 + ~t2bar
34892           DO 400 I=MMIN1,MMAX1
34893             IA=IABS(I)
34894             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
34895             EI=KCHG(IABS(I),1)/3D0
34896             TT3I=SIGN(1D0,EI)/2D0
34897             EJ=2D0/3D0
34898             TT3J=1D0/2D0
34899             FCOL=1D0
34900 C...Color factor for e+ e-
34901             IF(IA.GE.11) FCOL=3D0
34902             XLQ=2D0*(TT3J-EJ*XW)
34903             XRQ=2D0*(-EJ*XW)
34904             XLF=2D0*(TT3I-EI*XW)
34905             XRF=2D0*(-EI*XW)
34906             TZZ=(XLF**2+XRF**2)*(XLQ-XRQ)**2/64D0/XW**2/XW1**2
34907             TZZ=TZZ*(SFMIX(6,1)*SFMIX(6,2))**2
34908             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
34909 C...Factor of 2 for t1 t2bar + t2 t1bar
34910             FACQQ1=2D0*COMFAC*AEM**2*TZZ*FCOL*4D0
34911             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH2
34912             NCHN=NCHN+1
34913             ISIG(NCHN,1)=I
34914             ISIG(NCHN,2)=-I
34915             ISIG(NCHN,3)=1
34916             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34917      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
34918             NCHN=NCHN+1
34919             ISIG(NCHN,1)=I
34920             ISIG(NCHN,2)=-I
34921             ISIG(NCHN,3)=2
34922             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
34923      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34924   400     CONTINUE
34925  
34926         ELSEIF(ISUB.EQ.264) THEN
34927 C...g + g -> ~t_1 + ~t_1bar
34928           XSU=SQM3-UH
34929           XST=SQM3-TH
34930           FAC0=COMFAC*AS**2*(7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )*0.5D0*
34931      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34932           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
34933           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
34934           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
34935           NCHN=NCHN+1
34936           ISIG(NCHN,1)=21
34937           ISIG(NCHN,2)=21
34938           ISIG(NCHN,3)=1
34939           SIGH(NCHN)=FACQQ1
34940           NCHN=NCHN+1
34941           ISIG(NCHN,1)=21
34942           ISIG(NCHN,2)=21
34943           ISIG(NCHN,3)=2
34944           SIGH(NCHN)=FACQQ2
34945   410     CONTINUE
34946         ENDIF
34947  
34948       ELSEIF(ISUB.LE.280) THEN
34949         IF(ISUB.EQ.271) THEN
34950 C...q + q' -> ~q + ~q' (~g exchange)
34951           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
34952           XMT=XMG2-TH
34953           XMU=XMG2-UH
34954           XSU1=SQM3-UH
34955           XSU2=SQM4-UH
34956           XST1=SQM3-TH
34957           XST2=SQM4-TH
34958           ASYUK=RMSS(42)*AS
34959           IF(ILR.EQ.1) THEN
34960             FACQQ1=COMFAC*ASYUK**2*4D0/9D0*( -(XST1*XST2+SH*TH)/XMT**2 )
34961             FACQQ2=COMFAC*ASYUK**2*4D0/9D0*( -(XSU1*XSU2+SH*UH)/XMU**2 )
34962             FACQQB=0.0D0
34963           ELSE
34964             FACQQ1=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( SH*XMG2/XMT**2 )
34965             FACQQ2=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( SH*XMG2/XMU**2 )
34966             FACQQB=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( -2D0*SH*XMG2/3D0/
34967      &      XMT/XMU )
34968           ENDIF
34969           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
34970           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
34971           DO 430 I=-KFNSQI,KFNSQI,2*KFNSQI
34972             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 430
34973             IA=IABS(I)
34974             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
34975             KCHQ=2
34976             IF(I.LT.0) KCHQ=3
34977             DO 420 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
34978               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 420
34979               JA=IABS(J)
34980               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
34981               IF(I*J.LT.0) GOTO 420
34982               NCHN=NCHN+1
34983               ISIG(NCHN,1)=I
34984               ISIG(NCHN,2)=J
34985               ISIG(NCHN,3)=1
34986               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
34987      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
34988               IF(I.EQ.J) THEN
34989                 IF(ILR.EQ.0) THEN
34990                   SIGH(NCHN)=0.5D0*(FACQQ1+0.5D0*FACQQB)*RKF*
34991      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
34992                 ELSE
34993                   SIGH(NCHN)=0.5D0*FACQQ1*RKF*
34994      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
34995      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
34996                 ENDIF
34997                 NCHN=NCHN+1
34998                 ISIG(NCHN,1)=I
34999                 ISIG(NCHN,2)=J
35000                 ISIG(NCHN,3)=2
35001                 IF(ILR.EQ.0) THEN
35002                   SIGH(NCHN)=0.5D0*(FACQQ2+0.5D0*FACQQB)*RKF*
35003      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
35004                 ELSE
35005                   SIGH(NCHN)=0.5D0*FACQQ2*RKF*
35006      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35007      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
35008                 ENDIF
35009               ENDIF
35010   420       CONTINUE
35011   430     CONTINUE
35012  
35013         ELSEIF(ISUB.EQ.274) THEN
35014 C...q + qbar' -> ~q + ~qbar'
35015           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
35016           XMT=XMG2-TH
35017           XMU=XMG2-UH
35018           IF(ILR.EQ.0) THEN
35019 C...Mrenna...Normalization.and.1/XMT
35020             FACQQ1=COMFAC*AS**2*2D0/9D0*(
35021      &      (UH*TH-SQM3*SQM4)/XMT**2 )*RMSS(42)**2
35022             FACQQB=COMFAC*AS**2*4D0/9D0*(
35023      &      (UH*TH-SQM3*SQM4)/SH2 )
35024             FACQQI=-COMFAC*AS**2*4D0/27D0*(
35025      &      (UH*TH-SQM3*SQM4)/SH/XMT )*RMSS(42)
35026             FACQQB=FACQQB+FACQQ1+FACQQI
35027           ELSE
35028             FACQQ1=COMFAC*AS**2*4D0/9D0*( XMG2*SH/XMT**2 )*RMSS(42)**2
35029             FACQQB=FACQQ1
35030           ENDIF
35031           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
35032           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
35033           DO 450 I=-KFNSQI,KFNSQI,2*KFNSQI
35034             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 450
35035             IA=IABS(I)
35036             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 450
35037             KCHQ=2
35038             IF(I.LT.0) KCHQ=3
35039             DO 440 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
35040               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 440
35041               JA=IABS(J)
35042               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 440
35043               IF(I*J.GT.0) GOTO 440
35044               NCHN=NCHN+1
35045               ISIG(NCHN,1)=I
35046               ISIG(NCHN,2)=J
35047               ISIG(NCHN,3)=1
35048               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35049      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),5-KCHQ)
35050               IF(ILR.EQ.0.AND.I.EQ.-J) SIGH(NCHN)=FACQQB*RKF*
35051      &        WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35052   440       CONTINUE
35053   450     CONTINUE
35054  
35055         ELSEIF(ISUB.EQ.277) THEN
35056 C...q_i + q_ibar -> ~q_j + ~q_jbar ,i .ne. j
35057 C...if i .eq. j covered in 274
35058           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )
35059           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
35060           FAC0=0D0
35061           DO 460 I=MMIN1,MMAX1
35062             IA=IABS(I)
35063             IF(I.EQ.0.OR.(IA.GT.MSTP(58).AND.IA.LE.10).OR.
35064      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
35065             IF(IA.EQ.KFNSQ) GOTO 460
35066             IF(IA.EQ.11.OR.IA.EQ.13.OR.IA.EQ.15) THEN
35067               EI=KCHG(IA,1)/3D0
35068               EJ=KCHG(KFNSQ,1)/3D0
35069               T3J=SIGN(0.5D0,EJ)
35070               T3I=SIGN(1D0,EI)/2D0
35071               IF(ILR.EQ.0) THEN
35072                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,1)
35073                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2)
35074               ELSE
35075                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,3)
35076                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,4)
35077               ENDIF
35078               XLF=2D0*(T3I-EI*XW)
35079               XRF=2D0*(-EI*XW)
35080               IF(ILR.EQ.0) THEN
35081                 XRQ=0D0
35082               ELSE
35083                 XLQ=0D0
35084               ENDIF
35085               TAA=0.5D0*(EI*EJ)**2
35086               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
35087               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
35088               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
35089               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
35090               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
35091             ELSEIF(IA.LE.6) THEN
35092               FAC0=AS**2*8D0/9D0/2D0
35093             ENDIF
35094             NCHN=NCHN+1
35095             ISIG(NCHN,1)=I
35096             ISIG(NCHN,2)=-I
35097             ISIG(NCHN,3)=1
35098             SIGH(NCHN)=FACQQ1*FAC0*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35099   460     CONTINUE
35100  
35101         ELSEIF(ISUB.EQ.279) THEN
35102 C...g + g -> ~q_j + ~q_jbar
35103           XSU=SQM3-UH
35104           XST=SQM3-TH
35105 C...5=RKF because ~t ~tbar treated separately
35106           FAC0=RKF*COMFAC*AS**2*( 7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )
35107           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
35108           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
35109           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 470
35110           NCHN=NCHN+1
35111           ISIG(NCHN,1)=21
35112           ISIG(NCHN,2)=21
35113           ISIG(NCHN,3)=1
35114           SIGH(NCHN)=FACQQ1/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35115           NCHN=NCHN+1
35116           ISIG(NCHN,1)=21
35117           ISIG(NCHN,2)=21
35118           ISIG(NCHN,3)=2
35119           SIGH(NCHN)=FACQQ2/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35120   470     CONTINUE
35121  
35122         ENDIF
35123       ENDIF
35124 CMRENNA--
35125  
35126       RETURN
35127       END
35128  
35129 C*********************************************************************
35130  
35131 C...PYSGTC
35132 C...Subprocess cross sections for Technicolor processes.
35133 C...Auxiliary to PYSIGH.
35134  
35135       SUBROUTINE PYSGTC(NCHN,SIGS)
35136  
35137 C...Double precision and integer declarations
35138       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35139       IMPLICIT INTEGER(I-N)
35140       INTEGER PYK,PYCHGE,PYCOMP
35141 C...Parameter statement to help give large particle numbers.
35142       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
35143      &KEXCIT=4000000,KDIMEN=5000000)
35144 C...Commonblocks
35145       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35146       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
35147       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
35148       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
35149       COMMON/PYINT1/MINT(400),VINT(400)
35150       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
35151       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
35152       COMMON/PYINT4/MWID(500),WIDS(500,5)
35153       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
35154       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
35155      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
35156      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
35157      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
35158       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
35159      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
35160 C...Local arrays and complex variables
35161       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
35162       COMPLEX*16 SSMZ,SSMR,SSMO,DETD,F2L,F2R,DARHO,DZRHO,DAOME,DZOME
35163       COMPLEX*16 SSMX,DAAST,DZAST,DWAST
35164       COMPLEX*16 DAA,DZZ,DAZ,DWW,DWRHO
35165       COMPLEX*16 ZTC(6,6),YTC(6,6),DGGS,DGGT,DGGU,DGVS,DGVT,DGVU
35166       COMPLEX*16 DQQS,DQQT,DQQU,DQTS,DQGS,DTGS
35167       COMPLEX*16 DVVS,DVVT,DVVU
35168       INTEGER INDX(6)
35169  
35170 C...Combinations of weak mixing angle.
35171       TANW=SQRT(XW/XW1)
35172       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
35173  
35174 C...Convert almost equivalent technicolor processes into
35175 C...a few basic processes, and set distinguishing parameters.
35176       IF(ISUB.GE.361.AND.ISUB.LE.380) THEN
35177         SQTV=RTCM(12)**2
35178         SQTA=RTCM(13)**2
35179         SN2W=2D0*SQRT(XW*XW1)
35180         CS2W=1D0-2D0*XW
35181         CT2W=CS2W/SN2W
35182         CSXI=COS(ASIN(RTCM(3)))
35183         CSXIP=COS(ASIN(RTCM(4)))
35184         QUPD=2D0*RTCM(2)-1D0
35185         Q2UD=RTCM(2)**2+(RTCM(2)-1D0)**2
35186         CAB2=0D0
35187         VOGP=0D0
35188         VRGP=0D0
35189         AOGP=0D0
35190         ARGP=0D0
35191         VXGP=0D0
35192         AXGP=0D0
35193         VAGP=0D0
35194         VZGP=0D0
35195         VWGP=0D0
35196 C... rho_tc0, etc. -> W_L W_L, W_L W_T
35197         IF(ISUB.EQ.361) THEN
35198            KFA=24
35199            KFB=24
35200            CAB2=RTCM(3)**4
35201            AXGP=-RTCM(3)/(2D0*SQRT(XW))/RTCM(49)
35202            ARGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(13)
35203            VOGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(12)
35204 C...Multiply by sqrt(2) to account for W^+_T W^-_L + W^+_L W^-_T.
35205            AXGP = SQRT(2D0)*AXGP
35206            ARGP = SQRT(2D0)*ARGP
35207            VOGP = SQRT(2D0)*VOGP
35208 C... rho_tc0 -> W_L pi_tc-
35209         ELSEIF(ISUB.EQ.362) THEN
35210            KFA=24
35211            KFB=KTECHN+211
35212            ISUB=361
35213            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
35214 C... pi_tc pi_tc
35215         ELSEIF(ISUB.EQ.363) THEN
35216            KFA=KTECHN+211
35217            KFB=KTECHN+211
35218            ISUB=361
35219            CAB2=(1D0-RTCM(3)**2)**2
35220 C... rho_tc0/omega_tc -> gamma pi_tc
35221         ELSEIF(ISUB.EQ.364) THEN
35222            KFA=22
35223            KFB=KTECHN+111
35224            ISUB=361
35225            VOGP=CSXI/RTCM(12)
35226            VRGP=VOGP*QUPD
35227            VAGP=2D0*QUPD*CSXI
35228            VZGP=QUPD*CSXI*(1D0-4D0*XW)/SN2W
35229 C... gamma pi_tc'
35230         ELSEIF(ISUB.EQ.365) THEN
35231            KFA=22
35232            KFB=KTECHN+221
35233            ISUB=361
35234            VRGP=CSXIP/RTCM(12)
35235            VOGP=VRGP*QUPD
35236            VAGP=2D0*Q2UD*CSXIP
35237            VZGP=CSXIP/SN2W*(1D0-4D0*XW*Q2UD)
35238 C... Z pi_tc
35239         ELSEIF(ISUB.EQ.366) THEN
35240            KFA=23
35241            KFB=KTECHN+111
35242            ISUB=361
35243            VOGP=CSXI*CT2W/RTCM(12)
35244            VRGP=-QUPD*CSXI*TANW/RTCM(12)
35245            VAGP=QUPD*CSXI*(1D0-4D0*XW)/SN2W
35246            VZGP=-QUPD*CSXI*CS2W/XW1
35247 C... Z pi_tc'
35248         ELSEIF(ISUB.EQ.367) THEN
35249            KFA=23
35250            KFB=KTECHN+221
35251            ISUB=361
35252 C...RTCM(48) is the M_V for the techni-a
35253            VXGP=-CSXIP/SN2W/RTCM(48)
35254            VRGP=CSXIP*CT2W/RTCM(12)
35255            VOGP=-QUPD*CSXIP*TANW/RTCM(12)
35256            VAGP=CSXIP*(1D0-4D0*Q2UD*XW)/SN2W
35257            VZGP=2D0*CSXIP*(CS2W+4D0*Q2UD*XW**2)/SN2W**2
35258 C... W_T pi_tc
35259         ELSEIF(ISUB.EQ.368) THEN
35260            KFA=24
35261            KFB=KTECHN+211
35262            ISUB=361
35263 C...RTCM(49) is the M_A for the techni-a
35264            AXGP=-CSXI/(2D0*SQRT(XW))/RTCM(49)
35265            VOGP=CSXI/(2D0*SQRT(XW))/RTCM(12)
35266            ARGP=CSXI/(2D0*SQRT(XW))/RTCM(13)
35267            VAGP=QUPD*CSXI/(2D0*SQRT(XW))
35268            VZGP=-QUPD*CSXI/(2D0*SQRT(XW1))
35269 C... rho_tc+, a_T+ -> W_L Z_L, W_T Z_L
35270         ELSEIF(ISUB.EQ.370) THEN
35271            KFA=24
35272            KFB=23
35273            CAB2=RTCM(3)**4
35274            ARGP=-RTCM(3)/(2D0*SQRT(XW))/RTCM(13)
35275            AXGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(49)
35276 C... W_L pi_tc0
35277         ELSEIF(ISUB.EQ.371) THEN
35278            KFA=24
35279            KFB=KTECHN+111
35280            ISUB=370
35281            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
35282 C... Z_L pi_tc+
35283         ELSEIF(ISUB.EQ.372) THEN
35284            KFA=KTECHN+211
35285            KFB=23
35286            ISUB=370
35287            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
35288 C... pi_tc+ pi_tc0
35289         ELSEIF(ISUB.EQ.373) THEN
35290            KFA=KTECHN+211
35291            KFB=KTECHN+111
35292            ISUB=370
35293            CAB2=(1D0-RTCM(3)**2)**2
35294 C... gamma pi_tc+
35295         ELSEIF(ISUB.EQ.374) THEN
35296            KFA=KTECHN+211
35297            KFB=22
35298            ISUB=370
35299            VRGP=QUPD*CSXI/RTCM(12)
35300            VWGP=QUPD*CSXI/(2D0*SQRT(XW))
35301            AXGP=-CSXI/RTCM(49)
35302 C... Z_T pi_tc+
35303         ELSEIF(ISUB.EQ.375) THEN
35304            KFA=KTECHN+211
35305            KFB=23
35306            ISUB=370
35307            VRGP=-QUPD*CSXI*TANW/RTCM(12)
35308            ARGP=CSXI/(2D0*SQRT(XW*XW1))/RTCM(13)
35309            VWGP=-QUPD*CSXI/(2D0*SQRT(XW1))
35310            AXGP=-CSXI*CT2W/RTCM(49)
35311 C... W_T pi_tc0
35312         ELSEIF(ISUB.EQ.376) THEN
35313            KFA=24
35314            KFB=KTECHN+111
35315            ISUB=370
35316            VRGP=0D0
35317            ARGP=-CSXI/(2D0*SQRT(XW))/RTCM(13)
35318            AXGP=CSXI/(2D0*SQRT(XW))/RTCM(49)
35319 C... W_T pi_tc0'
35320         ELSEIF(ISUB.EQ.377) THEN
35321            KFA=24
35322            KFB=KTECHN+221
35323            ISUB=370
35324            VRGP=CSXIP/(2D0*SQRT(XW))/RTCM(12)
35325            VWGP=CSXIP/(2D0*XW)
35326            VXGP=-CSXIP/(2D0*SQRT(XW))/RTCM(48)
35327 C... gamma W+
35328         ELSEIF(ISUB.EQ.378) THEN
35329            KFA=24
35330            KFB=22
35331            ISUB=370
35332            VRGP=QUPD*RTCM(3)/RTCM(12)
35333            AXGP=-RTCM(3)/RTCM(49)
35334 C... gamma Z
35335         ELSEIF(ISUB.EQ.379) THEN
35336            KFA=23
35337            KFB=22
35338            ISUB=361
35339            VOGP=RTCM(3)/RTCM(12)
35340            VRGP=QUPD*RTCM(3)/RTCM(12)
35341         ELSEIF(ISUB.EQ.380) THEN
35342            KFA=23
35343            KFB=23
35344            ISUB=361
35345            VOGP=RTCM(3)*CT2W/RTCM(12)
35346            VRGP=-QUPD*RTCM(3)*TANW/RTCM(12)
35347         ENDIF
35348       ENDIF
35349  
35350 C...QCD 2 -> 2 processes: corrections from virtual technicolor exchange.
35351       IF(ISUB.GE.381.AND.ISUB.LE.388) THEN
35352         IF(ITCM(5).LE.4) THEN
35353           SQDQQS=1D0/SH2
35354           SQDQQT=1D0/TH2
35355           SQDQQU=1D0/UH2
35356           SQDGGS=SQDQQS
35357           SQDGGT=SQDQQT
35358           SQDGGU=SQDQQU
35359           REDGGS=1D0/SH
35360           REDGGT=1D0/TH
35361           REDGGU=1D0/UH
35362           REDGTU=1D0/UH/TH
35363           REDGSU=1D0/SH/UH
35364           REDGST=1D0/SH/TH
35365           REDQST=1D0/SH/TH
35366           REDQTU=1D0/UH/TH
35367           SQDLGS=0D0
35368           SQDLGT=0D0
35369           SQDQTS=SQDQQS
35370         ELSEIF(ITCM(5).EQ.5) THEN
35371           TANT3=RTCM(21)
35372           IF(ITCM(2).EQ.0) THEN
35373             IMDL=1
35374           ELSE
35375             IMDL=2
35376           ENDIF
35377           ALPRHT=2.16D0*(3D0/ITCM(1))
35378           SIN2T=2D0*TANT3/(TANT3**2+1D0)
35379           SINT3=TANT3/SQRT(TANT3**2+1D0)
35380           XIG=SQRT(PYALPS(SH)/ALPRHT)
35381           X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
35382      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)/SIN2T
35383           X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
35384      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)/SIN2T
35385           X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
35386      &    SINT3**2)*2D0/SIN2T
35387           X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
35388      &    SINT3**2)*2D0/SIN2T
35389  
35390           SM1122=.5D0*(2D0-RTCM(29)**2-RTCM(31)**2)*RTCM(28)**2
35391           SM1112=X12*RTCM(28)**2*SIN2T
35392           SM1121=-X21*RTCM(28)**2*SIN2T
35393           SM2212=-SM1112
35394           SM2221=-SM1121
35395           SM1221=-.5D0*((1D0-RTCM(29)**2)*SIN(2D0*RTCM(30))+
35396      &    (1D0-RTCM(31)**2)*SIN(2D0*RTCM(32)))*RTCM(28)**2
35397  
35398 C.........SH LOOP
35399           ZTC(1,1)=DCMPLX(SH,0D0)
35400           CALL PYWIDT(3100021,SH,WDTP,WDTE)
35401           IF(WDTP(0).GT.RTCM(33)*SHR) WDTP(0)=RTCM(33)*SHR
35402           ZTC(2,2)=DCMPLX(SH-PMAS(PYCOMP(3100021),1)**2,-SHR*WDTP(0))
35403           CALL PYWIDT(3100113,SH,WDTP,WDTE)
35404           ZTC(3,3)=DCMPLX(SH-PMAS(PYCOMP(3100113),1)**2,-SHR*WDTP(0))
35405           CALL PYWIDT(3400113,SH,WDTP,WDTE)
35406           ZTC(4,4)=DCMPLX(SH-PMAS(PYCOMP(3400113),1)**2,-SHR*WDTP(0))
35407           CALL PYWIDT(3200113,SH,WDTP,WDTE)
35408           ZTC(5,5)=DCMPLX(SH-PMAS(PYCOMP(3200113),1)**2,-SHR*WDTP(0))
35409           CALL PYWIDT(3300113,SH,WDTP,WDTE)
35410           ZTC(6,6)=DCMPLX(SH-PMAS(PYCOMP(3300113),1)**2,-SHR*WDTP(0))
35411           ZTC(1,2)=(0D0,0D0)
35412           ZTC(1,3)=DCMPLX(SH*XIG,0D0)
35413           ZTC(1,4)=ZTC(1,3)
35414           ZTC(1,5)=ZTC(1,2)
35415           ZTC(1,6)=ZTC(1,2)
35416           ZTC(2,3)=DCMPLX(SH*XIG*X11,0D0)
35417           ZTC(2,4)=DCMPLX(SH*XIG*X22,0D0)
35418           ZTC(2,5)=DCMPLX(SH*XIG*X12,0D0)
35419           ZTC(2,6)=DCMPLX(SH*XIG*X21,0D0)
35420           ZTC(3,4)=-SM1122
35421           ZTC(3,5)=-SM1112
35422           ZTC(3,6)=-SM1121
35423           ZTC(4,5)=-SM2212
35424           ZTC(4,6)=-SM2221
35425           ZTC(5,6)=-SM1221
35426  
35427           DO 110 I=1,5
35428             DO 100 J=I+1,6
35429                ZTC(J,I)=ZTC(I,J)
35430   100       CONTINUE
35431   110     CONTINUE
35432           CALL PYLDCM(ZTC,6,6,INDX,D)
35433           DO 130 I=1,6
35434             DO 120 J=1,6
35435              YTC(I,J)=(0D0,0D0)
35436               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
35437   120       CONTINUE
35438   130     CONTINUE
35439  
35440           DO 140 I=1,6
35441             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
35442   140     CONTINUE
35443           DGGS=YTC(1,1)
35444           DVVS=YTC(2,2)
35445           DGVS=YTC(1,2)
35446  
35447           XIG=SQRT(PYALPS(-TH)/ALPRHT)
35448 C.........TH LOOP
35449           ZTC(1,1)=DCMPLX(TH)
35450           ZTC(2,2)=DCMPLX(TH-PMAS(PYCOMP(3100021),1)**2)
35451           ZTC(3,3)=DCMPLX(TH-PMAS(PYCOMP(3100113),1)**2)
35452           ZTC(4,4)=DCMPLX(TH-PMAS(PYCOMP(3400113),1)**2)
35453           ZTC(5,5)=DCMPLX(TH-PMAS(PYCOMP(3200113),1)**2)
35454           ZTC(6,6)=DCMPLX(TH-PMAS(PYCOMP(3300113),1)**2)
35455           ZTC(1,2)=(0D0,0D0)
35456           ZTC(1,3)=DCMPLX(TH*XIG,0D0)
35457           ZTC(1,4)=ZTC(1,3)
35458           ZTC(1,5)=ZTC(1,2)
35459           ZTC(1,6)=ZTC(1,2)
35460           ZTC(2,3)=DCMPLX(TH*XIG*X11,0D0)
35461           ZTC(2,4)=DCMPLX(TH*XIG*X22,0D0)
35462           ZTC(2,5)=DCMPLX(TH*XIG*X12,0D0)
35463           ZTC(2,6)=DCMPLX(TH*XIG*X21,0D0)
35464           ZTC(3,4)=-SM1122
35465           ZTC(3,5)=-SM1112
35466           ZTC(3,6)=-SM1121
35467           ZTC(4,5)=-SM2212
35468           ZTC(4,6)=-SM2221
35469           ZTC(5,6)=-SM1221
35470           DO 160 I=1,5
35471             DO 150 J=I+1,6
35472                ZTC(J,I)=ZTC(I,J)
35473   150       CONTINUE
35474   160     CONTINUE
35475           CALL PYLDCM(ZTC,6,6,INDX,D)
35476           DO 180 I=1,6
35477             DO 170 J=1,6
35478               YTC(I,J)=(0D0,0D0)
35479               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
35480   170       CONTINUE
35481   180     CONTINUE
35482           DO 190 I=1,6
35483             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
35484   190     CONTINUE
35485           DGGT=YTC(1,1)
35486           DVVT=YTC(2,2)
35487           DGVT=YTC(1,2)
35488  
35489           XIG=SQRT(PYALPS(-UH)/ALPRHT)
35490 C.........UH LOOP
35491           ZTC(1,1)=DCMPLX(UH,0D0)
35492           ZTC(2,2)=DCMPLX(UH-PMAS(PYCOMP(3100021),1)**2)
35493           ZTC(3,3)=DCMPLX(UH-PMAS(PYCOMP(3100113),1)**2)
35494           ZTC(4,4)=DCMPLX(UH-PMAS(PYCOMP(3400113),1)**2)
35495           ZTC(5,5)=DCMPLX(UH-PMAS(PYCOMP(3200113),1)**2)
35496           ZTC(6,6)=DCMPLX(UH-PMAS(PYCOMP(3300113),1)**2)
35497           ZTC(1,2)=(0D0,0D0)
35498           ZTC(1,3)=DCMPLX(UH*XIG,0D0)
35499           ZTC(1,4)=ZTC(1,3)
35500           ZTC(1,5)=ZTC(1,2)
35501           ZTC(1,6)=ZTC(1,2)
35502           ZTC(2,3)=DCMPLX(UH*XIG*X11,0D0)
35503           ZTC(2,4)=DCMPLX(UH*XIG*X22,0D0)
35504           ZTC(2,5)=DCMPLX(UH*XIG*X12,0D0)
35505           ZTC(2,6)=DCMPLX(UH*XIG*X21,0D0)
35506           ZTC(3,4)=-SM1122
35507           ZTC(3,5)=-SM1112
35508           ZTC(3,6)=-SM1121
35509           ZTC(4,5)=-SM2212
35510           ZTC(4,6)=-SM2221
35511           ZTC(5,6)=-SM1221
35512           DO 210 I=1,5
35513             DO 200 J=I+1,6
35514                ZTC(J,I)=ZTC(I,J)
35515   200       CONTINUE
35516   210     CONTINUE
35517           CALL PYLDCM(ZTC,6,6,INDX,D)
35518           DO 230 I=1,6
35519             DO 220 J=1,6
35520               YTC(I,J)=(0D0,0D0)
35521               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
35522   220       CONTINUE
35523   230     CONTINUE
35524           DO 240 I=1,6
35525             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
35526   240     CONTINUE
35527           DGGU=YTC(1,1)
35528           DVVU=YTC(2,2)
35529           DGVU=YTC(1,2)
35530  
35531           IF(IMDL.EQ.1) THEN
35532             DQQS=DGGS+DVVS*DCMPLX(TANT3**2)-DGVS*DCMPLX(2D0*TANT3)
35533             DQQT=DGGT+DVVT*DCMPLX(TANT3**2)-DGVT*DCMPLX(2D0*TANT3)
35534             DQQU=DGGU+DVVU*DCMPLX(TANT3**2)-DGVU*DCMPLX(2D0*TANT3)
35535             DQTS=DGGS-DVVS-DGVS*DCMPLX(TANT3-1D0/TANT3)
35536             DQGS=DGGS-DGVS*DCMPLX(TANT3)
35537             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
35538           ELSE
35539             DQQS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
35540             DQQT=DGGT+DVVT*DCMPLX(1D0/TANT3**2)+DGVT*DCMPLX(2D0/TANT3)
35541             DQQU=DGGU+DVVU*DCMPLX(1D0/TANT3**2)+DGVU*DCMPLX(2D0/TANT3)
35542             DQTS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
35543             DQGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
35544             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
35545           ENDIF
35546  
35547           SQDQTS=ABS(DQTS)**2
35548           SQDQQS=ABS(DQQS)**2
35549           SQDQQT=ABS(DQQT)**2
35550           SQDQQU=ABS(DQQU)**2
35551           SQDLGS=ABS(DCMPLX(SH)*DQGS-DCMPLX(1D0))**2
35552           REDLGS=DBLE(DQGS)
35553           SQDHGS=ABS(DCMPLX(SH)*DTGS-DCMPLX(1D0))**2
35554           REDHGS=DBLE(DTGS)
35555           SQDLGT=ABS(DCMPLX(TH)*DGGT-DCMPLX(1D0))**2
35556  
35557           SQDGGS=ABS(DGGS)**2
35558           SQDGGT=ABS(DGGT)**2
35559           SQDGGU=ABS(DGGU)**2
35560           REDGGS=DBLE(DGGS)
35561           REDGGT=DBLE(DGGT)
35562           REDGGU=DBLE(DGGU)
35563           REDGTU=DBLE(DGGU*DCONJG(DGGT))
35564           REDGSU=DBLE(DGGU*DCONJG(DGGS))
35565           REDGST=DBLE(DGGS*DCONJG(DGGT))
35566           REDQST=DBLE(DQQS*DCONJG(DQQT))
35567           REDQTU=DBLE(DQQT*DCONJG(DQQU))
35568         ENDIF
35569       ENDIF
35570  
35571  
35572 C...Differential cross section expressions.
35573  
35574       IF(ISUB.LE.190) THEN
35575         IF(ISUB.EQ.149) THEN
35576 C...g + g -> eta_tc
35577           KCTC=PYCOMP(KTECHN+331)
35578           CALL PYWIDT(KTECHN+331,SH,WDTP,WDTE)
35579           HS=SHR*WDTP(0)
35580           FACBW=COMFAC*0.5D0/((SH-PMAS(KCTC,1)**2)**2+HS**2)
35581           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
35582           HP=SH
35583           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 250
35584           HI=HP*WDTP(3)
35585           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35586           NCHN=NCHN+1
35587           ISIG(NCHN,1)=21
35588           ISIG(NCHN,2)=21
35589           ISIG(NCHN,3)=1
35590           SIGH(NCHN)=HI*FACBW*HF
35591   250     CONTINUE
35592  
35593         ELSEIF(ISUB.EQ.165) THEN
35594 C...q + qbar -> l+ + l- (including contact term for compositeness)
35595           ZRATR=XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
35596           ZRATI=XWC*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
35597           KFF=IABS(KFPR(ISUB,1))
35598           EF=KCHG(KFF,1)/3D0
35599           AF=SIGN(1D0,EF+0.1D0)
35600           VF=AF-4D0*EF*XWV
35601           VALF=VF+AF
35602           VARF=VF-AF
35603           FCOF=1D0
35604           IF(KFF.LE.10) FCOF=3D0
35605           WID2=1D0
35606           IF(KFF.EQ.6) WID2=WIDS(6,1)
35607           IF(KFF.EQ.7.OR.KFF.EQ.8) WID2=WIDS(KFF,1)
35608           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
35609           DO 260 I=MMINA,MMAXA
35610             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 260
35611             EI=KCHG(IABS(I),1)/3D0
35612             AI=SIGN(1D0,EI+0.1D0)
35613             VI=AI-4D0*EI*XWV
35614             VALI=VI+AI
35615             VARI=VI-AI
35616             FCOI=1D0
35617             IF(IABS(I).LE.10) FCOI=FACA/3D0
35618             IF((ITCM(5).EQ.1.AND.IABS(I).LE.2).OR.ITCM(5).EQ.2) THEN
35619               FGZA=(EI*EF+VALI*VALF*ZRATR+RTCM(42)*SH/
35620      &        (AEM*RTCM(41)**2))**2+(VALI*VALF*ZRATI)**2+
35621      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
35622             ELSE
35623               FGZA=(EI*EF+VALI*VALF*ZRATR)**2+(VALI*VALF*ZRATI)**2+
35624      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
35625             ENDIF
35626             FGZB=(EI*EF+VALI*VARF*ZRATR)**2+(VALI*VARF*ZRATI)**2+
35627      &      (EI*EF+VARI*VALF*ZRATR)**2+(VARI*VALF*ZRATI)**2
35628             FGZAB=AEM**2*(FGZA*UH2/SH2+FGZB*TH2/SH2)
35629             IF((ITCM(5).EQ.3.AND.IABS(I).EQ.2).OR.(ITCM(5).EQ.4.AND.
35630      &      MOD(IABS(I),2).EQ.0)) FGZAB=FGZAB+SH2/(2D0*RTCM(41)**4)
35631             NCHN=NCHN+1
35632             ISIG(NCHN,1)=I
35633             ISIG(NCHN,2)=-I
35634             ISIG(NCHN,3)=1
35635             SIGH(NCHN)=COMFAC*FCOI*FCOF*FGZAB*WID2
35636   260     CONTINUE
35637  
35638         ELSEIF(ISUB.EQ.166) THEN
35639 C...q + q'bar -> l + nu_l (including contact term for compositeness)
35640           WFAC=(1D0/4D0)*(AEM/XW)**2*UH2/((SH-SQMW)**2+GMMW**2)
35641           WCIFAC=WFAC+SH2/(4D0*RTCM(41)**4)
35642           KFF=IABS(KFPR(ISUB,1))
35643           FCOF=1D0
35644           IF(KFF.LE.10) FCOF=3D0
35645           DO 280 I=MMIN1,MMAX1
35646             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 280
35647             IA=IABS(I)
35648             DO 270 J=MMIN2,MMAX2
35649               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 270
35650               JA=IABS(J)
35651               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 270
35652               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
35653      &        GOTO 270
35654               FCOI=1D0
35655               IF(IA.LE.10) FCOI=VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
35656               WID2=1D0
35657               IF((I.GT.0.AND.MOD(I,2).EQ.0).OR.(J.GT.0.AND.
35658      &        MOD(J,2).EQ.0)) THEN
35659                 IF(KFF.EQ.5) WID2=WIDS(6,2)
35660                 IF(KFF.EQ.7) WID2=WIDS(8,2)*WIDS(7,3)
35661                 IF(KFF.EQ.17) WID2=WIDS(18,2)*WIDS(17,3)
35662               ELSE
35663                 IF(KFF.EQ.5) WID2=WIDS(6,3)
35664                 IF(KFF.EQ.7) WID2=WIDS(8,3)*WIDS(7,2)
35665                 IF(KFF.EQ.17) WID2=WIDS(18,3)*WIDS(17,2)
35666               ENDIF
35667               NCHN=NCHN+1
35668               ISIG(NCHN,1)=I
35669               ISIG(NCHN,2)=J
35670               ISIG(NCHN,3)=1
35671               SIGH(NCHN)=COMFAC*FCOI*FCOF*WFAC*WID2
35672               IF((ITCM(5).EQ.3.AND.IA.LE.2.AND.JA.LE.2).OR.ITCM(5).EQ.4)
35673      &        SIGH(NCHN)=COMFAC*FCOI*FCOF*WCIFAC*WID2
35674   270       CONTINUE
35675   280     CONTINUE
35676         ENDIF
35677  
35678       ELSEIF(ISUB.LE.200) THEN
35679         IF(ISUB.EQ.191) THEN
35680 C...q + qbar -> rho_tc0.
35681           KCTC=PYCOMP(KTECHN+113)
35682           SQMRHT=PMAS(KCTC,1)**2
35683           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
35684           HS=SHR*WDTP(0)
35685           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
35686           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
35687           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35688           ALPRHT=2.16D0*(3D0/ITCM(1))
35689           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)
35690           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
35691           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
35692           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
35693           DO 290 I=MMINA,MMAXA
35694             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 290
35695             IA=IABS(I)
35696             EI=KCHG(IABS(I),1)/3D0
35697             AI=SIGN(1D0,EI+0.1D0)
35698             VI=AI-4D0*EI*XWV
35699             VALI=0.5D0*(VI+AI)
35700             VARI=0.5D0*(VI-AI)
35701             HI=HP*((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
35702      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)
35703             IF(IA.LE.10) HI=HI*FACA/3D0
35704             NCHN=NCHN+1
35705             ISIG(NCHN,1)=I
35706             ISIG(NCHN,2)=-I
35707             ISIG(NCHN,3)=1
35708             SIGH(NCHN)=HI*FACBW*HF
35709   290     CONTINUE
35710  
35711         ELSEIF(ISUB.EQ.192) THEN
35712 C...q + qbar' -> rho_tc+/-.
35713           KCTC=PYCOMP(KTECHN+213)
35714           SQMRHT=PMAS(KCTC,1)**2
35715           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
35716           HS=SHR*WDTP(0)
35717           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
35718           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
35719           ALPRHT=2.16D0*(3D0/ITCM(1))
35720           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)*
35721      &    (0.25D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
35722           DO 310 I=MMIN1,MMAX1
35723             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 310
35724             IA=IABS(I)
35725             DO 300 J=MMIN2,MMAX2
35726               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 300
35727               JA=IABS(J)
35728               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 300
35729               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
35730      &        GOTO 300
35731               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
35732               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHR)/2)+WDTE(0,4))
35733               HI=HP
35734               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
35735               NCHN=NCHN+1
35736               ISIG(NCHN,1)=I
35737               ISIG(NCHN,2)=J
35738               ISIG(NCHN,3)=1
35739               SIGH(NCHN)=HI*FACBW*HF
35740   300       CONTINUE
35741   310     CONTINUE
35742  
35743         ELSEIF(ISUB.EQ.193) THEN
35744 C...q + qbar -> omega_tc0.
35745           KCTC=PYCOMP(KTECHN+223)
35746           SQMOMT=PMAS(KCTC,1)**2
35747           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
35748           HS=SHR*WDTP(0)
35749           FACBW=12D0*COMFAC/((SH-SQMOMT)**2+HS**2)
35750           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
35751           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35752           ALPRHT=2.16D0*(3D0/ITCM(1))
35753           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMOMT**2/SH)*
35754      &    (2D0*RTCM(2)-1D0)**2
35755           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
35756           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
35757           DO 320 I=MMINA,MMAXA
35758             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
35759             IA=IABS(I)
35760             EI=KCHG(IABS(I),1)/3D0
35761             AI=SIGN(1D0,EI+0.1D0)
35762             VI=AI-4D0*EI*XWV
35763             VALI=0.5D0*(VI+AI)
35764             VARI=0.5D0*(VI-AI)
35765             HI=HP*((EI-VALI*BWZR)**2+(VALI*BWZI)**2+
35766      &      (EI-VARI*BWZR)**2+(VARI*BWZI)**2)
35767             IF(IA.LE.10) HI=HI*FACA/3D0
35768             NCHN=NCHN+1
35769             ISIG(NCHN,1)=I
35770             ISIG(NCHN,2)=-I
35771             ISIG(NCHN,3)=1
35772             SIGH(NCHN)=HI*FACBW*HF
35773   320     CONTINUE
35774  
35775         ELSEIF(ISUB.EQ.194) THEN
35776 C...f + fbar -> f' + fbar' via s-channel rho_tc, omega_tc a_T0.
35777 C...Default final state is e+e-
35778           KFA=KFPR(ISUBSV,1)
35779           ALPRHT=2.16D0*(3D0/ITCM(1))
35780           HP=AEM**2*COMFAC
35781
35782           SN2W=2D0*SQRT(XW*XW1)
35783 C          TANW=SQRT(PARU(102)/(1D0-PARU(102)))
35784 C          CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
35785  
35786           QUPD=2D0*RTCM(2)-1D0
35787           FAR=SQRT(AEM/ALPRHT)
35788           FAO=FAR*QUPD
35789           FZR=FAR*CT2W
35790           FZO=-FAO*TANW
35791 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
35792           FZX=-FAR/SN2W*RTCM(47)
35793           SFAR=FAR**2
35794           SFAO=FAO**2
35795           SFZR=FZR**2
35796           SFZO=FZO**2
35797           SFZX=FZX**2
35798           CALL PYWIDT(23,SH,WDTP,WDTE)
35799           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
35800           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
35801           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
35802           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
35803           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
35804           CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
35805           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+115),1)**2/SH,WDTP(0)/SHR)
35806 C...Propagator including a_T^0
35807           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
35808      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
35809 C...Add in techni-a contribution
35810           DETD=SSMX*DETD-SFZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)
35811           DAA=(-SSMX*(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)-
35812      $     SFZX*SSMR*SSMO)/DETD/SH
35813           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH*SSMX
35814           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH*SSMX
35815  
35816           XWRHT=1D0/(4D0*XW*(1D0-XW))
35817           KFF=IABS(KFPR(ISUB,1))
35818           EF=KCHG(KFF,1)/3D0
35819           AF=SIGN(1D0,EF+0.1D0)
35820           VF=AF-4D0*EF*XWV
35821           VALF=0.5D0*(VF+AF)
35822           VARF=0.5D0*(VF-AF)
35823           FCOF=1D0
35824           IF(KFF.LE.10) FCOF=3D0
35825  
35826           WID2=1D0
35827           IF(KFF.GE.6.AND.KFF.LE.8) WID2=WIDS(KFF,1)
35828           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
35829           DZZ=DZZ*DCMPLX(XWRHT,0D0)
35830           DAZ=DAZ*DCMPLX(SQRT(XWRHT),0D0)
35831  
35832           DO 330 I=MMINA,MMAXA
35833             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 330
35834             EI=KCHG(IABS(I),1)/3D0
35835             AI=SIGN(1D0,EI+0.1D0)
35836             VI=AI-4D0*EI*XWV
35837             VALI=0.5D0*(VI+AI)
35838             VARI=0.5D0*(VI-AI)
35839             FCOI=FCOF
35840             IF(IABS(I).LE.10) FCOI=FCOI/3D0
35841             DIFLL=ABS(EI*EF*DAA+VALI*VALF*DZZ+DAZ*(EI*VALF+EF*VALI))**2
35842             DIFRR=ABS(EI*EF*DAA+VARI*VARF*DZZ+DAZ*(EI*VARF+EF*VARI))**2
35843             DIFLR=ABS(EI*EF*DAA+VALI*VARF*DZZ+DAZ*(EI*VARF+EF*VALI))**2
35844             DIFRL=ABS(EI*EF*DAA+VARI*VALF*DZZ+DAZ*(EI*VALF+EF*VARI))**2
35845             FACSIG=(DIFLL+DIFRR)*((UH-SQM4)**2+SH*SQM4)+
35846      &      (DIFLR+DIFRL)*((TH-SQM3)**2+SH*SQM3)
35847             NCHN=NCHN+1
35848             ISIG(NCHN,1)=I
35849             ISIG(NCHN,2)=-I
35850             ISIG(NCHN,3)=1
35851             SIGH(NCHN)=HP*FCOI*FACSIG*WID2
35852   330     CONTINUE
35853  
35854         ELSEIF(ISUB.EQ.195) THEN
35855 C...f + fbar' -> f'' + fbar''' via s-channel rho_tc+, a_T+
35856           KFA=KFPR(ISUBSV,1)
35857           KFB=KFA+1
35858           ALPRHT=2.16D0*(3D0/ITCM(1))
35859           FACTC=COMFAC*(AEM**2/12D0/XW**2)*(UH-SQM3)*(UH-SQM4)*3D0
35860  
35861           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
35862 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
35863 C
35864 C...Propagator including a_T^+
35865           FWX=-FWR*RTCM(47)
35866           CALL PYWIDT(24,SH,WDTP,WDTE)
35867           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
35868           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
35869           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
35870           CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
35871           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+215),1)**2/SH,WDTP(0)/SHR)
35872           DETD=SSMX*(SSMZ*SSMR-DCMPLX(FWR**2,0D0))-
35873      &     DCMPLX(FWX**2,0D0)*SSMR
35874           DWW=SSMR*SSMX/DETD/SH
35875           FCOF=1D0
35876           IF(KFA.LE.8) FCOF=3D0
35877           HP=FACTC*ABS(DWW)**2*FCOF
35878  
35879           DO 350 I=MMIN1,MMAX1
35880             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 350
35881             IA=IABS(I)
35882             DO 340 J=MMIN2,MMAX2
35883               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 340
35884               JA=IABS(J)
35885               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 340
35886               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
35887      &        GOTO 340
35888               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
35889               HI=HP
35890               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
35891               NCHN=NCHN+1
35892               ISIG(NCHN,1)=I
35893               ISIG(NCHN,2)=J
35894               ISIG(NCHN,3)=1
35895               SIGH(NCHN)=HI*WIDS(KFA,(5-KCHR)/2)*WIDS(KFB,(5+KCHR)/2)
35896   340       CONTINUE
35897   350     CONTINUE
35898         ENDIF
35899  
35900       ELSEIF(ISUB.LE.380) THEN
35901         ALPRHT=2.16D0*(3D0/ITCM(1))
35902         IF(ISUB.EQ.361) THEN
35903           FAR=SQRT(AEM/ALPRHT)
35904           FAO=FAR*QUPD
35905           FZR=FAR*CT2W
35906           FZO=-FAO*TANW
35907 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
35908           FZX=-FAR/SN2W*RTCM(47)
35909           SFAR=FAR**2
35910           SFAO=FAO**2
35911           SFZR=FZR**2
35912           SFZO=FZO**2
35913           SFZX=FZX**2
35914           CALL PYWIDT(23,SH,WDTP,WDTE)
35915           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
35916           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
35917           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
35918           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
35919           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
35920           CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
35921           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+115),1)**2/SH,WDTP(0)/SHR)
35922           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
35923      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
35924 C...Add in techni-a contribution
35925           DETD=SSMX*DETD-SFZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)
35926           DARHO=-(SSMX*(-FAR*SFZO+FAO*FZO*FZR+FAR*SSMO*SSMZ)-
35927      $     SFZX*FAR*SSMO)/DETD/SH
35928           DZRHO=-(-FZR*SFAO+FAO*FZO*FAR+FZR*SSMO)/DETD/SH*SSMX
35929           DAOME=-(SSMX*(-FAO*SFZR+FAR*FZO*FZR+FAO*SSMR*SSMZ)-
35930      $     SFZX*FAO*SSMR)/DETD/SH
35931           DZOME=-(-FZO*SFAR+FAR*FAO*FZR+FZO*SSMR)/DETD/SH*SSMX
35932           DAAST=-FZX*(FAO*FZO*SSMR+FAR*FZR*SSMO)/DETD/SH
35933           DZAST=-FZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)/DETD/SH
35934           DAA=(-SSMX*(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)-
35935      $     SFZX*SSMR*SSMO)/DETD/SH
35936           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH*SSMX
35937           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH*SSMX
35938  
35939 C...f + fbar -> gamma pi_tc, gamma pi_tc', Z pi_tc, Z pi_tc',
35940 C...W+W-, W pi_tc, pi_T pi_T, etc.
35941           FACA=(SH**2*BE34**2-(TH-UH)**2)
35942           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
35943           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
35944           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
35945           HP=(1D0/24D0)*AEM**2*COMFAC*3D0*SH 
35946           DO 370 I=MMINA,MMAXA
35947             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 370
35948             IA=IABS(I)
35949             EI=KCHG(IABS(I),1)/3D0
35950             AI=SIGN(1D0,EI+0.1D0)
35951             VI=AI-4D0*EI*XWV
35952             VALI=0.25D0*(VI+AI) ! = \zeta_{iL} in PRD67-115011
35953             VARI=0.25D0*(VI-AI) ! = \zeta_{iR} in PRD67-115011
35954 C...........Eqs. (5) and (6) in LSTC-rates.pdf
35955             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*VRGP
35956             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*VOGP
35957             F2L=F2L+(EI*DAAST+VALI*DZAST/SQRT(XW*XW1))*VXGP
35958             F2L=F2L+FANOM*(VAGP*(EI*DAA+VALI*DAZ/SQRT(XW*XW1))+
35959      $                    VZGP*(EI*DAZ+VALI*DZZ/SQRT(XW*XW1)))
35960             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*VRGP
35961             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*VOGP
35962             F2R=F2R+(EI*DAAST+VARI*DZAST/SQRT(XW*XW1))*VXGP
35963             F2R=F2R+FANOM*(VAGP*(EI*DAA+VARI*DAZ/SQRT(XW*XW1))+
35964      $                    VZGP*(EI*DAZ+VARI*DZZ/SQRT(XW*XW1)))
35965             HI=(ABS(F2L)**2+ABS(F2R)**2)*VFAC
35966 C...........Eqs. (5) and (7) in LSTC-rates.pdf
35967             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*ARGP
35968             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*AOGP
35969             F2L=F2L+(EI*DAAST+VALI*DZAST/SQRT(XW*XW1))*AXGP
35970             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*ARGP
35971             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*AOGP
35972             F2R=F2R+(EI*DAAST+VARI*DZAST/SQRT(XW*XW1))*AXGP
35973             HJ=(ABS(F2L)**2+ABS(F2R)**2)*AFAC
35974 C
35975 C...........Eqs. (24) in PRD67-115011 with DAA, etc.terms dropped.
35976 C
35977 c$$$            F2L=EI*(DARHO/FAR+(DAA+CT2W*DAZ))+
35978 c$$$     $      VALI*(CT2W*DZRHO/FZR+(CT2W*DZZ+DAZ))/SQRT(XW*XW1)
35979 c$$$            F2R=EI*(DARHO/FAR+(DAA+CT2W*DAZ))+
35980 c$$$     $      VARI*(CT2W*DZRHO/FZR+(CT2W*DZZ+DAZ))/SQRT(XW*XW1)
35981             F2L=EI*DARHO/FAR + VALI*CT2W*DZRHO/FZR/SQRT(XW*XW1)
35982             F2R=EI*DARHO/FAR + VARI*CT2W*DZRHO/FZR/SQRT(XW*XW1)
35983             HK=(ABS(F2L)**2+ABS(F2R)**2)*2D0*FACA*CAB2/SH
35984             HI=HI+HJ+HK
35985             IF(IA.LE.10) HI=HI/3D0
35986             NCHN=NCHN+1
35987             ISIG(NCHN,1)=I
35988             ISIG(NCHN,2)=-I
35989             ISIG(NCHN,3)=1
35990             IF(KFA.EQ.KFB) THEN
35991                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),1)
35992             ELSEIF(ISUBSV.EQ.362.OR.ISUBSV.EQ.368) THEN
35993                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),3)
35994                NCHN=NCHN+1
35995                ISIG(NCHN,1)=I
35996                ISIG(NCHN,2)=-I
35997                ISIG(NCHN,3)=2
35998                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),3)*WIDS(PYCOMP(KFB),2)
35999             ELSE 
36000                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),2)
36001             ENDIF
36002   370     CONTINUE
36003  
36004         ELSEIF(ISUB.EQ.370) THEN
36005 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
36006 C...f + fbar' -> gamma pi_tc, etc.
36007           FACA=(SH**2*BE34**2-(TH-UH)**2)
36008           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
36009           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
36010           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
36011           ALPRHT=2.16D0*(3D0/ITCM(1))
36012           FACHP=(1D0/48D0)*AEM**2/XW*COMFAC*3D0*SH
36013           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
36014 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
36015           FWX=-FWR*RTCM(47)
36016           CALL PYWIDT(24,SH,WDTP,WDTE)
36017           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
36018           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
36019           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
36020           CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
36021           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+215),1)**2/SH,WDTP(0)/SHR)
36022           DETD=SSMX*(SSMZ*SSMR-DCMPLX(FWR**2,0D0))-
36023      &     DCMPLX(FWX**2,0D0)*SSMR
36024           DWW=SSMR*SSMX/DETD/SH
36025           DWRHO=-DCMPLX(FWR,0D0)*SSMX/DETD/SH
36026           DWAST=-DCMPLX(FWX,0D0)*SSMR/DETD/SH
36027           HP=FACHP*(AFAC*ABS(DWRHO*ARGP+DWAST*AXGP)**2+
36028      $    VFAC*ABS(FANOM*DWW*VWGP+DWRHO*VRGP+DWAST*VXGP)**2)
36029 C
36030 C...........Eq. (25) in PRD67-115011 with DWW term dropped.
36031 C
36032 c$$$          HP=HP+.5D0*FACHP*CAB2*FACA/XW/SH*ABS(DWW + DWRHO/FWR)**2
36033           HP=HP+.5D0*FACHP*CAB2*FACA/XW/SH*ABS(DWRHO/FWR)**2
36034 C...Add in W_L Z_T axial and vector contributions.
36035           IF(ISUBSV.EQ.370) HP=HP+FACHP*RTCM(3)**2*(
36036      $    (TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM4)*     !AFAC w/ switched masses.
36037      $    ABS(DWRHO/RTCM(13)-DWAST/RTCM(49)*CS2W)**2/SN2W**2+
36038      $    VFAC*QUPD**2*XW/XW1*ABS(DWRHO)**2/RTCM(12)**2)
36039           DO 410 I=MMIN1,MMAX1
36040             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 410
36041             IA=IABS(I)
36042             DO 400 J=MMIN2,MMAX2
36043               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 400
36044               JA=IABS(J)
36045               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 400
36046               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
36047      &        GOTO 400
36048               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36049               HI=HP
36050               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
36051               NCHN=NCHN+1
36052               ISIG(NCHN,1)=I
36053               ISIG(NCHN,2)=J
36054               ISIG(NCHN,3)=1
36055               IF(ISUBSV.EQ.374.OR.ISUBSV.EQ.378) THEN
36056                 SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)
36057               ELSE
36058                 SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)*
36059      &          WIDS(PYCOMP(KFB),2)
36060               ENDIF
36061   400       CONTINUE
36062   410     CONTINUE
36063         ENDIF
36064  
36065       ELSEIF(ISUB.LE.390) THEN
36066         IF(ISUB.EQ.381) THEN
36067 C...f + f' -> f + f' (g exchange)
36068           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)*SQDQQT
36069           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)*SQDQQT*FACA-
36070      &    MSTP(34)*2D0/3D0*UH2*REDQST)
36071           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)*SQDQQU
36072           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
36073           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
36074           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
36075 C...Modifications from contact interactions (compositeness)
36076             FACCI1=FACQQ1+COMFAC*(SH2/RTCM(41)**4)
36077             FACCIB=FACQQB+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
36078      &      (UH2/TH+UH2/SH)+COMFAC*(5D0/3D0)*(UH2/RTCM(41)**4)
36079             FACCI2=FACQQ2+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
36080      &      (SH2/TH+SH2/UH)+COMFAC*(5D0/3D0)*(SH2/RTCM(41)**4)
36081             FACCI3=FACQQ1+COMFAC*(UH2/RTCM(41)**4)
36082             RATCII=(FACCI1+FACCI2+FACQQI)/(FACCI1+FACCI2)
36083           ELSEIF(ITCM(5).EQ.5) THEN
36084             FACCI1=FACQQ1
36085             FACCIB=FACQQB
36086             FACCI2=FACQQ2
36087             FACCI3=FACQQ1
36088 CSM.......Check this change from
36089 CSM            RATCII=1D0
36090             RATCII=RATQQI
36091           ENDIF
36092           DO 430 I=MMIN1,MMAX1
36093             IA=IABS(I)
36094             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
36095             DO 420 J=MMIN2,MMAX2
36096               JA=IABS(J)
36097               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
36098               NCHN=NCHN+1
36099               ISIG(NCHN,1)=I
36100               ISIG(NCHN,2)=J
36101               ISIG(NCHN,3)=1
36102               IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.(IA.GE.3.OR.
36103      &        JA.GE.3))) THEN
36104                 SIGH(NCHN)=FACQQ1
36105                 IF(I.EQ.-J) SIGH(NCHN)=FACQQB
36106               ELSE
36107                 SIGH(NCHN)=FACCI1
36108                 IF(I*J.LT.0) SIGH(NCHN)=FACCI3
36109                 IF(I.EQ.-J) SIGH(NCHN)=FACCIB
36110               ENDIF
36111               IF(I.EQ.J) THEN
36112                 NCHN=NCHN+1
36113                 ISIG(NCHN,1)=I
36114                 ISIG(NCHN,2)=J
36115                 ISIG(NCHN,3)=2
36116                 IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IA.GE.3)) THEN
36117                   SIGH(NCHN-1)=0.5D0*FACQQ1*RATQQI
36118                   SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
36119                 ELSE
36120                   SIGH(NCHN-1)=0.5D0*FACCI1*RATCII
36121                   SIGH(NCHN)=0.5D0*FACCI2*RATCII
36122                 ENDIF
36123               ENDIF
36124   420       CONTINUE
36125   430     CONTINUE
36126  
36127         ELSEIF(ISUB.EQ.382) THEN
36128 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
36129           CALL PYWIDT(21,SH,WDTP,WDTE)
36130           FACQQF=COMFAC*AS**2*4D0/9D0*(TH2+UH2)
36131           FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36132           IF(ITCM(5).EQ.1) THEN
36133 C...Modifications from contact interactions (compositeness)
36134             FACCIB=FACQQB
36135             DO 440 I=1,2
36136               FACCIB=FACCIB+COMFAC*(UH2/RTCM(41)**4)*(WDTE(I,1)+
36137      &        WDTE(I,2)+WDTE(I,4))
36138   440       CONTINUE
36139           ELSEIF(ITCM(5).GE.2.AND.ITCM(5).LE.4) THEN
36140             FACCIB=FACQQB+COMFAC*(UH2/RTCM(41)**4)*
36141      &      (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36142           ELSEIF(ITCM(5).EQ.5) THEN
36143             FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)-
36144      &      WDTE(5,1)-WDTE(5,2)-WDTE(5,4))
36145             FACCIB=FACQQF*SQDQTS*(WDTE(5,1)+WDTE(5,2)+WDTE(5,4))
36146           ENDIF
36147           DO 450 I=MMINA,MMAXA
36148             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36149      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 450
36150             NCHN=NCHN+1
36151             ISIG(NCHN,1)=I
36152             ISIG(NCHN,2)=-I
36153             ISIG(NCHN,3)=1
36154             IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IABS(I).GE.3)) THEN
36155               SIGH(NCHN)=FACQQB
36156             ELSEIF(ITCM(5).EQ.5) THEN
36157               SIGH(NCHN)=FACQQB
36158               NCHN=NCHN+1
36159               ISIG(NCHN,1)=I
36160               ISIG(NCHN,2)=-I
36161               ISIG(NCHN,3)=2
36162               SIGH(NCHN)=FACCIB
36163             ELSE
36164               SIGH(NCHN)=FACCIB
36165             ENDIF
36166   450     CONTINUE
36167  
36168         ELSEIF(ISUB.EQ.383) THEN
36169 C...f + fbar -> g + g (q + qbar -> g + g only)
36170           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
36171      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
36172           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
36173      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
36174           IF(ITCM(5).EQ.5) THEN
36175             FACGG3=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
36176      &      UH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
36177             FACGG4=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
36178      &      TH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
36179           ENDIF
36180           DO 460 I=MMINA,MMAXA
36181             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36182      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
36183             NCHN=NCHN+1
36184             ISIG(NCHN,1)=I
36185             ISIG(NCHN,2)=-I
36186             ISIG(NCHN,3)=1
36187             SIGH(NCHN)=0.5D0*FACGG1
36188             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG3
36189             NCHN=NCHN+1
36190             ISIG(NCHN,1)=I
36191             ISIG(NCHN,2)=-I
36192             ISIG(NCHN,3)=2
36193             SIGH(NCHN)=0.5D0*FACGG2
36194             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG4
36195   460     CONTINUE
36196  
36197         ELSEIF(ISUB.EQ.384) THEN
36198 C...f + g -> f + g (q + g -> q + g only)
36199           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
36200      &    UH/SH-9D0/4D0*SH*UH/TH2*SQDLGT)*FACA
36201           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
36202      &    SH/UH-9D0/4D0*SH*UH/TH2*SQDLGT)
36203           DO 480 I=MMINA,MMAXA
36204             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 480
36205             DO 470 ISDE=1,2
36206               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 470
36207               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 470
36208               NCHN=NCHN+1
36209               ISIG(NCHN,ISDE)=I
36210               ISIG(NCHN,3-ISDE)=21
36211               ISIG(NCHN,3)=1
36212               SIGH(NCHN)=FACQG1
36213               NCHN=NCHN+1
36214               ISIG(NCHN,ISDE)=I
36215               ISIG(NCHN,3-ISDE)=21
36216               ISIG(NCHN,3)=2
36217               SIGH(NCHN)=FACQG2
36218   470       CONTINUE
36219   480     CONTINUE
36220  
36221         ELSEIF(ISUB.EQ.385) THEN
36222 C...g + g -> f + fbar (g + g -> q + qbar only)
36223           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 500
36224           IDC0=MDCY(21,2)-1
36225 C...Begin by d, u, s flavours.
36226           FLAVWT=0D0
36227           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
36228      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
36229           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
36230      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
36231           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
36232      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
36233           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
36234      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
36235           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
36236      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
36237           NCHN=NCHN+1
36238           ISIG(NCHN,1)=21
36239           ISIG(NCHN,2)=21
36240           ISIG(NCHN,3)=1
36241           SIGH(NCHN)=FACQQ1
36242           NCHN=NCHN+1
36243           ISIG(NCHN,1)=21
36244           ISIG(NCHN,2)=21
36245           ISIG(NCHN,3)=2
36246           SIGH(NCHN)=FACQQ2
36247 C...Next c and b flavours: modified that and uhat for fixed
36248 C...cos(theta-hat).
36249           DO 490 IFL=4,5
36250           SQMAVG=PMAS(IFL,1)**2
36251           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
36252             BE34=SQRT(1D0-4D0*SQMAVG/SH)
36253             THQ=-0.5D0*SH*(1D0-BE34*CTH)
36254             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
36255             THUHQ=THQ*UHQ-SQMAVG*SH
36256             IF(MSTP(34).EQ.0) THEN
36257               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
36258               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
36259             ELSE
36260               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
36261      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
36262               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
36263      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
36264             ENDIF
36265             IF(ITCM(5).GE.5) THEN
36266               IF(IFL.EQ.4) THEN
36267                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
36268      &          2.25D0*THQ*UHQ/SH2*SQDLGS
36269                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
36270      &          2.25D0*THQ*UHQ/SH2*SQDLGS
36271               ELSE
36272                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
36273      &          2.25D0*THQ*UHQ/SH2*SQDHGS
36274                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
36275      &          2.25D0*THQ*UHQ/SH2*SQDHGS
36276               ENDIF
36277             ENDIF
36278             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
36279             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
36280             NCHN=NCHN+1
36281             ISIG(NCHN,1)=21
36282             ISIG(NCHN,2)=21
36283             ISIG(NCHN,3)=1+2*(IFL-3)
36284             SIGH(NCHN)=FACQQ1
36285             NCHN=NCHN+1
36286             ISIG(NCHN,1)=21
36287             ISIG(NCHN,2)=21
36288             ISIG(NCHN,3)=2+2*(IFL-3)
36289             SIGH(NCHN)=FACQQ2
36290           ENDIF
36291   490     CONTINUE
36292   500     CONTINUE
36293  
36294         ELSEIF(ISUB.EQ.386) THEN
36295 C...g + g -> g + g
36296           IF(ITCM(5).LE.4) THEN
36297             FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
36298      &      2D0*TH/SH+TH2/SH2)*FACA
36299             FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
36300      &      2D0*SH/UH+SH2/UH2)*FACA
36301             FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+
36302      &      2D0*UH/TH+UH2/TH2)
36303           ELSE
36304             GST=  (12D0 + 40D0*TH/SH + 56D0*TH2/SH2 + 32D0*TH**3/SH**3 +
36305      &      16D0*TH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*TH + 16D0*TH2)+
36306      &      4D0*REDGST*(SH + 2D0*TH)*
36307      &      (2D0*SH**3 - 3D0*SH2*TH - 2D0*SH*TH2 + 2D0*TH**3)/SH2 +
36308      &      2D0*REDGGS*(2D0*SH - 12D0*TH2/SH - 8D0*TH**3/SH2) +
36309      &      2D0*REDGGT*(4D0*SH - 22D0*TH - 68D0*TH2/SH - 60D0*TH**3/SH2-
36310      &      32D0*TH**4/SH**3 - 16D0*TH**5/SH**4) +
36311      &      SQDGGT*(16D0*SH2 + 16D0*SH*TH + 68D0*TH2 + 144D0*TH**3/SH +
36312      &      96D0*TH**4/SH2 + 32D0*TH**5/SH**3 + 16D0*TH**6/SH**4))/16D0
36313             GSU=  (12D0 + 40D0*UH/SH + 56D0*UH2/SH2 + 32D0*UH**3/SH**3 +
36314      &      16D0*UH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*UH + 16D0*UH2)+
36315      &      4D0*REDGSU*(SH + 2D0*UH)*
36316      &      (2D0*SH**3 - 3D0*SH2*UH - 2D0*SH*UH2 + 2D0*UH**3)/SH2 +
36317      &      2D0*REDGGS*(2D0*SH - 12D0*UH2/SH - 8D0*UH**3/SH2) +
36318      &      2D0*REDGGU*(4D0*SH - 22D0*UH - 68D0*UH2/SH - 60D0*UH**3/SH2-
36319      &      32D0*UH**4/SH**3 - 16D0*UH**5/SH**4) +
36320      &      SQDGGU*(16D0*SH2 + 16D0*SH*UH + 68D0*UH2 + 144D0*UH**3/SH +
36321      &      96D0*UH**4/SH2 + 32D0*UH**5/SH**3 + 16D0*UH**6/SH**4))/16D0
36322             GUT=  (12D0 - 16D0*TH*(TH - UH)**2*UH/SH**4 +
36323      &      4D0*REDGGU*(2D0*TH**5 - 15D0*TH**4*UH - 48D0*TH**3*UH2 -
36324      &      58D0*TH2*UH**3 - 10D0*TH*UH**4 + UH**5)/SH**4 +
36325      &      4D0*REDGGT*(TH**5 - 10D0*TH**4*UH - 58D0*TH**3*UH2 -
36326      &      48D0*TH2*UH**3 - 15D0*TH*UH**4 + 2D0*UH**5)/SH**4 +
36327      &      4D0*SQDGGU*(4D0*TH**6 + 20D0*TH**5*UH + 57D0*TH**4*UH2 +
36328      &      72D0*TH**3*UH**3+ 38D0*TH2*UH**4+4D0*TH*UH**5 +UH**6)/SH**4+
36329      &      4D0*SQDGGT*(4D0*UH**6 + 4D0*TH**5*UH + 38D0*TH**4*UH2 +
36330      &      72D0*TH**3*UH**3 +57D0*TH2*UH**4+20D0*TH*UH**5+TH**6)/SH**4+
36331      &      2D0*REDGTU*((TH - UH)**2* (TH**4 + 20D0*TH**3*UH +
36332      &      30D0*TH2*UH2 + 20D0*TH*UH**3 + UH**4) +
36333      &      SH2*(7D0*TH**4 + 52D0*TH**3*UH + 274D0*TH2*UH2 +
36334      &      52D0*TH*UH**3 + 7D0*UH**4))/(2D0*SH**4))/16D0
36335             FACGG1=COMFAC*AS**2*9D0/4D0*GST*FACA
36336             FACGG2=COMFAC*AS**2*9D0/4D0*GSU*FACA
36337             FACGG3=COMFAC*AS**2*9D0/4D0*GUT
36338           ENDIF
36339           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 510
36340           NCHN=NCHN+1
36341           ISIG(NCHN,1)=21
36342           ISIG(NCHN,2)=21
36343           ISIG(NCHN,3)=1
36344           SIGH(NCHN)=0.5D0*FACGG1
36345           NCHN=NCHN+1
36346           ISIG(NCHN,1)=21
36347           ISIG(NCHN,2)=21
36348           ISIG(NCHN,3)=2
36349           SIGH(NCHN)=0.5D0*FACGG2
36350           NCHN=NCHN+1
36351           ISIG(NCHN,1)=21
36352           ISIG(NCHN,2)=21
36353           ISIG(NCHN,3)=3
36354           SIGH(NCHN)=0.5D0*FACGG3
36355   510     CONTINUE
36356  
36357         ELSEIF(ISUB.EQ.387) THEN
36358 C...q + qbar -> Q + Qbar
36359           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
36360           THQ=-0.5D0*SH*(1D0-BE34*CTH)
36361           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
36362           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
36363      &    2D0*SQMAVG/SH)
36364           IF(ITCM(5).GE.5) THEN
36365             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
36366               FACQQB=FACQQB*SH2*SQDQTS
36367             ELSE
36368               FACQQB=FACQQB*SH2*SQDQQS
36369             ENDIF
36370           ENDIF
36371           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
36372           WID2=1D0
36373           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
36374           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
36375           FACQQB=FACQQB*WID2
36376           DO 520 I=MMINA,MMAXA
36377             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36378      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 520
36379             NCHN=NCHN+1
36380             ISIG(NCHN,1)=I
36381             ISIG(NCHN,2)=-I
36382             ISIG(NCHN,3)=1
36383             SIGH(NCHN)=FACQQB
36384   520     CONTINUE
36385  
36386         ELSEIF(ISUB.EQ.388) THEN
36387 C...g + g -> Q + Qbar
36388           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
36389           THQ=-0.5D0*SH*(1D0-BE34*CTH)
36390           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
36391           THUHQ=THQ*UHQ-SQMAVG*SH
36392           IF(MSTP(34).EQ.0) THEN
36393             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
36394             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
36395           ELSE
36396             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
36397      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
36398             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
36399      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
36400           ENDIF
36401           IF(ITCM(5).GE.5) THEN
36402             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
36403               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
36404      &        2.25D0*THQ*UHQ/SH2*SQDHGS
36405               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
36406      &        2.25D0*THQ*UHQ/SH2*SQDHGS
36407             ELSE
36408               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
36409      &        2.25D0*THQ*UHQ/SH2*SQDLGS
36410               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
36411      &        2.25D0*THQ*UHQ/SH2*SQDLGS
36412             ENDIF
36413           ENDIF
36414           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
36415           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
36416           IF(MSTP(35).GE.1) THEN
36417             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
36418             FACQQ1=FACQQ1*FATRE
36419             FACQQ2=FACQQ2*FATRE
36420           ENDIF
36421           WID2=1D0
36422           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
36423           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
36424           FACQQ1=FACQQ1*WID2
36425           FACQQ2=FACQQ2*WID2
36426           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 530
36427           NCHN=NCHN+1
36428           ISIG(NCHN,1)=21
36429           ISIG(NCHN,2)=21
36430           ISIG(NCHN,3)=1
36431           SIGH(NCHN)=FACQQ1
36432           NCHN=NCHN+1
36433           ISIG(NCHN,1)=21
36434           ISIG(NCHN,2)=21
36435           ISIG(NCHN,3)=2
36436           SIGH(NCHN)=FACQQ2
36437   530     CONTINUE
36438         ENDIF
36439       ENDIF
36440  
36441 CMRENNA--
36442  
36443       RETURN
36444       END
36445  
36446 C*********************************************************************
36447  
36448 C...PYSGEX
36449 C...Subprocess cross sections for assorted exotic processes,
36450 C...including Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*.
36451 C...Auxiliary to PYSIGH.
36452  
36453       SUBROUTINE PYSGEX(NCHN,SIGS)
36454  
36455 C...Double precision and integer declarations
36456       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36457       IMPLICIT INTEGER(I-N)
36458       INTEGER PYK,PYCHGE,PYCOMP
36459 C...Parameter statement to help give large particle numbers.
36460       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36461      &KEXCIT=4000000,KDIMEN=5000000)
36462 C...Commonblocks
36463       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36464       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36465       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
36466       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
36467       COMMON/PYINT1/MINT(400),VINT(400)
36468       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
36469       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
36470       COMMON/PYINT4/MWID(500),WIDS(500,5)
36471       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
36472       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
36473      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
36474      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
36475      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
36476       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
36477      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
36478 C...Local arrays
36479       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
36480  
36481 C...Differential cross section expressions.
36482  
36483       IF(ISUB.LE.160) THEN
36484         IF(ISUB.EQ.141) THEN
36485 C...f + fbar -> gamma*/Z0/Z'0
36486           SQMZP=PMAS(32,1)**2
36487           MINT(61)=2
36488           CALL PYWIDT(32,SH,WDTP,WDTE)
36489           HP0=AEM/3D0*SH
36490           HP1=AEM/3D0*XWC*SH
36491           HP2=HP1
36492           HS=SHR*VINT(117)
36493           HSP=SHR*WDTP(0)
36494           FACZP=4D0*COMFAC*3D0
36495           DO 100 I=MMINA,MMAXA
36496             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
36497             EI=KCHG(IABS(I),1)/3D0
36498             AI=SIGN(1D0,EI)
36499             VI=AI-4D0*EI*XWV
36500             IA=IABS(I)
36501             IF(IA.LT.10) THEN
36502               IF(IA.LE.2) THEN
36503                 VPI=PARU(123-2*MOD(IABS(I),2))
36504                 API=PARU(124-2*MOD(IABS(I),2))
36505               ELSEIF(IA.LE.4) THEN
36506                 VPI=PARJ(182-2*MOD(IABS(I),2))
36507                 API=PARJ(183-2*MOD(IABS(I),2))
36508               ELSE
36509                 VPI=PARJ(190-2*MOD(IABS(I),2))
36510                 API=PARJ(191-2*MOD(IABS(I),2))
36511               ENDIF
36512             ELSE
36513               IF(IA.LE.12) THEN
36514                 VPI=PARU(127-2*MOD(IABS(I),2))
36515                 API=PARU(128-2*MOD(IABS(I),2))
36516               ELSEIF(IA.LE.14) THEN
36517                 VPI=PARJ(186-2*MOD(IABS(I),2))
36518                 API=PARJ(187-2*MOD(IABS(I),2))
36519               ELSE
36520                 VPI=PARJ(194-2*MOD(IABS(I),2))
36521                 API=PARJ(195-2*MOD(IABS(I),2))
36522               ENDIF
36523             ENDIF
36524             HI0=HP0
36525             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
36526             HI1=HP1
36527             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
36528             HI2=HP2
36529             IF(IABS(I).LE.10) HI2=HI2*FACA/3D0
36530             NCHN=NCHN+1
36531             ISIG(NCHN,1)=I
36532             ISIG(NCHN,2)=-I
36533             ISIG(NCHN,3)=1
36534             SIGH(NCHN)=FACZP*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI*
36535      &      (1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)*
36536      &      VINT(112)+EI*VPI*(1D0-SQMZP/SH)/((SH-SQMZP)**2+HSP**2)*
36537      &      (HI0*HP2+HI2*HP0)*VINT(113)+(VI**2+AI**2)/
36538      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)+(VI*VPI+AI*API)*
36539      &      ((SH-SQMZ)*(SH-SQMZP)+HS*HSP)/(((SH-SQMZ)**2+HS**2)*
36540      &      ((SH-SQMZP)**2+HSP**2))*(HI1*HP2+HI2*HP1)*VINT(115)+
36541      &      (VPI**2+API**2)/((SH-SQMZP)**2+HSP**2)*HI2*HP2*VINT(116))
36542   100     CONTINUE
36543  
36544         ELSEIF(ISUB.EQ.142) THEN
36545 C...f + fbar' -> W'+/-
36546           SQMWP=PMAS(34,1)**2
36547           CALL PYWIDT(34,SH,WDTP,WDTE)
36548           HS=SHR*WDTP(0)
36549           FACBW=4D0*COMFAC/((SH-SQMWP)**2+HS**2)*3D0
36550           HP=AEM/(24D0*XW)*SH
36551           DO 120 I=MMIN1,MMAX1
36552             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
36553             IA=IABS(I)
36554             DO 110 J=MMIN2,MMAX2
36555               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
36556               JA=IABS(J)
36557               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
36558               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
36559      &        GOTO 110
36560               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36561               HI=HP*(PARU(133)**2+PARU(134)**2)
36562               IF(IA.LE.10) HI=HP*(PARU(131)**2+PARU(132)**2)*
36563      &        VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
36564               NCHN=NCHN+1
36565               ISIG(NCHN,1)=I
36566               ISIG(NCHN,2)=J
36567               ISIG(NCHN,3)=1
36568               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
36569               SIGH(NCHN)=HI*FACBW*HF
36570   110       CONTINUE
36571   120     CONTINUE
36572  
36573         ELSEIF(ISUB.EQ.144) THEN
36574 C...f + fbar' -> R
36575           SQMR=PMAS(41,1)**2
36576           CALL PYWIDT(41,SH,WDTP,WDTE)
36577           HS=SHR*WDTP(0)
36578           FACBW=4D0*COMFAC/((SH-SQMR)**2+HS**2)*3D0
36579           HP=AEM/(12D0*XW)*SH
36580           DO 140 I=MMIN1,MMAX1
36581             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
36582             IA=IABS(I)
36583             DO 130 J=MMIN2,MMAX2
36584               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
36585               JA=IABS(J)
36586               IF(I*J.GT.0.OR.IABS(IA-JA).NE.2) GOTO 130
36587               HI=HP
36588               IF(IA.LE.10) HI=HI*FACA/3D0
36589               HF=SHR*(WDTE(0,1)+WDTE(0,(10-(I+J))/4)+WDTE(0,4))
36590               NCHN=NCHN+1
36591               ISIG(NCHN,1)=I
36592               ISIG(NCHN,2)=J
36593               ISIG(NCHN,3)=1
36594               SIGH(NCHN)=HI*FACBW*HF
36595   130       CONTINUE
36596   140     CONTINUE
36597  
36598         ELSEIF(ISUB.EQ.145) THEN
36599 C...q + l -> LQ (leptoquark)
36600           SQMLQ=PMAS(42,1)**2
36601           CALL PYWIDT(42,SH,WDTP,WDTE)
36602           HS=SHR*WDTP(0)
36603           FACBW=4D0*COMFAC/((SH-SQMLQ)**2+HS**2)
36604           IF(ABS(SHR-PMAS(42,1)).GT.PARP(48)*PMAS(42,2)) FACBW=0D0
36605           HP=AEM/4D0*SH
36606           KFLQQ=KFDP(MDCY(42,2),1)
36607           KFLQL=KFDP(MDCY(42,2),2)
36608           DO 160 I=MMIN1,MMAX1
36609             IF(KFAC(1,I).EQ.0) GOTO 160
36610             IA=IABS(I)
36611             IF(IA.NE.KFLQQ.AND.IA.NE.IABS(KFLQL)) GOTO 160
36612             DO 150 J=MMIN2,MMAX2
36613               IF(KFAC(2,J).EQ.0) GOTO 150
36614               JA=IABS(J)
36615               IF(JA.NE.KFLQQ.AND.JA.NE.IABS(KFLQL)) GOTO 150
36616               IF(I*J.NE.KFLQQ*KFLQL) GOTO 150
36617               IF(JA.EQ.IA) GOTO 150
36618               IF(IA.EQ.KFLQQ) KCHLQ=ISIGN(1,I)
36619               IF(JA.EQ.KFLQQ) KCHLQ=ISIGN(1,J)
36620               HI=HP*PARU(151)
36621               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHLQ)/2)+WDTE(0,4))
36622               NCHN=NCHN+1
36623               ISIG(NCHN,1)=I
36624               ISIG(NCHN,2)=J
36625               ISIG(NCHN,3)=1
36626               SIGH(NCHN)=HI*FACBW*HF
36627   150       CONTINUE
36628   160     CONTINUE
36629  
36630         ELSEIF(ISUB.EQ.146) THEN
36631 C...e + gamma* -> e* (excited lepton)
36632           KFQSTR=KFPR(ISUB,1)
36633           KCQSTR=PYCOMP(KFQSTR)
36634           KFQEXC=MOD(KFQSTR,KEXCIT)
36635           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
36636           HS=SHR*WDTP(0)
36637           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
36638           QF=-RTCM(43)/2D0-RTCM(44)/2D0
36639           FACBW=FACBW*AEM*QF**2*SH/RTCM(41)**2
36640           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
36641      &    FACBW=0D0
36642           HP=SH
36643           DO 180 I=-KFQEXC,KFQEXC,2*KFQEXC
36644             DO 170 ISDE=1,2
36645               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 170
36646               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 170
36647               HI=HP
36648               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36649               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
36650               NCHN=NCHN+1
36651               ISIG(NCHN,ISDE)=I
36652               ISIG(NCHN,3-ISDE)=22
36653               ISIG(NCHN,3)=1
36654               SIGH(NCHN)=HI*FACBW*HF
36655   170       CONTINUE
36656   180     CONTINUE
36657  
36658         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
36659 C...d + g -> d* and u + g -> u* (excited quarks)
36660           KFQSTR=KFPR(ISUB,1)
36661           KCQSTR=PYCOMP(KFQSTR)
36662           KFQEXC=MOD(KFQSTR,KEXCIT)
36663           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
36664           HS=SHR*WDTP(0)
36665           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
36666           FACBW=FACBW*AS*RTCM(45)**2*SH/(3D0*RTCM(41)**2)
36667           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
36668      &    FACBW=0D0
36669           HP=SH
36670           DO 200 I=-KFQEXC,KFQEXC,2*KFQEXC
36671             DO 190 ISDE=1,2
36672               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 190
36673               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 190
36674               HI=HP
36675               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36676               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
36677               NCHN=NCHN+1
36678               ISIG(NCHN,ISDE)=I
36679               ISIG(NCHN,3-ISDE)=21
36680               ISIG(NCHN,3)=1
36681               SIGH(NCHN)=HI*FACBW*HF
36682   190       CONTINUE
36683   200     CONTINUE
36684         ENDIF
36685  
36686       ELSEIF(ISUB.LE.190) THEN
36687         IF(ISUB.EQ.162) THEN
36688 C...q + g -> LQ + lbar; LQ=leptoquark
36689           SQMLQ=PMAS(42,1)**2
36690           FACLQ=COMFAC*FACA*PARU(151)*(AS*AEM/6D0)*(-TH/SH)*
36691      &    (UH2+SQMLQ**2)/(UH-SQMLQ)**2
36692           KFLQQ=KFDP(MDCY(42,2),1)
36693           DO 220 I=MMINA,MMAXA
36694             IF(IABS(I).NE.KFLQQ) GOTO 220
36695             KCHLQ=ISIGN(1,I)
36696             DO 210 ISDE=1,2
36697               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 210
36698               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 210
36699               NCHN=NCHN+1
36700               ISIG(NCHN,ISDE)=I
36701               ISIG(NCHN,3-ISDE)=21
36702               ISIG(NCHN,3)=1
36703               SIGH(NCHN)=FACLQ*WIDS(42,(5-KCHLQ)/2)
36704   210       CONTINUE
36705   220     CONTINUE
36706  
36707         ELSEIF(ISUB.EQ.163) THEN
36708 C...g + g -> LQ + LQbar; LQ=leptoquark
36709           SQMLQ=PMAS(42,1)**2
36710           FACLQ=COMFAC*FACA*WIDS(42,1)*(AS**2/2D0)*
36711      &    (7D0/48D0+3D0*(UH-TH)**2/(16D0*SH2))*(1D0+2D0*SQMLQ*TH/
36712      &    (TH-SQMLQ)**2+2D0*SQMLQ*UH/(UH-SQMLQ)**2+4D0*SQMLQ**2/
36713      &    ((TH-SQMLQ)*(UH-SQMLQ)))
36714           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 230
36715           NCHN=NCHN+1
36716           ISIG(NCHN,1)=21
36717           ISIG(NCHN,2)=21
36718 C...Since don't know proper colour flow, randomize between alternatives
36719           ISIG(NCHN,3)=INT(1.5D0+PYR(0))
36720           SIGH(NCHN)=FACLQ
36721   230     CONTINUE
36722  
36723         ELSEIF(ISUB.EQ.164) THEN
36724 C...q + qbar -> LQ + LQbar; LQ=leptoquark
36725           DELTA=0.25D0*(SQM3-SQM4)**2/SH
36726           SQMLQ=0.5D0*(SQM3+SQM4)-DELTA
36727           TH=TH-DELTA
36728           UH=UH-DELTA
36729 C          SQMLQ=PMAS(42,1)**2
36730           FACLQA=COMFAC*WIDS(42,1)*(AS**2/9D0)*
36731      &    (SH*(SH-4D0*SQMLQ)-(UH-TH)**2)/SH2
36732           FACLQS=COMFAC*WIDS(42,1)*((PARU(151)**2*AEM**2/8D0)*
36733      &    (-SH*TH-(SQMLQ-TH)**2)/TH2+(PARU(151)*AEM*AS/18D0)*
36734      &    ((SQMLQ-TH)*(UH-TH)+SH*(SQMLQ+TH))/(SH*TH))
36735           KFLQQ=KFDP(MDCY(42,2),1)
36736           DO 240 I=MMINA,MMAXA
36737             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36738      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 240
36739             NCHN=NCHN+1
36740             ISIG(NCHN,1)=I
36741             ISIG(NCHN,2)=-I
36742             ISIG(NCHN,3)=1
36743             SIGH(NCHN)=FACLQA
36744             IF(IABS(I).EQ.KFLQQ) SIGH(NCHN)=FACLQA+FACLQS
36745   240     CONTINUE
36746  
36747         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
36748 C...q + q' -> q" + d* and q + q' -> q" + u* (excited quarks)
36749           KFQSTR=KFPR(ISUB,2)
36750           KCQSTR=PYCOMP(KFQSTR)
36751           KFQEXC=MOD(KFQSTR,KEXCIT)
36752           FACQSA=COMFAC*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)
36753           FACQSB=COMFAC*0.25D0*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
36754      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
36755 C...Propagators: as simulated in PYOFSH and as desired
36756           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
36757           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
36758           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
36759           GMMQC=SQRT(SQM4)*WDTP(0)
36760           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
36761           FACQSA=FACQSA*HBW4C/HBW4
36762           FACQSB=FACQSB*HBW4C/HBW4
36763 C...Branching ratios.
36764           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
36765           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
36766           DO 260 I=MMIN1,MMAX1
36767             IA=IABS(I)
36768             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 260
36769             DO 250 J=MMIN2,MMAX2
36770               JA=IABS(J)
36771               IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 250
36772               IF(IA.EQ.KFQEXC.AND.I.EQ.J) THEN
36773                 NCHN=NCHN+1
36774                 ISIG(NCHN,1)=I
36775                 ISIG(NCHN,2)=J
36776                 ISIG(NCHN,3)=1
36777                 IF(I.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
36778                 IF(I.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
36779                 NCHN=NCHN+1
36780                 ISIG(NCHN,1)=I
36781                 ISIG(NCHN,2)=J
36782                 ISIG(NCHN,3)=2
36783                 IF(J.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
36784                 IF(J.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
36785               ELSEIF((IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC).AND.I*J.GT.0) THEN
36786                 NCHN=NCHN+1
36787                 ISIG(NCHN,1)=I
36788                 ISIG(NCHN,2)=J
36789                 ISIG(NCHN,3)=1
36790                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
36791                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSA*BRPOS
36792                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSA*BRNEG
36793               ELSEIF(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)=(8D0/3D0)*FACQSB*BRPOS
36799                 IF(I.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*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)=(8D0/3D0)*FACQSB*BRPOS
36805                 IF(J.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
36806               ELSEIF(I.EQ.-J) THEN
36807                 NCHN=NCHN+1
36808                 ISIG(NCHN,1)=I
36809                 ISIG(NCHN,2)=J
36810                 ISIG(NCHN,3)=1
36811                 IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
36812                 IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
36813                 NCHN=NCHN+1
36814                 ISIG(NCHN,1)=I
36815                 ISIG(NCHN,2)=J
36816                 ISIG(NCHN,3)=2
36817                 IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
36818                 IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
36819               ELSEIF(IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC) THEN
36820                 NCHN=NCHN+1
36821                 ISIG(NCHN,1)=I
36822                 ISIG(NCHN,2)=J
36823                 ISIG(NCHN,3)=1
36824                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
36825                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSB*BRPOS
36826                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSB*BRNEG
36827               ENDIF
36828   250       CONTINUE
36829   260     CONTINUE
36830  
36831         ELSEIF(ISUB.EQ.169) THEN
36832 C...q + qbar -> e + e* (excited lepton)
36833           KFQSTR=KFPR(ISUB,2)
36834           KCQSTR=PYCOMP(KFQSTR)
36835           KFQEXC=MOD(KFQSTR,KEXCIT)
36836           FACQSB=(COMFAC/12D0)*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
36837      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
36838 C...Propagators: as simulated in PYOFSH and as desired
36839           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
36840           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
36841           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
36842           GMMQC=SQRT(SQM4)*WDTP(0)
36843           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
36844           FACQSB=FACQSB*HBW4C/HBW4
36845 C...Branching ratios.
36846           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
36847           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
36848           DO 270 I=MMIN1,MMAX1
36849             IA=IABS(I)
36850             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 270
36851             J=-I
36852             JA=IABS(J)
36853             IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 270
36854             NCHN=NCHN+1
36855             ISIG(NCHN,1)=I
36856             ISIG(NCHN,2)=J
36857             ISIG(NCHN,3)=1
36858             IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
36859             IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
36860             NCHN=NCHN+1
36861             ISIG(NCHN,1)=I
36862             ISIG(NCHN,2)=J
36863             ISIG(NCHN,3)=2
36864             IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
36865             IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
36866   270     CONTINUE
36867         ENDIF
36868  
36869       ELSEIF(ISUB.LE.360) THEN
36870         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
36871 C...l + l -> H_L++/-- or H_R++/--.
36872           KFRES=KFPR(ISUB,1)
36873           KFREC=PYCOMP(KFRES)
36874           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
36875           HS=SHR*WDTP(0)
36876           FACBW=8D0*COMFAC/((SH-PMAS(KFREC,1)**2)**2+HS**2)
36877           DO 290 I=MMIN1,MMAX1
36878             IA=IABS(I)
36879             IF((IA.NE.11.AND.IA.NE.13.AND.IA.NE.15).OR.KFAC(1,I).EQ.0)
36880      &      GOTO 290
36881             DO 280 J=MMIN2,MMAX2
36882               JA=IABS(J)
36883               IF((JA.NE.11.AND.JA.NE.13.AND.JA.NE.15).OR.KFAC(2,J).EQ.0)
36884      &        GOTO 280
36885               IF(I*J.LT.0) GOTO 280
36886               KCHH=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36887               NCHN=NCHN+1
36888               ISIG(NCHN,1)=I
36889               ISIG(NCHN,2)=J
36890               ISIG(NCHN,3)=1
36891               HI=SH*PARP(181+3*((IA-11)/2)+(JA-11)/2)**2/(8D0*PARU(1))
36892               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
36893               SIGH(NCHN)=HI*FACBW*HF
36894   280       CONTINUE
36895   290     CONTINUE
36896  
36897         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
36898 C...l + gamma -> H_L++/-- l' or l + gamma -> H_R++/-- l'.
36899           KFRES=KFPR(ISUB,1)
36900           KFREC=PYCOMP(KFRES)
36901 C...Propagators: as simulated in PYOFSH and as desired
36902           HBW3=PMAS(KFREC,1)*PMAS(KFREC,2)/((SQM3-PMAS(KFREC,1)**2)**2+
36903      &    (PMAS(KFREC,1)*PMAS(KFREC,2))**2)
36904           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
36905           GMMC=SQRT(SQM3)*WDTP(0)
36906           HBW3C=GMMC/((SQM3-PMAS(KFREC,1)**2)**2+GMMC**2)
36907           FHCC=COMFAC*AEM*HBW3C/HBW3
36908           DO 310 I=MMINA,MMAXA
36909             IA=IABS(I)
36910             IF(IA.NE.11.AND.IA.NE.13.AND.IA.NE.15) GOTO 310
36911             SQML=PMAS(IA,1)**2
36912             J=ISIGN(KFPR(ISUB,2),-I)
36913             KCHH=ISIGN(2,KCHG(IA,1)*ISIGN(1,I))
36914             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))/WDTP(0)
36915             SMM1=8D0*(SH+TH-SQM3)*(SH+TH-2D0*SQM3-SQML-SQM4)/
36916      &      (UH-SQM3)**2
36917             SMM2=2D0*((2D0*SQM3-3D0*SQML)*SQM4+(SQML-2D0*SQM4)*TH-
36918      &      (TH-SQM4)*SH)/(TH-SQM4)**2
36919             SMM3=2D0*((2D0*SQM3-3D0*SQM4+TH)*SQML-(2D0*SQML-SQM4+TH)*
36920      &      SH)/(SH-SQML)**2
36921             SMM12=4D0*((2D0*SQML-SQM4-2D0*SQM3+TH)*SH+(TH-3D0*SQM3-
36922      &      3D0*SQM4)*TH+(2D0*SQM3-2D0*SQML+3D0*SQM4)*SQM3)/
36923      &      ((UH-SQM3)*(TH-SQM4))
36924             SMM13=-4D0*((TH+SQML-2D0*SQM4)*TH-(SQM3+3D0*SQML-2D0*SQM4)*
36925      &      SQM3+(SQM3+3D0*SQML+TH)*SH-(TH-SQM3+SH)**2)/
36926      &      ((UH-SQM3)*(SH-SQML))
36927             SMM23=-4D0*((SQML-SQM4+SQM3)*TH-SQM3**2+SQM3*(SQML+SQM4)-
36928      &      3D0*SQML*SQM4-(SQML-SQM4-SQM3+TH)*SH)/
36929      &      ((SH-SQML)*(TH-SQM4))
36930             SMM=(SH/(SH-SQML))**2*(SMM1+SMM2+SMM3+SMM12+SMM13+SMM23)*
36931      &      PARP(181+3*((IA-11)/2)+(IABS(J)-11)/2)**2/(4D0*PARU(1))
36932             DO 300 ISDE=1,2
36933               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 300
36934               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 300
36935               NCHN=NCHN+1
36936               ISIG(NCHN,ISDE)=I
36937               ISIG(NCHN,3-ISDE)=22
36938               ISIG(NCHN,3)=0
36939               SIGH(NCHN)=FHCC*SMM*WIDSC
36940   300       CONTINUE
36941   310     CONTINUE
36942  
36943         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
36944 C...f + fbar -> H_L++ + H_L-- or H_R++ + H_R--
36945           KFRES=KFPR(ISUB,1)
36946           KFREC=PYCOMP(KFRES)
36947           SQMH=PMAS(KFREC,1)**2
36948           GMMH=PMAS(KFREC,1)*PMAS(KFREC,2)
36949 C...Propagators: H++/-- as simulated in PYOFSH and as desired
36950           HBW3=GMMH/((SQM3-SQMH)**2+GMMH**2)
36951           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
36952           GMMH3=SQRT(SQM3)*WDTP(0)
36953           HBW3C=GMMH3/((SQM3-SQMH)**2+GMMH3**2)
36954           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
36955           CALL PYWIDT(KFRES,SQM4,WDTP,WDTE)
36956           GMMH4=SQRT(SQM4)*WDTP(0)
36957           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
36958 C...Kinematical and coupling functions
36959           FACHH=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*(TH*UH-SQM3*SQM4)
36960           XWHH=(1D0-2D0*XWV)/(8D0*XWV*(1D0-XWV))
36961 C...Loop over allowed flavours
36962           DO 320 I=MMINA,MMAXA
36963             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
36964             EI=KCHG(IABS(I),1)/3D0
36965             AI=SIGN(1D0,EI+0.1D0)
36966             VI=AI-4D0*EI*XWV
36967             FCOI=1D0
36968             IF(IABS(I).LE.10) FCOI=FACA/3D0
36969             IF(ISUB.EQ.349) THEN
36970               HBWZ=1D0/((SH-SQMZ)**2+GMMZ**2)
36971               IF(IABS(I).LT.10) THEN
36972                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
36973      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
36974      &          (VI**2+AI**2)*XWHH**2*HBWZ)
36975               ELSE
36976                 IAOFF=181+3*((IABS(I)-11)/2)
36977                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
36978      &          (4D0*PARU(1))
36979                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
36980      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
36981      &          (VI**2+AI**2)*XWHH**2*HBWZ)+
36982      &          8D0*AEM*(EI*HSUM/(SH*TH)+
36983      &          (VI+AI)*XWHH*HSUM*(SH-SQMZ)*HBWZ/TH)+
36984      &          4D0*HSUM**2/TH2
36985               ENDIF
36986             ELSE
36987               IF(IABS(I).LT.10) THEN
36988                 DSIGHH=8D0*AEM**2*EI**2/SH2
36989               ELSE
36990                 IAOFF=181+3*((IABS(I)-11)/2)
36991                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
36992      &          (4D0*PARU(1))
36993                 DSIGHH=8D0*AEM**2*EI**2/SH2+8D0*AEM*EI*HSUM/(SH*TH)+
36994      &          4D0*HSUM**2/TH2
36995               ENDIF
36996             ENDIF
36997             NCHN=NCHN+1
36998             ISIG(NCHN,1)=I
36999             ISIG(NCHN,2)=-I
37000             ISIG(NCHN,3)=1
37001             SIGH(NCHN)=FACHH*FCOI*DSIGHH
37002   320     CONTINUE
37003  
37004         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
37005 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/-- as inner process)
37006           KFRES=KFPR(ISUB,1)
37007           KFREC=PYCOMP(KFRES)
37008           SQMH=PMAS(KFREC,1)**2
37009           IF(ISUB.EQ.351) FACNOR=PARP(190)**8*PARP(192)**2
37010           IF(ISUB.EQ.352) FACNOR=PARP(191)**6*2D0*
37011      &    PMAS(PYCOMP(9900024),1)**2
37012           FACWW=COMFAC*FACNOR*TAUP*VINT(2)*VINT(219)
37013           FACPRT=1D0/((VINT(204)**2-VINT(215))*
37014      &    (VINT(209)**2-VINT(216)))
37015           FACPRU=1D0/((VINT(204)**2+2D0*VINT(217))*
37016      &    (VINT(209)**2+2D0*VINT(218)))
37017           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
37018           HS=SHR*WDTP(0)
37019           FACBW=(1D0/PARU(1))*VINT(2)/((SH-SQMH)**2+HS**2)
37020           IF(ABS(SHR-PMAS(KFREC,1)).GT.PARP(48)*PMAS(KFREC,2))
37021      &    FACBW=0D0
37022           DO 340 I=MMIN1,MMAX1
37023             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 340
37024             IF(ISUB.EQ.352.AND.IABS(I).GT.10) GOTO 340
37025             KCHWI=(1-2*MOD(IABS(I),2))*ISIGN(1,I)
37026             DO 330 J=MMIN2,MMAX2
37027               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 330
37028               IF(ISUB.EQ.352.AND.IABS(J).GT.10) GOTO 330
37029               KCHWJ=(1-2*MOD(IABS(J),2))*ISIGN(1,J)
37030               KCHH=KCHWI+KCHWJ
37031               IF(IABS(KCHH).NE.2) GOTO 330
37032               FACLR=VINT(180+I)*VINT(180+J)
37033               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
37034               IF(I.EQ.J.AND.IABS(I).GT.10) THEN
37035                 FACPRP=0.5D0*(FACPRT+FACPRU)**2
37036               ELSE
37037                 FACPRP=FACPRT**2
37038               ENDIF
37039               NCHN=NCHN+1
37040               ISIG(NCHN,1)=I
37041               ISIG(NCHN,2)=J
37042               ISIG(NCHN,3)=1
37043               SIGH(NCHN)=FACLR*FACWW*FACPRP*FACBW*HF
37044   330       CONTINUE
37045   340     CONTINUE
37046  
37047         ELSEIF(ISUB.EQ.353) THEN
37048 C...f + fbar -> Z_R0
37049           SQMZR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
37050           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
37051           HS=SHR*WDTP(0)
37052           FACBW=4D0*COMFAC/((SH-SQMZR)**2+HS**2)*3D0
37053           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37054           HP=(AEM/(3D0*(1D0-2D0*XW)))*XWC*SH
37055           DO 350 I=MMINA,MMAXA
37056             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 350
37057             IF(IABS(I).LE.8) THEN
37058               EI=KCHG(IABS(I),1)/3D0
37059               AI=SIGN(1D0,EI+0.1D0)*(1D0-2D0*XW)
37060               VI=SIGN(1D0,EI+0.1D0)-4D0*EI*XW
37061             ELSE
37062               AI=-(1D0-2D0*XW)
37063               VI=-1D0+4D0*XW
37064             ENDIF
37065             HI=HP*(VI**2+AI**2)
37066             IF(IABS(I).LE.10) HI=HI*FACA/3D0
37067             NCHN=NCHN+1
37068             ISIG(NCHN,1)=I
37069             ISIG(NCHN,2)=-I
37070             ISIG(NCHN,3)=1
37071             SIGH(NCHN)=HI*FACBW*HF
37072   350     CONTINUE
37073  
37074         ELSEIF(ISUB.EQ.354) THEN
37075 C...f + fbar' -> W_R+/-
37076           SQMWR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
37077           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
37078           HS=SHR*WDTP(0)
37079           FACBW=4D0*COMFAC/((SH-SQMWR)**2+HS**2)*3D0
37080           HP=AEM/(24D0*XW)*SH
37081           DO 370 I=MMIN1,MMAX1
37082             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 370
37083             IA=IABS(I)
37084             DO 360 J=MMIN2,MMAX2
37085               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 360
37086               JA=IABS(J)
37087               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 360
37088               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
37089      &        GOTO 360
37090               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
37091               HI=HP*2D0
37092               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
37093               NCHN=NCHN+1
37094               ISIG(NCHN,1)=I
37095               ISIG(NCHN,2)=J
37096               ISIG(NCHN,3)=1
37097               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
37098               SIGH(NCHN)=HI*FACBW*HF
37099   360       CONTINUE
37100   370     CONTINUE
37101         ENDIF
37102  
37103       ELSEIF(ISUB.LE.400) THEN
37104         IF(ISUB.EQ.391) THEN
37105 C...f + fbar -> G*.
37106           KFGSTR=KFPR(ISUB,1)
37107           KCGSTR=PYCOMP(KFGSTR)
37108           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
37109           HS=SHR*WDTP(0)
37110           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37111           FACG=COMFAC*PARP(50)**2/(16D0*PARU(1))*SH*HF/
37112      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
37113 C...Modify cross section in wings of peak.
37114           FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4
37115           DO 380 I=MMINA,MMAXA
37116             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
37117             HI=1D0
37118             IF(IABS(I).LE.10) HI=HI*FACA/3D0
37119             NCHN=NCHN+1
37120             ISIG(NCHN,1)=I
37121             ISIG(NCHN,2)=-I
37122             ISIG(NCHN,3)=1
37123             SIGH(NCHN)=FACG*HI
37124   380     CONTINUE
37125  
37126         ELSEIF(ISUB.EQ.392) THEN
37127 C...g + g -> G*.
37128           KFGSTR=KFPR(ISUB,1)
37129           KCGSTR=PYCOMP(KFGSTR)
37130           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
37131           HS=SHR*WDTP(0)
37132           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37133           FACG=COMFAC*PARP(50)**2/(32D0*PARU(1))*SH*HF/
37134      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
37135 C...Modify cross section in wings of peak.
37136           FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4
37137           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 390
37138           NCHN=NCHN+1
37139           ISIG(NCHN,1)=21
37140           ISIG(NCHN,2)=21
37141           ISIG(NCHN,3)=1
37142           SIGH(NCHN)=FACG
37143   390     CONTINUE
37144  
37145         ELSEIF(ISUB.EQ.393) THEN
37146 C...q + qbar -> g + G*.
37147           KFGSTR=KFPR(ISUB,2)
37148           KCGSTR=PYCOMP(KFGSTR)
37149           FACG=COMFAC*PARP(50)**2*AS*SH/(72D0*PARU(1)*SQM4)*
37150      &    (4D0*(TH2+UH2)/SH2+9D0*(TH+UH)/SH+(TH2/UH+UH2/TH)/SH+
37151      &    3D0*(4D0+TH/UH+UH/TH)+4D0*(SH/UH+SH/TH)+
37152      &    2D0*SH2/(TH*UH))
37153 C...Propagators: as simulated in PYOFSH and as desired
37154           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
37155           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
37156           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
37157           HS=SQRT(SQM4)*WDTP(0)
37158           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37159           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
37160           FACG=FACG*HBW4C/HBW4
37161           DO 400 I=MMINA,MMAXA
37162             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
37163      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
37164             NCHN=NCHN+1
37165             ISIG(NCHN,1)=I
37166             ISIG(NCHN,2)=-I
37167             ISIG(NCHN,3)=1
37168             SIGH(NCHN)=FACG
37169   400     CONTINUE
37170  
37171         ELSEIF(ISUB.EQ.394) THEN
37172 C...q + g -> q + G*.
37173           KFGSTR=KFPR(ISUB,2)
37174           KCGSTR=PYCOMP(KFGSTR)
37175           FACG=-COMFAC*PARP(50)**2*AS*SH/(192D0*PARU(1)*SQM4)*
37176      &    (4D0*(SH2+UH2)/(TH*SH)+9D0*(SH+UH)/SH+SH/UH+UH2/SH2+
37177      &    3D0*TH*(4D0+SH/UH+UH/SH)/SH+4D0*TH2*(1D0/UH+1D0/SH)/SH+
37178      &    2D0*TH2*TH/(UH*SH2))
37179 C...Propagators: as simulated in PYOFSH and as desired
37180           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
37181           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
37182           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
37183           HS=SQRT(SQM4)*WDTP(0)
37184           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37185           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
37186           FACG=FACG*HBW4C/HBW4
37187           DO 420 I=MMINA,MMAXA
37188             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 420
37189             DO 410 ISDE=1,2
37190               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 410
37191               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 410
37192               NCHN=NCHN+1
37193               ISIG(NCHN,ISDE)=I
37194               ISIG(NCHN,3-ISDE)=21
37195               ISIG(NCHN,3)=1
37196               SIGH(NCHN)=FACG
37197   410       CONTINUE
37198   420     CONTINUE
37199  
37200         ELSEIF(ISUB.EQ.395) THEN
37201 C...g + g -> g + G*.
37202           KFGSTR=KFPR(ISUB,2)
37203           KCGSTR=PYCOMP(KFGSTR)
37204           FACG=COMFAC*3D0*PARP(50)**2*AS*SH/(32D0*PARU(1)*SQM4)*
37205      &    ((TH2+TH*UH+UH2)**2/(SH2*TH*UH)+2D0*(TH2/UH+UH2/TH)/SH+
37206      &    3D0*(TH/UH+UH/TH)+2D0*(SH/UH+SH/TH)+SH2/(TH*UH))
37207 C...Propagators: as simulated in PYOFSH and as desired
37208           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
37209           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
37210           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
37211           HS=SQRT(SQM4)*WDTP(0)
37212           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37213           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
37214           FACG=FACG*HBW4C/HBW4
37215           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
37216             NCHN=NCHN+1
37217             ISIG(NCHN,1)=21
37218             ISIG(NCHN,2)=21
37219             ISIG(NCHN,3)=1
37220             SIGH(NCHN)=FACG
37221           ENDIF
37222         ENDIF
37223       ENDIF
37224  
37225       RETURN
37226       END
37227  
37228 C*********************************************************************
37229  
37230 C...PYPDFU
37231 C...Gives electron, muon, tau, photon, pi+, neutron, proton and hyperon
37232 C...parton distributions according to a few different parametrizations.
37233 C...Note that what is coded is x times the probability distribution,
37234 C...i.e. xq(x,Q2) etc.
37235  
37236       SUBROUTINE PYPDFU(KF,X,Q2,XPQ)
37237  
37238 C...Double precision and integer declarations.
37239       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37240       IMPLICIT INTEGER(I-N)
37241       INTEGER PYK,PYCHGE,PYCOMP
37242 C...Commonblocks.
37243       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
37244       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37245       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37246       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
37247       COMMON/PYINT1/MINT(400),VINT(400)
37248       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
37249      &XPDIR(-6:6)
37250       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
37251       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
37252      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
37253      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
37254       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT8/,
37255      &/PYINT9/,/PYINTM/
37256 C...Local arrays.
37257       DIMENSION XPQ(-25:25),XPEL(-25:25),XPGA(-6:6),VXPGA(-6:6),
37258      &XPPI(-6:6),XPPR(-6:6),XPVAL(-6:6),PPAR(6,2)
37259       SAVE PPAR
37260  
37261 C...Interface to PDFLIB.
37262       COMMON/LW50513/XMIN,XMAX,Q2MIN,Q2MAX
37263       SAVE /LW50513/
37264       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
37265      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
37266       CHARACTER*20 PARM(20)
37267       DATA VALUE/20*0D0/,PARM/20*' '/
37268  
37269 C...Data related to Schuler-Sjostrand photon distributions.
37270       DATA ALAMGA/0.2D0/, PMCGA/1.3D0/, PMBGA/4.6D0/
37271  
37272 C...Valence PDF momentum integral parametrizations PER PARTON!
37273       DATA (PPAR(1,IPAR),IPAR=1,2) /0.385D0,1.60D0/
37274       DATA (PPAR(2,IPAR),IPAR=1,2) /0.480D0,1.56D0/
37275       PAVG(IFL,Q2)=PPAR(IFL,1)/(1D0+PPAR(IFL,2)*
37276      &LOG(LOG(MAX(Q2,1D0)/0.04D0)))
37277  
37278 C...Reset parton distributions.
37279       MINT(92)=0
37280       DO 100 KFL=-25,25
37281         XPQ(KFL)=0D0
37282   100 CONTINUE
37283       DO 110 KFL=-6,6
37284         XPVAL(KFL)=0D0
37285   110 CONTINUE
37286  
37287 C...Check x and particle species.
37288       IF(X.LE.0D0.OR.X.GE.1D0) THEN
37289         WRITE(MSTU(11),5000) X
37290         GOTO 9999
37291       ENDIF
37292       KFA=IABS(KF)
37293       IF(KFA.NE.11.AND.KFA.NE.13.AND.KFA.NE.15.AND.KFA.NE.22.AND.
37294      &KFA.NE.211.AND.KFA.NE.2112.AND.KFA.NE.2212.AND.KFA.NE.3122.AND.
37295      &KFA.NE.3112.AND.KFA.NE.3212.AND.KFA.NE.3222.AND.KFA.NE.3312.AND.
37296      &KFA.NE.3322.AND.KFA.NE.3334.AND.KFA.NE.111.AND.KFA.NE.321.AND.
37297      &KFA.NE.310.AND.KFA.NE.130) THEN
37298         WRITE(MSTU(11),5100) KF
37299         GOTO 9999
37300       ENDIF
37301  
37302 C...Electron (or muon or tau) parton distribution call.
37303       IF(KFA.EQ.11.OR.KFA.EQ.13.OR.KFA.EQ.15) THEN
37304         CALL PYPDEL(KFA,X,Q2,XPEL)
37305         DO 120 KFL=-25,25
37306           XPQ(KFL)=XPEL(KFL)
37307   120   CONTINUE
37308  
37309 C...Photon parton distribution call (VDM+anomalous).
37310       ELSEIF(KFA.EQ.22.AND.MINT(109).LE.1) THEN
37311         IF(MSTP(56).EQ.1.AND.MSTP(55).EQ.1) THEN
37312           CALL PYPDGA(X,Q2,XPGA)
37313           DO 130 KFL=-6,6
37314             XPQ(KFL)=XPGA(KFL)
37315   130     CONTINUE
37316           XPVU=4D0*(XPQ(2)-XPQ(1))/3D0
37317           XPVAL(1)=XPVU/4D0
37318           XPVAL(2)=XPVU
37319           XPVAL(3)=MIN(XPQ(3),XPVU/4D0)
37320           XPVAL(4)=MIN(XPQ(4),XPVU)
37321           XPVAL(5)=MIN(XPQ(5),XPVU/4D0)
37322           XPVAL(-1)=XPVAL(1)
37323           XPVAL(-2)=XPVAL(2)
37324           XPVAL(-3)=XPVAL(3)
37325           XPVAL(-4)=XPVAL(4)
37326           XPVAL(-5)=XPVAL(5)
37327         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
37328           Q2MX=Q2
37329           P2MX=0.36D0
37330           IF(MSTP(55).GE.7) P2MX=4.0D0
37331           IF(MSTP(57).EQ.0) Q2MX=P2MX
37332           P2=0D0
37333           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37334           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
37335           DO 140 KFL=-6,6
37336             XPQ(KFL)=XPGA(KFL)
37337             XPVAL(KFL)=VXPDGM(KFL)
37338   140     CONTINUE
37339           VINT(231)=P2MX
37340         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
37341           Q2MX=Q2
37342           P2MX=0.36D0
37343           IF(MSTP(55).GE.11) P2MX=4.0D0
37344           IF(MSTP(57).EQ.0) Q2MX=P2MX
37345           P2=0D0
37346           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37347           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
37348           DO 150 KFL=-6,6
37349             XPQ(KFL)=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
37350             XPVAL(KFL)=VXPVMD(KFL)+VXPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
37351   150     CONTINUE
37352           VINT(231)=P2MX
37353         ELSEIF(MSTP(56).EQ.2) THEN
37354 C...Call PDFLIB parton distributions.
37355           PARM(1)='NPTYPE'
37356           VALUE(1)=3
37357           PARM(2)='NGROUP'
37358           VALUE(2)=MSTP(55)/1000
37359           PARM(3)='NSET'
37360           VALUE(3)=MOD(MSTP(55),1000)
37361           IF(MINT(93).NE.3000000+MSTP(55)) THEN
37362             CALL PDFSET(PARM,VALUE)
37363             MINT(93)=3000000+MSTP(55)
37364           ENDIF
37365           XX=X
37366           QQ2=MAX(0D0,Q2MIN,Q2)
37367           IF(MSTP(57).EQ.0) QQ2=Q2MIN
37368           P2=0D0
37369           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37370           IP2=MSTP(60)
37371           IF(MSTP(55).EQ.5004) THEN
37372             IF(5D0*P2.LT.QQ2.AND.
37373      &      QQ2.GT.0.6D0.AND.QQ2.LT.5D4.AND.
37374      &      P2.GE.0D0.AND.P2.LT.10D0.AND.
37375      &      XX.GT.1D-4.AND.XX.LT.1D0) THEN
37376               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
37377      &        BOT,TOP,GLU)
37378             ELSE
37379               UPV=0D0
37380               DNV=0D0
37381               USEA=0D0
37382               DSEA=0D0
37383               STR=0D0
37384               CHM=0D0
37385               BOT=0D0
37386               TOP=0D0
37387               GLU=0D0
37388             ENDIF
37389           ELSE
37390             IF(P2.LT.QQ2) THEN
37391               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
37392      &        BOT,TOP,GLU)
37393             ELSE
37394               UPV=0D0
37395               DNV=0D0
37396               USEA=0D0
37397               DSEA=0D0
37398               STR=0D0
37399               CHM=0D0
37400               BOT=0D0
37401               TOP=0D0
37402               GLU=0D0
37403             ENDIF
37404           ENDIF
37405           VINT(231)=Q2MIN
37406           XPQ(0)=GLU
37407           XPQ(1)=DNV
37408           XPQ(-1)=DNV
37409           XPQ(2)=UPV
37410           XPQ(-2)=UPV
37411           XPQ(3)=STR
37412           XPQ(-3)=STR
37413           XPQ(4)=CHM
37414           XPQ(-4)=CHM
37415           XPQ(5)=BOT
37416           XPQ(-5)=BOT
37417           XPQ(6)=TOP
37418           XPQ(-6)=TOP
37419           XPVU=4D0*(XPQ(2)-XPQ(1))/3D0
37420           XPVAL(1)=XPVU/4D0
37421           XPVAL(2)=XPVU
37422           XPVAL(3)=MIN(XPQ(3),XPVU/4D0)
37423           XPVAL(4)=MIN(XPQ(4),XPVU)
37424           XPVAL(5)=MIN(XPQ(5),XPVU/4D0)
37425           XPVAL(-1)=XPVAL(1)
37426           XPVAL(-2)=XPVAL(2)
37427           XPVAL(-3)=XPVAL(3)
37428           XPVAL(-4)=XPVAL(4)
37429           XPVAL(-5)=XPVAL(5)
37430         ELSE
37431           WRITE(MSTU(11),5200) KF,MSTP(56),MSTP(55)
37432         ENDIF
37433  
37434 C...Pion/gammaVDM parton distribution call.
37435       ELSEIF(KFA.EQ.211.OR.KFA.EQ.111.OR.KFA.EQ.321.OR.KFA.EQ.130.OR.
37436      &KFA.EQ.310.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
37437         IF(KFA.EQ.22.AND.MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.
37438      &  MSTP(55).LE.12) THEN
37439           ISET=1+MOD(MSTP(55)-1,4)
37440           Q2MX=Q2
37441           P2MX=0.36D0
37442           IF(ISET.GE.3) P2MX=4.0D0
37443           IF(MSTP(57).EQ.0) Q2MX=P2MX
37444           P2=0D0
37445           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37446           CALL PYGGAM(ISET,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
37447           DO 160 KFL=-6,6
37448             XPQ(KFL)=XPVMD(KFL)
37449             XPVAL(KFL)=VXPVMD(KFL)
37450   160     CONTINUE
37451           VINT(231)=P2MX
37452         ELSEIF(MSTP(54).EQ.1.AND.MSTP(53).GE.1.AND.MSTP(53).LE.3) THEN
37453           CALL PYPDPI(X,Q2,XPPI)
37454           DO 170 KFL=-6,6
37455             XPQ(KFL)=XPPI(KFL)
37456   170     CONTINUE
37457           XPVAL(2)=XPQ(2)-XPQ(-2)
37458           XPVAL(-1)=XPQ(-1)-XPQ(1)
37459         ELSEIF(MSTP(54).EQ.2) THEN
37460 C...Call PDFLIB parton distributions.
37461           PARM(1)='NPTYPE'
37462           VALUE(1)=2
37463           PARM(2)='NGROUP'
37464           VALUE(2)=MSTP(53)/1000
37465           PARM(3)='NSET'
37466           VALUE(3)=MOD(MSTP(53),1000)
37467           IF(MINT(93).NE.2000000+MSTP(53)) THEN
37468             CALL PDFSET(PARM,VALUE)
37469             MINT(93)=2000000+MSTP(53)
37470           ENDIF
37471           XX=X
37472           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
37473           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
37474           CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
37475           VINT(231)=Q2MIN
37476           XPQ(0)=GLU
37477           XPQ(1)=DSEA
37478           XPQ(-1)=UPV+DSEA
37479           XPQ(2)=UPV+USEA
37480           XPQ(-2)=USEA
37481           XPQ(3)=STR
37482           XPQ(-3)=STR
37483           XPQ(4)=CHM
37484           XPQ(-4)=CHM
37485           XPQ(5)=BOT
37486           XPQ(-5)=BOT
37487           XPQ(6)=TOP
37488           XPQ(-6)=TOP
37489           XPVAL(2)=UPV
37490           XPVAL(-1)=UPV
37491         ELSE
37492           WRITE(MSTU(11),5200) KF,MSTP(54),MSTP(53)
37493         ENDIF
37494  
37495 C...Anomalous photon parton distribution call.
37496       ELSEIF(KFA.EQ.22.AND.MINT(109).EQ.3) THEN
37497         Q2MX=Q2
37498         P2MX=PARP(15)**2
37499         IF(MSTP(56).EQ.1.AND.MSTP(55).LE.8) THEN
37500           IF(MSTP(55).EQ.5.OR.MSTP(55).EQ.6) P2MX=0.36D0
37501           IF(MSTP(55).EQ.7.OR.MSTP(55).EQ.8) P2MX=4.0D0
37502           IF(MSTP(57).EQ.0) Q2MX=P2MX
37503           P2=0D0
37504           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37505           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
37506           DO 180 KFL=-6,6
37507             XPQ(KFL)=XPANL(KFL)+XPANH(KFL)
37508             XPVAL(KFL)=VXPANL(KFL)+VXPANH(KFL)
37509   180     CONTINUE
37510           VINT(231)=P2MX
37511         ELSEIF(MSTP(56).EQ.1) THEN
37512           IF(MSTP(55).EQ.9.OR.MSTP(55).EQ.10) P2MX=0.36D0
37513           IF(MSTP(55).EQ.11.OR.MSTP(55).EQ.12) P2MX=4.0D0
37514           IF(MSTP(57).EQ.0) Q2MX=P2MX
37515           P2=0D0
37516           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37517           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
37518           DO 190 KFL=-6,6
37519             XPQ(KFL)=MAX(0D0,XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
37520             XPVAL(KFL)=MAX(0D0,VXPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
37521   190     CONTINUE
37522           VINT(231)=P2MX
37523         ELSEIF(MSTP(56).EQ.2) THEN
37524           IF(MSTP(57).EQ.0) Q2MX=P2MX
37525           CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA,VXPGA)
37526           DO 200 KFL=-6,6
37527             XPQ(KFL)=XPGA(KFL)
37528             XPVAL(KFL)=VXPGA(KFL)
37529   200     CONTINUE
37530           VINT(231)=P2MX
37531         ELSEIF(MSTP(55).GE.1.AND.MSTP(55).LE.5) THEN
37532           IF(MSTP(57).EQ.0) Q2MX=P2MX
37533           CALL PYGVMD(0,MSTP(55),X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
37534           DO 210 KFL=-6,6
37535             XPQ(KFL)=XPGA(KFL)
37536             XPVAL(KFL)=VXPGA(KFL)
37537   210     CONTINUE
37538           VINT(231)=P2MX
37539         ELSE
37540   220     RKF=11D0*PYR(0)
37541           KFR=1
37542           IF(RKF.GT.1D0) KFR=2
37543           IF(RKF.GT.5D0) KFR=3
37544           IF(RKF.GT.6D0) KFR=4
37545           IF(RKF.GT.10D0) KFR=5
37546           IF(KFR.EQ.4.AND.Q2.LT.PMCGA**2) GOTO 220
37547           IF(KFR.EQ.5.AND.Q2.LT.PMBGA**2) GOTO 220
37548           IF(MSTP(57).EQ.0) Q2MX=P2MX
37549           CALL PYGVMD(0,KFR,X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
37550           DO 230 KFL=-6,6
37551             XPQ(KFL)=XPGA(KFL)
37552             XPVAL(KFL)=VXPGA(KFL)
37553   230     CONTINUE
37554           VINT(231)=P2MX
37555         ENDIF
37556  
37557 C...Proton parton distribution call.
37558       ELSE
37559         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
37560           CALL PYPDPR(X,Q2,XPPR)
37561           DO 240 KFL=-6,6
37562             XPQ(KFL)=XPPR(KFL)
37563   240     CONTINUE
37564           XPVAL(1)=XPQ(1)-XPQ(-1)
37565           XPVAL(2)=XPQ(2)-XPQ(-2)
37566         ELSEIF(MSTP(52).EQ.2) THEN
37567 C...Call PDFLIB parton distributions.
37568           PARM(1)='NPTYPE'
37569           VALUE(1)=1
37570           PARM(2)='NGROUP'
37571           VALUE(2)=MSTP(51)/1000
37572           PARM(3)='NSET'
37573           VALUE(3)=MOD(MSTP(51),1000)
37574           IF(MINT(93).NE.1000000+MSTP(51)) THEN
37575             CALL PDFSET(PARM,VALUE)
37576             MINT(93)=1000000+MSTP(51)
37577           ENDIF
37578           XX=X
37579           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
37580           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
37581           CALL STRUCTM_ALICE
37582      +         (XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
37583           VINT(231)=Q2MIN
37584           XPQ(0)=GLU
37585           XPQ(1)=DNV+DSEA
37586           XPQ(-1)=DSEA
37587           XPQ(2)=UPV+USEA
37588           XPQ(-2)=USEA
37589           XPQ(3)=STR
37590           XPQ(-3)=STR
37591           XPQ(4)=CHM
37592           XPQ(-4)=CHM
37593           XPQ(5)=BOT
37594           XPQ(-5)=BOT
37595           XPQ(6)=TOP
37596           XPQ(-6)=TOP
37597           XPVAL(1)=DNV
37598           XPVAL(2)=UPV
37599         ELSE
37600           WRITE(MSTU(11),5200) KF,MSTP(52),MSTP(51)
37601         ENDIF
37602       ENDIF
37603  
37604 C...Isospin average for pi0/gammaVDM.
37605       IF(KFA.EQ.111.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
37606         IF(KFA.EQ.22.AND.MSTP(55).GE.5.AND.MSTP(55).LE.12) THEN
37607           XPV=XPQ(2)-XPQ(1)
37608           XPQ(2)=XPQ(1)
37609           XPQ(-2)=XPQ(-1)
37610         ELSE
37611           XPS=0.5D0*(XPQ(1)+XPQ(-2))
37612           XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
37613           XPQ(2)=XPS
37614           XPQ(-1)=XPS
37615         ENDIF
37616         XPVL=0.5D0*(XPVAL(1)+XPVAL(2)+XPVAL(-1)+XPVAL(-2))+
37617      &  XPVAL(3)+XPVAL(4)+XPVAL(5)
37618         DO 250 KFL=-6,6
37619           XPVAL(KFL)=0D0
37620   250   CONTINUE
37621         IF(KFA.EQ.22.AND.MINT(105).LE.223) THEN
37622           XPQ(1)=XPQ(1)+0.2D0*XPV
37623           XPQ(2)=XPQ(2)+0.8D0*XPV
37624           XPVAL(1)=0.2D0*XPVL
37625           XPVAL(2)=0.8D0*XPVL
37626         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.333) THEN
37627           XPQ(3)=XPQ(3)+XPV
37628           XPVAL(3)=XPVL
37629         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.443) THEN
37630           XPQ(4)=XPQ(4)+XPV
37631           XPVAL(4)=XPVL
37632           IF(MSTP(55).GE.9) THEN
37633             DO 260 KFL=-6,6
37634               XPQ(KFL)=0D0
37635   260       CONTINUE
37636           ENDIF
37637         ELSE
37638           XPQ(1)=XPQ(1)+0.5D0*XPV
37639           XPQ(2)=XPQ(2)+0.5D0*XPV
37640           XPVAL(1)=0.5D0*XPVL
37641           XPVAL(2)=0.5D0*XPVL
37642         ENDIF
37643         DO 270 KFL=1,6
37644           XPQ(-KFL)=XPQ(KFL)
37645           XPVAL(-KFL)=XPVAL(KFL)
37646   270   CONTINUE
37647  
37648 C...Rescale for gammaVDM by effective gamma -> rho coupling.
37649 C+++Do not rescale?
37650         IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND..NOT.(MSTP(56).EQ.1
37651      &  .AND.MSTP(55).GE.5.AND.MSTP(55).LE.12)) THEN
37652           DO 280 KFL=-6,6
37653             XPQ(KFL)=VINT(281)*XPQ(KFL)
37654             XPVAL(KFL)=VINT(281)*XPVAL(KFL)
37655   280     CONTINUE
37656           VINT(232)=VINT(281)*XPV
37657         ENDIF
37658  
37659 C...Simple recipes for kaons.
37660       ELSEIF(KFA.EQ.321) THEN
37661         XPQ(-3)=XPQ(-3)+XPQ(-1)-XPQ(1)
37662         XPQ(-1)=XPQ(1)
37663         XPVAL(-3)=XPVAL(-1)
37664         XPVAL(-1)=0D0
37665       ELSEIF(KFA.EQ.130.OR.KFA.EQ.310) THEN
37666         XPS=0.5D0*(XPQ(1)+XPQ(-2))
37667         XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
37668         XPQ(2)=XPS
37669         XPQ(-1)=XPS
37670         XPQ(1)=XPQ(1)+0.5D0*XPV
37671         XPQ(-1)=XPQ(-1)+0.5D0*XPV
37672         XPQ(3)=XPQ(3)+0.5D0*XPV
37673         XPQ(-3)=XPQ(-3)+0.5D0*XPV
37674         XPV=0.5D0*(XPVAL(2)+XPVAL(-1))
37675         XPVAL(2)=0D0
37676         XPVAL(-1)=0D0
37677         XPVAL(1)=0.5D0*XPV
37678         XPVAL(-1)=0.5D0*XPV
37679         XPVAL(3)=0.5D0*XPV
37680         XPVAL(-3)=0.5D0*XPV
37681  
37682 C...Isospin conjugation for neutron.
37683       ELSEIF(KFA.EQ.2112) THEN
37684         XPSV=XPQ(1)
37685         XPQ(1)=XPQ(2)
37686         XPQ(2)=XPSV
37687         XPSV=XPQ(-1)
37688         XPQ(-1)=XPQ(-2)
37689         XPQ(-2)=XPSV
37690         XPSV=XPVAL(1)
37691         XPVAL(1)=XPVAL(2)
37692         XPVAL(2)=XPSV
37693  
37694 C...Simple recipes for hyperon (average valence parton distribution).
37695       ELSEIF(KFA.EQ.3122.OR.KFA.EQ.3112.OR.KFA.EQ.3212.OR.KFA.EQ.3222
37696      &  .OR.KFA.EQ.3312.OR.KFA.EQ.3322.OR.KFA.EQ.3334) THEN
37697         XPV=(XPQ(1)+XPQ(2)-XPQ(-1)-XPQ(-2))/3D0
37698         XPS=0.5D0*(XPQ(-1)+XPQ(-2))
37699         XPQ(1)=XPS
37700         XPQ(2)=XPS
37701         XPQ(-1)=XPS
37702         XPQ(-2)=XPS
37703         XPQ(KFA/1000)=XPQ(KFA/1000)+XPV
37704         XPQ(MOD(KFA/100,10))=XPQ(MOD(KFA/100,10))+XPV
37705         XPQ(MOD(KFA/10,10))=XPQ(MOD(KFA/10,10))+XPV
37706         XPV=(XPVAL(1)+XPVAL(2))/3D0
37707         XPVAL(1)=0D0
37708         XPVAL(2)=0D0
37709         XPVAL(KFA/1000)=XPVAL(KFA/1000)+XPV
37710         XPVAL(MOD(KFA/100,10))=XPVAL(MOD(KFA/100,10))+XPV
37711         XPVAL(MOD(KFA/10,10))=XPVAL(MOD(KFA/10,10))+XPV
37712       ENDIF
37713  
37714 C...Charge conjugation for antiparticle.
37715       IF(KF.LT.0) THEN
37716         DO 290 KFL=1,25
37717           IF(KFL.EQ.21.OR.KFL.EQ.22.OR.KFL.EQ.23.OR.KFL.EQ.25) GOTO 290
37718           XPSV=XPQ(KFL)
37719           XPQ(KFL)=XPQ(-KFL)
37720           XPQ(-KFL)=XPSV
37721   290   CONTINUE
37722         DO 300 KFL=1,6
37723           XPSV=XPVAL(KFL)
37724           XPVAL(KFL)=XPVAL(-KFL)
37725           XPVAL(-KFL)=XPSV
37726   300  CONTINUE
37727       ENDIF
37728  
37729 C...MULTIPLE INTERACTIONS - PDF RESHAPING.
37730 C...Set side.
37731       JS=MINT(30)
37732 C...Only reshape PDFs for the non-first interactions;
37733 C...But need valence/sea separation already from first interaction.
37734       IF ((JS.EQ.1.OR.JS.EQ.2).AND.MINT(35).GE.2) THEN
37735         KFVSEL=KFIVAL(JS,1)
37736 C...If valence quark kicked out of pi0 or gamma then that decides
37737 C...whether we should consider state as d dbar, u ubar, s sbar, etc.
37738         IF(KFVSEL.NE.0.AND.(KFA.EQ.111.OR.KFA.EQ.22)) THEN
37739           XPVL=0D0
37740           DO 310 KFL=1,6
37741             XPVL=XPVL+XPVAL(KFL)
37742             XPQ(KFL)=MAX(0D0,XPQ(KFL)-XPVAL(KFL))
37743             XPVAL(KFL)=0D0
37744   310     CONTINUE
37745           XPQ(IABS(KFVSEL))=XPQ(IABS(KFVSEL))+XPVL
37746           XPVAL(IABS(KFVSEL))=XPVL
37747           DO 320 KFL=1,6
37748             XPQ(-KFL)=XPQ(KFL)
37749             XPVAL(-KFL)=XPVAL(KFL)
37750   320     CONTINUE
37751  
37752 C...If valence quark kicked out of K0S or K0S then that decides whether
37753 C...we should consider state as d sbar or s dbar.
37754         ELSEIF(KFVSEL.NE.0.AND.(KFA.EQ.130.OR.KFA.EQ.310)) THEN
37755           KFS=1
37756           IF(KFVSEL.EQ.-1.OR.KFVSEL.EQ.3) KFS=-1
37757           XPQ(KFS)=XPQ(KFS)+XPVAL(-KFS)
37758           XPVAL(KFS)=XPVAL(KFS)+XPVAL(-KFS)
37759           XPQ(-KFS)=MAX(0D0,XPQ(-KFS)-XPVAL(-KFS))
37760           XPVAL(-KFS)=0D0
37761           KFS=-3*KFS
37762           XPQ(KFS)=XPQ(KFS)+XPVAL(-KFS)
37763           XPVAL(KFS)=XPVAL(KFS)+XPVAL(-KFS)
37764           XPQ(-KFS)=MAX(0D0,XPQ(-KFS)-XPVAL(-KFS))
37765           XPVAL(-KFS)=0D0
37766         ENDIF
37767  
37768 C...XPQ distributions are nominal for a (signed) beam particle
37769 C...of KF type, with 1-Sum(x_prev) rescaled to 1.
37770         CMPFAC=1D0
37771         NRESC=0
37772  345    NRESC=NRESC+1
37773         PVCTOT(JS,-1)=0D0
37774         PVCTOT(JS, 0)=0D0
37775         PVCTOT(JS, 1)=0D0
37776         DO 350 IFL=-6,6
37777           IF(IFL.EQ.0) GOTO 350
37778  
37779 C...Count up number of original IFL valence quarks.
37780           IVORG=0
37781           IF(KFIVAL(JS,1).EQ.IFL) IVORG=IVORG+1
37782           IF(KFIVAL(JS,2).EQ.IFL) IVORG=IVORG+1
37783           IF(KFIVAL(JS,3).EQ.IFL) IVORG=IVORG+1
37784 C...For pi0/gamma/K0S/K0L without valence flavour decided yet, here
37785 C...bookkeep as if d dbar (for total momentum sum in valence sector).
37786           IF(KFIVAL(JS,1).EQ.0.AND.IABS(IFL).EQ.1) IVORG=1
37787 C...Count down number of remaining IFL valence quarks. Skip current
37788 C...interaction initiator.
37789           IVREM=IVORG
37790           DO 330 I1=1,NMI(JS)
37791             IF (I1.EQ.MINT(36)) GOTO 330
37792             IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
37793      &           IVREM=IVREM-1
37794   330     CONTINUE
37795  
37796 C...Separate out original VALENCE and SEA content.
37797           VAL=XPVAL(IFL)
37798           SEA=MAX(0D0,XPQ(IFL)-VAL)
37799           XPSVC(IFL,0)=VAL
37800           XPSVC(IFL,-1)=SEA
37801  
37802 C...Rescale valence content if changed.
37803           IF (IVORG.NE.0.AND.IVREM.NE.IVORG) XPSVC(IFL,0)=
37804      &    (VAL*IVREM)/IVORG
37805  
37806 C...Momentum integrals of original and removed valence quarks.
37807           IF(IVORG.NE.0) THEN
37808 C...For p/n/pbar/nbar beams can split into d_val and u_val.
37809 C...Isospin conjugation for neutrons
37810             IF(KFA.EQ.2212.OR.KFA.EQ.2112) THEN
37811               IAFLP=IABS(IFL)
37812               IF (KFA.EQ.2112) IAFLP=3-IAFLP
37813               VPAVG=PAVG(IAFLP,Q2)
37814 C...For other baryons average d_val and u_val, like for PDFs.
37815             ELSEIF(KFA.GT.1000) THEN
37816               VPAVG=(PAVG(1,Q2)+2D0*PAVG(2,Q2))/3D0
37817 C...For mesons and photon average d_val and u_val and scale by 3/2.
37818 C...Very crude, especially for photon.
37819             ELSE
37820               VPAVG=0.5D0*(PAVG(1,Q2)+2D0*PAVG(2,Q2))
37821             ENDIF
37822             PVCTOT(JS,-1)=PVCTOT(JS,-1)+IVORG*VPAVG
37823             PVCTOT(JS, 0)=PVCTOT(JS, 0)+(IVORG-IVREM)*VPAVG
37824           ENDIF
37825  
37826 C...Now add companions (at X with partner having been at Z=XASSOC).
37827 C...NOTE: due to the assumed simple x scaling, the partner was at what
37828 C...corresponds to a higher Z than XASSOC, if there were intermediate
37829 C...scatterings. Nothing done about that for the moment.
37830           DO 340 IVC=1,NVC(JS,IFL)
37831 C...Skip companions that have been kicked out
37832             IF (XASSOC(JS,IFL,IVC).LE.0D0) THEN
37833               XPSVC(IFL,IVC)=0D0
37834               GOTO 340
37835             ELSE
37836 C...Momentum fraction of the partner quark.
37837 C...Use rescaled YS = XS/(1-Sum_rest) where X and XS are not in "rest".
37838               XS=XASSOC(JS,IFL,IVC)
37839               XREM=VINT(142+JS)
37840               YS=XS/(XREM+XS)
37841 C...Momentum fraction of the companion quark.
37842 C...Rescale from X = x/XREM to Y = x/(1-Sum_rest) -> factor (1-YS).
37843               Y=X*(1D0-YS)
37844               XPSVC(IFL,IVC)=PYFCMP(Y/CMPFAC,YS/CMPFAC,MSTP(87))
37845 C...Add to momentum sum, with rescaling compensation factor.
37846               XCFAC=(XREM+XS)/XREM*CMPFAC
37847               PVCTOT(JS,1)=PVCTOT(JS,1)+XCFAC*PYPCMP(YS/CMPFAC,MSTP(87))
37848             ENDIF
37849   340     CONTINUE
37850   350   CONTINUE
37851  
37852 C...Wait until all flavours treated, then rescale seas and gluon.
37853         XPSVC(0,-1)=XPQ(0)
37854         XPSVC(0,0)=0D0
37855         RSFAC=1D0+(PVCTOT(JS,0)-PVCTOT(JS,1))/(1D0-PVCTOT(JS,-1))
37856         IF (RSFAC.LE.0D0) THEN
37857 C...First calculate factor needed to exactly restore pz cons.
37858           IF (NRESC.EQ.1) CMPFAC =
37859      &         (1D0-(PVCTOT(JS,-1)-PVCTOT(JS,0)))/PVCTOT(JS,1)
37860 C...Add a bit of headroom
37861           CMPFAC=0.99*CMPFAC
37862 C...Try a few times if more headroom is needed, then print error message.
37863           IF (NRESC.LE.10) GOTO 345
37864           CALL PYERRM(15,
37865      &         '(PYPDFU:) Negative reshaping factor persists!')
37866           WRITE(MSTU(11),5300) (PVCTOT(JS,ITMP),ITMP=-1,1), RSFAC
37867           RSFAC=0D0
37868         ENDIF
37869         DO 370 IFL=-6,6
37870           XPSVC(IFL,-1)=RSFAC*XPSVC(IFL,-1)
37871 C...Also store resulting distributions in XPQ
37872           XPQ(IFL)=0D0
37873           DO 360 ISVC=-1,NVC(JS,IFL)
37874             XPQ(IFL)=XPQ(IFL)+XPSVC(IFL,ISVC)
37875   360     CONTINUE
37876   370   CONTINUE
37877 C...Save companion reweighting factor for PYPTIS.
37878         VINT(140)=CMPFAC
37879       ENDIF
37880  
37881  
37882 C...Allow gluon also in position 21.
37883       XPQ(21)=XPQ(0)
37884  
37885 C...Check positivity and reset above maximum allowed flavour.
37886       DO 380 KFL=-25,25
37887         XPQ(KFL)=MAX(0D0,XPQ(KFL))
37888         IF(IABS(KFL).GT.MSTP(58).AND.IABS(KFL).LE.8) XPQ(KFL)=0D0
37889   380 CONTINUE
37890  
37891 C...Formats for error printouts.
37892  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
37893  5100 FORMAT(' Error: illegal particle code for parton distribution;',
37894      &' KF =',I5)
37895  5200 FORMAT(' Error: unknown parton distribution; KF, library, set =',
37896      &3I5)
37897  5300 FORMAT(' Original valence momentum fraction : ',F6.3/
37898      &       ' Removed valence momentum fraction  : ',F6.3/
37899      &       ' Added companion momentum fraction  : ',F6.3/
37900      &       ' Resulting rescale factor           : ',F6.3)
37901  
37902 C...Reset side pointer and return
37903  9999 MINT(30)=0
37904  
37905       RETURN
37906       END
37907  
37908 C*********************************************************************
37909  
37910 C...PYPDFL
37911 C...Gives proton parton distribution at small x and/or Q^2 according to
37912 C...correct limiting behaviour.
37913  
37914       SUBROUTINE PYPDFL(KF,X,Q2,XPQ)
37915  
37916 C...Double precision and integer declarations.
37917       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37918       IMPLICIT INTEGER(I-N)
37919       INTEGER PYK,PYCHGE,PYCOMP
37920 C...Commonblocks.
37921       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37922       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37923       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
37924       COMMON/PYINT1/MINT(400),VINT(400)
37925       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
37926 C...Local arrays.
37927       DIMENSION XPQ(-25:25),XPA(-25:25),XPB(-25:25),WTSB(-3:3)
37928       DATA RMR/0.92D0/,RMP/0.38D0/,WTSB/0.5D0,1D0,1D0,5D0,1D0,1D0,0.5D0/
37929  
37930 C...Send everything but protons/neutrons/VMD pions directly to PYPDFU.
37931       MINT(92)=0
37932       KFA=IABS(KF)
37933       IACC=0
37934       IF((KFA.EQ.2212.OR.KFA.EQ.2112).AND.MSTP(57).GE.2) IACC=1
37935       IF(KFA.EQ.211.AND.MSTP(57).GE.3) IACC=1
37936       IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND.MSTP(57).GE.3) IACC=1
37937       IF(IACC.EQ.0) THEN
37938         CALL PYPDFU(KF,X,Q2,XPQ)
37939         RETURN
37940       ENDIF
37941  
37942 C...Reset. Check x.
37943       DO 100 KFL=-25,25
37944         XPQ(KFL)=0D0
37945   100 CONTINUE
37946       IF(X.LE.0D0.OR.X.GE.1D0) THEN
37947         WRITE(MSTU(11),5000) X
37948         RETURN
37949       ENDIF
37950  
37951 C...Define valence content.
37952       KFC=KF
37953       NV1=2
37954       NV2=1
37955       IF(KF.EQ.2212) THEN
37956         KFV1=2
37957         KFV2=1
37958       ELSEIF(KF.EQ.-2212) THEN
37959         KFV1=-2
37960         KFV2=-1
37961       ELSEIF(KF.EQ.2112) THEN
37962         KFV1=1
37963         KFV2=2
37964       ELSEIF(KF.EQ.-2112) THEN
37965         KFV1=-1
37966         KFV2=-2
37967       ELSEIF(KF.EQ.211) THEN
37968         NV1=1
37969         KFV1=2
37970         KFV2=-1
37971       ELSEIF(KF.EQ.-211) THEN
37972         NV1=1
37973         KFV1=-2
37974         KFV2=1
37975       ELSEIF(MINT(105).LE.223) THEN
37976         KFV1=1
37977         WTV1=0.2D0
37978         KFV2=2
37979         WTV2=0.8D0
37980       ELSEIF(MINT(105).EQ.333) THEN
37981         KFV1=3
37982         WTV1=1.0D0
37983         KFV2=1
37984         WTV2=0.0D0
37985       ELSEIF(MINT(105).EQ.443) THEN
37986         KFV1=4
37987         WTV1=1.0D0
37988         KFV2=1
37989         WTV2=0.0D0
37990       ENDIF
37991  
37992 C...Do naive evaluation and find min Q^2, boundary Q^2 and x_0.
37993       MINT30=MINT(30)
37994       CALL PYPDFU(KFC,X,Q2,XPA)
37995       Q2MN=MAX(3D0,VINT(231))
37996       Q2B=2D0+0.052D0**2*EXP(3.56D0*SQRT(MAX(0D0,-LOG(3D0*X))))
37997       XMN=EXP(-(LOG((Q2MN-2D0)/0.052D0**2)/3.56D0)**2)/3D0
37998  
37999 C...Large Q2 and large x: naive call is enough.
38000       IF(Q2.GT.Q2MN.AND.Q2.GT.Q2B) THEN
38001         DO 110 KFL=-25,25
38002           XPQ(KFL)=XPA(KFL)
38003   110   CONTINUE
38004         MINT(92)=1
38005  
38006 C...Small Q2 and large x: dampen boundary value.
38007       ELSEIF(X.GT.XMN) THEN
38008  
38009 C...Evaluate at boundary and define dampening factors.
38010         MINT(30)=MINT30
38011         CALL PYPDFU(KFC,X,Q2MN,XPA)
38012         FV=(Q2*(Q2MN+RMR)/(Q2MN*(Q2+RMR)))**(0.55D0*(1D0-X)/(1D0-XMN))
38013         FS=(Q2*(Q2MN+RMP)/(Q2MN*(Q2+RMP)))**1.08D0
38014  
38015 C...Separate valence and sea parts of parton distribution.
38016         IF(KFA.NE.22) THEN
38017           XFV1=XPA(KFV1)-XPA(-KFV1)
38018           XPA(KFV1)=XPA(-KFV1)
38019           XFV2=XPA(KFV2)-XPA(-KFV2)
38020           XPA(KFV2)=XPA(-KFV2)
38021         ELSE
38022           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
38023           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
38024           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
38025           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
38026         ENDIF
38027  
38028 C...Dampen valence and sea separately. Put back together.
38029         DO 120 KFL=-25,25
38030           XPQ(KFL)=FS*XPA(KFL)
38031   120   CONTINUE
38032         IF(KFA.NE.22) THEN
38033           XPQ(KFV1)=XPQ(KFV1)+FV*XFV1
38034           XPQ(KFV2)=XPQ(KFV2)+FV*XFV2
38035         ELSE
38036           XPQ(KFV1)=XPQ(KFV1)+FV*WTV1*VINT(232)
38037           XPQ(-KFV1)=XPQ(-KFV1)+FV*WTV1*VINT(232)
38038           XPQ(KFV2)=XPQ(KFV2)+FV*WTV2*VINT(232)
38039           XPQ(-KFV2)=XPQ(-KFV2)+FV*WTV2*VINT(232)
38040         ENDIF
38041         MINT(92)=2
38042  
38043 C...Large Q2 and small x: interpolate behaviour.
38044       ELSEIF(Q2.GT.Q2MN) THEN
38045  
38046 C...Evaluate at extremes and define coefficients for interpolation.
38047         MINT(30)=MINT30
38048         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
38049         VI232A=VINT(232)
38050         MINT(30)=MINT30
38051         CALL PYPDFU(KFC,X,Q2B,XPB)
38052         VI232B=VINT(232)
38053         FLA=LOG(Q2B/Q2)/LOG(Q2B/Q2MN)
38054         FVA=(X/XMN)**0.45D0*FLA
38055         FSA=(X/XMN)**(-0.08D0)*FLA
38056         FB=1D0-FLA
38057  
38058 C...Separate valence and sea parts of parton distribution.
38059         IF(KFA.NE.22) THEN
38060           XFVA1=XPA(KFV1)-XPA(-KFV1)
38061           XPA(KFV1)=XPA(-KFV1)
38062           XFVA2=XPA(KFV2)-XPA(-KFV2)
38063           XPA(KFV2)=XPA(-KFV2)
38064           XFVB1=XPB(KFV1)-XPB(-KFV1)
38065           XPB(KFV1)=XPB(-KFV1)
38066           XFVB2=XPB(KFV2)-XPB(-KFV2)
38067           XPB(KFV2)=XPB(-KFV2)
38068         ELSE
38069           XPA(KFV1)=XPA(KFV1)-WTV1*VI232A
38070           XPA(-KFV1)=XPA(-KFV1)-WTV1*VI232A
38071           XPA(KFV2)=XPA(KFV2)-WTV2*VI232A
38072           XPA(-KFV2)=XPA(-KFV2)-WTV2*VI232A
38073           XPB(KFV1)=XPB(KFV1)-WTV1*VI232B
38074           XPB(-KFV1)=XPB(-KFV1)-WTV1*VI232B
38075           XPB(KFV2)=XPB(KFV2)-WTV2*VI232B
38076           XPB(-KFV2)=XPB(-KFV2)-WTV2*VI232B
38077         ENDIF
38078  
38079 C...Interpolate for valence and sea. Put back together.
38080         DO 130 KFL=-25,25
38081           XPQ(KFL)=FSA*XPA(KFL)+FB*XPB(KFL)
38082   130   CONTINUE
38083         IF(KFA.NE.22) THEN
38084           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFVA1+FB*XFVB1)
38085           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFVA2+FB*XFVB2)
38086         ELSE
38087           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
38088           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
38089           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
38090           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
38091         ENDIF
38092         MINT(92)=3
38093  
38094 C...Small Q2 and small x: dampen boundary value and add term.
38095       ELSE
38096  
38097 C...Evaluate at boundary and define dampening factors.
38098         MINT(30)=MINT30
38099         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
38100         FB=(XMN-X)*(Q2MN-Q2)/(XMN*Q2MN)
38101         FA=1D0-FB
38102         FVC=(X/XMN)**0.45D0*(Q2/(Q2+RMR))**0.55D0
38103         FVA=FVC*FA*((Q2MN+RMR)/Q2MN)**0.55D0
38104         FVB=FVC*FB*1.10D0*XMN**0.45D0*0.11D0
38105         FSC=(X/XMN)**(-0.08D0)*(Q2/(Q2+RMP))**1.08D0
38106         FSA=FSC*FA*((Q2MN+RMP)/Q2MN)**1.08D0
38107         FSB=FSC*FB*0.21D0*XMN**(-0.08D0)*0.21D0
38108  
38109 C...Separate valence and sea parts of parton distribution.
38110         IF(KFA.NE.22) THEN
38111           XFV1=XPA(KFV1)-XPA(-KFV1)
38112           XPA(KFV1)=XPA(-KFV1)
38113           XFV2=XPA(KFV2)-XPA(-KFV2)
38114           XPA(KFV2)=XPA(-KFV2)
38115         ELSE
38116           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
38117           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
38118           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
38119           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
38120         ENDIF
38121  
38122 C...Dampen valence and sea separately. Add constant terms.
38123 C...Put back together.
38124         DO 140 KFL=-25,25
38125           XPQ(KFL)=FSA*XPA(KFL)
38126   140   CONTINUE
38127         IF(KFA.NE.22) THEN
38128           DO 150 KFL=-3,3
38129             XPQ(KFL)=XPQ(KFL)+FSB*WTSB(KFL)
38130   150     CONTINUE
38131           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFV1+FVB*NV1)
38132           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFV2+FVB*NV2)
38133         ELSE
38134           DO 160 KFL=-3,3
38135             XPQ(KFL)=XPQ(KFL)+VINT(281)*FSB*WTSB(KFL)
38136   160     CONTINUE
38137           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
38138           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
38139           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
38140           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
38141         ENDIF
38142         XPQ(21)=XPQ(0)
38143         MINT(92)=4
38144       ENDIF
38145  
38146 C...Format for error printout.
38147  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
38148  
38149       RETURN
38150       END
38151  
38152 C*********************************************************************
38153  
38154 C...PYPDEL
38155 C...Gives electron (or muon, or tau) parton distribution.
38156  
38157       SUBROUTINE PYPDEL(KFA,X,Q2,XPEL)
38158  
38159 C...Double precision and integer declarations.
38160       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38161       IMPLICIT INTEGER(I-N)
38162       INTEGER PYK,PYCHGE,PYCOMP
38163 C...Commonblocks.
38164       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38165       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
38166       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38167       COMMON/PYINT1/MINT(400),VINT(400)
38168       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
38169 C...Local arrays.
38170       DIMENSION XPEL(-25:25),XPGA(-6:6),SXP(0:6)
38171  
38172 C...Interface to PDFLIB.
38173       COMMON/LW50513/XMIN,XMAX,Q2MIN,Q2MAX
38174       SAVE /LW50513/
38175       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
38176      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
38177       CHARACTER*20 PARM(20)
38178       DATA VALUE/20*0D0/,PARM/20*' '/
38179  
38180 C...Some common constants.
38181       DO 100 KFL=-25,25
38182         XPEL(KFL)=0D0
38183   100 CONTINUE
38184       AEM=PARU(101)
38185       PME=PMAS(11,1)
38186       IF(KFA.EQ.13) PME=PMAS(13,1)
38187       IF(KFA.EQ.15) PME=PMAS(15,1)
38188       XL=LOG(MAX(1D-10,X))
38189       X1L=LOG(MAX(1D-10,1D0-X))
38190       HLE=LOG(MAX(3D0,Q2/PME**2))
38191       HBE2=(AEM/PARU(1))*(HLE-1D0)
38192  
38193 C...Electron inside electron, see R. Kleiss et al., in Z physics at
38194 C...LEP 1, CERN 89-08, p. 34
38195       IF(MSTP(59).LE.1) THEN
38196         HDE=1D0+(AEM/PARU(1))*(1.5D0*HLE+1.289868D0)+(AEM/PARU(1))**2*
38197      &  (-2.164868D0*HLE**2+9.840808D0*HLE-10.130464D0)
38198         HEE=HBE2*(1D0-X)**(HBE2-1D0)*SQRT(MAX(0D0,HDE))-
38199      &  0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*(-4D0*X1L+3D0*XL)-
38200      &  4D0*XL/(1D0-X)-5D0-X)
38201       ELSE
38202         HEE=HBE2*(1D0-X)**(HBE2-1D0)*EXP(0.172784D0*HBE2)/
38203      &  PYGAMM(1D0+HBE2)-0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*
38204      &  (-4D0*X1L+3D0*XL)-4D0*XL/(1D0-X)-5D0-X)
38205       ENDIF
38206 C...Zero distribution for very large x and rescale it for intermediate.
38207       IF(X.GT.1D0-1D-10) THEN
38208         HEE=0D0
38209       ELSEIF(X.GT.1D0-1D-7) THEN
38210         HEE=HEE*1000D0**HBE2/(1000D0**HBE2-1D0)
38211       ENDIF
38212       XPEL(KFA)=X*HEE
38213  
38214 C...Photon and (transverse) W- inside electron.
38215       AEMP=PYALEM(PME*SQRT(MAX(0D0,Q2)))/PARU(2)
38216       IF(MSTP(13).LE.1) THEN
38217         HLG=HLE
38218       ELSE
38219         HLG=LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-X)/X**2))
38220       ENDIF
38221       XPEL(22)=AEMP*HLG*(1D0+(1D0-X)**2)
38222       HLW=LOG(1D0+Q2/PMAS(24,1)**2)/(4D0*PARU(102))
38223       XPEL(-24)=AEMP*HLW*(1D0+(1D0-X)**2)
38224  
38225 C...Electron or positron inside photon inside electron.
38226       IF(KFA.EQ.11.AND.MSTP(12).EQ.1) THEN
38227         XFSEA=0.5D0*(AEMP*(HLE-1D0))**2*(4D0/3D0+X-X**2-4D0*X**3/3D0+
38228      &  2D0*X*(1D0+X)*XL)
38229         XPEL(11)=XPEL(11)+XFSEA
38230         XPEL(-11)=XFSEA
38231  
38232 C...Initialize PDFLIB photon parton distributions.
38233         IF(MSTP(56).EQ.2) THEN
38234           PARM(1)='NPTYPE'
38235           VALUE(1)=3
38236           PARM(2)='NGROUP'
38237           VALUE(2)=MSTP(55)/1000
38238           PARM(3)='NSET'
38239           VALUE(3)=MOD(MSTP(55),1000)
38240           IF(MINT(93).NE.3000000+MSTP(55)) THEN
38241             CALL PDFSET(PARM,VALUE)
38242             MINT(93)=3000000+MSTP(55)
38243           ENDIF
38244         ENDIF
38245  
38246 C...Quarks and gluons inside photon inside electron:
38247 C...numerical convolution required.
38248         DO 110 KFL=0,6
38249           SXP(KFL)=0D0
38250   110   CONTINUE
38251         SUMXPP=0D0
38252         ITER=-1
38253   120   ITER=ITER+1
38254         SUMXP=SUMXPP
38255         NSTP=2**(ITER-1)
38256         IF(ITER.EQ.0) NSTP=2
38257         DO 130 KFL=0,6
38258           SXP(KFL)=0.5D0*SXP(KFL)
38259   130   CONTINUE
38260         WTSTP=0.5D0/NSTP
38261         IF(ITER.EQ.0) WTSTP=0.5D0
38262 C...Pick grid of x_{gamma} values logarithmically even.
38263         DO 150 ISTP=1,NSTP
38264           IF(ITER.EQ.0) THEN
38265             XLE=XL*(ISTP-1)
38266           ELSE
38267             XLE=XL*(ISTP-0.5D0)/NSTP
38268           ENDIF
38269           XE=MIN(1D0-1D-10,EXP(XLE))
38270           XG=MIN(1D0-1D-10,X/XE)
38271 C...Evaluate photon inside electron parton distribution for convolution.
38272           XPGP=1D0+(1D0-XE)**2
38273           IF(MSTP(13).LE.1) THEN
38274             XPGP=XPGP*HLE
38275           ELSE
38276             XPGP=XPGP*LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-XE)/XE**2))
38277           ENDIF
38278 C...Evaluate photon parton distributions for convolution.
38279           IF(MSTP(56).EQ.1) THEN
38280             IF(MSTP(55).EQ.1) THEN
38281               CALL PYPDGA(XG,Q2,XPGA)
38282             ELSEIF(MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
38283               Q2MX=Q2
38284               P2MX=0.36D0
38285               IF(MSTP(55).GE.7) P2MX=4.0D0
38286               IF(MSTP(57).EQ.0) Q2MX=P2MX
38287               P2=0D0
38288               IF(VINT(120).LT.0D0) P2=VINT(120)**2
38289               CALL PYGGAM(MSTP(55)-4,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38290               VINT(231)=P2MX
38291             ELSEIF(MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
38292               Q2MX=Q2
38293               P2MX=0.36D0
38294               IF(MSTP(55).GE.11) P2MX=4.0D0
38295               IF(MSTP(57).EQ.0) Q2MX=P2MX
38296               P2=0D0
38297               IF(VINT(120).LT.0D0) P2=VINT(120)**2
38298               CALL PYGGAM(MSTP(55)-8,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38299               VINT(231)=P2MX
38300             ENDIF
38301             DO 140 KFL=0,5
38302               SXP(KFL)=SXP(KFL)+WTSTP*XPGP*XPGA(KFL)
38303   140       CONTINUE
38304           ELSEIF(MSTP(56).EQ.2) THEN
38305 C...Call PDFLIB parton distributions.
38306             XX=XG
38307             QQ=SQRT(MAX(0D0,Q2MIN,Q2))
38308             IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
38309             CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
38310             SXP(0)=SXP(0)+WTSTP*XPGP*GLU
38311             SXP(1)=SXP(1)+WTSTP*XPGP*DNV
38312             SXP(2)=SXP(2)+WTSTP*XPGP*UPV
38313             SXP(3)=SXP(3)+WTSTP*XPGP*STR
38314             SXP(4)=SXP(4)+WTSTP*XPGP*CHM
38315             SXP(5)=SXP(5)+WTSTP*XPGP*BOT
38316             SXP(6)=SXP(6)+WTSTP*XPGP*TOP
38317           ENDIF
38318   150   CONTINUE
38319         SUMXPP=SXP(0)+2D0*SXP(1)+2D0*SXP(2)
38320         IF(ITER.LE.2.OR.(ITER.LE.7.AND.ABS(SUMXPP-SUMXP).GT.
38321      &  PARP(14)*(SUMXPP+SUMXP))) GOTO 120
38322  
38323 C...Put convolution into output arrays.
38324         FCONV=AEMP*(-XL)
38325         XPEL(0)=FCONV*SXP(0)
38326         DO 160 KFL=1,6
38327           XPEL(KFL)=FCONV*SXP(KFL)
38328           XPEL(-KFL)=XPEL(KFL)
38329   160   CONTINUE
38330       ENDIF
38331  
38332       RETURN
38333       END
38334  
38335 C*********************************************************************
38336  
38337 C...PYPDGA
38338 C...Gives photon parton distribution.
38339  
38340       SUBROUTINE PYPDGA(X,Q2,XPGA)
38341  
38342 C...Double precision and integer declarations.
38343       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38344       IMPLICIT INTEGER(I-N)
38345       INTEGER PYK,PYCHGE,PYCOMP
38346 C...Commonblocks.
38347       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38348       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38349       COMMON/PYINT1/MINT(400),VINT(400)
38350       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
38351 C...Local arrays.
38352       DIMENSION XPGA(-6:6),DGAG(4,3),DGBG(4,3),DGCG(4,3),DGAN(4,3),
38353      &DGBN(4,3),DGCN(4,3),DGDN(4,3),DGEN(4,3),DGAS(4,3),DGBS(4,3),
38354      &DGCS(4,3),DGDS(4,3),DGES(4,3)
38355  
38356 C...The following data lines are coefficients needed in the
38357 C...Drees and Grassie photon parton distribution parametrization.
38358       DATA DGAG/-.207D0,.6158D0,1.074D0,0.D0,.8926D-2,.6594D0,
38359      &.4766D0,.1975D-1,.03197D0,1.018D0,.2461D0,.2707D-1/
38360       DATA DGBG/-.1987D0,.6257D0,8.352D0,5.024D0,.5085D-1,.2774D0,
38361      &-.3906D0,-.3212D0,-.618D-2,.9476D0,-.6094D0,-.1067D-1/
38362       DATA DGCG/5.119D0,-.2752D0,-6.993D0,2.298D0,-.2313D0,.1382D0,
38363      &6.542D0,.5162D0,-.1216D0,.9047D0,2.653D0,.2003D-2/
38364       DATA DGAN/2.285D0,-.1526D-1,1330.D0,4.219D0,-.3711D0,1.061D0,
38365      &4.758D0,-.1503D-1,15.8D0,-.9464D0,-.5D0,-.2118D0/
38366       DATA DGBN/6.073D0,-.8132D0,-41.31D0,3.165D0,-.1717D0,.7815D0,
38367      &1.535D0,.7067D-2,2.742D0,-.7332D0,.7148D0,3.287D0/
38368       DATA DGCN/-.4202D0,.1778D-1,.9216D0,.18D0,.8766D-1,.2197D-1,
38369      &.1096D0,.204D0,.2917D-1,.4657D-1,.1785D0,.4811D-1/
38370       DATA DGDN/-.8083D-1,.6346D0,1.208D0,.203D0,-.8915D0,.2857D0,
38371      &2.973D0,.1185D0,-.342D-1,.7196D0,.7338D0,.8139D-1/
38372       DATA DGEN/.5526D-1,1.136D0,.9512D0,.1163D-1,-.1816D0,.5866D0,
38373      &2.421D0,.4059D0,-.2302D-1,.9229D0,.5873D0,-.79D-4/
38374       DATA DGAS/16.69D0,-.7916D0,1099.D0,4.428D0,-.1207D0,1.071D0,
38375      &1.977D0,-.8625D-2,6.734D0,-1.008D0,-.8594D-1,.7625D-1/
38376       DATA DGBS/.176D0,.4794D-1,1.047D0,.25D-1,25.D0,-1.648D0,
38377      &-.1563D-1,6.438D0,59.88D0,-2.983D0,4.48D0,.9686D0/
38378       DATA DGCS/-.208D-1,.3386D-2,4.853D0,.8404D0,-.123D-1,1.162D0,
38379      &.4824D0,-.11D-1,-.3226D-2,.8432D0,.3616D0,.1383D-2/
38380       DATA DGDS/-.1685D-1,1.353D0,1.426D0,1.239D0,-.9194D-1,.7912D0,
38381      &.6397D0,2.327D0,-.3321D-1,.9475D0,-.3198D0,.2132D-1/
38382       DATA DGES/-.1986D0,1.1D0,1.136D0,-.2779D0,.2015D-1,.9869D0,
38383      &-.7036D-1,.1694D-1,.1059D0,.6954D0,-.6663D0,.3683D0/
38384  
38385 C...Photon parton distribution from Drees and Grassie.
38386 C...Allowed variable range: 1 GeV^2 < Q^2 < 10000 GeV^2.
38387       DO 100 KFL=-6,6
38388         XPGA(KFL)=0D0
38389   100 CONTINUE
38390       VINT(231)=1D0
38391       IF(MSTP(57).LE.0) THEN
38392         T=LOG(1D0/0.16D0)
38393       ELSE
38394         T=LOG(MIN(1D4,MAX(1D0,Q2))/0.16D0)
38395       ENDIF
38396       X1=1D0-X
38397       NF=3
38398       IF(Q2.GT.25D0) NF=4
38399       IF(Q2.GT.300D0) NF=5
38400       NFE=NF-2
38401       AEM=PARU(101)
38402  
38403 C...Evaluate gluon content.
38404       DGA=DGAG(1,NFE)*T**DGAG(2,NFE)+DGAG(3,NFE)*T**(-DGAG(4,NFE))
38405       DGB=DGBG(1,NFE)*T**DGBG(2,NFE)+DGBG(3,NFE)*T**(-DGBG(4,NFE))
38406       DGC=DGCG(1,NFE)*T**DGCG(2,NFE)+DGCG(3,NFE)*T**(-DGCG(4,NFE))
38407       XPGL=DGA*X**DGB*X1**DGC
38408  
38409 C...Evaluate up- and down-type quark content.
38410       DGA=DGAN(1,NFE)*T**DGAN(2,NFE)+DGAN(3,NFE)*T**(-DGAN(4,NFE))
38411       DGB=DGBN(1,NFE)*T**DGBN(2,NFE)+DGBN(3,NFE)*T**(-DGBN(4,NFE))
38412       DGC=DGCN(1,NFE)*T**DGCN(2,NFE)+DGCN(3,NFE)*T**(-DGCN(4,NFE))
38413       DGD=DGDN(1,NFE)*T**DGDN(2,NFE)+DGDN(3,NFE)*T**(-DGDN(4,NFE))
38414       DGE=DGEN(1,NFE)*T**DGEN(2,NFE)+DGEN(3,NFE)*T**(-DGEN(4,NFE))
38415       XPQN=X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
38416       DGA=DGAS(1,NFE)*T**DGAS(2,NFE)+DGAS(3,NFE)*T**(-DGAS(4,NFE))
38417       DGB=DGBS(1,NFE)*T**DGBS(2,NFE)+DGBS(3,NFE)*T**(-DGBS(4,NFE))
38418       DGC=DGCS(1,NFE)*T**DGCS(2,NFE)+DGCS(3,NFE)*T**(-DGCS(4,NFE))
38419       DGD=DGDS(1,NFE)*T**DGDS(2,NFE)+DGDS(3,NFE)*T**(-DGDS(4,NFE))
38420       DGE=DGES(1,NFE)*T**DGES(2,NFE)+DGES(3,NFE)*T**(-DGES(4,NFE))
38421       DGF=9D0
38422       IF(NF.EQ.4) DGF=10D0
38423       IF(NF.EQ.5) DGF=55D0/6D0
38424       XPQS=DGF*X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
38425       IF(NF.LE.3) THEN
38426         XPQU=(XPQS+9D0*XPQN)/6D0
38427         XPQD=(XPQS-4.5D0*XPQN)/6D0
38428       ELSEIF(NF.EQ.4) THEN
38429         XPQU=(XPQS+6D0*XPQN)/8D0
38430         XPQD=(XPQS-6D0*XPQN)/8D0
38431       ELSE
38432         XPQU=(XPQS+7.5D0*XPQN)/10D0
38433         XPQD=(XPQS-5D0*XPQN)/10D0
38434       ENDIF
38435  
38436 C...Put into output arrays.
38437       XPGA(0)=AEM*XPGL
38438       XPGA(1)=AEM*XPQD
38439       XPGA(2)=AEM*XPQU
38440       XPGA(3)=AEM*XPQD
38441       IF(NF.GE.4) XPGA(4)=AEM*XPQU
38442       IF(NF.GE.5) XPGA(5)=AEM*XPQD
38443       DO 110 KFL=1,6
38444         XPGA(-KFL)=XPGA(KFL)
38445   110 CONTINUE
38446  
38447       RETURN
38448       END
38449  
38450 C*********************************************************************
38451  
38452 C...PYGGAM
38453 C...Constructs the F2 and parton distributions of the photon
38454 C...by summing homogeneous (VMD) and inhomogeneous (anomalous) terms.
38455 C...For F2, c and b are included by the Bethe-Heitler formula;
38456 C...in the 'MSbar' scheme additionally a Cgamma term is added.
38457 C...Contains the SaS sets 1D, 1M, 2D and 2M.
38458 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
38459  
38460       SUBROUTINE PYGGAM(ISET,X,Q2,P2,IP2,F2GM,XPDFGM)
38461  
38462 C...Double precision and integer declarations.
38463       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38464       IMPLICIT INTEGER(I-N)
38465       INTEGER PYK,PYCHGE,PYCOMP
38466 C...Commonblocks.
38467       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
38468      &XPDIR(-6:6)
38469       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
38470       SAVE /PYINT8/,/PYINT9/
38471 C...Local arrays.
38472       DIMENSION XPDFGM(-6:6),XPGA(-6:6), VXPGA(-6:6)
38473 C...Charm and bottom masses (low to compensate for J/psi etc.).
38474       DATA PMC/1.3D0/, PMB/4.6D0/
38475 C...alpha_em and alpha_em/(2*pi).
38476       DATA AEM/0.007297D0/, AEM2PI/0.0011614D0/
38477 C...Lambda value for 4 flavours.
38478       DATA ALAM/0.20D0/
38479 C...Mixture u/(u+d), = 0.5 for incoherent and = 0.8 for coherent sum.
38480       DATA FRACU/0.8D0/
38481 C...VMD couplings f_V**2/(4*pi).
38482       DATA FRHO/2.20D0/, FOMEGA/23.6D0/, FPHI/18.4D0/
38483 C...Masses for rho (=omega) and phi.
38484       DATA PMRHO/0.770D0/, PMPHI/1.020D0/
38485 C...Number of points in integration for IP2=1.
38486       DATA NSTEP/100/
38487  
38488 C...Reset output.
38489       F2GM=0D0
38490       DO 100 KFL=-6,6
38491         XPDFGM(KFL)=0D0
38492         XPVMD(KFL)=0D0
38493         XPANL(KFL)=0D0
38494         XPANH(KFL)=0D0
38495         XPBEH(KFL)=0D0
38496         XPDIR(KFL)=0D0
38497         VXPVMD(KFL)=0D0
38498         VXPANL(KFL)=0D0
38499         VXPANH(KFL)=0D0
38500         VXPDGM(KFL)=0D0
38501   100 CONTINUE
38502  
38503 C...Set Q0 cut-off parameter as function of set used.
38504       IF(ISET.LE.2) THEN
38505         Q0=0.6D0
38506       ELSE
38507         Q0=2D0
38508       ENDIF
38509       Q02=Q0**2
38510  
38511 C...Scale choice for off-shell photon; common factors.
38512       Q2A=Q2
38513       FACNOR=1D0
38514       IF(IP2.EQ.1) THEN
38515         P2MX=P2+Q02
38516         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
38517         FACNOR=LOG(Q2/Q02)/NSTEP
38518       ELSEIF(IP2.EQ.2) THEN
38519         P2MX=MAX(P2,Q02)
38520       ELSEIF(IP2.EQ.3) THEN
38521         P2MX=P2+Q02
38522         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
38523       ELSEIF(IP2.EQ.4) THEN
38524         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
38525      &  ((Q2+P2)*(Q02+P2)))
38526       ELSEIF(IP2.EQ.5) THEN
38527         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
38528      &  ((Q2+P2)*(Q02+P2)))
38529         P2MX=Q0*SQRT(P2MXA)
38530         FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MX)
38531       ELSEIF(IP2.EQ.6) THEN
38532         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
38533      &  ((Q2+P2)*(Q02+P2)))
38534         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
38535       ELSE
38536         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
38537      &  ((Q2+P2)*(Q02+P2)))
38538         P2MX=Q0*SQRT(P2MXA)
38539         P2MXB=P2MX
38540         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
38541         P2MXB=MAX(0D0,1D0-P2/Q2)*P2MXB+MIN(1D0,P2/Q2)*P2MXA
38542         IF(ABS(Q2-Q02).GT.1D-6) THEN
38543           FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MXB)
38544         ELSEIF(P2.LT.Q02) THEN
38545           FACNOR=Q02**3/(Q02+P2)/(Q02**2-P2**2/2D0)
38546         ELSE
38547           FACNOR=1D0
38548         ENDIF
38549       ENDIF
38550  
38551 C...Call VMD parametrization for d quark and use to give rho, omega,
38552 C...phi. Note dipole dampening for off-shell photon.
38553       CALL PYGVMD(ISET,1,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
38554       XFVAL=VXPGA(1)
38555       XPGA(1)=XPGA(2)
38556       XPGA(-1)=XPGA(-2)
38557       FACUD=AEM*(1D0/FRHO+1D0/FOMEGA)*(PMRHO**2/(PMRHO**2+P2))**2
38558       FACS=AEM*(1D0/FPHI)*(PMPHI**2/(PMPHI**2+P2))**2
38559       DO 110 KFL=-5,5
38560         XPVMD(KFL)=(FACUD+FACS)*XPGA(KFL)
38561   110 CONTINUE
38562       XPVMD(1)=XPVMD(1)+(1D0-FRACU)*FACUD*XFVAL
38563       XPVMD(2)=XPVMD(2)+FRACU*FACUD*XFVAL
38564       XPVMD(3)=XPVMD(3)+FACS*XFVAL
38565       XPVMD(-1)=XPVMD(-1)+(1D0-FRACU)*FACUD*XFVAL
38566       XPVMD(-2)=XPVMD(-2)+FRACU*FACUD*XFVAL
38567       XPVMD(-3)=XPVMD(-3)+FACS*XFVAL
38568       VXPVMD(1)=(1D0-FRACU)*FACUD*XFVAL
38569       VXPVMD(2)=FRACU*FACUD*XFVAL
38570       VXPVMD(3)=FACS*XFVAL
38571       VXPVMD(-1)=(1D0-FRACU)*FACUD*XFVAL
38572       VXPVMD(-2)=FRACU*FACUD*XFVAL
38573       VXPVMD(-3)=FACS*XFVAL
38574  
38575       IF(IP2.NE.1) THEN
38576 C...Anomalous parametrizations for different strategies
38577 C...for off-shell photons; except full integration.
38578  
38579 C...Call anomalous parametrization for d + u + s.
38580         CALL PYGANO(-3,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
38581         DO 120 KFL=-5,5
38582           XPANL(KFL)=FACNOR*XPGA(KFL)
38583           VXPANL(KFL)=FACNOR*VXPGA(KFL)
38584   120   CONTINUE
38585  
38586 C...Call anomalous parametrization for c and b.
38587         CALL PYGANO(4,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
38588         DO 130 KFL=-5,5
38589           XPANH(KFL)=FACNOR*XPGA(KFL)
38590           VXPANH(KFL)=FACNOR*VXPGA(KFL)
38591   130   CONTINUE
38592         CALL PYGANO(5,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
38593         DO 140 KFL=-5,5
38594           XPANH(KFL)=XPANH(KFL)+FACNOR*XPGA(KFL)
38595           VXPANH(KFL)=VXPANH(KFL)+FACNOR*VXPGA(KFL)
38596   140   CONTINUE
38597  
38598       ELSE
38599 C...Special option: loop over flavours and integrate over k2.
38600         DO 170 KF=1,5
38601           DO 160 ISTEP=1,NSTEP
38602             Q2STEP=Q02*(Q2/Q02)**((ISTEP-0.5D0)/NSTEP)
38603             IF((KF.EQ.4.AND.Q2STEP.LT.PMC**2).OR.
38604      &      (KF.EQ.5.AND.Q2STEP.LT.PMB**2)) GOTO 160
38605             CALL PYGVMD(0,KF,X,Q2,Q2STEP,ALAM,XPGA,VXPGA)
38606             FACQ=AEM2PI*(Q2STEP/(Q2STEP+P2))**2*FACNOR
38607             IF(MOD(KF,2).EQ.0) FACQ=FACQ*(8D0/9D0)
38608             IF(MOD(KF,2).EQ.1) FACQ=FACQ*(2D0/9D0)
38609             DO 150 KFL=-5,5
38610               IF(KF.LE.3) XPANL(KFL)=XPANL(KFL)+FACQ*XPGA(KFL)
38611               IF(KF.GE.4) XPANH(KFL)=XPANH(KFL)+FACQ*XPGA(KFL)
38612               IF(KF.LE.3) VXPANL(KFL)=VXPANL(KFL)+FACQ*VXPGA(KFL)
38613               IF(KF.GE.4) VXPANH(KFL)=VXPANH(KFL)+FACQ*VXPGA(KFL)
38614   150       CONTINUE
38615   160     CONTINUE
38616   170   CONTINUE
38617       ENDIF
38618  
38619 C...Call Bethe-Heitler term expression for charm and bottom.
38620       CALL PYGBEH(4,X,Q2,P2,PMC**2,XPBH)
38621       XPBEH(4)=XPBH
38622       XPBEH(-4)=XPBH
38623       CALL PYGBEH(5,X,Q2,P2,PMB**2,XPBH)
38624       XPBEH(5)=XPBH
38625       XPBEH(-5)=XPBH
38626  
38627 C...For MSbar subtraction call C^gamma term expression for d, u, s.
38628       IF(ISET.EQ.2.OR.ISET.EQ.4) THEN
38629         CALL PYGDIR(X,Q2,P2,Q02,XPGA)
38630         DO 180 KFL=-5,5
38631           XPDIR(KFL)=XPGA(KFL)
38632   180   CONTINUE
38633       ENDIF
38634  
38635 C...Store result in output array.
38636       DO 190 KFL=-5,5
38637         CHSQ=1D0/9D0
38638         IF(IABS(KFL).EQ.2.OR.IABS(KFL).EQ.4) CHSQ=4D0/9D0
38639         XPF2=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
38640         IF(KFL.NE.0) F2GM=F2GM+CHSQ*XPF2
38641         XPDFGM(KFL)=XPVMD(KFL)+XPANL(KFL)+XPANH(KFL)
38642         VXPDGM(KFL)=VXPVMD(KFL)+VXPANL(KFL)+VXPANH(KFL)
38643   190 CONTINUE
38644  
38645       RETURN
38646       END
38647  
38648 C*********************************************************************
38649  
38650 C...PYGVMD
38651 C...Evaluates the VMD parton distributions of a photon,
38652 C...evolved homogeneously from an initial scale P2 to Q2.
38653 C...Does not include dipole suppression factor.
38654 C...ISET is parton distribution set, see above;
38655 C...additionally ISET=0 is used for the evolution of an anomalous photon
38656 C...which branched at a scale P2 and then evolved homogeneously to Q2.
38657 C...ALAM is the 4-flavour Lambda, which is automatically converted
38658 C...to 3- and 5-flavour equivalents as needed.
38659 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
38660  
38661       SUBROUTINE PYGVMD(ISET,KF,X,Q2,P2,ALAM,XPGA,VXPGA)
38662  
38663 C...Double precision and integer declarations.
38664       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38665       IMPLICIT INTEGER(I-N)
38666       INTEGER PYK,PYCHGE,PYCOMP
38667 C...Local arrays and data.
38668       DIMENSION XPGA(-6:6), VXPGA(-6:6)
38669       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
38670  
38671 C...Reset output.
38672       DO 100 KFL=-6,6
38673         XPGA(KFL)=0D0
38674         VXPGA(KFL)=0D0
38675   100 CONTINUE
38676       KFA=IABS(KF)
38677  
38678 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
38679       ALAM3=ALAM*(PMC/ALAM)**(2D0/27D0)
38680       ALAM5=ALAM*(ALAM/PMB)**(2D0/23D0)
38681       P2EFF=MAX(P2,1.2D0*ALAM3**2)
38682       IF(KFA.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
38683       IF(KFA.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
38684       Q2EFF=MAX(Q2,P2EFF)
38685  
38686 C...Find number of flavours at lower and upper scale.
38687       NFP=4
38688       IF(P2EFF.LT.PMC**2) NFP=3
38689       IF(P2EFF.GT.PMB**2) NFP=5
38690       NFQ=4
38691       IF(Q2EFF.LT.PMC**2) NFQ=3
38692       IF(Q2EFF.GT.PMB**2) NFQ=5
38693  
38694 C...Find s as sum of 3-, 4- and 5-flavour parts.
38695       S=0D0
38696       IF(NFP.EQ.3) THEN
38697         Q2DIV=PMC**2
38698         IF(NFQ.EQ.3) Q2DIV=Q2EFF
38699         S=S+(6D0/27D0)*LOG(LOG(Q2DIV/ALAM3**2)/LOG(P2EFF/ALAM3**2))
38700       ENDIF
38701       IF(NFP.LE.4.AND.NFQ.GE.4) THEN
38702         P2DIV=P2EFF
38703         IF(NFP.EQ.3) P2DIV=PMC**2
38704         Q2DIV=Q2EFF
38705         IF(NFQ.EQ.5) Q2DIV=PMB**2
38706         S=S+(6D0/25D0)*LOG(LOG(Q2DIV/ALAM**2)/LOG(P2DIV/ALAM**2))
38707       ENDIF
38708       IF(NFQ.EQ.5) THEN
38709         P2DIV=PMB**2
38710         IF(NFP.EQ.5) P2DIV=P2EFF
38711         S=S+(6D0/23D0)*LOG(LOG(Q2EFF/ALAM5**2)/LOG(P2DIV/ALAM5**2))
38712       ENDIF
38713  
38714 C...Calculate frequent combinations of x and s.
38715       X1=1D0-X
38716       XL=-LOG(X)
38717       S2=S**2
38718       S3=S**3
38719       S4=S**4
38720  
38721 C...Evaluate homogeneous anomalous parton distributions below or
38722 C...above threshold.
38723       IF(ISET.EQ.0) THEN
38724         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38725      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38726           XVAL = X * 1.5D0 * (X**2+X1**2)
38727           XGLU = 0D0
38728           XSEA = 0D0
38729         ELSE
38730           XVAL = (1.5D0/(1D0-0.197D0*S+4.33D0*S2)*X**2 +
38731      &    (1.5D0+2.10D0*S)/(1D0+3.29D0*S)*X1**2 +
38732      &    5.23D0*S/(1D0+1.17D0*S+19.9D0*S3)*X*X1) *
38733      &    X**(1D0/(1D0+1.5D0*S)) * (1D0-X**2)**(2.667D0*S)
38734           XGLU = 4D0*S/(1D0+4.76D0*S+15.2D0*S2+29.3D0*S4) *
38735      &    X**(-2.03D0*S/(1D0+2.44D0*S)) * (X1*XL)**(1.333D0*S) *
38736      &    ((4D0*X**2+7D0*X+4D0)*X1/3D0 - 2D0*X*(1D0+X)*XL)
38737           XSEA = S2/(1D0+4.54D0*S+8.19D0*S2+8.05D0*S3) *
38738      &    X**(-1.54D0*S/(1D0+1.29D0*S)) * X1**(2.667D0*S) *
38739      &    ((8D0-73D0*X+62D0*X**2)*X1/9D0 + (3D0-8D0*X**2/3D0)*X*XL +
38740      &    (2D0*X-1D0)*X*XL**2)
38741         ENDIF
38742  
38743 C...Evaluate set 1D parton distributions below or above threshold.
38744       ELSEIF(ISET.EQ.1) 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 = 1.294D0 * X**0.80D0 * X1**0.76D0
38748           XGLU = 1.273D0 * X**0.40D0 * X1**1.76D0
38749           XSEA = 0.100D0 * X1**3.76D0
38750         ELSE
38751           XVAL = 1.294D0/(1D0+0.252D0*S+3.079D0*S2) *
38752      &    X**(0.80D0-0.13D0*S) * X1**(0.76D0+0.667D0*S) * XL**(2D0*S)
38753           XGLU = 7.90D0*S/(1D0+5.50D0*S) * EXP(-5.16D0*S) *
38754      &    X**(-1.90D0*S/(1D0+3.60D0*S)) * X1**1.30D0 *
38755      &    XL**(0.50D0+3D0*S) + 1.273D0 * EXP(-10D0*S) *
38756      &    X**0.40D0 * X1**(1.76D0+3D0*S)
38757           XSEA = (0.1D0-0.397D0*S2+1.121D0*S3)/
38758      &    (1D0+5.61D0*S2+5.26D0*S3) * X**(-7.32D0*S2/(1D0+10.3D0*S2)) *
38759      &    X1**((3.76D0+15D0*S+12D0*S2)/(1D0+4D0*S))
38760           XSEA0 = 0.100D0 * X1**3.76D0
38761         ENDIF
38762  
38763 C...Evaluate set 1M parton distributions below or above threshold.
38764       ELSEIF(ISET.EQ.2) THEN
38765         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38766      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38767           XVAL = 0.8477D0 * X**0.51D0 * X1**1.37D0
38768           XGLU = 3.42D0 * X**0.255D0 * X1**2.37D0
38769           XSEA = 0D0
38770         ELSE
38771           XVAL = 0.8477D0/(1D0+1.37D0*S+2.18D0*S2+3.73D0*S3) *
38772      &    X**(0.51D0+0.21D0*S) * X1**1.37D0 * XL**(2.667D0*S)
38773           XGLU = 24D0*S/(1D0+9.6D0*S+0.92D0*S2+14.34D0*S3) *
38774      &    EXP(-5.94D0*S) * X**((-0.013D0-1.80D0*S)/(1D0+3.14D0*S)) *
38775      &    X1**(2.37D0+0.4D0*S) * XL**(0.32D0+3.6D0*S) + 3.42D0 *
38776      &    EXP(-12D0*S) * X**0.255D0 * X1**(2.37D0+3D0*S)
38777           XSEA = 0.842D0*S/(1D0+21.3D0*S-33.2D0*S2+229D0*S3) *
38778      &    X**((0.13D0-2.90D0*S)/(1D0+5.44D0*S)) * X1**(3.45D0+0.5D0*S) *
38779      &    XL**(2.8D0*S)
38780           XSEA0 = 0D0
38781         ENDIF
38782  
38783 C...Evaluate set 2D parton distributions below or above threshold.
38784       ELSEIF(ISET.EQ.3) THEN
38785         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38786      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38787           XVAL = X**0.46D0 * X1**0.64D0 + 0.76D0 * X
38788           XGLU = 1.925D0 * X1**2
38789           XSEA = 0.242D0 * X1**4
38790         ELSE
38791           XVAL = (1D0+0.186D0*S)/(1D0-0.209D0*S+1.495D0*S2) *
38792      &    X**(0.46D0+0.25D0*S) *
38793      &    X1**((0.64D0+0.14D0*S+5D0*S2)/(1D0+S)) * XL**(1.9D0*S) +
38794      &    (0.76D0+0.4D0*S) * X * X1**(2.667D0*S)
38795           XGLU = (1.925D0+5.55D0*S+147D0*S2)/(1D0-3.59D0*S+3.32D0*S2) *
38796      &    EXP(-18.67D0*S) *
38797      &    X**((-5.81D0*S-5.34D0*S2)/(1D0+29D0*S-4.26D0*S2))
38798      &    * X1**((2D0-5.9D0*S)/(1D0+1.7D0*S)) *
38799      &    XL**(9.3D0*S/(1D0+1.7D0*S))
38800           XSEA = (0.242D0-0.252D0*S+1.19D0*S2)/
38801      &    (1D0-0.607D0*S+21.95D0*S2) *
38802      &    X**(-12.1D0*S2/(1D0+2.62D0*S+16.7D0*S2)) * X1**4 * XL**S
38803           XSEA0 = 0.242D0 * X1**4
38804         ENDIF
38805  
38806 C...Evaluate set 2M parton distributions below or above threshold.
38807       ELSEIF(ISET.EQ.4) THEN
38808         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38809      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38810           XVAL = 1.168D0 * X**0.50D0 * X1**2.60D0 + 0.965D0 * X
38811           XGLU = 1.808D0 * X1**2
38812           XSEA = 0.209D0 * X1**4
38813         ELSE
38814           XVAL = (1.168D0+1.771D0*S+29.35D0*S2) * EXP(-5.776D0*S) *
38815      &    X**((0.5D0+0.208D0*S)/(1D0-0.794D0*S+1.516D0*S2)) *
38816      &    X1**((2.6D0+7.6D0*S)/(1D0+5D0*S)) *
38817      &    XL**(5.15D0*S/(1D0+2D0*S)) +
38818      &    (0.965D0+22.35D0*S)/(1D0+18.4D0*S) * X * X1**(2.667D0*S)
38819           XGLU = (1.808D0+29.9D0*S)/(1D0+26.4D0*S) * EXP(-5.28D0*S) *
38820      &    X**((-5.35D0*S-10.11D0*S2)/(1D0+31.71D0*S)) *
38821      &    X1**((2D0-7.3D0*S+4D0*S2)/(1D0+2.5D0*S)) *
38822      &    XL**(10.9D0*S/(1D0+2.5D0*S))
38823           XSEA = (0.209D0+0.644D0*S2)/(1D0+0.319D0*S+17.6D0*S2) *
38824      &    X**((-0.373D0*S-7.71D0*S2)/(1D0+0.815D0*S+11.0D0*S2)) *
38825      &    X1**(4D0+S) * XL**(0.45D0*S)
38826           XSEA0 = 0.209D0 * X1**4
38827         ENDIF
38828       ENDIF
38829  
38830 C...Threshold factors for c and b sea.
38831       SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
38832       XCHM=0D0
38833       IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
38834         SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
38835         IF(ISET.EQ.0) THEN
38836           XCHM=XSEA*(1D0-(SCH/SLL)**2)
38837         ELSE
38838           XCHM=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SCH/SLL)
38839         ENDIF
38840       ENDIF
38841       XBOT=0D0
38842       IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
38843         SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
38844         IF(ISET.EQ.0) THEN
38845           XBOT=XSEA*(1D0-(SBT/SLL)**2)
38846         ELSE
38847           XBOT=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SBT/SLL)
38848         ENDIF
38849       ENDIF
38850  
38851 C...Fill parton distributions.
38852       XPGA(0)=XGLU
38853       XPGA(1)=XSEA
38854       XPGA(2)=XSEA
38855       XPGA(3)=XSEA
38856       XPGA(4)=XCHM
38857       XPGA(5)=XBOT
38858       XPGA(KFA)=XPGA(KFA)+XVAL
38859       DO 110 KFL=1,5
38860         XPGA(-KFL)=XPGA(KFL)
38861   110 CONTINUE
38862       VXPGA(KFA)=XVAL
38863       VXPGA(-KFA)=XVAL
38864  
38865       RETURN
38866       END
38867  
38868 C*********************************************************************
38869  
38870 C...PYGANO
38871 C...Evaluates the parton distributions of the anomalous photon,
38872 C...inhomogeneously evolved from a scale P2 (where it vanishes) to Q2.
38873 C...KF=0 gives the sum over (up to) 5 flavours,
38874 C...KF<0 limits to flavours up to abs(KF),
38875 C...KF>0 is for flavour KF only.
38876 C...ALAM is the 4-flavour Lambda, which is automatically converted
38877 C...to 3- and 5-flavour equivalents as needed.
38878 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
38879  
38880       SUBROUTINE PYGANO(KF,X,Q2,P2,ALAM,XPGA,VXPGA)
38881  
38882 C...Double precision and integer declarations.
38883       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38884       IMPLICIT INTEGER(I-N)
38885       INTEGER PYK,PYCHGE,PYCOMP
38886 C...Local arrays and data.
38887       DIMENSION XPGA(-6:6), VXPGA(-6:6), ALAMSQ(3:5)
38888       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
38889  
38890 C...Reset output.
38891       DO 100 KFL=-6,6
38892         XPGA(KFL)=0D0
38893         VXPGA(KFL)=0D0
38894   100 CONTINUE
38895       IF(Q2.LE.P2) RETURN
38896       KFA=IABS(KF)
38897  
38898 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
38899       ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2D0/27D0))**2
38900       ALAMSQ(4)=ALAM**2
38901       ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2D0/23D0))**2
38902       P2EFF=MAX(P2,1.2D0*ALAMSQ(3))
38903       IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
38904       IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
38905       Q2EFF=MAX(Q2,P2EFF)
38906       XL=-LOG(X)
38907  
38908 C...Find number of flavours at lower and upper scale.
38909       NFP=4
38910       IF(P2EFF.LT.PMC**2) NFP=3
38911       IF(P2EFF.GT.PMB**2) NFP=5
38912       NFQ=4
38913       IF(Q2EFF.LT.PMC**2) NFQ=3
38914       IF(Q2EFF.GT.PMB**2) NFQ=5
38915  
38916 C...Define range of flavour loop.
38917       IF(KF.EQ.0) THEN
38918         KFLMN=1
38919         KFLMX=5
38920       ELSEIF(KF.LT.0) THEN
38921         KFLMN=1
38922         KFLMX=KFA
38923       ELSE
38924         KFLMN=KFA
38925         KFLMX=KFA
38926       ENDIF
38927  
38928 C...Loop over flavours the photon can branch into.
38929       DO 110 KFL=KFLMN,KFLMX
38930  
38931 C...Light flavours: calculate t range and (approximate) s range.
38932         IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
38933           TDIFF=LOG(Q2EFF/P2EFF)
38934           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
38935      &    LOG(P2EFF/ALAMSQ(NFQ)))
38936           IF(NFQ.GT.NFP) THEN
38937             Q2DIV=PMB**2
38938             IF(NFQ.EQ.4) Q2DIV=PMC**2
38939             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
38940      &      LOG(P2EFF/ALAMSQ(NFQ)))
38941             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
38942      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
38943             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
38944           ENDIF
38945           IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
38946             Q2DIV=PMC**2
38947             SNF4=(6D0/(33D0-2D0*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
38948      &      LOG(P2EFF/ALAMSQ(4)))
38949             SNF3=(6D0/(33D0-2D0*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
38950      &      LOG(P2EFF/ALAMSQ(3)))
38951             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
38952           ENDIF
38953  
38954 C...u and s quark do not need a separate treatment when d has been done.
38955         ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
38956  
38957 C...Charm: as above, but only include range above c threshold.
38958         ELSEIF(KFL.EQ.4) THEN
38959           IF(Q2.LE.PMC**2) GOTO 110
38960           P2EFF=MAX(P2EFF,PMC**2)
38961           Q2EFF=MAX(Q2EFF,P2EFF)
38962           TDIFF=LOG(Q2EFF/P2EFF)
38963           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
38964      &    LOG(P2EFF/ALAMSQ(NFQ)))
38965           IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
38966             Q2DIV=PMB**2
38967             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
38968      &      LOG(P2EFF/ALAMSQ(NFQ)))
38969             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
38970      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
38971             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
38972           ENDIF
38973  
38974 C...Bottom: as above, but only include range above b threshold.
38975         ELSEIF(KFL.EQ.5) THEN
38976           IF(Q2.LE.PMB**2) GOTO 110
38977           P2EFF=MAX(P2EFF,PMB**2)
38978           Q2EFF=MAX(Q2,P2EFF)
38979           TDIFF=LOG(Q2EFF/P2EFF)
38980           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
38981      &    LOG(P2EFF/ALAMSQ(NFQ)))
38982         ENDIF
38983  
38984 C...Evaluate flavour-dependent prefactor (charge^2 etc.).
38985         CHSQ=1D0/9D0
38986         IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4D0/9D0
38987         FAC=AEM2PI*2D0*CHSQ*TDIFF
38988  
38989 C...Evaluate parton distributions (normalized to unit momentum sum).
38990         IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
38991           XVAL= ((1.5D0+2.49D0*S+26.9D0*S**2)/(1D0+32.3D0*S**2)*X**2 +
38992      &    (1.5D0-0.49D0*S+7.83D0*S**2)/(1D0+7.68D0*S**2)*(1D0-X)**2 +
38993      &    1.5D0*S/(1D0-3.2D0*S+7D0*S**2)*X*(1D0-X)) *
38994      &    X**(1D0/(1D0+0.58D0*S)) * (1D0-X**2)**(2.5D0*S/(1D0+10D0*S))
38995           XGLU= 2D0*S/(1D0+4D0*S+7D0*S**2) *
38996      &    X**(-1.67D0*S/(1D0+2D0*S)) * (1D0-X**2)**(1.2D0*S) *
38997      &    ((4D0*X**2+7D0*X+4D0)*(1D0-X)/3D0 - 2D0*X*(1D0+X)*XL)
38998           XSEA= 0.333D0*S**2/(1D0+4.90D0*S+4.69D0*S**2+21.4D0*S**3) *
38999      &    X**(-1.18D0*S/(1D0+1.22D0*S)) * (1D0-X)**(1.2D0*S) *
39000      &    ((8D0-73D0*X+62D0*X**2)*(1D0-X)/9D0 +
39001      &    (3D0-8D0*X**2/3D0)*X*XL + (2D0*X-1D0)*X*XL**2)
39002  
39003 C...Threshold factors for c and b sea.
39004           SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
39005           XCHM=0D0
39006           IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
39007             SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
39008             XCHM=XSEA*(1D0-(SCH/SLL)**3)
39009           ENDIF
39010           XBOT=0D0
39011           IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
39012             SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
39013             XBOT=XSEA*(1D0-(SBT/SLL)**3)
39014           ENDIF
39015         ENDIF
39016  
39017 C...Add contribution of each valence flavour.
39018         XPGA(0)=XPGA(0)+FAC*XGLU
39019         XPGA(1)=XPGA(1)+FAC*XSEA
39020         XPGA(2)=XPGA(2)+FAC*XSEA
39021         XPGA(3)=XPGA(3)+FAC*XSEA
39022         XPGA(4)=XPGA(4)+FAC*XCHM
39023         XPGA(5)=XPGA(5)+FAC*XBOT
39024         XPGA(KFL)=XPGA(KFL)+FAC*XVAL
39025         VXPGA(KFL)=VXPGA(KFL)+FAC*XVAL
39026   110 CONTINUE
39027       DO 120 KFL=1,5
39028         XPGA(-KFL)=XPGA(KFL)
39029         VXPGA(-KFL)=VXPGA(KFL)
39030   120 CONTINUE
39031  
39032       RETURN
39033       END
39034  
39035  
39036 C*********************************************************************
39037  
39038 C...PYGBEH
39039 C...Evaluates the Bethe-Heitler cross section for heavy flavour
39040 C...production.
39041 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39042  
39043       SUBROUTINE PYGBEH(KF,X,Q2,P2,PM2,XPBH)
39044  
39045 C...Double precision and integer declarations.
39046       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39047       IMPLICIT INTEGER(I-N)
39048       INTEGER PYK,PYCHGE,PYCOMP
39049  
39050 C...Local data.
39051       DATA AEM2PI/0.0011614D0/
39052  
39053 C...Reset output.
39054       XPBH=0D0
39055       SIGBH=0D0
39056  
39057 C...Check kinematics limits.
39058       IF(X.GE.Q2/(4D0*PM2+Q2+P2)) RETURN
39059       W2=Q2*(1D0-X)/X-P2
39060       BETA2=1D0-4D0*PM2/W2
39061       IF(BETA2.LT.1D-10) RETURN
39062       BETA=SQRT(BETA2)
39063       RMQ=4D0*PM2/Q2
39064  
39065 C...Simple case: P2 = 0.
39066       IF(P2.LT.1D-4) THEN
39067         IF(BETA.LT.0.99D0) THEN
39068           XBL=LOG((1D0+BETA)/(1D0-BETA))
39069         ELSE
39070           XBL=LOG((1D0+BETA)**2*W2/(4D0*PM2))
39071         ENDIF
39072         SIGBH=BETA*(8D0*X*(1D0-X)-1D0-RMQ*X*(1D0-X))+
39073      &  XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)
39074  
39075 C...Complicated case: P2 > 0, based on approximation of
39076 C...C.T. Hill and G.G. Ross, Nucl. Phys. B148 (1979) 373
39077       ELSE
39078         RPQ=1D0-4D0*X**2*P2/Q2
39079         IF(RPQ.GT.1D-10) THEN
39080           RPBE=SQRT(RPQ*BETA2)
39081           IF(RPBE.LT.0.99D0) THEN
39082             XBL=LOG((1D0+RPBE)/(1D0-RPBE))
39083             XBI=2D0*RPBE/(1D0-RPBE**2)
39084           ELSE
39085             RPBESN=4D0*PM2/W2+(4D0*X**2*P2/Q2)*BETA2
39086             XBL=LOG((1D0+RPBE)**2/RPBESN)
39087             XBI=2D0*RPBE/RPBESN
39088           ENDIF
39089           SIGBH=BETA*(6D0*X*(1D0-X)-1D0)+
39090      &    XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)+
39091      &    XBI*(2D0*X/Q2)*(PM2*X*(2D0-RMQ)-P2*X)
39092         ENDIF
39093       ENDIF
39094  
39095 C...Multiply by charge-squared etc. to get parton distribution.
39096       CHSQ=1D0/9D0
39097       IF(IABS(KF).EQ.2.OR.IABS(KF).EQ.4) CHSQ=4D0/9D0
39098       XPBH=3D0*CHSQ*AEM2PI*X*SIGBH
39099  
39100       RETURN
39101       END
39102  
39103 C*********************************************************************
39104  
39105 C...PYGDIR
39106 C...Evaluates the direct contribution, i.e. the C^gamma term,
39107 C...as needed in MSbar parametrizations.
39108 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39109  
39110       SUBROUTINE PYGDIR(X,Q2,P2,Q02,XPGA)
39111  
39112 C...Double precision and integer declarations.
39113       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39114       IMPLICIT INTEGER(I-N)
39115       INTEGER PYK,PYCHGE,PYCOMP
39116 C...Local array and data.
39117       DIMENSION XPGA(-6:6)
39118       DATA PMC/1.3D0/, PMB/4.6D0/, AEM2PI/0.0011614D0/
39119  
39120 C...Reset output.
39121       DO 100 KFL=-6,6
39122         XPGA(KFL)=0D0
39123   100 CONTINUE
39124  
39125 C...Evaluate common x-dependent expression.
39126       XTMP = (X**2+(1D0-X)**2) * (-LOG(X)) - 1D0
39127       CGAM = 3D0*AEM2PI*X * (XTMP*(1D0+P2/(P2+Q02)) + 6D0*X*(1D0-X))
39128  
39129 C...d, u, s part by simple charge factor.
39130       XPGA(1)=(1D0/9D0)*CGAM
39131       XPGA(2)=(4D0/9D0)*CGAM
39132       XPGA(3)=(1D0/9D0)*CGAM
39133  
39134 C...Also fill for antiquarks.
39135       DO 110 KF=1,5
39136         XPGA(-KF)=XPGA(KF)
39137   110 CONTINUE
39138  
39139       RETURN
39140       END
39141  
39142 C*********************************************************************
39143  
39144 C...PYPDPI
39145 C...Gives pi+ parton distribution according to two different
39146 C...parametrizations.
39147  
39148       SUBROUTINE PYPDPI(X,Q2,XPPI)
39149  
39150 C...Double precision and integer declarations.
39151       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39152       IMPLICIT INTEGER(I-N)
39153       INTEGER PYK,PYCHGE,PYCOMP
39154 C...Commonblocks.
39155       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39156       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39157       COMMON/PYINT1/MINT(400),VINT(400)
39158       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
39159 C...Local arrays.
39160       DIMENSION XPPI(-6:6),COW(3,5,4,2),XQ(9),TS(6)
39161  
39162 C...The following data lines are coefficients needed in the
39163 C...Owens pion parton distribution parametrizations, see below.
39164 C...Expansion coefficients for up and down valence quark distributions.
39165       DATA ((COW(IP,IS,1,1),IS=1,5),IP=1,3)/
39166      &4.0000D-01,  7.0000D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39167      &-6.2120D-02,  6.4780D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39168      &-7.1090D-03,  1.3350D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
39169       DATA ((COW(IP,IS,1,2),IS=1,5),IP=1,3)/
39170      &4.0000D-01,  6.2800D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39171      &-5.9090D-02,  6.4360D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39172      &-6.5240D-03,  1.4510D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
39173 C...Expansion coefficients for gluon distribution.
39174       DATA ((COW(IP,IS,2,1),IS=1,5),IP=1,3)/
39175      &8.8800D-01,  0.0000D+00,  3.1100D+00,  6.0000D+00,  0.0000D+00,
39176      &-1.8020D+00, -1.5760D+00, -1.3170D-01,  2.8010D+00, -1.7280D+01,
39177      &1.8120D+00,  1.2000D+00,  5.0680D-01, -1.2160D+01,  2.0490D+01/
39178       DATA ((COW(IP,IS,2,2),IS=1,5),IP=1,3)/
39179      &7.9400D-01,  0.0000D+00,  2.8900D+00,  6.0000D+00,  0.0000D+00,
39180      &-9.1440D-01, -1.2370D+00,  5.9660D-01, -3.6710D+00, -8.1910D+00,
39181      &5.9660D-01,  6.5820D-01, -2.5500D-01, -2.3040D+00,  7.7580D+00/
39182 C...Expansion coefficients for (up+down+strange) quark sea distribution.
39183       DATA ((COW(IP,IS,3,1),IS=1,5),IP=1,3)/
39184      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
39185      &-2.4280D-01, -2.1200D-01,  8.6730D-01,  1.2660D+00,  2.3820D+00,
39186      &1.3860D-01,  3.6710D-03,  4.7470D-02, -2.2150D+00,  3.4820D-01/
39187       DATA ((COW(IP,IS,3,2),IS=1,5),IP=1,3)/
39188      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
39189      &-1.4170D-01, -1.6970D-01, -2.4740D+00, -2.5340D+00,  5.6210D-01,
39190      &-1.7400D-01, -9.6230D-02,  1.5750D+00,  1.3780D+00, -2.7010D-01/
39191 C...Expansion coefficients for charm quark sea distribution.
39192       DATA ((COW(IP,IS,4,1),IS=1,5),IP=1,3)/
39193      &0.0000D+00, -2.2120D-02,  2.8940D+00,  0.0000D+00,  0.0000D+00,
39194      &7.9280D-02, -3.7850D-01,  9.4330D+00,  5.2480D+00,  8.3880D+00,
39195      &-6.1340D-02, -1.0880D-01, -1.0852D+01, -7.1870D+00, -1.1610D+01/
39196       DATA ((COW(IP,IS,4,2),IS=1,5),IP=1,3)/
39197      &0.0000D+00, -8.8200D-02,  1.9240D+00,  0.0000D+00,  0.0000D+00,
39198      &6.2290D-02, -2.8920D-01,  2.4240D-01, -4.4630D+00, -8.3670D-01,
39199      &-4.0990D-02, -1.0820D-01,  2.0360D+00,  5.2090D+00, -4.8400D-02/
39200  
39201 C...Euler's beta function, requires ordinary Gamma function
39202       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
39203  
39204 C...Reset output array.
39205       DO 100 KFL=-6,6
39206         XPPI(KFL)=0D0
39207   100 CONTINUE
39208  
39209       IF(MSTP(53).LE.2) THEN
39210 C...Pion parton distributions from Owens.
39211 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 2000 GeV^2.
39212  
39213 C...Determine set, Lambda and s expansion variable.
39214         NSET=MSTP(53)
39215         IF(NSET.EQ.1) ALAM=0.2D0
39216         IF(NSET.EQ.2) ALAM=0.4D0
39217         VINT(231)=4D0
39218         IF(MSTP(57).LE.0) THEN
39219           SD=0D0
39220         ELSE
39221           Q2IN=MIN(2D3,MAX(4D0,Q2))
39222           SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
39223         ENDIF
39224  
39225 C...Calculate parton distributions.
39226         DO 120 KFL=1,4
39227           DO 110 IS=1,5
39228             TS(IS)=COW(1,IS,KFL,NSET)+COW(2,IS,KFL,NSET)*SD+
39229      &      COW(3,IS,KFL,NSET)*SD**2
39230   110     CONTINUE
39231           IF(KFL.EQ.1) THEN
39232             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)/EULBET(TS(1),TS(2)+1D0)
39233           ELSE
39234             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
39235      &      TS(5)*X**2)
39236           ENDIF
39237   120   CONTINUE
39238  
39239 C...Put into output array.
39240         XPPI(0)=XQ(2)
39241         XPPI(1)=XQ(3)/6D0
39242         XPPI(2)=XQ(1)+XQ(3)/6D0
39243         XPPI(3)=XQ(3)/6D0
39244         XPPI(4)=XQ(4)
39245         XPPI(-1)=XQ(1)+XQ(3)/6D0
39246         XPPI(-2)=XQ(3)/6D0
39247         XPPI(-3)=XQ(3)/6D0
39248         XPPI(-4)=XQ(4)
39249  
39250 C...Leading order pion parton distributions from Glueck, Reya and Vogt.
39251 C...Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
39252 C...10^-5 < x < 1.
39253       ELSE
39254  
39255 C...Determine s expansion variable and some x expressions.
39256         VINT(231)=0.25D0
39257         IF(MSTP(57).LE.0) THEN
39258           SD=0D0
39259         ELSE
39260           Q2IN=MIN(1D8,MAX(0.25D0,Q2))
39261           SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
39262         ENDIF
39263         SD2=SD**2
39264         XL=-LOG(X)
39265         XS=SQRT(X)
39266  
39267 C...Evaluate valence, gluon and sea distributions.
39268         XFVAL=(0.519D0+0.180D0*SD-0.011D0*SD2)*X**(0.499D0-0.027D0*SD)*
39269      &  (1D0+(0.381D0-0.419D0*SD)*XS)*(1D0-X)**(0.367D0+0.563D0*SD)
39270         XFGLU=(X**(0.482D0+0.341D0*SQRT(SD))*((0.678D0+0.877D0*
39271      &  SD-0.175D0*SD2)+
39272      &  (0.338D0-1.597D0*SD)*XS+(-0.233D0*SD+0.406D0*SD2)*X)+
39273      &  SD**0.599D0*EXP(-(0.618D0+2.070D0*SD)+SQRT(3.676D0*SD**1.263D0*
39274      &  XL)))*
39275      &  (1D0-X)**(0.390D0+1.053D0*SD)
39276         XFSEA=SD**0.55D0*(1D0-0.748D0*XS+(0.313D0+0.935D0*SD)*X)*(1D0-
39277      &  X)**3.359D0*
39278      &  EXP(-(4.433D0+1.301D0*SD)+SQRT((9.30D0-0.887D0*SD)*SD**0.56D0*
39279      &  XL))/
39280      &  XL**(2.538D0-0.763D0*SD)
39281         IF(SD.LE.0.888D0) THEN
39282           XFCHM=0D0
39283         ELSE
39284           XFCHM=(SD-0.888D0)**1.02D0*(1D0+1.008D0*X)*(1D0-X)**(1.208D0+
39285      &    0.771D0*SD)*
39286      &    EXP(-(4.40D0+1.493D0*SD)+SQRT((2.032D0+1.901D0*SD)*SD**0.39D0*
39287      &    XL))
39288         ENDIF
39289         IF(SD.LE.1.351D0) THEN
39290           XFBOT=0D0
39291         ELSE
39292           XFBOT=(SD-1.351D0)**1.03D0*(1D0-X)**(0.697D0+0.855D0*SD)*
39293      &    EXP(-(4.51D0+1.490D0*SD)+SQRT((3.056D0+1.694D0*SD)*SD**0.39D0*
39294      &    XL))
39295         ENDIF
39296  
39297 C...Put into output array.
39298         XPPI(0)=XFGLU
39299         XPPI(1)=XFSEA
39300         XPPI(2)=XFSEA
39301         XPPI(3)=XFSEA
39302         XPPI(4)=XFCHM
39303         XPPI(5)=XFBOT
39304         DO 130 KFL=1,5
39305           XPPI(-KFL)=XPPI(KFL)
39306   130   CONTINUE
39307         XPPI(2)=XPPI(2)+XFVAL
39308         XPPI(-1)=XPPI(-1)+XFVAL
39309       ENDIF
39310  
39311       RETURN
39312       END
39313  
39314 C*********************************************************************
39315  
39316 C...PYPDPR
39317 C...Gives proton parton distributions according to a few different
39318 C...parametrizations.
39319  
39320       SUBROUTINE PYPDPR(X,Q2,XPPR)
39321  
39322 C...Double precision and integer declarations.
39323       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39324       IMPLICIT INTEGER(I-N)
39325       INTEGER PYK,PYCHGE,PYCOMP
39326 C...Commonblocks.
39327       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39328       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
39329       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39330       COMMON/PYINT1/MINT(400),VINT(400)
39331       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
39332 C...Arrays and data.
39333       DIMENSION XPPR(-6:6),Q2MIN(16)
39334       DATA Q2MIN/ 2.56D0, 2.56D0, 2.56D0, 0.4D0, 0.4D0, 0.4D0,
39335      &1.0D0, 1.0D0, 2*0D0, 0.25D0, 5D0, 5D0, 4D0, 4D0, 0D0/
39336  
39337 C...Reset output array.
39338       DO 100 KFL=-6,6
39339         XPPR(KFL)=0D0
39340   100 CONTINUE
39341  
39342 C...Common preliminaries.
39343       NSET=MAX(1,MIN(16,MSTP(51)))
39344       IF(NSET.EQ.9.OR.NSET.EQ.10) NSET=6
39345       VINT(231)=Q2MIN(NSET)
39346       IF(MSTP(57).EQ.0) THEN
39347         Q2L=Q2MIN(NSET)
39348       ELSE
39349         Q2L=MAX(Q2MIN(NSET),Q2)
39350       ENDIF
39351  
39352       IF(NSET.GE.1.AND.NSET.LE.3) THEN
39353 C...Interface to the CTEQ 3 parton distributions.
39354         QRT=SQRT(MAX(1D0,Q2L))
39355  
39356 C...Loop over flavours.
39357         DO 110 I=-6,6
39358           IF(I.LE.0) THEN
39359             XPPR(I)=PYCTEQ(NSET,I,X,QRT)
39360           ELSEIF(I.LE.2) THEN
39361             XPPR(I)=PYCTEQ(NSET,I,X,QRT)+XPPR(-I)
39362           ELSE
39363             XPPR(I)=XPPR(-I)
39364           ENDIF
39365   110   CONTINUE
39366  
39367       ELSEIF(NSET.GE.4.AND.NSET.LE.6) THEN
39368 C...Interface to the GRV 94 distributions.
39369         IF(NSET.EQ.4) THEN
39370           CALL PYGRVL (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39371         ELSEIF(NSET.EQ.5) THEN
39372           CALL PYGRVM (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39373         ELSE
39374           CALL PYGRVD (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39375         ENDIF
39376  
39377 C...Put into output array.
39378         XPPR(0)=GL
39379         XPPR(-1)=0.5D0*(UDB+DEL)
39380         XPPR(-2)=0.5D0*(UDB-DEL)
39381         XPPR(-3)=SB
39382         XPPR(-4)=CHM
39383         XPPR(-5)=BOT
39384         XPPR(1)=DV+XPPR(-1)
39385         XPPR(2)=UV+XPPR(-2)
39386         XPPR(3)=SB
39387         XPPR(4)=CHM
39388         XPPR(5)=BOT
39389  
39390       ELSEIF(NSET.EQ.7) THEN
39391 C...Interface to the CTEQ 5L parton distributions.
39392 C...Range of validity 10^-6 < x < 1, 1 < Q < 10^4 extended by
39393 C...freezing x*f(x,Q2) at borders.
39394         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
39395         XIN=MAX(1D-6,MIN(1D0,X))
39396  
39397 C...Loop over flavours (with u <-> d notation mismatch).
39398         SUMUDB=PYCT5L(-1,XIN,QRT)
39399         RATUDB=PYCT5L(-2,XIN,QRT)
39400         DO 120 I=-5,2
39401           IF(I.EQ.1) THEN
39402             XPPR(I)=XIN*PYCT5L(2,XIN,QRT)
39403           ELSEIF(I.EQ.2) THEN
39404             XPPR(I)=XIN*PYCT5L(1,XIN,QRT)
39405           ELSEIF(I.EQ.-1) THEN
39406             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
39407           ELSEIF(I.EQ.-2) THEN
39408             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
39409           ELSE
39410             XPPR(I)=XIN*PYCT5L(I,XIN,QRT)
39411             IF(I.LT.0) XPPR(-I)=XPPR(I)
39412           ENDIF
39413   120   CONTINUE
39414  
39415       ELSEIF(NSET.EQ.8) THEN
39416 C...Interface to the CTEQ 5M1 parton distributions.
39417         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
39418         XIN=MAX(1D-6,MIN(1D0,X))
39419  
39420 C...Loop over flavours (with u <-> d notation mismatch).
39421         SUMUDB=PYCT5M(-1,XIN,QRT)
39422         RATUDB=PYCT5M(-2,XIN,QRT)
39423         DO 130 I=-5,2
39424           IF(I.EQ.1) THEN
39425             XPPR(I)=XIN*PYCT5M(2,XIN,QRT)
39426           ELSEIF(I.EQ.2) THEN
39427             XPPR(I)=XIN*PYCT5M(1,XIN,QRT)
39428           ELSEIF(I.EQ.-1) THEN
39429             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
39430           ELSEIF(I.EQ.-2) THEN
39431             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
39432           ELSE
39433             XPPR(I)=XIN*PYCT5M(I,XIN,QRT)
39434             IF(I.LT.0) XPPR(-I)=XPPR(I)
39435           ENDIF
39436   130   CONTINUE
39437  
39438       ELSEIF(NSET.GE.11.AND.NSET.LE.15) THEN
39439 C...GRV92LO, EHLQ1, EHLQ2, DO1 AND DO2 distributions:
39440 C...obsolete but offers backwards compatibility.
39441         CALL PYPDPO(X,Q2L,XPPR)
39442  
39443 C...Symmetric choice for debugging only
39444       ELSEIF(NSET.EQ.16) THEN
39445         XPPR(0)=.5D0/X
39446         XPPR(1)=.05D0/X
39447         XPPR(2)=.05D0/X
39448         XPPR(3)=.05D0/X
39449         XPPR(4)=.05D0/X
39450         XPPR(5)=.05D0/X
39451         XPPR(-1)=.05D0/X
39452         XPPR(-2)=.05D0/X
39453         XPPR(-3)=.05D0/X
39454         XPPR(-4)=.05D0/X
39455         XPPR(-5)=.05D0/X
39456  
39457       ENDIF
39458  
39459       RETURN
39460       END
39461  
39462 C*********************************************************************
39463  
39464 C...PYCTEQ
39465 C...Gives the CTEQ 3 parton distribution function sets in
39466 C...parametrized form, of October 24, 1994.
39467 C...Authors: H.L. Lai, J. Botts, J. Huston, J.G. Morfin, J.F. Owens,
39468 C...J. Qiu, W.K. Tung and H. Weerts.
39469  
39470       FUNCTION PYCTEQ (ISET, IPRT, X, Q)
39471  
39472 C...Double precision declaration.
39473       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39474       IMPLICIT INTEGER(I-N)
39475  
39476 C...Data on Lambda values of fits, minimum Q and quark masses.
39477       DIMENSION ALM(3), QMS(4:6)
39478       DATA ALM / 0.177D0, 0.239D0, 0.247D0 /
39479       DATA QMN / 1.60D0 /, (QMS(I), I=4,6) / 1.60D0, 5.00D0, 180.0D0 /
39480  
39481 C....Check flavour thresholds. Set up QI for SB.
39482       IP = IABS(IPRT)
39483       IF(IP .GE. 4) THEN
39484         IF(Q .LE. QMS(IP)) THEN
39485           PYCTEQ = 0D0
39486           RETURN
39487         ENDIF
39488         QI = QMS(IP)
39489       ELSE
39490         QI = QMN
39491       ENDIF
39492  
39493 C...Use "standard lambda" of parametrization program for expansion.
39494       ALAM = ALM (ISET)
39495       SBL = LOG(Q/ALAM) / LOG(QI/ALAM)
39496       SB = LOG (SBL)
39497       SB2 = SB*SB
39498       SB3 = SB2*SB
39499  
39500 C...Expansion for CTEQ3L.
39501       IF(ISET .EQ. 1) THEN
39502         IF(IPRT .EQ. 2) THEN
39503           A0=Exp( 0.1907D+00+0.4205D-01*SB +0.2752D+00*SB2-
39504      &    0.3171D+00*SB3)
39505           A1= 0.4611D+00+0.2331D-01*SB -0.3403D-01*SB2+0.3174D-01*SB3
39506           A2= 0.3504D+01+0.5739D+00*SB +0.2676D+00*SB2-0.1553D+00*SB3
39507           A3= 0.7452D+01-0.6742D+01*SB +0.2849D+01*SB2-0.1964D+00*SB3
39508           A4= 0.1116D+01-0.3435D+00*SB +0.2865D+00*SB2-0.1288D+00*SB3
39509           A5= 0.6659D-01+0.2714D+00*SB -0.2688D+00*SB2+0.2763D+00*SB3
39510         ELSEIF(IPRT .EQ. 1) THEN
39511           A0=Exp( 0.1141D+00+0.4764D+00*SB -0.1745D+01*SB2+
39512      &    0.7728D+00*SB3)
39513           A1= 0.4275D+00-0.1290D+00*SB +0.3609D+00*SB2-0.1689D+00*SB3
39514           A2= 0.3000D+01+0.2946D+01*SB -0.4117D+01*SB2+0.1989D+01*SB3
39515           A3=-0.1302D+01+0.2322D+01*SB -0.4258D+01*SB2+0.2109D+01*SB3
39516           A4= 0.2586D+01-0.1920D+00*SB -0.3754D+00*SB2+0.2731D+00*SB3
39517           A5=-0.2251D+00-0.5374D+00*SB +0.2245D+01*SB2-0.1034D+01*SB3
39518         ELSEIF(IPRT .EQ. 0) THEN
39519           A0=Exp(-0.7631D+00-0.7241D+00*SB -0.1170D+01*SB2+
39520      &    0.5343D+00*SB3)
39521           A1=-0.3573D+00+0.3469D+00*SB -0.3396D+00*SB2+0.9188D-01*SB3
39522           A2= 0.5604D+01+0.7458D+00*SB -0.5082D+00*SB2+0.1844D+00*SB3
39523           A3= 0.1549D+02-0.1809D+02*SB +0.1162D+02*SB2-0.3483D+01*SB3
39524           A4= 0.9881D+00+0.1364D+00*SB -0.4421D+00*SB2+0.2051D+00*SB3
39525           A5=-0.9505D-01+0.3259D+01*SB -0.1547D+01*SB2+0.2918D+00*SB3
39526         ELSEIF(IPRT .EQ. -1) THEN
39527           A0=Exp(-0.2449D+01-0.3513D+01*SB +0.4529D+01*SB2-
39528      &    0.2031D+01*SB3)
39529           A1=-0.4050D+00+0.3411D+00*SB -0.3669D+00*SB2+0.1109D+00*SB3
39530           A2= 0.7470D+01-0.2982D+01*SB +0.5503D+01*SB2-0.2419D+01*SB3
39531           A3= 0.1503D+02+0.1638D+01*SB -0.8772D+01*SB2+0.3852D+01*SB3
39532           A4= 0.1137D+01-0.1006D+01*SB +0.1485D+01*SB2-0.6389D+00*SB3
39533           A5=-0.5299D+00+0.3160D+01*SB -0.3104D+01*SB2+0.1219D+01*SB3
39534         ELSEIF(IPRT .EQ. -2) THEN
39535           A0=Exp(-0.2740D+01-0.7987D-01*SB -0.9015D+00*SB2-
39536      &    0.9872D-01*SB3)
39537           A1=-0.3909D+00+0.1244D+00*SB -0.4487D-01*SB2+0.1277D-01*SB3
39538           A2= 0.9163D+01+0.2823D+00*SB -0.7720D+00*SB2-0.9360D-02*SB3
39539           A3= 0.1080D+02-0.3915D+01*SB -0.1153D+01*SB2+0.2649D+01*SB3
39540           A4= 0.9894D+00-0.1647D+00*SB -0.9426D-02*SB2+0.2945D-02*SB3
39541           A5=-0.3395D+00+0.6998D+00*SB +0.7000D+00*SB2-0.6730D-01*SB3
39542         ELSEIF(IPRT .EQ. -3) THEN
39543           A0=Exp(-0.3640D+01+0.1250D+01*SB -0.2914D+01*SB2+
39544      &    0.8390D+00*SB3)
39545           A1=-0.3595D+00-0.5259D-01*SB +0.3122D+00*SB2-0.1642D+00*SB3
39546           A2= 0.7305D+01+0.9727D+00*SB -0.9788D+00*SB2-0.5193D-01*SB3
39547           A3= 0.1198D+02-0.1799D+02*SB +0.2614D+02*SB2-0.1091D+02*SB3
39548           A4= 0.9882D+00-0.6101D+00*SB +0.9737D+00*SB2-0.4935D+00*SB3
39549           A5=-0.1186D+00-0.3231D+00*SB +0.3074D+01*SB2-0.1274D+01*SB3
39550         ELSEIF(IPRT .EQ. -4) THEN
39551           A0=SB** 0.1122D+01*Exp(-0.3718D+01-0.1335D+01*SB +
39552      &    0.1651D-01*SB2)
39553           A1=-0.4719D+00+0.7509D+00*SB -0.8420D+00*SB2+0.2901D+00*SB3
39554           A2= 0.6194D+01-0.1641D+01*SB +0.4907D+01*SB2-0.2523D+01*SB3
39555           A3= 0.4426D+01-0.4270D+01*SB +0.6581D+01*SB2-0.3474D+01*SB3
39556           A4= 0.2683D+00+0.9876D+00*SB -0.7612D+00*SB2+0.1780D+00*SB3
39557           A5=-0.4547D+00+0.4410D+01*SB -0.3712D+01*SB2+0.1245D+01*SB3
39558         ELSEIF(IPRT .EQ. -5) THEN
39559           A0=SB** 0.9838D+00*Exp(-0.2548D+01-0.7660D+01*SB +
39560      &    0.3702D+01*SB2)
39561           A1=-0.3122D+00-0.2120D+00*SB +0.5716D+00*SB2-0.3773D+00*SB3
39562           A2= 0.6257D+01-0.8214D-01*SB -0.2537D+01*SB2+0.2981D+01*SB3
39563           A3=-0.6723D+00+0.2131D+01*SB +0.9599D+01*SB2-0.7910D+01*SB3
39564           A4= 0.9169D-01+0.4295D-01*SB -0.5017D+00*SB2+0.3811D+00*SB3
39565           A5= 0.2402D+00+0.2656D+01*SB -0.1586D+01*SB2+0.2880D+00*SB3
39566         ELSEIF(IPRT .EQ. -6) THEN
39567           A0=SB** 0.1001D+01*Exp(-0.6934D+01+0.3050D+01*SB -
39568      &    0.6943D+00*SB2)
39569           A1=-0.1713D+00-0.5167D+00*SB +0.1241D+01*SB2-0.1703D+01*SB3
39570           A2= 0.6169D+01+0.3023D+01*SB -0.1972D+02*SB2+0.1069D+02*SB3
39571           A3= 0.4439D+01-0.1746D+02*SB +0.1225D+02*SB2+0.8350D+00*SB3
39572           A4= 0.5458D+00-0.4586D+00*SB +0.9089D+00*SB2-0.4049D+00*SB3
39573           A5= 0.3207D+01-0.3362D+01*SB +0.5877D+01*SB2-0.7659D+01*SB3
39574         ENDIF
39575  
39576 C...Expansion for CTEQ3M.
39577       ELSEIF(ISET .EQ. 2) THEN
39578         IF(IPRT .EQ. 2) THEN
39579           A0=Exp( 0.2259D+00+0.1237D+00*SB +0.3035D+00*SB2-
39580      &    0.2935D+00*SB3)
39581           A1= 0.5085D+00+0.1651D-01*SB -0.3592D-01*SB2+0.2782D-01*SB3
39582           A2= 0.3732D+01+0.4901D+00*SB +0.2218D+00*SB2-0.1116D+00*SB3
39583           A3= 0.7011D+01-0.6620D+01*SB +0.2557D+01*SB2-0.1360D+00*SB3
39584           A4= 0.8969D+00-0.2429D+00*SB +0.1811D+00*SB2-0.6888D-01*SB3
39585           A5= 0.8636D-01+0.2558D+00*SB -0.3082D+00*SB2+0.2535D+00*SB3
39586         ELSEIF(IPRT .EQ. 1) THEN
39587           A0=Exp(-0.7266D+00-0.1584D+01*SB +0.1259D+01*SB2-
39588      &    0.4305D-01*SB3)
39589           A1= 0.5285D+00-0.3721D+00*SB +0.5150D+00*SB2-0.1697D+00*SB3
39590           A2= 0.4075D+01+0.8282D+00*SB -0.4496D+00*SB2+0.2107D+00*SB3
39591           A3= 0.3279D+01+0.5066D+01*SB -0.9134D+01*SB2+0.2897D+01*SB3
39592           A4= 0.4399D+00-0.5888D+00*SB +0.4802D+00*SB2-0.1664D+00*SB3
39593           A5= 0.3678D+00-0.8929D+00*SB +0.1592D+01*SB2-0.5713D+00*SB3
39594         ELSEIF(IPRT .EQ. 0) THEN
39595           A0=Exp(-0.2318D+00-0.9779D+00*SB -0.3783D+00*SB2+
39596      &    0.1037D-01*SB3)
39597           A1=-0.2916D+00+0.1754D+00*SB -0.1884D+00*SB2+0.6116D-01*SB3
39598           A2= 0.5349D+01+0.7460D+00*SB +0.2319D+00*SB2-0.2622D+00*SB3
39599           A3= 0.6920D+01-0.3454D+01*SB +0.2027D+01*SB2-0.7626D+00*SB3
39600           A4= 0.1013D+01+0.1423D+00*SB -0.1798D+00*SB2+0.1872D-01*SB3
39601           A5=-0.5465D-01+0.2303D+01*SB -0.9584D+00*SB2+0.3098D+00*SB3
39602         ELSEIF(IPRT .EQ. -1) THEN
39603           A0=Exp(-0.2328D+01-0.3061D+01*SB +0.3620D+01*SB2-
39604      &    0.1602D+01*SB3)
39605           A1=-0.3358D+00+0.3198D+00*SB -0.4210D+00*SB2+0.1571D+00*SB3
39606           A2= 0.8478D+01-0.3112D+01*SB +0.5243D+01*SB2-0.2255D+01*SB3
39607           A3= 0.1971D+02+0.3389D+00*SB -0.5268D+01*SB2+0.2099D+01*SB3
39608           A4= 0.1128D+01-0.4701D+00*SB +0.7779D+00*SB2-0.3506D+00*SB3
39609           A5=-0.4708D+00+0.3341D+01*SB -0.3375D+01*SB2+0.1353D+01*SB3
39610         ELSEIF(IPRT .EQ. -2) THEN
39611           A0=Exp(-0.2906D+01-0.1069D+00*SB -0.1055D+01*SB2+
39612      &    0.2496D+00*SB3)
39613           A1=-0.2875D+00+0.6571D-01*SB -0.1987D-01*SB2-0.1800D-02*SB3
39614           A2= 0.9854D+01-0.2715D+00*SB -0.7407D+00*SB2+0.2888D+00*SB3
39615           A3= 0.1583D+02-0.7687D+01*SB +0.3428D+01*SB2-0.3327D+00*SB3
39616           A4= 0.9763D+00+0.7599D-01*SB -0.2128D+00*SB2+0.6852D-01*SB3
39617           A5=-0.8444D-02+0.9434D+00*SB +0.4152D+00*SB2-0.1481D+00*SB3
39618         ELSEIF(IPRT .EQ. -3) THEN
39619           A0=Exp(-0.3780D+01+0.2499D+01*SB -0.4962D+01*SB2+
39620      &    0.1936D+01*SB3)
39621           A1=-0.2639D+00-0.1575D+00*SB +0.3584D+00*SB2-0.1646D+00*SB3
39622           A2= 0.8082D+01+0.2794D+01*SB -0.5438D+01*SB2+0.2321D+01*SB3
39623           A3= 0.1811D+02-0.2000D+02*SB +0.1951D+02*SB2-0.6904D+01*SB3
39624           A4= 0.9822D+00+0.4972D+00*SB -0.8690D+00*SB2+0.3415D+00*SB3
39625           A5= 0.1772D+00-0.6078D+00*SB +0.3341D+01*SB2-0.1473D+01*SB3
39626         ELSEIF(IPRT .EQ. -4) THEN
39627           A0=SB** 0.1122D+01*Exp(-0.4232D+01-0.1808D+01*SB +
39628      &    0.5348D+00*SB2)
39629           A1=-0.2824D+00+0.5846D+00*SB -0.7230D+00*SB2+0.2419D+00*SB3
39630           A2= 0.5683D+01-0.2948D+01*SB +0.5916D+01*SB2-0.2560D+01*SB3
39631           A3= 0.2051D+01+0.4795D+01*SB -0.4271D+01*SB2+0.4174D+00*SB3
39632           A4= 0.1737D+00+0.1717D+01*SB -0.1978D+01*SB2+0.6643D+00*SB3
39633           A5= 0.8689D+00+0.3500D+01*SB -0.3283D+01*SB2+0.1026D+01*SB3
39634         ELSEIF(IPRT .EQ. -5) THEN
39635           A0=SB** 0.9906D+00*Exp(-0.1496D+01-0.6576D+01*SB +
39636      &    0.1569D+01*SB2)
39637           A1=-0.2140D+00-0.6419D-01*SB -0.2741D-02*SB2+0.3185D-02*SB3
39638           A2= 0.5781D+01+0.1049D+00*SB -0.3930D+00*SB2+0.5174D+00*SB3
39639           A3=-0.9420D+00+0.5511D+00*SB +0.8817D+00*SB2+0.1903D+01*SB3
39640           A4= 0.2418D-01+0.4232D-01*SB -0.1244D-01*SB2-0.2365D-01*SB3
39641           A5= 0.7664D+00+0.1794D+01*SB -0.4917D+00*SB2-0.1284D+00*SB3
39642         ELSEIF(IPRT .EQ. -6) THEN
39643           A0=SB** 0.1000D+01*Exp(-0.8460D+01+0.1154D+01*SB +
39644      &    0.8838D+01*SB2)
39645           A1=-0.4316D-01-0.2976D+00*SB +0.3174D+00*SB2-0.1429D+01*SB3
39646           A2= 0.4910D+01+0.2273D+01*SB +0.5631D+01*SB2-0.1994D+02*SB3
39647           A3= 0.1190D+02-0.2000D+02*SB -0.2000D+02*SB2+0.1292D+02*SB3
39648           A4= 0.5771D+00-0.2552D+00*SB +0.7510D+00*SB2+0.6923D+00*SB3
39649           A5= 0.4402D+01-0.1627D+01*SB -0.2085D+01*SB2-0.6737D+01*SB3
39650         ENDIF
39651  
39652 C...Expansion for CTEQ3D.
39653       ELSEIF(ISET .EQ. 3) THEN
39654         IF(IPRT .EQ. 2) THEN
39655           A0=Exp( 0.2148D+00+0.5814D-01*SB +0.2734D+00*SB2-
39656      &    0.2902D+00*SB3)
39657           A1= 0.4810D+00+0.1657D-01*SB -0.3800D-01*SB2+0.3125D-01*SB3
39658           A2= 0.3509D+01+0.3923D+00*SB +0.4010D+00*SB2-0.1932D+00*SB3
39659           A3= 0.7055D+01-0.6552D+01*SB +0.3466D+01*SB2-0.5657D+00*SB3
39660           A4= 0.1061D+01-0.3453D+00*SB +0.4089D+00*SB2-0.1817D+00*SB3
39661           A5= 0.8687D-01+0.2548D+00*SB -0.2967D+00*SB2+0.2647D+00*SB3
39662         ELSEIF(IPRT .EQ. 1) THEN
39663           A0=Exp( 0.3961D+00+0.4914D+00*SB -0.1728D+01*SB2+
39664      &    0.7257D+00*SB3)
39665           A1= 0.4162D+00-0.1419D+00*SB +0.3680D+00*SB2-0.1618D+00*SB3
39666           A2= 0.3248D+01+0.3028D+01*SB -0.4307D+01*SB2+0.1920D+01*SB3
39667           A3=-0.1100D+01+0.2184D+01*SB -0.3820D+01*SB2+0.1717D+01*SB3
39668           A4= 0.2082D+01-0.2756D+00*SB +0.3043D+00*SB2-0.1260D+00*SB3
39669           A5=-0.4822D+00-0.5706D+00*SB +0.2243D+01*SB2-0.9760D+00*SB3
39670         ELSEIF(IPRT .EQ. 0) THEN
39671           A0=Exp(-0.4665D+00-0.7554D+00*SB -0.3323D+00*SB2-
39672      &    0.2734D-04*SB3)
39673           A1=-0.3359D+00+0.2395D+00*SB -0.2377D+00*SB2+0.7059D-01*SB3
39674           A2= 0.5451D+01+0.6086D+00*SB +0.8606D-01*SB2-0.1425D+00*SB3
39675           A3= 0.1026D+02-0.9352D+01*SB +0.4879D+01*SB2-0.1150D+01*SB3
39676           A4= 0.9935D+00-0.5017D-01*SB -0.1707D-01*SB2-0.1464D-02*SB3
39677           A5=-0.4160D-01+0.2305D+01*SB -0.1063D+01*SB2+0.3211D+00*SB3
39678         ELSEIF(IPRT .EQ. -1) THEN
39679           A0=Exp(-0.2714D+01-0.2868D+01*SB +0.3700D+01*SB2-
39680      &    0.1671D+01*SB3)
39681           A1=-0.3893D+00+0.3341D+00*SB -0.3897D+00*SB2+0.1420D+00*SB3
39682           A2= 0.8359D+01-0.3267D+01*SB +0.5327D+01*SB2-0.2245D+01*SB3
39683           A3= 0.2359D+02-0.5669D+01*SB -0.4602D+01*SB2+0.3153D+01*SB3
39684           A4= 0.1106D+01-0.4745D+00*SB +0.7739D+00*SB2-0.3417D+00*SB3
39685           A5=-0.5557D+00+0.3433D+01*SB -0.3390D+01*SB2+0.1354D+01*SB3
39686         ELSEIF(IPRT .EQ. -2) THEN
39687           A0=Exp(-0.3323D+01+0.2296D+00*SB -0.1109D+01*SB2+
39688      &    0.2223D+00*SB3)
39689           A1=-0.3410D+00+0.8847D-01*SB -0.1111D-01*SB2-0.5927D-02*SB3
39690           A2= 0.9753D+01-0.5182D+00*SB -0.4670D+00*SB2+0.1921D+00*SB3
39691           A3= 0.1977D+02-0.1600D+02*SB +0.9481D+01*SB2-0.1864D+01*SB3
39692           A4= 0.9818D+00+0.2839D-02*SB -0.1188D+00*SB2+0.3584D-01*SB3
39693           A5=-0.7934D-01+0.1004D+01*SB +0.3704D+00*SB2-0.1220D+00*SB3
39694         ELSEIF(IPRT .EQ. -3) THEN
39695           A0=Exp(-0.3985D+01+0.2855D+01*SB -0.5208D+01*SB2+
39696      &    0.1937D+01*SB3)
39697           A1=-0.3337D+00-0.1150D+00*SB +0.3691D+00*SB2-0.1709D+00*SB3
39698           A2= 0.7968D+01+0.3641D+01*SB -0.6599D+01*SB2+0.2642D+01*SB3
39699           A3= 0.1873D+02-0.1999D+02*SB +0.1734D+02*SB2-0.5813D+01*SB3
39700           A4= 0.9731D+00+0.5082D+00*SB -0.8780D+00*SB2+0.3231D+00*SB3
39701           A5=-0.5542D-01-0.4189D+00*SB +0.3309D+01*SB2-0.1439D+01*SB3
39702         ELSEIF(IPRT .EQ. -4) THEN
39703           A0=SB** 0.1105D+01*Exp(-0.3952D+01-0.1901D+01*SB +
39704      &    0.5137D+00*SB2)
39705           A1=-0.3543D+00+0.6055D+00*SB -0.6941D+00*SB2+0.2278D+00*SB3
39706           A2= 0.5955D+01-0.2629D+01*SB +0.5337D+01*SB2-0.2300D+01*SB3
39707           A3= 0.1933D+01+0.4882D+01*SB -0.3810D+01*SB2+0.2290D+00*SB3
39708           A4= 0.1806D+00+0.1655D+01*SB -0.1893D+01*SB2+0.6395D+00*SB3
39709           A5= 0.4790D+00+0.3612D+01*SB -0.3152D+01*SB2+0.9684D+00*SB3
39710         ELSEIF(IPRT .EQ. -5) THEN
39711           A0=SB** 0.9818D+00*Exp(-0.1825D+01-0.7464D+01*SB +
39712      &    0.2143D+01*SB2)
39713           A1=-0.2604D+00-0.1400D+00*SB +0.1702D+00*SB2-0.8476D-01*SB3
39714           A2= 0.6005D+01+0.6275D+00*SB -0.2535D+01*SB2+0.2219D+01*SB3
39715           A3=-0.9067D+00+0.1149D+01*SB +0.1974D+01*SB2+0.4716D+01*SB3
39716           A4= 0.3915D-01+0.5945D-01*SB -0.9844D-01*SB2+0.2783D-01*SB3
39717           A5= 0.5500D+00+0.1994D+01*SB -0.6727D+00*SB2-0.1510D+00*SB3
39718         ELSEIF(IPRT .EQ. -6) THEN
39719           A0=SB** 0.1002D+01*Exp(-0.8553D+01+0.3793D+00*SB +
39720      &    0.9998D+01*SB2)
39721           A1=-0.5870D-01-0.2792D+00*SB +0.6526D+00*SB2-0.1984D+01*SB3
39722           A2= 0.4716D+01+0.4473D+00*SB +0.1128D+02*SB2-0.1937D+02*SB3
39723           A3= 0.1289D+02-0.1742D+02*SB -0.1983D+02*SB2-0.9274D+00*SB3
39724           A4= 0.5647D+00-0.2732D+00*SB +0.1074D+01*SB2+0.5981D+00*SB3
39725           A5= 0.4390D+01-0.1262D+01*SB -0.9026D+00*SB2-0.9394D+01*SB3
39726         ENDIF
39727       ENDIF
39728  
39729 C...Calculation of x * f(x, Q).
39730       PYCTEQ = MAX(0D0, A0 *(X**A1) *((1D0-X)**A2) *(1D0+A3*(X**A4))
39731      &   *(LOG(1D0+1D0/X))**A5 )
39732  
39733       RETURN
39734       END
39735  
39736 C*********************************************************************
39737  
39738 C...PYGRVL
39739 C...Gives the GRV 94 L (leading order) parton distribution function set
39740 C...in parametrized form.
39741 C...Authors: M. Glueck, E. Reya and A. Vogt.
39742  
39743       SUBROUTINE PYGRVL (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39744  
39745 C...Double precision declaration.
39746       IMPLICIT DOUBLE PRECISION (A - Z)
39747  
39748 C...Common expressions.
39749       MU2  = 0.23D0
39750       LAM2 = 0.2322D0 * 0.2322D0
39751       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
39752       DS = SQRT (S)
39753       S2 = S * S
39754       S3 = S2 * S
39755  
39756 C...uv :
39757       NU  =  2.284D0 + 0.802D0 * S + 0.055D0 * S2
39758       AKU =  0.590D0 - 0.024D0 * S
39759       BKU =  0.131D0 + 0.063D0 * S
39760       AU  = -0.449D0 - 0.138D0 * S - 0.076D0 * S2
39761       BU  =  0.213D0 + 2.669D0 * S - 0.728D0 * S2
39762       CU  =  8.854D0 - 9.135D0 * S + 1.979D0 * S2
39763       DU  =  2.997D0 + 0.753D0 * S - 0.076D0 * S2
39764       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
39765  
39766 C...dv :
39767       ND  =  0.371D0 + 0.083D0 * S + 0.039D0 * S2
39768       AKD =  0.376D0
39769       BKD =  0.486D0 + 0.062D0 * S
39770       AD  = -0.509D0 + 3.310D0 * S - 1.248D0 * S2
39771       BD  =  12.41D0 - 10.52D0 * S + 2.267D0 * S2
39772       CD  =  6.373D0 - 6.208D0 * S + 1.418D0 * S2
39773       DD  =  3.691D0 + 0.799D0 * S - 0.071D0 * S2
39774       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
39775  
39776 C...del :
39777       NE  =  0.082D0 + 0.014D0 * S + 0.008D0 * S2
39778       AKE =  0.409D0 - 0.005D0 * S
39779       BKE =  0.799D0 + 0.071D0 * S
39780       AE  = -38.07D0 + 36.13D0 * S - 0.656D0 * S2
39781       BE  =  90.31D0 - 74.15D0 * S + 7.645D0 * S2
39782       CE  =  0.0D0
39783       DE  =  7.486D0 + 1.217D0 * S - 0.159D0 * S2
39784       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
39785  
39786 C...udb :
39787       ALX =  1.451D0
39788       BEX =  0.271D0
39789       AKX =  0.410D0 - 0.232D0 * S
39790       BKX =  0.534D0 - 0.457D0 * S
39791       AGX =  0.890D0 - 0.140D0 * S
39792       BGX = -0.981D0
39793       CX  =  0.320D0 + 0.683D0 * S
39794       DX  =  4.752D0 + 1.164D0 * S + 0.286D0 * S2
39795       EX  =  4.119D0 + 1.713D0 * S
39796       ESX =  0.682D0 + 2.978D0 * S
39797       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
39798      & DX, EX, ESX)
39799  
39800 C...sb :
39801       STS =  0D0
39802       ALS =  0.914D0
39803       BES =  0.577D0
39804       AKS =  1.798D0 - 0.596D0 * S
39805       AS  = -5.548D0 + 3.669D0 * DS - 0.616D0 * S
39806       BS  =  18.92D0 - 16.73D0 * DS + 5.168D0 * S
39807       DST =  6.379D0 - 0.350D0 * S  + 0.142D0 * S2
39808       EST =  3.981D0 + 1.638D0 * S
39809       ESS =  6.402D0
39810       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
39811  
39812 C...cb :
39813       STC =  0.888D0
39814       ALC =  1.01D0
39815       BEC =  0.37D0
39816       AKC =  0D0
39817       AC  =  0D0
39818       BC  =  4.24D0  - 0.804D0 * S
39819       DCT =  3.46D0  - 1.076D0 * S
39820       ECT =  4.61D0  + 1.49D0  * S
39821       ESC =  2.555D0 + 1.961D0 * S
39822       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
39823  
39824 C...bb :
39825       STB =  1.351D0
39826       ALB =  1.00D0
39827       BEB =  0.51D0
39828       AKB =  0D0
39829       AB  =  0D0
39830       BB  =  1.848D0
39831       DBT =  2.929D0 + 1.396D0 * S
39832       EBT =  4.71D0  + 1.514D0 * S
39833       ESB =  4.02D0  + 1.239D0 * S
39834       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
39835  
39836 C...gl :
39837       ALG =  0.524D0
39838       BEG =  1.088D0
39839       AKG =  1.742D0 - 0.930D0 * S
39840       BKG =                         - 0.399D0 * S2
39841       AG  =  7.486D0 - 2.185D0 * S
39842       BG  =  16.69D0 - 22.74D0 * S  + 5.779D0 * S2
39843       CG  = -25.59D0 + 29.71D0 * S  - 7.296D0 * S2
39844       DG  =  2.792D0 + 2.215D0 * S  + 0.422D0 * S2 - 0.104D0 * S3
39845       EG  =  0.807D0 + 2.005D0 * S
39846       ESG =  3.841D0 + 0.316D0 * S
39847       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG,
39848      & DG, EG, ESG)
39849  
39850       RETURN
39851       END
39852  
39853 C*********************************************************************
39854  
39855 C...PYGRVM
39856 C...Gives the GRV 94 M (MSbar) parton distribution function set
39857 C...in parametrized form.
39858 C...Authors: M. Glueck, E. Reya and A. Vogt.
39859  
39860       SUBROUTINE PYGRVM (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39861  
39862 C...Double precision declaration.
39863       IMPLICIT DOUBLE PRECISION (A - Z)
39864  
39865 C...Common expressions.
39866       MU2  = 0.34D0
39867       LAM2 = 0.248D0 * 0.248D0
39868       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
39869       DS = SQRT (S)
39870       S2 = S * S
39871       S3 = S2 * S
39872  
39873 C...uv :
39874       NU  =  1.304D0 + 0.863D0 * S
39875       AKU =  0.558D0 - 0.020D0 * S
39876       BKU =          0.183D0 * S
39877       AU  = -0.113D0 + 0.283D0 * S - 0.321D0 * S2
39878       BU  =  6.843D0 - 5.089D0 * S + 2.647D0 * S2 - 0.527D0 * S3
39879       CU  =  7.771D0 - 10.09D0 * S + 2.630D0 * S2
39880       DU  =  3.315D0 + 1.145D0 * S - 0.583D0 * S2 + 0.154D0 * S3
39881       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
39882  
39883 C...dv :
39884       ND  =  0.102D0 - 0.017D0 * S + 0.005D0 * S2
39885       AKD =  0.270D0 - 0.019D0 * S
39886       BKD =  0.260D0
39887       AD  =  2.393D0 + 6.228D0 * S - 0.881D0 * S2
39888       BD  =  46.06D0 + 4.673D0 * S - 14.98D0 * S2 + 1.331D0 * S3
39889       CD  =  17.83D0 - 53.47D0 * S + 21.24D0 * S2
39890       DD  =  4.081D0 + 0.976D0 * S - 0.485D0 * S2 + 0.152D0 * S3
39891       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
39892  
39893 C...del :
39894       NE  =  0.070D0 + 0.042D0 * S - 0.011D0 * S2 + 0.004D0 * S3
39895       AKE =  0.409D0 - 0.007D0 * S
39896       BKE =  0.782D0 + 0.082D0 * S
39897       AE  = -29.65D0 + 26.49D0 * S + 5.429D0 * S2
39898       BE  =  90.20D0 - 74.97D0 * S + 4.526D0 * S2
39899       CE  =  0.0D0
39900       DE  =  8.122D0 + 2.120D0 * S - 1.088D0 * S2 + 0.231D0 * S3
39901       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
39902  
39903 C...udb :
39904       ALX =  0.877D0
39905       BEX =  0.561D0
39906       AKX =  0.275D0
39907       BKX =  0.0D0
39908       AGX =  0.997D0
39909       BGX =  3.210D0 - 1.866D0 * S
39910       CX  =  7.300D0
39911       DX  =  9.010D0 + 0.896D0 * DS + 0.222D0 * S2
39912       EX  =  3.077D0 + 1.446D0 * S
39913       ESX =  3.173D0 - 2.445D0 * DS + 2.207D0 * S
39914       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
39915      & DX, EX, ESX)
39916  
39917 C...sb :
39918       STS =  0D0
39919       ALS =  0.756D0
39920       BES =  0.216D0
39921       AKS =  1.690D0 + 0.650D0 * DS - 0.922D0 * S
39922       AS  = -4.329D0 + 1.131D0 * S
39923       BS  =  9.568D0 - 1.744D0 * S
39924       DST =  9.377D0 + 1.088D0 * DS - 1.320D0 * S + 0.130D0 * S2
39925       EST =  3.031D0 + 1.639D0 * S
39926       ESS =  5.837D0 + 0.815D0 * S
39927       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
39928  
39929 C...cb :
39930       STC =  0.820D0
39931       ALC =  0.98D0
39932       BEC =  0D0
39933       AKC = -0.625D0 - 0.523D0 * S
39934       AC  =  0D0
39935       BC  =  1.896D0 + 1.616D0 * S
39936       DCT =  4.12D0  + 0.683D0 * S
39937       ECT =  4.36D0  + 1.328D0 * S
39938       ESC =  0.677D0 + 0.679D0 * S
39939       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
39940  
39941 C...bb :
39942       STB =  1.297D0
39943       ALB =  0.99D0
39944       BEB =  0D0
39945       AKB =          - 0.193D0 * S
39946       AB  =  0D0
39947       BB  =  0D0
39948       DBT =  3.447D0 + 0.927D0 * S
39949       EBT =  4.68D0  + 1.259D0 * S
39950       ESB =  1.892D0 + 2.199D0 * S
39951       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
39952  
39953 C...gl :
39954        ALG =  1.014D0
39955        BEG =  1.738D0
39956        AKG =  1.724D0 + 0.157D0 * S
39957        BKG =  0.800D0 + 1.016D0 * S
39958        AG  =  7.517D0 - 2.547D0 * S
39959        BG  =  34.09D0 - 52.21D0 * DS + 17.47D0 * S
39960        CG  =  4.039D0 + 1.491D0 * S
39961        DG  =  3.404D0 + 0.830D0 * S
39962        EG  = -1.112D0 + 3.438D0 * S  - 0.302D0 * S2
39963        ESG =  3.256D0 - 0.436D0 * S
39964        GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
39965  
39966        RETURN
39967        END
39968  
39969 C*********************************************************************
39970  
39971 C...PYGRVD
39972 C...Gives the GRV 94 D (DIS) parton distribution function set
39973 C...in parametrized form.
39974 C...Authors: M. Glueck, E. Reya and A. Vogt.
39975  
39976       SUBROUTINE PYGRVD (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39977  
39978 C...Double precision declaration.
39979       IMPLICIT DOUBLE PRECISION (A - Z)
39980  
39981 C...Common expressions.
39982       MU2  = 0.34D0
39983       LAM2 = 0.248D0 * 0.248D0
39984       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
39985       DS = SQRT (S)
39986       S2 = S * S
39987       S3 = S2 * S
39988  
39989 C...uv :
39990       NU  =  2.484D0 + 0.116D0 * S + 0.093D0 * S2
39991       AKU =  0.563D0 - 0.025D0 * S
39992       BKU =  0.054D0 + 0.154D0 * S
39993       AU  = -0.326D0 - 0.058D0 * S - 0.135D0 * S2
39994       BU  = -3.322D0 + 8.259D0 * S - 3.119D0 * S2 + 0.291D0 * S3
39995       CU  =  11.52D0 - 12.99D0 * S + 3.161D0 * S2
39996       DU  =  2.808D0 + 1.400D0 * S - 0.557D0 * S2 + 0.119D0 * S3
39997       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
39998  
39999 C...dv :
40000       ND  =  0.156D0 - 0.017D0 * S
40001       AKD =  0.299D0 - 0.022D0 * S
40002       BKD =  0.259D0 - 0.015D0 * S
40003       AD  =  3.445D0 + 1.278D0 * S + 0.326D0 * S2
40004       BD  = -6.934D0 + 37.45D0 * S - 18.95D0 * S2 + 1.463D0 * S3
40005       CD  =  55.45D0 - 69.92D0 * S + 20.78D0 * S2
40006       DD  =  3.577D0 + 1.441D0 * S - 0.683D0 * S2 + 0.179D0 * S3
40007       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
40008  
40009 C...del :
40010       NE  =  0.099D0 + 0.019D0 * S + 0.002D0 * S2
40011       AKE =  0.419D0 - 0.013D0 * S
40012       BKE =  1.064D0 - 0.038D0 * S
40013       AE  = -44.00D0 + 98.70D0 * S - 14.79D0 * S2
40014       BE  =  28.59D0 - 40.94D0 * S - 13.66D0 * S2 + 2.523D0 * S3
40015       CE  =  84.57D0 - 108.8D0 * S + 31.52D0 * S2
40016       DE  =  7.469D0 + 2.480D0 * S - 0.866D0 * S2
40017       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
40018  
40019 C...udb :
40020       ALX =  1.215D0
40021       BEX =  0.466D0
40022       AKX =  0.326D0 + 0.150D0 * S
40023       BKX =  0.956D0 + 0.405D0 * S
40024       AGX =  0.272D0
40025       BGX =  3.794D0 - 2.359D0 * DS
40026       CX  =  2.014D0
40027       DX  =  7.941D0 + 0.534D0 * DS - 0.940D0 * S + 0.410D0 * S2
40028       EX  =  3.049D0 + 1.597D0 * S
40029       ESX =  4.396D0 - 4.594D0 * DS + 3.268D0 * S
40030       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
40031      & DX, EX, ESX)
40032  
40033 C...sb :
40034       STS =  0D0
40035       ALS =  0.175D0
40036       BES =  0.344D0
40037       AKS =  1.415D0 - 0.641D0 * DS
40038       AS  =  0.580D0 - 9.763D0 * DS + 6.795D0 * S  - 0.558D0 * S2
40039       BS  =  5.617D0 + 5.709D0 * DS - 3.972D0 * S
40040       DST =  13.78D0 - 9.581D0 * S  + 5.370D0 * S2 - 0.996D0 * S3
40041       EST =  4.546D0 + 0.372D0 * S2
40042       ESS =  5.053D0 - 1.070D0 * S  + 0.805D0 * S2
40043       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
40044  
40045 C...cb :
40046       STC =  0.820D0
40047       ALC =  0.98D0
40048       BEC =  0D0
40049       AKC = -0.625D0 - 0.523D0 * S
40050       AC  =  0D0
40051       BC  =  1.896D0 + 1.616D0 * S
40052       DCT =  4.12D0  + 0.683D0 * S
40053       ECT =  4.36D0  + 1.328D0 * S
40054       ESC =  0.677D0 + 0.679D0 * S
40055       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
40056  
40057 C...bb :
40058       STB =  1.297D0
40059       ALB =  0.99D0
40060       BEB =  0D0
40061       AKB =          - 0.193D0 * S
40062       AB  =  0D0
40063       BB  =  0D0
40064       DBT =  3.447D0 + 0.927D0 * S
40065       EBT =  4.68D0  + 1.259D0 * S
40066       ESB =  1.892D0 + 2.199D0 * S
40067       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
40068  
40069 C...gl :
40070       ALG =  1.258D0
40071       BEG =  1.846D0
40072       AKG =  2.423D0
40073       BKG =  2.427D0 + 1.311D0 * S  - 0.153D0 * S2
40074       AG  =  25.09D0 - 7.935D0 * S
40075       BG  = -14.84D0 - 124.3D0 * DS + 72.18D0 * S
40076       CG  =  590.3D0 - 173.8D0 * S
40077       DG  =  5.196D0 + 1.857D0 * S
40078       EG  = -1.648D0 + 3.988D0 * S  - 0.432D0 * S2
40079       ESG =  3.232D0 - 0.542D0 * S
40080       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
40081  
40082       RETURN
40083       END
40084  
40085 C*********************************************************************
40086  
40087 C...PYGRVV
40088 C...Auxiliary for the GRV 94 parton distribution functions
40089 C...for u and d valence and d-u sea.
40090 C...Authors: M. Glueck, E. Reya and A. Vogt.
40091  
40092       FUNCTION PYGRVV (X, N, AK, BK, A, B, C, D)
40093  
40094 C...Double precision declaration.
40095       IMPLICIT DOUBLE PRECISION (A - Z)
40096  
40097 C...Evaluation.
40098       DX = SQRT (X)
40099       PYGRVV = N * X**AK * (1D0+ A*X**BK + X * (B + C*DX)) *
40100      & (1D0- X)**D
40101  
40102       RETURN
40103       END
40104  
40105 C*********************************************************************
40106  
40107 C...PYGRVW
40108 C...Auxiliary for the GRV 94 parton distribution functions
40109 C...for d+u sea and gluon.
40110 C...Authors: M. Glueck, E. Reya and A. Vogt.
40111  
40112       FUNCTION PYGRVW (X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
40113  
40114 C...Double precision declaration.
40115       IMPLICIT DOUBLE PRECISION (A - Z)
40116  
40117 C...Evaluation.
40118       LX = LOG (1D0/X)
40119       PYGRVW = (X**AK * (A + X * (B + X*C)) * LX**BK + S**AL
40120      &     * EXP (-E + SQRT (ES * S**BE * LX))) * (1D0- X)**D
40121  
40122       RETURN
40123       END
40124  
40125 C*********************************************************************
40126  
40127 C...PYGRVS
40128 C...Auxiliary for the GRV 94 parton distribution functions
40129 C...for s, c and b sea.
40130 C...Authors: M. Glueck, E. Reya and A. Vogt.
40131  
40132       FUNCTION PYGRVS (X, S, STH, AL, BE, AK, AG, B, D, E, ES)
40133  
40134 C...Double precision declaration.
40135       IMPLICIT DOUBLE PRECISION (A - Z)
40136  
40137 C...Evaluation.
40138       IF(S.LE.STH) THEN
40139         PYGRVS = 0D0
40140       ELSE
40141         DX = SQRT (X)
40142         LX = LOG (1D0/X)
40143         PYGRVS = (S - STH)**AL / LX**AK * (1D0+ AG*DX + B*X) *
40144      &     (1D0- X)**D * EXP (-E + SQRT (ES * S**BE * LX))
40145       ENDIF
40146  
40147       RETURN
40148       END
40149  
40150 C*********************************************************************
40151  
40152 C...PYCT5L
40153 C...Auxiliary function for parametrization of CTEQ5L.
40154 C...Author: J. Pumplin 9/99.
40155  
40156 C...CTEQ5M1 and CTEQ5L Parton Distribution Functions
40157 C...in Parametrized Form
40158 C...            September 15, 1999
40159 C
40160 C...Ref: "GLOBAL QCD ANALYSIS OF PARTON STRUCTURE OF THE NUCLEON:
40161 C...      CTEQ5 PPARTON DISTRIBUTIONS"
40162 C...hep-ph/9903282
40163  
40164 C...The CTEQ5M1 set given here is an updated version of the original
40165 C...CTEQ5M set posted, in the table version, on the Web page of CTEQ.
40166 C...The differences between CTEQ5M and CTEQ5M1 are insignificant for
40167 C...almost all applications.
40168 C...The improvement is in the QCD evolution which is now more
40169 C...accurate, and which agrees completely with the benchmark work
40170 C...of the HERA 96/97 Workshop.
40171 C...The differences between the parametrized and the corresponding
40172 C...table versions (on which it is based) are of similar order as
40173 C...between the two version.
40174  
40175 C...!! Because accurate parametrizations over a wide range of (x,Q)
40176 C...is hard to obtain, only the most widely used sets CTEQ5M and
40177 C...CTEQ5L are available in parametrized form for now.
40178  
40179 C...These parametrizations were obtained by Jon Pumplin.
40180  
40181 C  Iset   PDF        Description              Alpha_s(Mz)  Lam4  Lam5
40182 C -------------------------------------------------------------------
40183 C   1    CTEQ5M1  Standard NLO MSbar scheme      0.118     326   226
40184 C   3    CTEQ5L   Leading Order                  0.127     192   146
40185 C -------------------------------------------------------------------
40186 C...Note the Qcd-lambda values given for CTEQ5L is for the leading
40187 C...order form of Alpha_s!!  Alpha_s(Mz) gives the absolute
40188 C...calibration.
40189  
40190 C...The two Iset value are adopted to agree with the standard table
40191 C...versions.
40192  
40193 C...Range of validity:
40194 C...The range of (x, Q) covered by this parametrization of the QCD
40195 C...evolved parton distributions is 1E-6 < x < 1 ;
40196 C...1.1 GeV < Q < 10 TeV.  Of course, the PDFs are constrained by
40197 C...data only in a subset of that region; and the assumed DGLAP
40198 C...evolution is unlikely to be valid for all of it either.
40199  
40200 C...The range of (x, Q) used in the CTEQ5 round of global analysis is
40201 C...approximately 0.01 < x < 0.75 ; and 4 GeV^2 < Q^2 < 400 GeV^2 for
40202 C...fixed target experiments; 0.0001 < x < 0.3 from HERA data; and
40203 C...Q^2 up to 40,000 GeV^2 from Tevatron inclusive Jet data.
40204  
40205       FUNCTION PYCT5L(IFL,X,Q)
40206  
40207 C...Double precision declaration.
40208       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40209       IMPLICIT INTEGER(I-N)
40210  
40211       PARAMETER (NEX=8, NLF=2)
40212       DIMENSION AM(0:NEX,0:NLF,-5:2)
40213       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
40214       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
40215       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
40216       DIMENSION AF(0:NEX)
40217  
40218       DATA MEXVEC( 2) / 8 /
40219       DATA MLFVEC( 2) / 2 /
40220       DATA UT1VEC( 2) /  0.4971265E+01 /
40221       DATA UT2VEC( 2) / -0.1105128E+01 /
40222       DATA ALFVEC( 2) /  0.2987216E+00 /
40223       DATA QMAVEC( 2) /  0.0000000E+00 /
40224       DATA (AM( 0,K, 2),K=0, 2)
40225      & /  0.5292616E+01, -0.2751910E+01, -0.2488990E+01 /
40226       DATA (AM( 1,K, 2),K=0, 2)
40227      & /  0.9714424E+00,  0.1011827E-01, -0.1023660E-01 /
40228       DATA (AM( 2,K, 2),K=0, 2)
40229      & / -0.1651006E+02,  0.7959721E+01,  0.8810563E+01 /
40230       DATA (AM( 3,K, 2),K=0, 2)
40231      & / -0.1643394E+02,  0.5892854E+01,  0.9348874E+01 /
40232       DATA (AM( 4,K, 2),K=0, 2)
40233      & /  0.3067422E+02,  0.4235796E+01, -0.5112136E+00 /
40234       DATA (AM( 5,K, 2),K=0, 2)
40235      & /  0.2352526E+02, -0.5305168E+01, -0.1169174E+02 /
40236       DATA (AM( 6,K, 2),K=0, 2)
40237      & / -0.1095451E+02,  0.3006577E+01,  0.5638136E+01 /
40238       DATA (AM( 7,K, 2),K=0, 2)
40239      & / -0.1172251E+02, -0.2183624E+01,  0.4955794E+01 /
40240       DATA (AM( 8,K, 2),K=0, 2)
40241      & /  0.1662533E-01,  0.7622870E-02, -0.4895887E-03 /
40242  
40243       DATA MEXVEC( 1) / 8 /
40244       DATA MLFVEC( 1) / 2 /
40245       DATA UT1VEC( 1) /  0.2612618E+01 /
40246       DATA UT2VEC( 1) / -0.1258304E+06 /
40247       DATA ALFVEC( 1) /  0.3407552E+00 /
40248       DATA QMAVEC( 1) /  0.0000000E+00 /
40249       DATA (AM( 0,K, 1),K=0, 2)
40250      & /  0.9905300E+00, -0.4502235E+00,  0.1624441E+00 /
40251       DATA (AM( 1,K, 1),K=0, 2)
40252      & /  0.8867534E+00,  0.1630829E-01, -0.4049085E-01 /
40253       DATA (AM( 2,K, 1),K=0, 2)
40254      & /  0.8547974E+00,  0.3336301E+00,  0.1371388E+00 /
40255       DATA (AM( 3,K, 1),K=0, 2)
40256      & /  0.2941113E+00, -0.1527905E+01,  0.2331879E+00 /
40257       DATA (AM( 4,K, 1),K=0, 2)
40258      & /  0.3384235E+02,  0.3715315E+01,  0.8276930E+00 /
40259       DATA (AM( 5,K, 1),K=0, 2)
40260      & /  0.6230115E+01,  0.3134639E+01, -0.1729099E+01 /
40261       DATA (AM( 6,K, 1),K=0, 2)
40262      & / -0.1186928E+01, -0.3282460E+00,  0.1052020E+00 /
40263       DATA (AM( 7,K, 1),K=0, 2)
40264      & / -0.8545702E+01, -0.6247947E+01,  0.3692561E+01 /
40265       DATA (AM( 8,K, 1),K=0, 2)
40266      & /  0.1724598E-01,  0.7120465E-02,  0.4003646E-04 /
40267  
40268       DATA MEXVEC( 0) / 8 /
40269       DATA MLFVEC( 0) / 2 /
40270       DATA UT1VEC( 0) / -0.4656819E+00 /
40271       DATA UT2VEC( 0) / -0.2742390E+03 /
40272       DATA ALFVEC( 0) /  0.4491863E+00 /
40273       DATA QMAVEC( 0) /  0.0000000E+00 /
40274       DATA (AM( 0,K, 0),K=0, 2)
40275      & /  0.1193572E+03, -0.3886845E+01, -0.1133965E+01 /
40276       DATA (AM( 1,K, 0),K=0, 2)
40277      & / -0.9421449E+02,  0.3995885E+01,  0.1607363E+01 /
40278       DATA (AM( 2,K, 0),K=0, 2)
40279      & /  0.4206383E+01,  0.2485954E+00,  0.2497468E+00 /
40280       DATA (AM( 3,K, 0),K=0, 2)
40281      & /  0.1210557E+03, -0.3015765E+01, -0.1423651E+01 /
40282       DATA (AM( 4,K, 0),K=0, 2)
40283      & / -0.1013897E+03, -0.7113478E+00,  0.2621865E+00 /
40284       DATA (AM( 5,K, 0),K=0, 2)
40285      & / -0.1312404E+01, -0.9297691E+00, -0.1562531E+00 /
40286       DATA (AM( 6,K, 0),K=0, 2)
40287      & /  0.1627137E+01,  0.4954111E+00, -0.6387009E+00 /
40288       DATA (AM( 7,K, 0),K=0, 2)
40289      & /  0.1537698E+00, -0.2487878E+00,  0.8305947E+00 /
40290       DATA (AM( 8,K, 0),K=0, 2)
40291      & /  0.2496448E-01,  0.2457823E-02,  0.8234276E-03 /
40292  
40293       DATA MEXVEC(-1) / 8 /
40294       DATA MLFVEC(-1) / 2 /
40295       DATA UT1VEC(-1) /  0.3862583E+01 /
40296       DATA UT2VEC(-1) / -0.1265969E+01 /
40297       DATA ALFVEC(-1) /  0.2457668E+00 /
40298       DATA QMAVEC(-1) /  0.0000000E+00 /
40299       DATA (AM( 0,K,-1),K=0, 2)
40300      & /  0.2647441E+02,  0.1059277E+02, -0.9176654E+00 /
40301       DATA (AM( 1,K,-1),K=0, 2)
40302      & /  0.1990636E+01,  0.8558918E-01,  0.4248667E-01 /
40303       DATA (AM( 2,K,-1),K=0, 2)
40304      & / -0.1476095E+02, -0.3276255E+02,  0.1558110E+01 /
40305       DATA (AM( 3,K,-1),K=0, 2)
40306      & / -0.2966889E+01, -0.3649037E+02,  0.1195914E+01 /
40307       DATA (AM( 4,K,-1),K=0, 2)
40308      & / -0.1000519E+03, -0.2464635E+01,  0.1964849E+00 /
40309       DATA (AM( 5,K,-1),K=0, 2)
40310      & /  0.3718331E+02,  0.4700389E+02, -0.2772142E+01 /
40311       DATA (AM( 6,K,-1),K=0, 2)
40312      & / -0.1872722E+02, -0.2291189E+02,  0.1089052E+01 /
40313       DATA (AM( 7,K,-1),K=0, 2)
40314      & / -0.1628146E+02, -0.1823993E+02,  0.2537369E+01 /
40315       DATA (AM( 8,K,-1),K=0, 2)
40316      & / -0.1156300E+01, -0.1280495E+00,  0.5153245E-01 /
40317  
40318       DATA MEXVEC(-2) / 7 /
40319       DATA MLFVEC(-2) / 2 /
40320       DATA UT1VEC(-2) /  0.1895615E+00 /
40321       DATA UT2VEC(-2) / -0.3069097E+01 /
40322       DATA ALFVEC(-2) /  0.5293999E+00 /
40323       DATA QMAVEC(-2) /  0.0000000E+00 /
40324       DATA (AM( 0,K,-2),K=0, 2)
40325      & / -0.6556775E+00,  0.2490190E+00,  0.3966485E-01 /
40326       DATA (AM( 1,K,-2),K=0, 2)
40327      & /  0.1305102E+01, -0.1188925E+00, -0.4600870E-02 /
40328       DATA (AM( 2,K,-2),K=0, 2)
40329      & / -0.2371436E+01,  0.3566814E+00, -0.2834683E+00 /
40330       DATA (AM( 3,K,-2),K=0, 2)
40331      & / -0.6152826E+01,  0.8339877E+00, -0.7233230E+00 /
40332       DATA (AM( 4,K,-2),K=0, 2)
40333      & / -0.8346558E+01,  0.2892168E+01,  0.2137099E+00 /
40334       DATA (AM( 5,K,-2),K=0, 2)
40335      & /  0.1279530E+02,  0.1021114E+00,  0.5787439E+00 /
40336       DATA (AM( 6,K,-2),K=0, 2)
40337      & /  0.5858816E+00, -0.1940375E+01, -0.4029269E+00 /
40338       DATA (AM( 7,K,-2),K=0, 2)
40339      & / -0.2795725E+02, -0.5263392E+00,  0.1290229E+01 /
40340  
40341       DATA MEXVEC(-3) / 7 /
40342       DATA MLFVEC(-3) / 2 /
40343       DATA UT1VEC(-3) /  0.3753257E+01 /
40344       DATA UT2VEC(-3) / -0.1113085E+01 /
40345       DATA ALFVEC(-3) /  0.3713141E+00 /
40346       DATA QMAVEC(-3) /  0.0000000E+00 /
40347       DATA (AM( 0,K,-3),K=0, 2)
40348      & /  0.1580931E+01, -0.2273826E+01, -0.1822245E+01 /
40349       DATA (AM( 1,K,-3),K=0, 2)
40350      & /  0.2702644E+01,  0.6763243E+00,  0.7231586E-02 /
40351       DATA (AM( 2,K,-3),K=0, 2)
40352      & / -0.1857924E+02,  0.3907500E+01,  0.5850109E+01 /
40353       DATA (AM( 3,K,-3),K=0, 2)
40354      & / -0.3044793E+02,  0.2639332E+01,  0.5566644E+01 /
40355       DATA (AM( 4,K,-3),K=0, 2)
40356      & / -0.4258011E+01, -0.5429244E+01,  0.4418946E+00 /
40357       DATA (AM( 5,K,-3),K=0, 2)
40358      & /  0.3465259E+02, -0.5532604E+01, -0.4904153E+01 /
40359       DATA (AM( 6,K,-3),K=0, 2)
40360      & / -0.1658858E+02,  0.2923275E+01,  0.2266286E+01 /
40361       DATA (AM( 7,K,-3),K=0, 2)
40362      & / -0.1149263E+02,  0.2877475E+01, -0.7999105E+00 /
40363  
40364       DATA MEXVEC(-4) / 7 /
40365       DATA MLFVEC(-4) / 2 /
40366       DATA UT1VEC(-4) /  0.4400772E+01 /
40367       DATA UT2VEC(-4) / -0.1356116E+01 /
40368       DATA ALFVEC(-4) /  0.3712017E-01 /
40369       DATA QMAVEC(-4) /  0.1300000E+01 /
40370       DATA (AM( 0,K,-4),K=0, 2)
40371      & / -0.8293661E+00, -0.3982375E+01, -0.6494283E-01 /
40372       DATA (AM( 1,K,-4),K=0, 2)
40373      & /  0.2754618E+01,  0.8338636E+00, -0.6885160E-01 /
40374       DATA (AM( 2,K,-4),K=0, 2)
40375      & / -0.1657987E+02,  0.1439143E+02, -0.6887240E+00 /
40376       DATA (AM( 3,K,-4),K=0, 2)
40377      & / -0.2800703E+02,  0.1535966E+02, -0.7377693E+00 /
40378       DATA (AM( 4,K,-4),K=0, 2)
40379      & / -0.6460216E+01, -0.4783019E+01,  0.4913297E+00 /
40380       DATA (AM( 5,K,-4),K=0, 2)
40381      & /  0.3141830E+02, -0.3178031E+02,  0.7136013E+01 /
40382       DATA (AM( 6,K,-4),K=0, 2)
40383      & / -0.1802509E+02,  0.1862163E+02, -0.4632843E+01 /
40384       DATA (AM( 7,K,-4),K=0, 2)
40385      & / -0.1240412E+02,  0.2565386E+02, -0.1066570E+02 /
40386  
40387       DATA MEXVEC(-5) / 6 /
40388       DATA MLFVEC(-5) / 2 /
40389       DATA UT1VEC(-5) /  0.5562568E+01 /
40390       DATA UT2VEC(-5) / -0.1801317E+01 /
40391       DATA ALFVEC(-5) /  0.4952010E-02 /
40392       DATA QMAVEC(-5) /  0.4500000E+01 /
40393       DATA (AM( 0,K,-5),K=0, 2)
40394      & / -0.6031237E+01,  0.1992727E+01, -0.1076331E+01 /
40395       DATA (AM( 1,K,-5),K=0, 2)
40396      & /  0.2933912E+01,  0.5839674E+00,  0.7509435E-01 /
40397       DATA (AM( 2,K,-5),K=0, 2)
40398      & / -0.8284919E+01,  0.1488593E+01, -0.8251678E+00 /
40399       DATA (AM( 3,K,-5),K=0, 2)
40400      & / -0.1925986E+02,  0.2805753E+01, -0.3015446E+01 /
40401       DATA (AM( 4,K,-5),K=0, 2)
40402      & / -0.9480483E+01, -0.9767837E+00, -0.1165544E+01 /
40403       DATA (AM( 5,K,-5),K=0, 2)
40404      & /  0.2193195E+02, -0.1788518E+02,  0.9460908E+01 /
40405       DATA (AM( 6,K,-5),K=0, 2)
40406      & / -0.1327377E+02,  0.1201754E+02, -0.6277844E+01 /
40407  
40408       IF(Q .LE. QMAVEC(IFL)) THEN
40409          PYCT5L = 0.D0
40410          RETURN
40411       ENDIF
40412  
40413       IF(X .GE. 1.D0) THEN
40414          PYCT5L = 0.D0
40415          RETURN
40416       ENDIF
40417  
40418       TMP = LOG(Q/ALFVEC(IFL))
40419       IF(TMP .LE. 0.D0) THEN
40420          PYCT5L = 0.D0
40421          RETURN
40422       ENDIF
40423  
40424       SB = LOG(TMP)
40425       SB1 = SB - 1.2D0
40426       SB2 = SB1*SB1
40427  
40428       DO 110 I = 0, NEX
40429          AF(I) = 0.D0
40430          SBX = 1.D0
40431          DO 100 K = 0, MLFVEC(IFL)
40432             AF(I) = AF(I) + SBX*AM(I,K,IFL)
40433             SBX = SB1*SBX
40434   100    CONTINUE
40435   110 CONTINUE
40436  
40437       Y = -LOG(X)
40438       U = LOG(X/0.00001D0)
40439  
40440       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
40441       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
40442       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
40443       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
40444      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
40445  
40446       PYCT5L = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
40447  
40448 C...Include threshold factor.
40449       PYCT5L = PYCT5L * (1.D0 - QMAVEC(IFL)/Q)
40450  
40451       RETURN
40452       END
40453  
40454 C*********************************************************************
40455  
40456 C...PYCT5M
40457 C...Auxiliary function for parametrization of CTEQ5M1.
40458 C...Author: J. Pumplin 9/99.
40459  
40460       FUNCTION PYCT5M(IFL,X,Q)
40461  
40462 C...Double precision declaration.
40463       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40464       IMPLICIT INTEGER(I-N)
40465  
40466       PARAMETER (NEX=8, NLF=2)
40467       DIMENSION AM(0:NEX,0:NLF,-5:2)
40468       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
40469       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
40470       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
40471       DIMENSION AF(0:NEX)
40472  
40473       DATA MEXVEC( 2) / 8 /
40474       DATA MLFVEC( 2) / 2 /
40475       DATA UT1VEC( 2) /  0.5141718E+01 /
40476       DATA UT2VEC( 2) / -0.1346944E+01 /
40477       DATA ALFVEC( 2) /  0.5260555E+00 /
40478       DATA QMAVEC( 2) /  0.0000000E+00 /
40479       DATA (AM( 0,K, 2),K=0, 2)
40480      & /  0.4289071E+01, -0.2536870E+01, -0.1259948E+01 /
40481       DATA (AM( 1,K, 2),K=0, 2)
40482      & /  0.9839410E+00,  0.4168426E-01, -0.5018952E-01 /
40483       DATA (AM( 2,K, 2),K=0, 2)
40484      & / -0.1651961E+02,  0.9246261E+01,  0.5996400E+01 /
40485       DATA (AM( 3,K, 2),K=0, 2)
40486      & / -0.2077936E+02,  0.9786469E+01,  0.7656465E+01 /
40487       DATA (AM( 4,K, 2),K=0, 2)
40488      & /  0.3054926E+02,  0.1889536E+01,  0.1380541E+01 /
40489       DATA (AM( 5,K, 2),K=0, 2)
40490      & /  0.3084695E+02, -0.1212303E+02, -0.1053551E+02 /
40491       DATA (AM( 6,K, 2),K=0, 2)
40492      & / -0.1426778E+02,  0.6239537E+01,  0.5254819E+01 /
40493       DATA (AM( 7,K, 2),K=0, 2)
40494      & / -0.1909811E+02,  0.3695678E+01,  0.5495729E+01 /
40495       DATA (AM( 8,K, 2),K=0, 2)
40496      & /  0.1889751E-01,  0.5027193E-02,  0.6624896E-03 /
40497  
40498       DATA MEXVEC( 1) / 8 /
40499       DATA MLFVEC( 1) / 2 /
40500       DATA UT1VEC( 1) /  0.4138426E+01 /
40501       DATA UT2VEC( 1) / -0.3221374E+01 /
40502       DATA ALFVEC( 1) /  0.4960962E+00 /
40503       DATA QMAVEC( 1) /  0.0000000E+00 /
40504       DATA (AM( 0,K, 1),K=0, 2)
40505      & /  0.1332497E+01, -0.3703718E+00,  0.1288638E+00 /
40506       DATA (AM( 1,K, 1),K=0, 2)
40507      & /  0.7544687E+00,  0.3255075E-01, -0.4706680E-01 /
40508       DATA (AM( 2,K, 1),K=0, 2)
40509      & / -0.7638814E+00,  0.5008313E+00, -0.9237374E-01 /
40510       DATA (AM( 3,K, 1),K=0, 2)
40511      & / -0.3689889E+00, -0.1055098E+01, -0.4645065E+00 /
40512       DATA (AM( 4,K, 1),K=0, 2)
40513      & /  0.3991610E+02,  0.1979881E+01,  0.1775814E+01 /
40514       DATA (AM( 5,K, 1),K=0, 2)
40515      & /  0.6201080E+01,  0.2046288E+01,  0.3804571E+00 /
40516       DATA (AM( 6,K, 1),K=0, 2)
40517      & / -0.8027900E+00, -0.7011688E+00, -0.8049612E+00 /
40518       DATA (AM( 7,K, 1),K=0, 2)
40519      & / -0.8631305E+01, -0.3981200E+01,  0.6970153E+00 /
40520       DATA (AM( 8,K, 1),K=0, 2)
40521      & /  0.2371230E-01,  0.5372683E-02,  0.1118701E-02 /
40522  
40523       DATA MEXVEC( 0) / 8 /
40524       DATA MLFVEC( 0) / 2 /
40525       DATA UT1VEC( 0) / -0.1026789E+01 /
40526       DATA UT2VEC( 0) / -0.9051707E+01 /
40527       DATA ALFVEC( 0) /  0.9462977E+00 /
40528       DATA QMAVEC( 0) /  0.0000000E+00 /
40529       DATA (AM( 0,K, 0),K=0, 2)
40530      & /  0.1191990E+03, -0.8548739E+00, -0.1963040E+01 /
40531       DATA (AM( 1,K, 0),K=0, 2)
40532      & / -0.9449972E+02,  0.1074771E+01,  0.2056055E+01 /
40533       DATA (AM( 2,K, 0),K=0, 2)
40534      & /  0.3701064E+01, -0.1167947E-02,  0.1933573E+00 /
40535       DATA (AM( 3,K, 0),K=0, 2)
40536      & /  0.1171345E+03, -0.1064540E+01, -0.1875312E+01 /
40537       DATA (AM( 4,K, 0),K=0, 2)
40538      & / -0.1014453E+03, -0.5707427E+00,  0.4511242E-01 /
40539       DATA (AM( 5,K, 0),K=0, 2)
40540      & /  0.6365168E+01,  0.1275354E+01, -0.4964081E+00 /
40541       DATA (AM( 6,K, 0),K=0, 2)
40542      & / -0.3370693E+01, -0.1122020E+01,  0.5947751E-01 /
40543       DATA (AM( 7,K, 0),K=0, 2)
40544      & / -0.5327270E+01, -0.9293556E+00,  0.6629940E+00 /
40545       DATA (AM( 8,K, 0),K=0, 2)
40546      & /  0.2437513E-01,  0.1600939E-02,  0.6855336E-03 /
40547  
40548       DATA MEXVEC(-1) / 8 /
40549       DATA MLFVEC(-1) / 2 /
40550       DATA UT1VEC(-1) /  0.5243571E+01 /
40551       DATA UT2VEC(-1) / -0.2870513E+01 /
40552       DATA ALFVEC(-1) /  0.6701448E+00 /
40553       DATA QMAVEC(-1) /  0.0000000E+00 /
40554       DATA (AM( 0,K,-1),K=0, 2)
40555      & /  0.2428863E+02,  0.1907035E+01, -0.4606457E+00 /
40556       DATA (AM( 1,K,-1),K=0, 2)
40557      & /  0.2006810E+01, -0.1265915E+00,  0.7153556E-02 /
40558       DATA (AM( 2,K,-1),K=0, 2)
40559      & / -0.1884546E+02, -0.2339471E+01,  0.5740679E+01 /
40560       DATA (AM( 3,K,-1),K=0, 2)
40561      & / -0.2527892E+02, -0.2044124E+01,  0.1280470E+02 /
40562       DATA (AM( 4,K,-1),K=0, 2)
40563      & / -0.1013824E+03, -0.1594199E+01,  0.2216401E+00 /
40564       DATA (AM( 5,K,-1),K=0, 2)
40565      & /  0.8070930E+02,  0.1792072E+01, -0.2164364E+02 /
40566       DATA (AM( 6,K,-1),K=0, 2)
40567      & / -0.4641050E+02,  0.1977338E+00,  0.1273014E+02 /
40568       DATA (AM( 7,K,-1),K=0, 2)
40569      & / -0.3910568E+02,  0.1719632E+01,  0.1086525E+02 /
40570       DATA (AM( 8,K,-1),K=0, 2)
40571      & / -0.1185496E+01, -0.1905847E+00, -0.8744118E-03 /
40572  
40573       DATA MEXVEC(-2) / 7 /
40574       DATA MLFVEC(-2) / 2 /
40575       DATA UT1VEC(-2) /  0.4782210E+01 /
40576       DATA UT2VEC(-2) / -0.1976856E+02 /
40577       DATA ALFVEC(-2) /  0.7558374E+00 /
40578       DATA QMAVEC(-2) /  0.0000000E+00 /
40579       DATA (AM( 0,K,-2),K=0, 2)
40580      & / -0.6216935E+00,  0.2369963E+00, -0.7909949E-02 /
40581       DATA (AM( 1,K,-2),K=0, 2)
40582      & /  0.1245440E+01, -0.1031510E+00,  0.4916523E-02 /
40583       DATA (AM( 2,K,-2),K=0, 2)
40584      & / -0.7060824E+01, -0.3875283E-01,  0.1784981E+00 /
40585       DATA (AM( 3,K,-2),K=0, 2)
40586      & / -0.7430595E+01,  0.1964572E+00, -0.1284999E+00 /
40587       DATA (AM( 4,K,-2),K=0, 2)
40588      & / -0.6897810E+01,  0.2620543E+01,  0.8012553E-02 /
40589       DATA (AM( 5,K,-2),K=0, 2)
40590      & /  0.1507713E+02,  0.2340307E-01,  0.2482535E+01 /
40591       DATA (AM( 6,K,-2),K=0, 2)
40592      & / -0.1815341E+01, -0.1538698E+01, -0.2014208E+01 /
40593       DATA (AM( 7,K,-2),K=0, 2)
40594      & / -0.2571932E+02,  0.2903941E+00, -0.2848206E+01 /
40595  
40596       DATA MEXVEC(-3) / 7 /
40597       DATA MLFVEC(-3) / 2 /
40598       DATA UT1VEC(-3) /  0.4518239E+01 /
40599       DATA UT2VEC(-3) / -0.2690590E+01 /
40600       DATA ALFVEC(-3) /  0.6124079E+00 /
40601       DATA QMAVEC(-3) /  0.0000000E+00 /
40602       DATA (AM( 0,K,-3),K=0, 2)
40603      & / -0.2734458E+01, -0.7245673E+00, -0.6351374E+00 /
40604       DATA (AM( 1,K,-3),K=0, 2)
40605      & /  0.2927174E+01,  0.4822709E+00, -0.1088787E-01 /
40606       DATA (AM( 2,K,-3),K=0, 2)
40607      & / -0.1771017E+02, -0.1416635E+01,  0.8467622E+01 /
40608       DATA (AM( 3,K,-3),K=0, 2)
40609      & / -0.4972782E+02, -0.3348547E+01,  0.1767061E+02 /
40610       DATA (AM( 4,K,-3),K=0, 2)
40611      & / -0.7102770E+01, -0.3205337E+01,  0.4101704E+00 /
40612       DATA (AM( 5,K,-3),K=0, 2)
40613      & /  0.7169698E+02, -0.2205985E+01, -0.2463931E+02 /
40614       DATA (AM( 6,K,-3),K=0, 2)
40615      & / -0.4090347E+02,  0.2103486E+01,  0.1416507E+02 /
40616       DATA (AM( 7,K,-3),K=0, 2)
40617      & / -0.2952639E+02,  0.5376136E+01,  0.7825585E+01 /
40618  
40619       DATA MEXVEC(-4) / 7 /
40620       DATA MLFVEC(-4) / 2 /
40621       DATA UT1VEC(-4) /  0.2783230E+01 /
40622       DATA UT2VEC(-4) / -0.1746328E+01 /
40623       DATA ALFVEC(-4) /  0.1115653E+01 /
40624       DATA QMAVEC(-4) /  0.1300000E+01 /
40625       DATA (AM( 0,K,-4),K=0, 2)
40626      & / -0.1743872E+01, -0.1128921E+01, -0.2841969E+00 /
40627       DATA (AM( 1,K,-4),K=0, 2)
40628      & /  0.3345755E+01,  0.3187765E+00,  0.1378124E+00 /
40629       DATA (AM( 2,K,-4),K=0, 2)
40630      & / -0.2037615E+02,  0.4121687E+01,  0.2236520E+00 /
40631       DATA (AM( 3,K,-4),K=0, 2)
40632      & / -0.4703104E+02,  0.5353087E+01, -0.1455347E+01 /
40633       DATA (AM( 4,K,-4),K=0, 2)
40634      & / -0.1060230E+02, -0.1551122E+01, -0.1078863E+01 /
40635       DATA (AM( 5,K,-4),K=0, 2)
40636      & /  0.5088892E+02, -0.8197304E+01,  0.8083451E+01 /
40637       DATA (AM( 6,K,-4),K=0, 2)
40638      & / -0.2819070E+02,  0.4554086E+01, -0.5890995E+01 /
40639       DATA (AM( 7,K,-4),K=0, 2)
40640      & / -0.1098238E+02,  0.2590096E+01, -0.8062879E+01 /
40641  
40642       DATA MEXVEC(-5) / 6 /
40643       DATA MLFVEC(-5) / 2 /
40644       DATA UT1VEC(-5) /  0.1619654E+02 /
40645       DATA UT2VEC(-5) / -0.3367346E+01 /
40646       DATA ALFVEC(-5) /  0.5109891E-02 /
40647       DATA QMAVEC(-5) /  0.4500000E+01 /
40648       DATA (AM( 0,K,-5),K=0, 2)
40649      & / -0.6800138E+01,  0.2493627E+01, -0.1075724E+01 /
40650       DATA (AM( 1,K,-5),K=0, 2)
40651      & /  0.3036555E+01,  0.3324733E+00,  0.2008298E+00 /
40652       DATA (AM( 2,K,-5),K=0, 2)
40653      & / -0.5203879E+01, -0.8493476E+01, -0.4523208E+01 /
40654       DATA (AM( 3,K,-5),K=0, 2)
40655      & / -0.1524239E+01, -0.3411912E+01, -0.1771867E+02 /
40656       DATA (AM( 4,K,-5),K=0, 2)
40657      & / -0.1099444E+02,  0.1320930E+01, -0.2353831E+01 /
40658       DATA (AM( 5,K,-5),K=0, 2)
40659      & /  0.1699299E+02, -0.3565802E+02,  0.3566872E+02 /
40660       DATA (AM( 6,K,-5),K=0, 2)
40661      & / -0.1465793E+02,  0.2703365E+02, -0.2176372E+02 /
40662  
40663       IF(Q .LE. QMAVEC(IFL)) THEN
40664          PYCT5M = 0.D0
40665          RETURN
40666       ENDIF
40667  
40668       IF(X .GE. 1.D0) THEN
40669          PYCT5M = 0.D0
40670          RETURN
40671       ENDIF
40672  
40673       TMP = LOG(Q/ALFVEC(IFL))
40674       IF(TMP .LE. 0.D0) THEN
40675          PYCT5M = 0.D0
40676          RETURN
40677       ENDIF
40678  
40679       SB = LOG(TMP)
40680       SB1 = SB - 1.2D0
40681       SB2 = SB1*SB1
40682  
40683       DO 110 I = 0, NEX
40684          AF(I) = 0.D0
40685          SBX = 1.D0
40686          DO 100 K = 0, MLFVEC(IFL)
40687             AF(I) = AF(I) + SBX*AM(I,K,IFL)
40688             SBX = SB1*SBX
40689   100    CONTINUE
40690   110 CONTINUE
40691  
40692       Y = -LOG(X)
40693       U = LOG(X/0.00001D0)
40694  
40695       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
40696       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
40697       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
40698       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
40699      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
40700  
40701       PYCT5M = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
40702  
40703 C...Include threshold factor.
40704       PYCT5M = PYCT5M * (1.D0 - QMAVEC(IFL)/Q)
40705  
40706       RETURN
40707       END
40708  
40709 C*********************************************************************
40710  
40711 C...PYPDPO
40712 C...Auxiliary to PYPDPR. Gives proton parton distributions according to
40713 C...a few older parametrizations, now obsolete but convenient for
40714 C...backwards checks.
40715  
40716       SUBROUTINE PYPDPO(X,Q2,XPPR)
40717  
40718 C...Double precision and integer declarations.
40719       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40720       IMPLICIT INTEGER(I-N)
40721       INTEGER PYK,PYCHGE,PYCOMP
40722 C...Commonblocks.
40723       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
40724       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
40725       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
40726       COMMON/PYINT1/MINT(400),VINT(400)
40727       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
40728       DIMENSION XPPR(-6:6),XQ(9),TX(6),TT(6),TS(6),NEHLQ(8,2),
40729      &CEHLQ(6,6,2,8,2),CDO(3,6,5,2)
40730  
40731  
40732 C...The following data lines are coefficients needed in the
40733 C...Eichten, Hinchliffe, Lane, Quigg proton structure function
40734 C...parametrizations, see below.
40735 C...Powers of 1-x in different cases.
40736       DATA NEHLQ/3,4,7,5,7,7,7,7,3,4,7,6,7,7,7,7/
40737 C...Expansion coefficients for up valence quark distribution.
40738       DATA (((CEHLQ(IX,IT,NX,1,1),IX=1,6),IT=1,6),NX=1,2)/
40739      1 7.677D-01,-2.087D-01,-3.303D-01,-2.517D-02,-1.570D-02,-1.000D-04,
40740      2-5.326D-01,-2.661D-01, 3.201D-01, 1.192D-01, 2.434D-02, 7.620D-03,
40741      3 2.162D-01, 1.881D-01,-8.375D-02,-6.515D-02,-1.743D-02,-5.040D-03,
40742      4-9.211D-02,-9.952D-02, 1.373D-02, 2.506D-02, 8.770D-03, 2.550D-03,
40743      5 3.670D-02, 4.409D-02, 9.600D-04,-7.960D-03,-3.420D-03,-1.050D-03,
40744      6-1.549D-02,-2.026D-02,-3.060D-03, 2.220D-03, 1.240D-03, 4.100D-04,
40745      1 2.395D-01, 2.905D-01, 9.778D-02, 2.149D-02, 3.440D-03, 5.000D-04,
40746      2 1.751D-02,-6.090D-03,-2.687D-02,-1.916D-02,-7.970D-03,-2.750D-03,
40747      3-5.760D-03,-5.040D-03, 1.080D-03, 2.490D-03, 1.530D-03, 7.500D-04,
40748      4 1.740D-03, 1.960D-03, 3.000D-04,-3.400D-04,-2.900D-04,-1.800D-04,
40749      5-5.300D-04,-6.400D-04,-1.700D-04, 4.000D-05, 6.000D-05, 4.000D-05,
40750      6 1.700D-04, 2.200D-04, 8.000D-05, 1.000D-05,-1.000D-05,-1.000D-05/
40751       DATA (((CEHLQ(IX,IT,NX,1,2),IX=1,6),IT=1,6),NX=1,2)/
40752      1 7.237D-01,-2.189D-01,-2.995D-01,-1.909D-02,-1.477D-02, 2.500D-04,
40753      2-5.314D-01,-2.425D-01, 3.283D-01, 1.119D-01, 2.223D-02, 7.070D-03,
40754      3 2.289D-01, 1.890D-01,-9.859D-02,-6.900D-02,-1.747D-02,-5.080D-03,
40755      4-1.041D-01,-1.084D-01, 2.108D-02, 2.975D-02, 9.830D-03, 2.830D-03,
40756      5 4.394D-02, 5.116D-02,-1.410D-03,-1.055D-02,-4.230D-03,-1.270D-03,
40757      6-1.991D-02,-2.539D-02,-2.780D-03, 3.430D-03, 1.720D-03, 5.500D-04,
40758      1 2.410D-01, 2.884D-01, 9.369D-02, 1.900D-02, 2.530D-03, 2.400D-04,
40759      2 1.765D-02,-9.220D-03,-3.037D-02,-2.085D-02,-8.440D-03,-2.810D-03,
40760      3-6.450D-03,-5.260D-03, 1.720D-03, 3.110D-03, 1.830D-03, 8.700D-04,
40761      4 2.120D-03, 2.320D-03, 2.600D-04,-4.900D-04,-3.900D-04,-2.300D-04,
40762      5-6.900D-04,-8.200D-04,-2.000D-04, 7.000D-05, 9.000D-05, 6.000D-05,
40763      6 2.400D-04, 3.100D-04, 1.100D-04, 0.000D+00,-2.000D-05,-2.000D-05/
40764 C...Expansion coefficients for down valence quark distribution.
40765       DATA (((CEHLQ(IX,IT,NX,2,1),IX=1,6),IT=1,6),NX=1,2)/
40766      1 3.813D-01,-8.090D-02,-1.634D-01,-2.185D-02,-8.430D-03,-6.200D-04,
40767      2-2.948D-01,-1.435D-01, 1.665D-01, 6.638D-02, 1.473D-02, 4.080D-03,
40768      3 1.252D-01, 1.042D-01,-4.722D-02,-3.683D-02,-1.038D-02,-2.860D-03,
40769      4-5.478D-02,-5.678D-02, 8.900D-03, 1.484D-02, 5.340D-03, 1.520D-03,
40770      5 2.220D-02, 2.567D-02,-3.000D-05,-4.970D-03,-2.160D-03,-6.500D-04,
40771      6-9.530D-03,-1.204D-02,-1.510D-03, 1.510D-03, 8.300D-04, 2.700D-04,
40772      1 1.261D-01, 1.354D-01, 3.958D-02, 8.240D-03, 1.660D-03, 4.500D-04,
40773      2 3.890D-03,-1.159D-02,-1.625D-02,-9.610D-03,-3.710D-03,-1.260D-03,
40774      3-1.910D-03,-5.600D-04, 1.590D-03, 1.590D-03, 8.400D-04, 3.900D-04,
40775      4 6.400D-04, 4.900D-04,-1.500D-04,-2.900D-04,-1.800D-04,-1.000D-04,
40776      5-2.000D-04,-1.900D-04, 0.000D+00, 6.000D-05, 4.000D-05, 3.000D-05,
40777      6 7.000D-05, 8.000D-05, 2.000D-05,-1.000D-05,-1.000D-05,-1.000D-05/
40778       DATA (((CEHLQ(IX,IT,NX,2,2),IX=1,6),IT=1,6),NX=1,2)/
40779      1 3.578D-01,-8.622D-02,-1.480D-01,-1.840D-02,-7.820D-03,-4.500D-04,
40780      2-2.925D-01,-1.304D-01, 1.696D-01, 6.243D-02, 1.353D-02, 3.750D-03,
40781      3 1.318D-01, 1.041D-01,-5.486D-02,-3.872D-02,-1.038D-02,-2.850D-03,
40782      4-6.162D-02,-6.143D-02, 1.303D-02, 1.740D-02, 5.940D-03, 1.670D-03,
40783      5 2.643D-02, 2.957D-02,-1.490D-03,-6.450D-03,-2.630D-03,-7.700D-04,
40784      6-1.218D-02,-1.497D-02,-1.260D-03, 2.240D-03, 1.120D-03, 3.500D-04,
40785      1 1.263D-01, 1.334D-01, 3.732D-02, 7.070D-03, 1.260D-03, 3.400D-04,
40786      2 3.660D-03,-1.357D-02,-1.795D-02,-1.031D-02,-3.880D-03,-1.280D-03,
40787      3-2.100D-03,-3.600D-04, 2.050D-03, 1.920D-03, 9.800D-04, 4.400D-04,
40788      4 7.700D-04, 5.400D-04,-2.400D-04,-3.900D-04,-2.400D-04,-1.300D-04,
40789      5-2.600D-04,-2.300D-04, 2.000D-05, 9.000D-05, 6.000D-05, 4.000D-05,
40790      6 9.000D-05, 1.000D-04, 2.000D-05,-2.000D-05,-2.000D-05,-1.000D-05/
40791 C...Expansion coefficients for up and down sea quark distributions.
40792       DATA (((CEHLQ(IX,IT,NX,3,1),IX=1,6),IT=1,6),NX=1,2)/
40793      1 6.870D-02,-6.861D-02, 2.973D-02,-5.400D-03, 3.780D-03,-9.700D-04,
40794      2-1.802D-02, 1.400D-04, 6.490D-03,-8.540D-03, 1.220D-03,-1.750D-03,
40795      3-4.650D-03, 1.480D-03,-5.930D-03, 6.000D-04,-1.030D-03,-8.000D-05,
40796      4 6.440D-03, 2.570D-03, 2.830D-03, 1.150D-03, 7.100D-04, 3.300D-04,
40797      5-3.930D-03,-2.540D-03,-1.160D-03,-7.700D-04,-3.600D-04,-1.900D-04,
40798      6 2.340D-03, 1.930D-03, 5.300D-04, 3.700D-04, 1.600D-04, 9.000D-05,
40799      1 1.014D+00,-1.106D+00, 3.374D-01,-7.444D-02, 8.850D-03,-8.700D-04,
40800      2 9.233D-01,-1.285D+00, 4.475D-01,-9.786D-02, 1.419D-02,-1.120D-03,
40801      3 4.888D-02,-1.271D-01, 8.606D-02,-2.608D-02, 4.780D-03,-6.000D-04,
40802      4-2.691D-02, 4.887D-02,-1.771D-02, 1.620D-03, 2.500D-04,-6.000D-05,
40803      5 7.040D-03,-1.113D-02, 1.590D-03, 7.000D-04,-2.000D-04, 0.000D+00,
40804      6-1.710D-03, 2.290D-03, 3.800D-04,-3.500D-04, 4.000D-05, 1.000D-05/
40805       DATA (((CEHLQ(IX,IT,NX,3,2),IX=1,6),IT=1,6),NX=1,2)/
40806      1 1.008D-01,-7.100D-02, 1.973D-02,-5.710D-03, 2.930D-03,-9.900D-04,
40807      2-5.271D-02,-1.823D-02, 1.792D-02,-6.580D-03, 1.750D-03,-1.550D-03,
40808      3 1.220D-02, 1.763D-02,-8.690D-03,-8.800D-04,-1.160D-03,-2.100D-04,
40809      4-1.190D-03,-7.180D-03, 2.360D-03, 1.890D-03, 7.700D-04, 4.100D-04,
40810      5-9.100D-04, 2.040D-03,-3.100D-04,-1.050D-03,-4.000D-04,-2.400D-04,
40811      6 1.190D-03,-1.700D-04,-2.000D-04, 4.200D-04, 1.700D-04, 1.000D-04,
40812      1 1.081D+00,-1.189D+00, 3.868D-01,-8.617D-02, 1.115D-02,-1.180D-03,
40813      2 9.917D-01,-1.396D+00, 4.998D-01,-1.159D-01, 1.674D-02,-1.720D-03,
40814      3 5.099D-02,-1.338D-01, 9.173D-02,-2.885D-02, 5.890D-03,-6.500D-04,
40815      4-3.178D-02, 5.703D-02,-2.070D-02, 2.440D-03, 1.100D-04,-9.000D-05,
40816      5 8.970D-03,-1.392D-02, 2.050D-03, 6.500D-04,-2.300D-04, 2.000D-05,
40817      6-2.340D-03, 3.010D-03, 5.000D-04,-3.900D-04, 6.000D-05, 1.000D-05/
40818 C...Expansion coefficients for gluon distribution.
40819       DATA (((CEHLQ(IX,IT,NX,4,1),IX=1,6),IT=1,6),NX=1,2)/
40820      1 9.482D-01,-9.578D-01, 1.009D-01,-1.051D-01, 3.456D-02,-3.054D-02,
40821      2-9.627D-01, 5.379D-01, 3.368D-01,-9.525D-02, 1.488D-02,-2.051D-02,
40822      3 4.300D-01,-8.306D-02,-3.372D-01, 4.902D-02,-9.160D-03, 1.041D-02,
40823      4-1.925D-01,-1.790D-02, 2.183D-01, 7.490D-03, 4.140D-03,-1.860D-03,
40824      5 8.183D-02, 1.926D-02,-1.072D-01,-1.944D-02,-2.770D-03,-5.200D-04,
40825      6-3.884D-02,-1.234D-02, 5.410D-02, 1.879D-02, 3.350D-03, 1.040D-03,
40826      1 2.948D+01,-3.902D+01, 1.464D+01,-3.335D+00, 5.054D-01,-5.915D-02,
40827      2 2.559D+01,-3.955D+01, 1.661D+01,-4.299D+00, 6.904D-01,-8.243D-02,
40828      3-1.663D+00, 1.176D+00, 1.118D+00,-7.099D-01, 1.948D-01,-2.404D-02,
40829      4-2.168D-01, 8.170D-01,-7.169D-01, 1.851D-01,-1.924D-02,-3.250D-03,
40830      5 2.088D-01,-4.355D-01, 2.239D-01,-2.446D-02,-3.620D-03, 1.910D-03,
40831      6-9.097D-02, 1.601D-01,-5.681D-02,-2.500D-03, 2.580D-03,-4.700D-04/
40832       DATA (((CEHLQ(IX,IT,NX,4,2),IX=1,6),IT=1,6),NX=1,2)/
40833      1 2.367D+00, 4.453D-01, 3.660D-01, 9.467D-02, 1.341D-01, 1.661D-02,
40834      2-3.170D+00,-1.795D+00, 3.313D-02,-2.874D-01,-9.827D-02,-7.119D-02,
40835      3 1.823D+00, 1.457D+00,-2.465D-01, 3.739D-02, 6.090D-03, 1.814D-02,
40836      4-1.033D+00,-9.827D-01, 2.136D-01, 1.169D-01, 5.001D-02, 1.684D-02,
40837      5 5.133D-01, 5.259D-01,-1.173D-01,-1.139D-01,-4.988D-02,-2.021D-02,
40838      6-2.881D-01,-3.145D-01, 5.667D-02, 9.161D-02, 4.568D-02, 1.951D-02,
40839      1 3.036D+01,-4.062D+01, 1.578D+01,-3.699D+00, 6.020D-01,-7.031D-02,
40840      2 2.700D+01,-4.167D+01, 1.770D+01,-4.804D+00, 7.862D-01,-1.060D-01,
40841      3-1.909D+00, 1.357D+00, 1.127D+00,-7.181D-01, 2.232D-01,-2.481D-02,
40842      4-2.488D-01, 9.781D-01,-8.127D-01, 2.094D-01,-2.997D-02,-4.710D-03,
40843      5 2.506D-01,-5.427D-01, 2.672D-01,-3.103D-02,-1.800D-03, 2.870D-03,
40844      6-1.128D-01, 2.087D-01,-6.972D-02,-2.480D-03, 2.630D-03,-8.400D-04/
40845 C...Expansion coefficients for strange sea quark distribution.
40846       DATA (((CEHLQ(IX,IT,NX,5,1),IX=1,6),IT=1,6),NX=1,2)/
40847      1 4.968D-02,-4.173D-02, 2.102D-02,-3.270D-03, 3.240D-03,-6.700D-04,
40848      2-6.150D-03,-1.294D-02, 6.740D-03,-6.890D-03, 9.000D-04,-1.510D-03,
40849      3-8.580D-03, 5.050D-03,-4.900D-03,-1.600D-04,-9.400D-04,-1.500D-04,
40850      4 7.840D-03, 1.510D-03, 2.220D-03, 1.400D-03, 7.000D-04, 3.500D-04,
40851      5-4.410D-03,-2.220D-03,-8.900D-04,-8.500D-04,-3.600D-04,-2.000D-04,
40852      6 2.520D-03, 1.840D-03, 4.100D-04, 3.900D-04, 1.600D-04, 9.000D-05,
40853      1 9.235D-01,-1.085D+00, 3.464D-01,-7.210D-02, 9.140D-03,-9.100D-04,
40854      2 9.315D-01,-1.274D+00, 4.512D-01,-9.775D-02, 1.380D-02,-1.310D-03,
40855      3 4.739D-02,-1.296D-01, 8.482D-02,-2.642D-02, 4.760D-03,-5.700D-04,
40856      4-2.653D-02, 4.953D-02,-1.735D-02, 1.750D-03, 2.800D-04,-6.000D-05,
40857      5 6.940D-03,-1.132D-02, 1.480D-03, 6.500D-04,-2.100D-04, 0.000D+00,
40858      6-1.680D-03, 2.340D-03, 4.200D-04,-3.400D-04, 5.000D-05, 1.000D-05/
40859       DATA (((CEHLQ(IX,IT,NX,5,2),IX=1,6),IT=1,6),NX=1,2)/
40860      1 6.478D-02,-4.537D-02, 1.643D-02,-3.490D-03, 2.710D-03,-6.700D-04,
40861      2-2.223D-02,-2.126D-02, 1.247D-02,-6.290D-03, 1.120D-03,-1.440D-03,
40862      3-1.340D-03, 1.362D-02,-6.130D-03,-7.900D-04,-9.000D-04,-2.000D-04,
40863      4 5.080D-03,-3.610D-03, 1.700D-03, 1.830D-03, 6.800D-04, 4.000D-04,
40864      5-3.580D-03, 6.000D-05,-2.600D-04,-1.050D-03,-3.800D-04,-2.300D-04,
40865      6 2.420D-03, 9.300D-04,-1.000D-04, 4.500D-04, 1.700D-04, 1.100D-04,
40866      1 9.868D-01,-1.171D+00, 3.940D-01,-8.459D-02, 1.124D-02,-1.250D-03,
40867      2 1.001D+00,-1.383D+00, 5.044D-01,-1.152D-01, 1.658D-02,-1.830D-03,
40868      3 4.928D-02,-1.368D-01, 9.021D-02,-2.935D-02, 5.800D-03,-6.600D-04,
40869      4-3.133D-02, 5.785D-02,-2.023D-02, 2.630D-03, 1.600D-04,-8.000D-05,
40870      5 8.840D-03,-1.416D-02, 1.900D-03, 5.800D-04,-2.500D-04, 1.000D-05,
40871      6-2.300D-03, 3.080D-03, 5.500D-04,-3.700D-04, 7.000D-05, 1.000D-05/
40872 C...Expansion coefficients for charm sea quark distribution.
40873       DATA (((CEHLQ(IX,IT,NX,6,1),IX=1,6),IT=1,6),NX=1,2)/
40874      1 9.270D-03,-1.817D-02, 9.590D-03,-6.390D-03, 1.690D-03,-1.540D-03,
40875      2 5.710D-03,-1.188D-02, 6.090D-03,-4.650D-03, 1.240D-03,-1.310D-03,
40876      3-3.960D-03, 7.100D-03,-3.590D-03, 1.840D-03,-3.900D-04, 3.400D-04,
40877      4 1.120D-03,-1.960D-03, 1.120D-03,-4.800D-04, 1.000D-04,-4.000D-05,
40878      5 4.000D-05,-3.000D-05,-1.800D-04, 9.000D-05,-5.000D-05,-2.000D-05,
40879      6-4.200D-04, 7.300D-04,-1.600D-04, 5.000D-05, 5.000D-05, 5.000D-05,
40880      1 8.098D-01,-1.042D+00, 3.398D-01,-6.824D-02, 8.760D-03,-9.000D-04,
40881      2 8.961D-01,-1.217D+00, 4.339D-01,-9.287D-02, 1.304D-02,-1.290D-03,
40882      3 3.058D-02,-1.040D-01, 7.604D-02,-2.415D-02, 4.600D-03,-5.000D-04,
40883      4-2.451D-02, 4.432D-02,-1.651D-02, 1.430D-03, 1.200D-04,-1.000D-04,
40884      5 1.122D-02,-1.457D-02, 2.680D-03, 5.800D-04,-1.200D-04, 3.000D-05,
40885      6-7.730D-03, 7.330D-03,-7.600D-04,-2.400D-04, 1.000D-05, 0.000D+00/
40886       DATA (((CEHLQ(IX,IT,NX,6,2),IX=1,6),IT=1,6),NX=1,2)/
40887      1 9.980D-03,-1.945D-02, 1.055D-02,-6.870D-03, 1.860D-03,-1.560D-03,
40888      2 5.700D-03,-1.203D-02, 6.250D-03,-4.860D-03, 1.310D-03,-1.370D-03,
40889      3-4.490D-03, 7.990D-03,-4.170D-03, 2.050D-03,-4.400D-04, 3.300D-04,
40890      4 1.470D-03,-2.480D-03, 1.460D-03,-5.700D-04, 1.200D-04,-1.000D-05,
40891      5-9.000D-05, 1.500D-04,-3.200D-04, 1.200D-04,-6.000D-05,-4.000D-05,
40892      6-4.200D-04, 7.600D-04,-1.400D-04, 4.000D-05, 7.000D-05, 5.000D-05,
40893      1 8.698D-01,-1.131D+00, 3.836D-01,-8.111D-02, 1.048D-02,-1.300D-03,
40894      2 9.626D-01,-1.321D+00, 4.854D-01,-1.091D-01, 1.583D-02,-1.700D-03,
40895      3 3.057D-02,-1.088D-01, 8.022D-02,-2.676D-02, 5.590D-03,-5.600D-04,
40896      4-2.845D-02, 5.164D-02,-1.918D-02, 2.210D-03,-4.000D-05,-1.500D-04,
40897      5 1.311D-02,-1.751D-02, 3.310D-03, 5.100D-04,-1.200D-04, 5.000D-05,
40898      6-8.590D-03, 8.380D-03,-9.200D-04,-2.600D-04, 1.000D-05,-1.000D-05/
40899 C...Expansion coefficients for bottom sea quark distribution.
40900       DATA (((CEHLQ(IX,IT,NX,7,1),IX=1,6),IT=1,6),NX=1,2)/
40901      1 9.010D-03,-1.401D-02, 7.150D-03,-4.130D-03, 1.260D-03,-1.040D-03,
40902      2 6.280D-03,-9.320D-03, 4.780D-03,-2.890D-03, 9.100D-04,-8.200D-04,
40903      3-2.930D-03, 4.090D-03,-1.890D-03, 7.600D-04,-2.300D-04, 1.400D-04,
40904      4 3.900D-04,-1.200D-03, 4.400D-04,-2.500D-04, 2.000D-05,-2.000D-05,
40905      5 2.600D-04, 1.400D-04,-8.000D-05, 1.000D-04, 1.000D-05, 1.000D-05,
40906      6-2.600D-04, 3.200D-04, 1.000D-05,-1.000D-05, 1.000D-05,-1.000D-05,
40907      1 8.029D-01,-1.075D+00, 3.792D-01,-7.843D-02, 1.007D-02,-1.090D-03,
40908      2 7.903D-01,-1.099D+00, 4.153D-01,-9.301D-02, 1.317D-02,-1.410D-03,
40909      3-1.704D-02,-1.130D-02, 2.882D-02,-1.341D-02, 3.040D-03,-3.600D-04,
40910      4-7.200D-04, 7.230D-03,-5.160D-03, 1.080D-03,-5.000D-05,-4.000D-05,
40911      5 3.050D-03,-4.610D-03, 1.660D-03,-1.300D-04,-1.000D-05, 1.000D-05,
40912      6-4.360D-03, 5.230D-03,-1.610D-03, 2.000D-04,-2.000D-05, 0.000D+00/
40913       DATA (((CEHLQ(IX,IT,NX,7,2),IX=1,6),IT=1,6),NX=1,2)/
40914      1 8.980D-03,-1.459D-02, 7.510D-03,-4.410D-03, 1.310D-03,-1.070D-03,
40915      2 5.970D-03,-9.440D-03, 4.800D-03,-3.020D-03, 9.100D-04,-8.500D-04,
40916      3-3.050D-03, 4.440D-03,-2.100D-03, 8.500D-04,-2.400D-04, 1.400D-04,
40917      4 5.300D-04,-1.300D-03, 5.600D-04,-2.700D-04, 3.000D-05,-2.000D-05,
40918      5 2.000D-04, 1.400D-04,-1.100D-04, 1.000D-04, 0.000D+00, 0.000D+00,
40919      6-2.600D-04, 3.200D-04, 0.000D+00,-3.000D-05, 1.000D-05,-1.000D-05,
40920      1 8.672D-01,-1.174D+00, 4.265D-01,-9.252D-02, 1.244D-02,-1.460D-03,
40921      2 8.500D-01,-1.194D+00, 4.630D-01,-1.083D-01, 1.614D-02,-1.830D-03,
40922      3-2.241D-02,-5.630D-03, 2.815D-02,-1.425D-02, 3.520D-03,-4.300D-04,
40923      4-7.300D-04, 8.030D-03,-5.780D-03, 1.380D-03,-1.300D-04,-4.000D-05,
40924      5 3.460D-03,-5.380D-03, 1.960D-03,-2.100D-04, 1.000D-05, 1.000D-05,
40925      6-4.850D-03, 5.950D-03,-1.890D-03, 2.600D-04,-3.000D-05, 0.000D+00/
40926 C...Expansion coefficients for top sea quark distribution.
40927       DATA (((CEHLQ(IX,IT,NX,8,1),IX=1,6),IT=1,6),NX=1,2)/
40928      1 4.410D-03,-7.480D-03, 3.770D-03,-2.580D-03, 7.300D-04,-7.100D-04,
40929      2 3.840D-03,-6.050D-03, 3.030D-03,-2.030D-03, 5.800D-04,-5.900D-04,
40930      3-8.800D-04, 1.660D-03,-7.500D-04, 4.700D-04,-1.000D-04, 1.000D-04,
40931      4-8.000D-05,-1.500D-04, 1.200D-04,-9.000D-05, 3.000D-05, 0.000D+00,
40932      5 1.300D-04,-2.200D-04,-2.000D-05,-2.000D-05,-2.000D-05,-2.000D-05,
40933      6-7.000D-05, 1.900D-04,-4.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
40934      1 6.623D-01,-9.248D-01, 3.519D-01,-7.930D-02, 1.110D-02,-1.180D-03,
40935      2 6.380D-01,-9.062D-01, 3.582D-01,-8.479D-02, 1.265D-02,-1.390D-03,
40936      3-2.581D-02, 2.125D-02, 4.190D-03,-4.980D-03, 1.490D-03,-2.100D-04,
40937      4 7.100D-04, 5.300D-04,-1.270D-03, 3.900D-04,-5.000D-05,-1.000D-05,
40938      5 3.850D-03,-5.060D-03, 1.860D-03,-3.500D-04, 4.000D-05, 0.000D+00,
40939      6-3.530D-03, 4.460D-03,-1.500D-03, 2.700D-04,-3.000D-05, 0.000D+00/
40940       DATA (((CEHLQ(IX,IT,NX,8,2),IX=1,6),IT=1,6),NX=1,2)/
40941      1 4.260D-03,-7.530D-03, 3.830D-03,-2.680D-03, 7.600D-04,-7.300D-04,
40942      2 3.640D-03,-6.050D-03, 3.030D-03,-2.090D-03, 5.900D-04,-6.000D-04,
40943      3-9.200D-04, 1.710D-03,-8.200D-04, 5.000D-04,-1.200D-04, 1.000D-04,
40944      4-5.000D-05,-1.600D-04, 1.300D-04,-9.000D-05, 3.000D-05, 0.000D+00,
40945      5 1.300D-04,-2.100D-04,-1.000D-05,-2.000D-05,-2.000D-05,-1.000D-05,
40946      6-8.000D-05, 1.800D-04,-5.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
40947      1 7.146D-01,-1.007D+00, 3.932D-01,-9.246D-02, 1.366D-02,-1.540D-03,
40948      2 6.856D-01,-9.828D-01, 3.977D-01,-9.795D-02, 1.540D-02,-1.790D-03,
40949      3-3.053D-02, 2.758D-02, 2.150D-03,-4.880D-03, 1.640D-03,-2.500D-04,
40950      4 9.200D-04, 4.200D-04,-1.340D-03, 4.600D-04,-8.000D-05,-1.000D-05,
40951      5 4.230D-03,-5.660D-03, 2.140D-03,-4.300D-04, 6.000D-05, 0.000D+00,
40952      6-3.890D-03, 5.000D-03,-1.740D-03, 3.300D-04,-4.000D-05, 0.000D+00/
40953  
40954 C...The following data lines are coefficients needed in the
40955 C...Duke, Owens proton structure function parametrizations, see below.
40956 C...Expansion coefficients for (up+down) valence quark distribution.
40957       DATA ((CDO(IP,IS,1,1),IS=1,6),IP=1,3)/
40958      1 4.190D-01, 3.460D+00, 4.400D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40959      2 4.000D-03, 7.240D-01,-4.860D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40960      3-7.000D-03,-6.600D-02, 1.330D+00, 0.000D+00, 0.000D+00, 0.000D+00/
40961       DATA ((CDO(IP,IS,1,2),IS=1,6),IP=1,3)/
40962      1 3.740D-01, 3.330D+00, 6.030D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40963      2 1.400D-02, 7.530D-01,-6.220D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40964      3 0.000D+00,-7.600D-02, 1.560D+00, 0.000D+00, 0.000D+00, 0.000D+00/
40965 C...Expansion coefficients for down valence quark distribution.
40966       DATA ((CDO(IP,IS,2,1),IS=1,6),IP=1,3)/
40967      1 7.630D-01, 4.000D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40968      2-2.370D-01, 6.270D-01,-4.210D-01, 0.000D+00, 0.000D+00, 0.000D+00,
40969      3 2.600D-02,-1.900D-02, 3.300D-02, 0.000D+00, 0.000D+00, 0.000D+00/
40970       DATA ((CDO(IP,IS,2,2),IS=1,6),IP=1,3)/
40971      1 7.610D-01, 3.830D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40972      2-2.320D-01, 6.270D-01,-4.180D-01, 0.000D+00, 0.000D+00, 0.000D+00,
40973      3 2.300D-02,-1.900D-02, 3.600D-02, 0.000D+00, 0.000D+00, 0.000D+00/
40974 C...Expansion coefficients for (up+down+strange) sea quark distribution.
40975       DATA ((CDO(IP,IS,3,1),IS=1,6),IP=1,3)/
40976      1 1.265D+00, 0.000D+00, 8.050D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40977      2-1.132D+00,-3.720D-01, 1.590D+00, 6.310D+00,-1.050D+01, 1.470D+01,
40978      3 2.930D-01,-2.900D-02,-1.530D-01,-2.730D-01,-3.170D+00, 9.800D+00/
40979       DATA ((CDO(IP,IS,3,2),IS=1,6),IP=1,3)/
40980      1 1.670D+00, 0.000D+00, 9.150D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40981      2-1.920D+00,-2.730D-01, 5.300D-01, 1.570D+01,-1.010D+02, 2.230D+02,
40982      3 5.820D-01,-1.640D-01,-7.630D-01,-2.830D+00, 4.470D+01,-1.170D+02/
40983 C...Expansion coefficients for charm sea quark distribution.
40984       DATA ((CDO(IP,IS,4,1),IS=1,6),IP=1,3)/
40985      1 0.000D+00,-3.600D-02, 6.350D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40986      2 1.350D-01,-2.220D-01, 3.260D+00,-3.030D+00, 1.740D+01,-1.790D+01,
40987      3-7.500D-02,-5.800D-02,-9.090D-01, 1.500D+00,-1.130D+01, 1.560D+01/
40988        DATA ((CDO(IP,IS,4,2),IS=1,6),IP=1,3)/
40989      1 0.000D+00,-1.200D-01, 3.510D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40990      2 6.700D-02,-2.330D-01, 3.660D+00,-4.740D-01, 9.500D+00,-1.660D+01,
40991      3-3.100D-02,-2.300D-02,-4.530D-01, 3.580D-01,-5.430D+00, 1.550D+01/
40992 C...Expansion coefficients for gluon distribution.
40993       DATA ((CDO(IP,IS,5,1),IS=1,6),IP=1,3)/
40994      1 1.560D+00, 0.000D+00, 6.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
40995      2-1.710D+00,-9.490D-01, 1.440D+00,-7.190D+00,-1.650D+01, 1.530D+01,
40996      3 6.380D-01, 3.250D-01,-1.050D+00, 2.550D-01, 1.090D+01,-1.010D+01/
40997       DATA ((CDO(IP,IS,5,2),IS=1,6),IP=1,3)/
40998      1 8.790D-01, 0.000D+00, 4.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
40999      2-9.710D-01,-1.160D+00, 1.230D+00,-5.640D+00,-7.540D+00,-5.960D-01,
41000      3 4.340D-01, 4.760D-01,-2.540D-01,-8.170D-01, 5.500D+00, 1.260D-01/
41001  
41002 C...Euler's beta function, requires ordinary Gamma function
41003       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
41004  
41005 C...Leading order proton parton distributions from Glueck, Reya and
41006 C...Vogt. Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
41007 C...10^-5 < x < 1.
41008       IF(MSTP(51).EQ.11) THEN
41009  
41010 C...Determine s expansion variable and some x expressions.
41011         Q2IN=MIN(1D8,MAX(0.25D0,Q2))
41012         SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
41013         SD2=SD**2
41014         XL=-LOG(X)
41015         XS=SQRT(X)
41016  
41017 C...Evaluate valence, gluon and sea distributions.
41018         XFVUD=(0.663D0+0.191D0*SD-0.041D0*SD2+0.031D0*SD**3)*
41019      &  X**0.326D0*(1D0+(-1.97D0+6.74D0*SD-1.96D0*SD2)*XS+
41020      &  (24.4D0-20.7D0*SD+4.08D0*SD2)*X)*
41021      &  (1D0-X)**(2.86D0+0.70D0*SD-0.02D0*SD2)
41022         XFVDD=(0.579D0+0.283D0*SD+0.047D0*SD2)*X**(0.523D0-0.015D0*SD)*
41023      &  (1D0+(2.22D0-0.59D0*SD-0.27D0*SD2)*XS+(5.95D0-6.19D0*SD+
41024      &  1.55D0*SD2)*X)*(1D0-X)**(3.57D0+0.94D0*SD-0.16D0*SD2)
41025         XFGLU=(X**(1.00D0-0.17D0*SD)*((4.879D0*SD-1.383D0*SD2)+
41026      &  (25.92D0-28.97D0*SD+5.596D0*SD2)*X+(-25.69D0+23.68D0*SD-
41027      &  1.975D0*SD2)*X**2)+SD**0.558D0*EXP(-(0.595D0+2.138D0*SD)+
41028      &  SQRT(4.066D0*SD**1.218D0*XL)))*
41029      &  (1D0-X)**(2.537D0+1.718D0*SD+0.353D0*SD2)
41030         XFSEA=(X**(0.412D0-0.171D0*SD)*(0.363D0-1.196D0*X+(1.029D0+
41031      &  1.785D0*SD-0.459D0*SD2)*X**2)*XL**(0.566D0-0.496D0*SD)+
41032      &  SD**1.396D0*EXP(-(3.838D0+1.944D0*SD)+SQRT(2.845D0*SD**1.331D0*
41033      &  XL)))*(1D0-X)**(4.696D0+2.109D0*SD)
41034         XFSTR=SD**0.803D0*(1D0+(-3.055D0+1.024D0*SD**0.67D0)*XS+
41035      &  (27.4D0-20.0D0*SD**0.154D0)*X)*(1D0-X)**6.22D0*
41036      &  EXP(-(4.33D0+1.408D0*SD)+SQRT((8.27D0-0.437D0*SD)*
41037      &  SD**0.563D0*XL))/XL**(2.082D0-0.577D0*SD)
41038         IF(SD.LE.0.888D0) THEN
41039           XFCHM=0D0
41040         ELSE
41041           XFCHM=(SD-0.888D0)**1.01D0*(1.+(4.24D0-0.804D0*SD)*X)*
41042      &    (1D0-X)**(3.46D0+1.076D0*SD)*EXP(-(4.61D0+1.49D0*SD)+
41043      &    SQRT((2.555D0+1.961D0*SD)*SD**0.37D0*XL))
41044         ENDIF
41045         IF(SD.LE.1.351D0) THEN
41046           XFBOT=0D0
41047         ELSE
41048           XFBOT=(SD-1.351D0)*(1D0+1.848D0*X)*(1D0-X)**(2.929D0+
41049      &    1.396D0*SD)*EXP(-(4.71D0+1.514D0*SD)+
41050      &    SQRT((4.02D0+1.239D0*SD)*SD**0.51D0*XL))
41051         ENDIF
41052  
41053 C...Put into output array.
41054         XPPR(0)=XFGLU
41055         XPPR(1)=XFVDD+XFSEA
41056         XPPR(2)=XFVUD-XFVDD+XFSEA
41057         XPPR(3)=XFSTR
41058         XPPR(4)=XFCHM
41059         XPPR(5)=XFBOT
41060         XPPR(-1)=XFSEA
41061         XPPR(-2)=XFSEA
41062         XPPR(-3)=XFSTR
41063         XPPR(-4)=XFCHM
41064         XPPR(-5)=XFBOT
41065  
41066 C...Proton parton distributions from Eichten, Hinchliffe, Lane, Quigg.
41067 C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1
41068       ELSEIF(MSTP(51).EQ.12.OR.MSTP(51).EQ.13) THEN
41069  
41070 C...Determine set, Lambda and x and t expansion variables.
41071         NSET=MSTP(51)-11
41072         IF(NSET.EQ.1) ALAM=0.2D0
41073         IF(NSET.EQ.2) ALAM=0.29D0
41074         TMIN=LOG(5D0/ALAM**2)
41075         TMAX=LOG(1D8/ALAM**2)
41076         T=LOG(MAX(1D0,Q2/ALAM**2))
41077         VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41078         NX=1
41079         IF(X.LE.0.1D0) NX=2
41080         IF(NX.EQ.1) VX=(2D0*X-1.1D0)/0.9D0
41081         IF(NX.EQ.2) VX=MAX(-1D0,(2D0*LOG(X)+11.51293D0)/6.90776D0)
41082  
41083 C...Chebyshev polynomials for x and t expansion.
41084         TX(1)=1D0
41085         TX(2)=VX
41086         TX(3)=2D0*VX**2-1D0
41087         TX(4)=4D0*VX**3-3D0*VX
41088         TX(5)=8D0*VX**4-8D0*VX**2+1D0
41089         TX(6)=16D0*VX**5-20D0*VX**3+5D0*VX
41090         TT(1)=1D0
41091         TT(2)=VT
41092         TT(3)=2D0*VT**2-1D0
41093         TT(4)=4D0*VT**3-3D0*VT
41094         TT(5)=8D0*VT**4-8D0*VT**2+1D0
41095         TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41096  
41097 C...Calculate structure functions.
41098         DO 120 KFL=1,6
41099           XQSUM=0D0
41100           DO 110 IT=1,6
41101             DO 100 IX=1,6
41102               XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL,NSET)*TX(IX)*TT(IT)
41103   100       CONTINUE
41104   110     CONTINUE
41105           XQ(KFL)=XQSUM*(1D0-X)**NEHLQ(KFL,NSET)
41106   120   CONTINUE
41107  
41108 C...Put into output array.
41109         XPPR(0)=XQ(4)
41110         XPPR(1)=XQ(2)+XQ(3)
41111         XPPR(2)=XQ(1)+XQ(3)
41112         XPPR(3)=XQ(5)
41113         XPPR(4)=XQ(6)
41114         XPPR(-1)=XQ(3)
41115         XPPR(-2)=XQ(3)
41116         XPPR(-3)=XQ(5)
41117         XPPR(-4)=XQ(6)
41118  
41119 C...Special expansion for bottom (threshold effects).
41120         IF(MSTP(58).GE.5) THEN
41121           IF(NSET.EQ.1) TMIN=8.1905D0
41122           IF(NSET.EQ.2) TMIN=7.4474D0
41123           IF(T.GT.TMIN) THEN
41124             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41125             TT(1)=1D0
41126             TT(2)=VT
41127             TT(3)=2D0*VT**2-1D0
41128             TT(4)=4D0*VT**3-3D0*VT
41129             TT(5)=8D0*VT**4-8D0*VT**2+1D0
41130             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41131             XQSUM=0D0
41132             DO 140 IT=1,6
41133               DO 130 IX=1,6
41134                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,7,NSET)*TX(IX)*TT(IT)
41135   130         CONTINUE
41136   140       CONTINUE
41137             XPPR(5)=XQSUM*(1D0-X)**NEHLQ(7,NSET)
41138             XPPR(-5)=XPPR(5)
41139           ENDIF
41140         ENDIF
41141  
41142 C...Special expansion for top (threshold effects).
41143         IF(MSTP(58).GE.6) THEN
41144           IF(NSET.EQ.1) TMIN=11.5528D0
41145           IF(NSET.EQ.2) TMIN=10.8097D0
41146           TMIN=TMIN+2D0*LOG(PMAS(6,1)/30D0)
41147           TMAX=TMAX+2D0*LOG(PMAS(6,1)/30D0)
41148           IF(T.GT.TMIN) THEN
41149             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41150             TT(1)=1D0
41151             TT(2)=VT
41152             TT(3)=2D0*VT**2-1D0
41153             TT(4)=4D0*VT**3-3D0*VT
41154             TT(5)=8D0*VT**4-8D0*VT**2+1D0
41155             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41156             XQSUM=0D0
41157             DO 160 IT=1,6
41158               DO 150 IX=1,6
41159                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,8,NSET)*TX(IX)*TT(IT)
41160   150         CONTINUE
41161   160       CONTINUE
41162             XPPR(6)=XQSUM*(1D0-X)**NEHLQ(8,NSET)
41163             XPPR(-6)=XPPR(6)
41164           ENDIF
41165         ENDIF
41166  
41167 C...Proton parton distributions from Duke, Owens.
41168 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 1E6 GeV^2.
41169       ELSEIF(MSTP(51).EQ.14.OR.MSTP(51).EQ.15) THEN
41170  
41171 C...Determine set, Lambda and s expansion parameter.
41172         NSET=MSTP(51)-13
41173         IF(NSET.EQ.1) ALAM=0.2D0
41174         IF(NSET.EQ.2) ALAM=0.4D0
41175         Q2IN=MIN(1D6,MAX(4D0,Q2))
41176         SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
41177  
41178 C...Calculate structure functions.
41179         DO 180 KFL=1,5
41180           DO 170 IS=1,6
41181             TS(IS)=CDO(1,IS,KFL,NSET)+CDO(2,IS,KFL,NSET)*SD+
41182      &      CDO(3,IS,KFL,NSET)*SD**2
41183   170     CONTINUE
41184           IF(KFL.LE.2) THEN
41185             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)*(1D0+TS(3)*X)/(EULBET(TS(1),
41186      &      TS(2)+1D0)*(1D0+TS(3)*TS(1)/(TS(1)+TS(2)+1D0)))
41187           ELSE
41188             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
41189      &      TS(5)*X**2+TS(6)*X**3)
41190           ENDIF
41191   180   CONTINUE
41192  
41193 C...Put into output arrays.
41194         XPPR(0)=XQ(5)
41195         XPPR(1)=XQ(2)+XQ(3)/6D0
41196         XPPR(2)=3D0*XQ(1)-XQ(2)+XQ(3)/6D0
41197         XPPR(3)=XQ(3)/6D0
41198         XPPR(4)=XQ(4)
41199         XPPR(-1)=XQ(3)/6D0
41200         XPPR(-2)=XQ(3)/6D0
41201         XPPR(-3)=XQ(3)/6D0
41202         XPPR(-4)=XQ(4)
41203  
41204       ENDIF
41205  
41206       RETURN
41207       END
41208  
41209 C*********************************************************************
41210  
41211 C...PYHFTH
41212 C...Gives threshold attractive/repulsive factor for heavy flavour
41213 C...production.
41214  
41215       FUNCTION PYHFTH(SH,SQM,FRATT)
41216  
41217 C...Double precision and integer declarations.
41218       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41219       IMPLICIT INTEGER(I-N)
41220       INTEGER PYK,PYCHGE,PYCOMP
41221 C...Commonblocks.
41222       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41223       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41224       COMMON/PYINT1/MINT(400),VINT(400)
41225       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
41226  
41227 C...Value for alpha_strong.
41228       IF(MSTP(35).LE.1) THEN
41229         ALSSG=PARP(35)
41230       ELSE
41231         MST115=MSTU(115)
41232         MSTU(115)=MSTP(36)
41233         Q2BN=SQRT(MAX(1D0,SQM*((SQRT(SH)-2D0*SQRT(SQM))**2+
41234      &  PARP(36)**2)))
41235         ALSSG=PYALPS(Q2BN)
41236         MSTU(115)=MST115
41237       ENDIF
41238  
41239 C...Evaluate attractive and repulsive factors.
41240       XATTR=4D0*PARU(1)*ALSSG/(3D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
41241       FATTR=XATTR/(1D0-EXP(-MIN(50D0,XATTR)))
41242       XREPU=PARU(1)*ALSSG/(6D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
41243       FREPU=XREPU/(EXP(MIN(50D0,XREPU))-1D0)
41244       PYHFTH=FRATT*FATTR+(1D0-FRATT)*FREPU
41245       VINT(138)=PYHFTH
41246  
41247       RETURN
41248       END
41249  
41250 C*********************************************************************
41251  
41252 C...PYSPLI
41253 C...Splits a hadron remnant into two (partons or hadron + parton)
41254 C...in case it is more complicated than just a quark or a diquark.
41255  
41256       SUBROUTINE PYSPLI(KF,KFLIN,KFLCH,KFLSP)
41257  
41258 C...Double precision and integer declarations.
41259       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41260       IMPLICIT INTEGER(I-N)
41261       INTEGER PYK,PYCHGE,PYCOMP
41262 C...Commonblocks. PYDAT1 temporary
41263       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41264       COMMON/PYINT1/MINT(400),VINT(400)
41265       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41266       SAVE /PYPARS/,/PYINT1/,/PYDAT1/
41267 C...Local array.
41268       DIMENSION KFL(3)
41269  
41270 C...Preliminaries. Parton composition.
41271       KFA=IABS(KF)
41272       KFS=ISIGN(1,KF)
41273       KFL(1)=MOD(KFA/1000,10)
41274       KFL(2)=MOD(KFA/100,10)
41275       KFL(3)=MOD(KFA/10,10)
41276       IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
41277         KFL(2)=INT(1.5D0+PYR(0))
41278         IF(MINT(105).EQ.333) KFL(2)=3
41279         IF(MINT(105).EQ.443) KFL(2)=4
41280         KFL(3)=KFL(2)
41281       ELSEIF((KFA.EQ.111.OR.KFA.EQ.113).AND.PYR(0).GT.0.5D0) THEN
41282         KFL(2)=2
41283         KFL(3)=2
41284       ELSEIF(KFA.EQ.223.AND.PYR(0).GT.0.5D0) THEN
41285         KFL(2)=1
41286         KFL(3)=1
41287       ELSEIF((KFA.EQ.130.OR.KFA.EQ.310).AND.PYR(0).GT.0.5D0) THEN
41288         KFL(2)=MOD(KFA/10,10)
41289         KFL(3)=MOD(KFA/100,10)
41290       ENDIF
41291       IF(KFLIN.NE.21.AND.KFLIN.NE.22.AND.KFLIN.NE.23) THEN
41292         KFLR=KFLIN*KFS
41293       ELSE
41294         KFLR=KFLIN
41295       ENDIF
41296       KFLCH=0
41297  
41298 C...Subdivide lepton.
41299       IF(KFA.GE.11.AND.KFA.LE.18) THEN
41300         IF(KFLR.EQ.KFA) THEN
41301           KFLSP=KFS*22
41302         ELSEIF(KFLR.EQ.22) THEN
41303           KFLSP=KFA
41304         ELSEIF(KFLR.EQ.-24.AND.MOD(KFA,2).EQ.1) THEN
41305           KFLSP=KFA+1
41306         ELSEIF(KFLR.EQ.24.AND.MOD(KFA,2).EQ.0) THEN
41307           KFLSP=KFA-1
41308         ELSEIF(KFLR.EQ.21) THEN
41309           KFLSP=KFA
41310           KFLCH=KFS*21
41311         ELSE
41312           KFLSP=KFA
41313           KFLCH=-KFLR
41314         ENDIF
41315  
41316 C...Subdivide photon.
41317       ELSEIF(KFA.EQ.22.AND.MINT(109).NE.2) THEN
41318         IF(KFLR.NE.21) THEN
41319           KFLSP=-KFLR
41320         ELSE
41321           RAGR=0.75D0*PYR(0)
41322           KFLSP=1
41323           IF(RAGR.GT.0.125D0) KFLSP=2
41324           IF(RAGR.GT.0.625D0) KFLSP=3
41325           IF(PYR(0).GT.0.5D0) KFLSP=-KFLSP
41326           KFLCH=-KFLSP
41327         ENDIF
41328  
41329 C...Subdivide Reggeon or Pomeron.
41330       ELSEIF(KFA.EQ.110.OR.KFA.EQ.990) THEN
41331         IF(KFLIN.EQ.21) THEN
41332           KFLSP=KFS*21
41333         ELSE
41334           KFLSP=-KFLIN
41335         ENDIF
41336  
41337 C...Subdivide meson.
41338       ELSEIF(KFL(1).EQ.0) THEN
41339         KFL(2)=KFL(2)*(-1)**KFL(2)
41340         KFL(3)=-KFL(3)*(-1)**IABS(KFL(2))
41341         IF(KFLR.EQ.KFL(2)) THEN
41342           KFLSP=KFL(3)
41343         ELSEIF(KFLR.EQ.KFL(3)) THEN
41344           KFLSP=KFL(2)
41345         ELSEIF(KFLR.EQ.21.AND.PYR(0).GT.0.5D0) THEN
41346           KFLSP=KFL(2)
41347           KFLCH=KFL(3)
41348         ELSEIF(KFLR.EQ.21) THEN
41349           KFLSP=KFL(3)
41350           KFLCH=KFL(2)
41351         ELSEIF(KFLR*KFL(2).GT.0) THEN
41352           NTRY=0
41353   100     NTRY=NTRY+1
41354           CALL PYKFDI(-KFLR,KFL(2),KFDUMP,KFLCH)
41355           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
41356             GOTO 100
41357           ELSEIF(KFLCH.EQ.0) THEN
41358             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
41359             MINT(51)=1
41360             RETURN
41361           ENDIF
41362           KFLSP=KFL(3)
41363         ELSE
41364           NTRY=0
41365   110     NTRY=NTRY+1
41366           CALL PYKFDI(-KFLR,KFL(3),KFDUMP,KFLCH)
41367           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
41368             GOTO 110
41369           ELSEIF(KFLCH.EQ.0) THEN
41370             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
41371             MINT(51)=1
41372             RETURN
41373           ENDIF
41374           KFLSP=KFL(2)
41375         ENDIF
41376
41377 C...Special case for extracting photon from baryon without splitting
41378 C...the latter. (Currently only used by external programs.)
41379       ELSEIF(KFLIN.EQ.22.AND.MSTP(98).EQ.1) then
41380         KFLSP=KFA
41381         KFLCH=0
41382  
41383 C...Subdivide baryon.
41384       ELSE
41385         NAGR=0
41386         DO 120 J=1,3
41387           IF(KFLR.EQ.KFL(J)) NAGR=NAGR+1
41388   120   CONTINUE
41389         IF(NAGR.GE.1) THEN
41390           RAGR=0.00001D0+(NAGR-0.00002D0)*PYR(0)
41391           IAGR=0
41392           DO 130 J=1,3
41393             IF(KFLR.EQ.KFL(J)) RAGR=RAGR-1D0
41394             IF(IAGR.EQ.0.AND.RAGR.LE.0D0) IAGR=J
41395   130     CONTINUE
41396         ELSE
41397           IAGR=1.00001D0+2.99998D0*PYR(0)
41398         ENDIF
41399         ID1=1
41400         IF(IAGR.EQ.1) ID1=2
41401         IF(IAGR.EQ.1.AND.KFL(3).GT.KFL(2)) ID1=3
41402         ID2=6-IAGR-ID1
41403         KSP=3
41404         IF(MOD(KFA,10).EQ.2.AND.KFL(1).EQ.KFL(2)) THEN
41405           IF(IAGR.NE.3.AND.PYR(0).GT.0.25D0) KSP=1
41406         ELSEIF(MOD(KFA,10).EQ.2.AND.KFL(2).GE.KFL(3)) THEN
41407           IF(IAGR.NE.1.AND.PYR(0).GT.0.25D0) KSP=1
41408         ELSEIF(MOD(KFA,10).EQ.2) THEN
41409           IF(IAGR.EQ.1) KSP=1
41410           IF(IAGR.NE.1.AND.PYR(0).GT.0.75D0) KSP=1
41411         ENDIF
41412         KFLSP=1000*KFL(ID1)+100*KFL(ID2)+KSP
41413         IF(KFLR.EQ.21) THEN
41414           KFLCH=KFL(IAGR)
41415         ELSEIF(NAGR.EQ.0.AND.KFLR.GT.0) THEN
41416           NTRY=0
41417   140     NTRY=NTRY+1
41418           CALL PYKFDI(-KFLR,KFL(IAGR),KFDUMP,KFLCH)
41419           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
41420             GOTO 140
41421           ELSEIF(KFLCH.EQ.0) THEN
41422             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
41423             MINT(51)=1
41424             RETURN
41425           ENDIF
41426         ELSEIF(NAGR.EQ.0) THEN
41427           NTRY=0
41428   150     NTRY=NTRY+1
41429           CALL PYKFDI(10000*KFL(ID1)+KFLSP,-KFLR,KFDUMP,KFLCH)
41430           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
41431             GOTO 150
41432           ELSEIF(KFLCH.EQ.0) THEN
41433             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
41434             MINT(51)=1
41435             RETURN
41436           ENDIF
41437           KFLSP=KFL(IAGR)
41438         ENDIF
41439       ENDIF
41440  
41441 C...Add on correct sign for result.
41442       KFLCH=KFLCH*KFS
41443       KFLSP=KFLSP*KFS
41444  
41445       RETURN
41446       END
41447  
41448 C*********************************************************************
41449  
41450 C...PYGAMM
41451 C...Gives ordinary Gamma function Gamma(x) for positive, real arguments;
41452 C...see M. Abramowitz, I. A. Stegun: Handbook of Mathematical Functions
41453 C...(Dover, 1965) 6.1.36.
41454  
41455       FUNCTION PYGAMM(X)
41456  
41457 C...Double precision and integer declarations.
41458       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41459       IMPLICIT INTEGER(I-N)
41460       INTEGER PYK,PYCHGE,PYCOMP
41461 C...Local array and data.
41462       DIMENSION B(8)
41463       DATA B/-0.577191652D0,0.988205891D0,-0.897056937D0,0.918206857D0,
41464      &-0.756704078D0,0.482199394D0,-0.193527818D0,0.035868343D0/
41465  
41466       NX=INT(X)
41467       DX=X-NX
41468  
41469       PYGAMM=1D0
41470       DXP=1D0
41471       DO 100 I=1,8
41472         DXP=DXP*DX
41473         PYGAMM=PYGAMM+B(I)*DXP
41474   100 CONTINUE
41475       IF(X.LT.1D0) THEN
41476         PYGAMM=PYGAMM/X
41477       ELSE
41478         DO 110 IX=1,NX-1
41479           PYGAMM=(X-IX)*PYGAMM
41480   110   CONTINUE
41481       ENDIF
41482  
41483       RETURN
41484       END
41485  
41486 C***********************************************************************
41487  
41488 C...PYWAUX
41489 C...Calculates real and imaginary parts of the auxiliary functions W1
41490 C...and W2; see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van
41491 C...der Bij, Nucl. Phys. B297 (1988) 221.
41492  
41493       SUBROUTINE PYWAUX(IAUX,EPS,WRE,WIM)
41494  
41495 C...Double precision and integer declarations.
41496       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41497       IMPLICIT INTEGER(I-N)
41498       INTEGER PYK,PYCHGE,PYCOMP
41499 C...Commonblocks.
41500       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41501       SAVE /PYDAT1/
41502  
41503       ASINH(X)=LOG(X+SQRT(X**2+1D0))
41504       ACOSH(X)=LOG(X+SQRT(X**2-1D0))
41505  
41506       IF(EPS.LT.0D0) THEN
41507         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ASINH(SQRT(-1D0/EPS))
41508         IF(IAUX.EQ.2) WRE=4D0*(ASINH(SQRT(-1D0/EPS)))**2
41509         WIM=0D0
41510       ELSEIF(EPS.LT.1D0) THEN
41511         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ACOSH(SQRT(1D0/EPS))
41512         IF(IAUX.EQ.2) WRE=4D0*(ACOSH(SQRT(1D0/EPS)))**2-PARU(1)**2
41513         IF(IAUX.EQ.1) WIM=-PARU(1)*SQRT(1D0-EPS)
41514         IF(IAUX.EQ.2) WIM=-4D0*PARU(1)*ACOSH(SQRT(1D0/EPS))
41515       ELSE
41516         IF(IAUX.EQ.1) WRE=2D0*SQRT(EPS-1D0)*ASIN(SQRT(1D0/EPS))
41517         IF(IAUX.EQ.2) WRE=-4D0*(ASIN(SQRT(1D0/EPS)))**2
41518         WIM=0D0
41519       ENDIF
41520  
41521       RETURN
41522       END
41523  
41524 C***********************************************************************
41525  
41526 C...PYI3AU
41527 C...Calculates real and imaginary parts of the auxiliary function I3;
41528 C...see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van der Bij,
41529 C...Nucl. Phys. B297 (1988) 221.
41530  
41531       SUBROUTINE PYI3AU(EPS,RAT,Y3RE,Y3IM)
41532  
41533 C...Double precision and integer declarations.
41534       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41535       IMPLICIT INTEGER(I-N)
41536       INTEGER PYK,PYCHGE,PYCOMP
41537 C...Commonblocks.
41538       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41539       SAVE /PYDAT1/
41540  
41541       BE=0.5D0*(1D0+SQRT(1D0+RAT*EPS))
41542       IF(EPS.LT.1D0) GA=0.5D0*(1D0+SQRT(1D0-EPS))
41543  
41544       IF(EPS.LT.0D0) THEN
41545         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
41546           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
41547      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
41548      &    PYSPEN(0.25D0*(RAT+1D0)*EPS/(1D0+0.25D0*RAT*EPS),0D0,1)-
41549      &    PYSPEN((RAT+1D0)/RAT,0D0,1)+0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-
41550      &    LOG(0.25D0*RAT*EPS)**2)+LOG(1D0-0.25D0*EPS)*
41551      &    LOG((1D0+0.25D0*(RAT-1D0)*EPS)/(1D0+0.25D0*RAT*EPS))+
41552      &    LOG(-0.25D0*EPS)*LOG(0.25D0*RAT*EPS/(1D0+0.25D0*(RAT-1D0)*
41553      &    EPS))
41554         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
41555           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
41556      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
41557      &    PYSPEN((BE-1D0+0.25D0*EPS)/BE,0D0,1)-
41558      &    PYSPEN((BE-1D0+0.25D0*EPS)/(BE-1D0),0D0,1)+
41559      &    0.5D0*(LOG(BE)**2-LOG(BE-1D0)**2)+
41560      &    LOG(1D0-0.25D0*EPS)*LOG((BE-0.25D0*EPS)/BE)+
41561      &    LOG(-0.25D0*EPS)*LOG((BE-1D0)/(BE-0.25D0*EPS))
41562         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
41563           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
41564      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
41565      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(1D0+0.25D0*RAT*EPS),0D0,1)-
41566      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(0.25D0*RAT*EPS),0D0,1)+
41567      &    0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-LOG(0.25D0*RAT*EPS)**2)+
41568      &    LOG(GA)*LOG((GA+0.25D0*RAT*EPS)/(1D0+0.25D0*RAT*EPS))+
41569      &    LOG(GA-1D0)*LOG(0.25D0*RAT*EPS/(GA+0.25D0*RAT*EPS))
41570         ELSE
41571           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
41572      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN((BE-GA)/BE,0D0,1)-
41573      &    PYSPEN((BE-GA)/(BE-1D0),0D0,1)+0.5D0*(LOG(BE)**2-
41574      &    LOG(BE-1D0)**2)+LOG(GA)*LOG((GA+BE-1D0)/BE)+
41575      &    LOG(GA-1D0)*LOG((BE-1D0)/(GA+BE-1D0))
41576         ENDIF
41577         F3IM=0D0
41578       ELSEIF(EPS.LT.1D0) THEN
41579         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
41580           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
41581      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
41582      &    PYSPEN((1D0-0.25D0*EPS)/(-0.25D0*(RAT+1D0)*EPS),0D0,1)-
41583      &    PYSPEN(1D0/(RAT+1D0),0D0,1)+LOG((1D0-0.25D0*EPS)/
41584      &    (0.25D0*EPS))*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
41585      &    (0.25D0*(RAT+1D0)*EPS))
41586           F3IM=-PARU(1)*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
41587      &    (0.25D0*(RAT+1D0)*EPS))
41588         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
41589           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
41590      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
41591      &    PYSPEN((1D0-0.25D0*EPS)/(1D0-0.25D0*EPS-BE),0D0,1)-
41592      &    PYSPEN(-0.25D0*EPS/(1D0-0.25D0*EPS-BE),0D0,1)+
41593      &    LOG((1D0-0.25D0*EPS)/(0.25D0*EPS))*
41594      &    LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
41595           F3IM=-PARU(1)*LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
41596         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
41597           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
41598      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
41599      &    PYSPEN(GA/(GA-1D0-0.25D0*RAT*EPS),0D0,1)-
41600      &    PYSPEN((GA-1D0)/(GA-1D0-0.25D0*RAT*EPS),0D0,1)+
41601      &    LOG(GA/(1D0-GA))*LOG((GA+0.25D0*RAT*EPS)/
41602      &    (1D0+0.25D0*RAT*EPS-GA))
41603           F3IM=-PARU(1)*LOG((GA+0.25D0*RAT*EPS)/
41604      &    (1D0+0.25D0*RAT*EPS-GA))
41605         ELSE
41606           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
41607      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN(GA/(GA-BE),0D0,1)-
41608      &    PYSPEN((GA-1D0)/(GA-BE),0D0,1)+LOG(GA/(1D0-GA))*
41609      &    LOG((GA+BE-1D0)/(BE-GA))
41610           F3IM=-PARU(1)*LOG((GA+BE-1D0)/(BE-GA))
41611         ENDIF
41612       ELSE
41613         RSQ=EPS/(EPS-1D0+(2D0*BE-1D0)**2)
41614         RCTHE=RSQ*(1D0-2D0*BE/EPS)
41615         RSTHE=SQRT(MAX(0D0,RSQ-RCTHE**2))
41616         RCPHI=RSQ*(1D0+2D0*(BE-1D0)/EPS)
41617         RSPHI=SQRT(MAX(0D0,RSQ-RCPHI**2))
41618         R=SQRT(RSQ)
41619         THE=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCTHE/R)))
41620         PHI=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCPHI/R)))
41621         F3RE=PYSPEN(RCTHE,RSTHE,1)+PYSPEN(RCTHE,-RSTHE,1)-
41622      &  PYSPEN(RCPHI,RSPHI,1)-PYSPEN(RCPHI,-RSPHI,1)+
41623      &  (PHI-THE)*(PHI+THE-PARU(1))
41624         F3IM=PYSPEN(RCTHE,RSTHE,2)+PYSPEN(RCTHE,-RSTHE,2)-
41625      &  PYSPEN(RCPHI,RSPHI,2)-PYSPEN(RCPHI,-RSPHI,2)
41626       ENDIF
41627  
41628       Y3RE=2D0/(2D0*BE-1D0)*F3RE
41629       Y3IM=2D0/(2D0*BE-1D0)*F3IM
41630  
41631       RETURN
41632       END
41633  
41634 C***********************************************************************
41635  
41636 C...PYSPEN
41637 C...Calculates real and imaginary part of Spence function; see
41638 C...G. 't Hooft and M. Veltman, Nucl. Phys. B153 (1979) 365.
41639  
41640       FUNCTION PYSPEN(XREIN,XIMIN,IREIM)
41641  
41642 C...Double precision and integer declarations.
41643       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41644       IMPLICIT INTEGER(I-N)
41645       INTEGER PYK,PYCHGE,PYCOMP
41646 C...Commonblocks.
41647       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41648       SAVE /PYDAT1/
41649 C...Local array and data.
41650       DIMENSION B(0:14)
41651       DATA B/
41652      &1.000000D+00,        -5.000000D-01,         1.666667D-01,
41653      &0.000000D+00,        -3.333333D-02,         0.000000D+00,
41654      &2.380952D-02,         0.000000D+00,        -3.333333D-02,
41655      &0.000000D+00,         7.575757D-02,         0.000000D+00,
41656      &-2.531135D-01,         0.000000D+00,         1.166667D+00/
41657  
41658       XRE=XREIN
41659       XIM=XIMIN
41660       IF(ABS(1D0-XRE).LT.1D-6.AND.ABS(XIM).LT.1D-6) THEN
41661         IF(IREIM.EQ.1) PYSPEN=PARU(1)**2/6D0
41662         IF(IREIM.EQ.2) PYSPEN=0D0
41663         RETURN
41664       ENDIF
41665  
41666       XMOD=SQRT(XRE**2+XIM**2)
41667       IF(XMOD.LT.1D-6) THEN
41668         IF(IREIM.EQ.1) PYSPEN=0D0
41669         IF(IREIM.EQ.2) PYSPEN=0D0
41670         RETURN
41671       ENDIF
41672  
41673       XARG=SIGN(ACOS(XRE/XMOD),XIM)
41674       SP0RE=0D0
41675       SP0IM=0D0
41676       SGN=1D0
41677       IF(XMOD.GT.1D0) THEN
41678         ALGXRE=LOG(XMOD)
41679         ALGXIM=XARG-SIGN(PARU(1),XARG)
41680         SP0RE=-PARU(1)**2/6D0-(ALGXRE**2-ALGXIM**2)/2D0
41681         SP0IM=-ALGXRE*ALGXIM
41682         SGN=-1D0
41683         XMOD=1D0/XMOD
41684         XARG=-XARG
41685         XRE=XMOD*COS(XARG)
41686         XIM=XMOD*SIN(XARG)
41687       ENDIF
41688       IF(XRE.GT.0.5D0) THEN
41689         ALGXRE=LOG(XMOD)
41690         ALGXIM=XARG
41691         XRE=1D0-XRE
41692         XIM=-XIM
41693         XMOD=SQRT(XRE**2+XIM**2)
41694         XARG=SIGN(ACOS(XRE/XMOD),XIM)
41695         ALGYRE=LOG(XMOD)
41696         ALGYIM=XARG
41697         SP0RE=SP0RE+SGN*(PARU(1)**2/6D0-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))
41698         SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)
41699         SGN=-SGN
41700       ENDIF
41701  
41702       XRE=1D0-XRE
41703       XIM=-XIM
41704       XMOD=SQRT(XRE**2+XIM**2)
41705       XARG=SIGN(ACOS(XRE/XMOD),XIM)
41706       ZRE=-LOG(XMOD)
41707       ZIM=-XARG
41708  
41709       SPRE=0D0
41710       SPIM=0D0
41711       SAVERE=1D0
41712       SAVEIM=0D0
41713       DO 100 I=0,14
41714         IF(MAX(ABS(SAVERE),ABS(SAVEIM)).LT.1D-30) GOTO 110
41715         TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/DBLE(I+1)
41716         TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/DBLE(I+1)
41717         SAVERE=TERMRE
41718         SAVEIM=TERMIM
41719         SPRE=SPRE+B(I)*TERMRE
41720         SPIM=SPIM+B(I)*TERMIM
41721   100 CONTINUE
41722  
41723   110 IF(IREIM.EQ.1) PYSPEN=SP0RE+SGN*SPRE
41724       IF(IREIM.EQ.2) PYSPEN=SP0IM+SGN*SPIM
41725  
41726       RETURN
41727       END
41728  
41729 C***********************************************************************
41730  
41731 C...PYQQBH
41732 C...Calculates the matrix element for the processes
41733 C...g + g or q + qbar -> Q + Qbar + H (normally with Q = t).
41734 C...REDUCE output and part of the rest courtesy Z. Kunszt, see
41735 C...Z. Kunszt, Nucl. Phys. B247 (1984) 339.
41736  
41737       SUBROUTINE PYQQBH(WTQQBH)
41738  
41739 C...Double precision and integer declarations.
41740       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41741       IMPLICIT INTEGER(I-N)
41742       INTEGER PYK,PYCHGE,PYCOMP
41743 C...Commonblocks.
41744       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41745       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41746       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41747       COMMON/PYINT1/MINT(400),VINT(400)
41748       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
41749       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/
41750 C...Local arrays and function.
41751       DIMENSION PP(15,4),CLR(8,8),FM(10,10),RM(8,8),DX(8)
41752       DOT(I,J)=PP(I,4)*PP(J,4)-PP(I,1)*PP(J,1)-PP(I,2)*PP(J,2)-
41753      &PP(I,3)*PP(J,3)
41754  
41755 C...Mass parameters.
41756       WTQQBH=0D0
41757       ISUB=MINT(1)
41758       SHPR=SQRT(VINT(26))*VINT(1)
41759       PQ=PMAS(PYCOMP(KFPR(ISUB,2)),1)
41760       PH=SQRT(VINT(21))*VINT(1)
41761       SPQ=PQ**2
41762       SPH=PH**2
41763  
41764 C...Set up outgoing kinematics: 1=t, 2=tbar, 3=H.
41765       DO 100 I=1,2
41766         PT=SQRT(MAX(0D0,VINT(197+5*I)))
41767         PP(I,1)=PT*COS(VINT(198+5*I))
41768         PP(I,2)=PT*SIN(VINT(198+5*I))
41769   100 CONTINUE
41770       PP(3,1)=-PP(1,1)-PP(2,1)
41771       PP(3,2)=-PP(1,2)-PP(2,2)
41772       PMS1=SPQ+PP(1,1)**2+PP(1,2)**2
41773       PMS2=SPQ+PP(2,1)**2+PP(2,2)**2
41774       PMS3=SPH+PP(3,1)**2+PP(3,2)**2
41775       PMT3=SQRT(PMS3)
41776       PP(3,3)=PMT3*SINH(VINT(211))
41777       PP(3,4)=PMT3*COSH(VINT(211))
41778       PMS12=(SHPR-PP(3,4))**2-PP(3,3)**2
41779       PP(1,3)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
41780      &VINT(213)*(SHPR-PP(3,4))*VINT(220))/(2D0*PMS12)
41781       PP(2,3)=-PP(1,3)-PP(3,3)
41782       PP(1,4)=SQRT(PMS1+PP(1,3)**2)
41783       PP(2,4)=SQRT(PMS2+PP(2,3)**2)
41784  
41785 C...Set up incoming kinematics and derived momentum combinations.
41786       DO 110 I=4,5
41787         PP(I,1)=0D0
41788         PP(I,2)=0D0
41789         PP(I,3)=-0.5D0*SHPR*(-1)**I
41790         PP(I,4)=-0.5D0*SHPR
41791   110 CONTINUE
41792       DO 120 J=1,4
41793         PP(6,J)=PP(1,J)+PP(2,J)
41794         PP(7,J)=PP(1,J)+PP(3,J)
41795         PP(8,J)=PP(1,J)+PP(4,J)
41796         PP(9,J)=PP(1,J)+PP(5,J)
41797         PP(10,J)=-PP(2,J)-PP(3,J)
41798         PP(11,J)=-PP(2,J)-PP(4,J)
41799         PP(12,J)=-PP(2,J)-PP(5,J)
41800         PP(13,J)=-PP(4,J)-PP(5,J)
41801   120 CONTINUE
41802  
41803 C...Derived kinematics invariants.
41804       X1=DOT(1,2)
41805       X2=DOT(1,3)
41806       X3=DOT(1,4)
41807       X4=DOT(1,5)
41808       X5=DOT(2,3)
41809       X6=DOT(2,4)
41810       X7=DOT(2,5)
41811       X8=DOT(3,4)
41812       X9=DOT(3,5)
41813       X10=DOT(4,5)
41814  
41815 C...Propagators.
41816       SS1=DOT(7,7)-SPQ
41817       SS2=DOT(8,8)-SPQ
41818       SS3=DOT(9,9)-SPQ
41819       SS4=DOT(10,10)-SPQ
41820       SS5=DOT(11,11)-SPQ
41821       SS6=DOT(12,12)-SPQ
41822       SS7=DOT(13,13)
41823       DX(1)=SS1*SS6
41824       DX(2)=SS2*SS6
41825       DX(3)=SS2*SS4
41826       DX(4)=SS1*SS5
41827       DX(5)=SS3*SS5
41828       DX(6)=SS3*SS4
41829       DX(7)=SS7*SS1
41830       DX(8)=SS7*SS4
41831  
41832 C...Define colour coefficients for g + g -> Q + Qbar + H.
41833       IF(ISUB.EQ.121.OR.ISUB.EQ.181.OR.ISUB.EQ.186) THEN
41834         DO 140 I=1,3
41835           DO 130 J=1,3
41836             CLR(I,J)=16D0/3D0
41837             CLR(I+3,J+3)=16D0/3D0
41838             CLR(I,J+3)=-2D0/3D0
41839             CLR(I+3,J)=-2D0/3D0
41840   130     CONTINUE
41841   140   CONTINUE
41842         DO 160 L=1,2
41843           DO 150 I=1,3
41844             CLR(I,6+L)=-6D0
41845             CLR(I+3,6+L)=6D0
41846             CLR(6+L,I)=-6D0
41847             CLR(6+L,I+3)=6D0
41848   150     CONTINUE
41849   160   CONTINUE
41850         DO 180 K1=1,2
41851           DO 170 K2=1,2
41852             CLR(6+K1,6+K2)=12D0
41853   170     CONTINUE
41854   180   CONTINUE
41855  
41856 C...Evaluate matrix elements for g + g -> Q + Qbar + H.
41857         FM(1,1)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X4+X9+2*
41858      &  X7+X5)+8*PQ**2*PH**2*(-X1-X4+2*X7)+16*PQ**2*(X2*X9+4*X2*
41859      &  X7+X2*X5-2*X4*X7-2*X9*X7)+8*PH**2*X4*X7-16*X2*X9*X7
41860         FM(1,2)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10+X9-X8+2
41861      &  *X7-4*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X4-2*X2*X10+X2*X7-2*
41862      &  X2*X6-2*X3*X7+2*X4*X7+4*X10*X7-X9*X7-X8*X7)+16*X2*X7*(X4+
41863      &  X10)
41864         FM(1,3)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-2*X3-4*
41865      &  X4-8*X10+X9+X8-2*X7-4*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X4+X10
41866      &  +X6)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
41867      &  -4*X2*X4-5*X2*X10+X2*X8-X2*X7-3*X2*X6+X2*X5+X3*X9+2*X3*X7
41868      &  -X3*X5+X4*X8+2*X4*X6-3*X4*X5-5*X10*X5+X9*X8+X9*X6+X9*X5+
41869      &  X8*X7-4*X6*X5+X5**2)-(16*X2*X5)*(X1+X4+X10+X6)
41870         FM(1,4)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1+X2-X3-X4+X10-
41871      &  X9-X8+2*X7+2*X6-X5)+4*PQ**2*PH**2*(X1+X3+X4+X10+2*X7+2*X6
41872      &  )+8*PQ**2*(4*X1*X10+4*X1*X7+4*X1*X6+2*X2*X10-X2*X9-X2*X8+
41873      &  4*X2*X7+4*X2*X6-X2*X5+4*X10*X5+4*X7*X5+4*X6*X5)-(8*PH**2*
41874      &  X1)*(X10+X7+X6)+16*X2*X5*(X10+X7+X6)
41875         FM(1,5)=8*PQ**4*(-2*X1-2*X4+X10-X9)+4*PQ**2*(4*X1**2-2*X1*
41876      &  X2+8*X1*X3+6*X1*X10-2*X1*X9+4*X1*X8+4*X1*X7+4*X1*X6+2*X1*
41877      &  X5+X2*X10+4*X3*X4-X3*X9+2*X3*X7+3*X4*X8-2*X4*X6+2*X4*X5-4
41878      &  *X10*X7+3*X10*X5-3*X9*X6+3*X8*X7-4*X7**2+4*X7*X5)+8*(X1**
41879      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5-X1*X4*
41880      &  X8-X1*X4*X5+X1*X10*X9+X1*X9*X7+X1*X9*X6-X1*X8*X7-X2*X3*X7
41881      &  +X2*X4*X6-X2*X10*X7-X2*X7**2+X3*X7*X5-X4*X10*X5-X4*X7*X5-
41882      &  X4*X6*X5)
41883         FM(1,6)=16*PQ**4*(-4*X1-X4+X9-X7)+4*PQ**2*PH**2*(-2*X1-X4-
41884      &  X7)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X4-3*X1*X9-2*X1*X7-3*
41885      &  X1*X5-2*X2*X4-2*X7*X5)-8*PH**2*X4*X7+8*(-X1*X2*X9-2*X1*X2
41886      &  *X5-X1*X9**2-X1*X9*X5+X2**2*X7-X2*X4*X5+X2*X9*X7-X2*X7*X5
41887      &  +X4*X9*X5+X4*X5**2)
41888         FM(1,7)=8*PQ**4*(2*X3+X4+3*X10+X9+2*X8+3*X7+6*X6)+2*PQ**2*
41889      &  PH**2*(-2*X3-X4+3*X10+3*X7+6*X6)+4*PQ**2*(4*X1*X10+4*X1*
41890      &  X7+8*X1*X6+6*X2*X10+X2*X9+2*X2*X8+6*X2*X7+12*X2*X6-8*X3*
41891      &  X7+4*X4*X7+4*X4*X6+4*X10*X5+4*X9*X7+4*X9*X6-8*X8*X7+4*X7*
41892      &  X5+8*X6*X5)+4*PH**2*(-X1*X10-X1*X7-2*X1*X6+2*X3*X7-X4*X7-
41893      &  X4*X6)+8*X2*(X10*X5+X9*X7+X9*X6-2*X8*X7+X7*X5+2*X6*X5)
41894         FM(1,8)=8*PQ**4*(2*X3+X4+3*X10+2*X9+X8+3*X7+6*X6)+2*PQ**2*
41895      &  PH**2*(-2*X3-X4+2*X10+X7+2*X6)+4*PQ**2*(4*X1*X10-2*X1*X9+
41896      &  2*X1*X8+4*X1*X7+8*X1*X6+5*X2*X10+2*X2*X9+X2*X8+4*X2*X7+8*
41897      &  X2*X6-X3*X9-8*X3*X7+2*X3*X5+2*X4*X9-X4*X8+4*X4*X7+4*X4*X6
41898      &  +4*X4*X5+5*X10*X5+X9**2-X9*X8+2*X9*X7+5*X9*X6+X9*X5-7*X8*
41899      &  X7+2*X8*X5+2*X7*X5+10*X6*X5)+2*PH**2*(-X1*X10+X3*X7-2*X4*
41900      &  X7+X4*X6)+4*(-X1*X9**2+X1*X9*X8-2*X1*X9*X5-X1*X8*X5+2*X2*
41901      &  X10*X5+X2*X9*X7+X2*X9*X6-2*X2*X8*X7+3*X2*X6*X5+X3*X9*X5+
41902      &  X3*X5**2+X4*X9*X5-2*X4*X8*X5+2*X4*X5**2)
41903         FM(2,2)=16*PQ**6+16*PQ**4*(-X1+X3-X4-X10+X7-X6)+16*PQ**2*(
41904      &  X3*X10+X3*X7+X3*X6+X4*X7+X10*X7)-16*X3*X10*X7
41905         FM(2,3)=16*PQ**6+8*PQ**4*(-2*X1+X2+2*X3-4*X4-4*X10-X9+X8-2
41906      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5+4*X3*X10-X3*X9-X3*X8-2*X3*
41907      &  X7+2*X3*X6+X3*X5-2*X4*X5-2*X10*X5-2*X6*X5)+16*X3*X5*(X10+
41908      &  X6)
41909         FM(2,4)=8*PQ**4*(-2*X1-2*X3+X10-X8)+4*PQ**2*(4*X1**2-2*X1*
41910      &  X2+8*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+4*X1*X7+4*X1*X6+2*X1*
41911      &  X5+X2*X10+4*X3*X4+3*X3*X9-2*X3*X7+2*X3*X5-X4*X8+2*X4*X6-4
41912      &  *X10*X6+3*X10*X5+3*X9*X6-3*X8*X7-4*X6**2+4*X6*X5)+8*(-X1
41913      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9-X1*X3*X5+X1*X4
41914      &  *X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X1*X8*X6+X2*X3*
41915      &  X7-X2*X4*X6-X2*X10*X6-X2*X6**2-X3*X10*X5-X3*X7*X5-X3*X6*
41916      &  X5+X4*X6*X5)
41917         FM(2,5)=16*PQ**4*X10+8*PQ**2*(2*X1**2+2*X1*X3+2*X1*X4+2*X1
41918      &  *X10+2*X1*X7+2*X1*X6+X3*X7+X4*X6)+8*(-2*X1**3-2*X1**2*X3-
41919      &  2*X1**2*X4-2*X1**2*X10-2*X1**2*X7-2*X1**2*X6-2*X1*X3*X4-
41920      &  X1*X3*X10-2*X1*X3*X6-X1*X4*X10-2*X1*X4*X7-X1*X10**2-X1*
41921      &  X10*X7-X1*X10*X6-2*X1*X7*X6+X3**2*X7-X3*X4*X7-X3*X4*X6+X3
41922      &  *X10*X7+X3*X7**2-X3*X7*X6+X4**2*X6+X4*X10*X6-X4*X7*X6+X4*
41923      &  X6**2)
41924         FM(2,6)=8*PQ**4*(-2*X1+X10-X9-2*X7)+4*PQ**2*(4*X1**2+2*X1*
41925      &  X2+4*X1*X3+4*X1*X4+6*X1*X10-2*X1*X9+4*X1*X8+8*X1*X6-2*X1*
41926      &  X5+4*X2*X4+3*X2*X10+2*X2*X7-3*X3*X9-2*X3*X7-4*X4**2-4*X4*
41927      &  X10+3*X4*X8+2*X4*X6+X10*X5-X9*X6+3*X8*X7+4*X7*X6)+8*(X1**
41928      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5+X1*X4*
41929      &  X9-X1*X4*X8-X1*X4*X5+X1*X10*X9+X1*X9*X6-X1*X8*X7-X2*X3*X7
41930      &  -X2*X4*X7+X2*X4*X6-X2*X10*X7+X3*X7*X5-X4**2*X5-X4*X10*X5-
41931      &  X4*X6*X5)
41932         FM(2,7)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
41933      &  2*X1*X4-2*X1*X10+X1*X9-X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
41934      &  X4+3*X2*X10+X2*X7+2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9-2*X3*
41935      &  X7-4*X3*X6-X3*X5-6*X4**2-6*X4*X10-3*X4*X9-X4*X8-4*X4*X7-2
41936      &  *X4*X6-2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+X10*X5
41937      &  +X9*X7-2*X8*X7-2*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
41938      &  -X1**2*X9+X1**2*X8-2*X1*X2*X10-3*X1*X2*X7-3*X1*X2*X6+X1*
41939      &  X3*X9-X1*X3*X5+X1*X4*X9+X1*X4*X8+X1*X4*X5+X1*X10*X9+X1*
41940      &  X10*X8-X1*X9*X6+X1*X8*X6+X2*X3*X7-3*X2*X4*X7-X2*X4*X6-3*
41941      &  X2*X10*X7-3*X2*X10*X6-3*X2*X7*X6-3*X2*X6**2-2*X3*X4*X5-X3
41942      &  *X10*X5-X3*X6*X5-X4**2*X5-X4*X10*X5+X4*X6*X5)
41943         FM(2,8)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
41944      &  2*X1*X4-2*X1*X10-X1*X9+X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
41945      &  X4+X2*X10-X2*X7-2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9+X3*X8-2*
41946      &  X3*X7-4*X3*X6+X3*X5-6*X4**2-6*X4*X10-2*X4*X9-4*X4*X7-2*X4
41947      &  *X6+2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+3*X10*X5-
41948      &  X9*X6-2*X8*X7-3*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
41949      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6-3*X1*X3*X5+X1*X4*X9-
41950      &  X1*X4*X8-3*X1*X4*X5+X1*X10*X9+X1*X10*X8-2*X1*X10*X5+X1*X9
41951      &  *X6+X1*X8*X7+X1*X8*X6-X2*X4*X7+X2*X4*X6-X2*X10*X7-X2*X10*
41952      &  X6-2*X2*X7*X6-X2*X6**2-3*X3*X4*X5-3*X3*X10*X5+X3*X7*X5-3*
41953      &  X3*X6*X5-3*X4**2*X5-3*X4*X10*X5-X4*X6*X5)
41954         FM(3,3)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X3+X8+X6
41955      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X3-X6)+16*PQ**2*(X2*X5-2*X3*
41956      &  X8-2*X3*X6+4*X3*X5+X8*X5)+8*PH**2*X3*X6-16*X3*X8*X5
41957         FM(3,4)=16*PQ**4*(-4*X1-X3+X8-X6)+4*PQ**2*PH**2*(-2*X1-X3-
41958      &  X6)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X3-3*X1*X8-2*X1*X6-3*
41959      &  X1*X5-2*X2*X3-2*X6*X5)-8*PH**2*X3*X6+8*(-X1*X2*X8-2*X1*X2
41960      &  *X5-X1*X8**2-X1*X8*X5+X2**2*X6-X2*X3*X5+X2*X8*X6-X2*X6*X5
41961      &  +X3*X8*X5+X3*X5**2)
41962         FM(3,5)=8*PQ**4*(-2*X1+X10-X8-2*X6)+4*PQ**2*(4*X1**2+2*X1*
41963      &  X2+4*X1*X3+4*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+8*X1*X7-2*X1*
41964      &  X5+4*X2*X3+3*X2*X10+2*X2*X6-4*X3**2-4*X3*X10+3*X3*X9+2*X3
41965      &  *X7-3*X4*X8-2*X4*X6+X10*X5+3*X9*X6-X8*X7+4*X7*X6)+8*(-X1
41966      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9+X1*X3*X8-X1*X3
41967      &  *X5+X1*X4*X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X2*X3*
41968      &  X7-X2*X3*X6-X2*X4*X6-X2*X10*X6-X3**2*X5-X3*X10*X5-X3*X7*
41969      &  X5+X4*X6*X5)
41970         FM(3,6)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1-X2+2*X3+2*X4+
41971      &  X10-X9-X8-X7-X6+X5)+4*PQ**2*PH**2*(X1+2*X3+2*X4+X10+X7+X6
41972      &  )+8*PQ**2*(4*X1*X3+4*X1*X4+4*X1*X10+4*X2*X3+4*X2*X4+4*X2*
41973      &  X10-X2*X5+4*X3*X5+4*X4*X5+2*X10*X5-X9*X5-X8*X5)-(8*PH**2*
41974      &  X1)*(X3+X4+X10)+16*X2*X5*(X3+X4+X10)
41975         FM(3,7)=8*PQ**4*(3*X3+6*X4+3*X10+X9+2*X8+2*X7+X6)+2*PQ**2*
41976      &  PH**2*(X3+2*X4+2*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+4*
41977      &  X1*X10+2*X1*X9-2*X1*X8+2*X2*X3+10*X2*X4+5*X2*X10+2*X2*X9+
41978      &  X2*X8+2*X2*X7+4*X2*X6-7*X3*X9+2*X3*X8-8*X3*X7+4*X3*X6+4*
41979      &  X3*X5+5*X4*X8+4*X4*X6+8*X4*X5+5*X10*X5-X9*X8-X9*X6+X9*X5+
41980      &  X8**2-X8*X7+2*X8*X6+2*X8*X5)+2*PH**2*(-X1*X10+X3*X7-2*X3*
41981      &  X6+X4*X6)+4*(-X1*X2*X9-2*X1*X2*X8+X1*X9*X8-X1*X8**2+X2**2
41982      &  *X7+2*X2**2*X6+3*X2*X4*X5+2*X2*X10*X5-2*X2*X9*X6+X2*X8*X7
41983      &  +X2*X8*X6-2*X3*X9*X5+X3*X8*X5+X4*X8*X5)
41984         FM(3,8)=8*PQ**4*(3*X3+6*X4+3*X10+2*X9+X8+2*X7+X6)+2*PQ**2*
41985      &  PH**2*(3*X3+6*X4+3*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+
41986      &  4*X1*X10+4*X2*X3+8*X2*X4+4*X2*X10-8*X3*X9+4*X3*X8-8*X3*X7
41987      &  +4*X3*X6+6*X3*X5+4*X4*X8+4*X4*X6+12*X4*X5+6*X10*X5+2*X9*
41988      &  X5+X8*X5)+4*PH**2*(-X1*X3-2*X1*X4-X1*X10+2*X3*X7-X3*X6-X4
41989      &  *X6)+8*X5*(X2*X3+2*X2*X4+X2*X10-2*X3*X9+X3*X8+X4*X8)
41990         FM(4,4)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X3+X8+2*
41991      &  X6+X5)+8*PQ**2*PH**2*(-X1-X3+2*X6)+16*PQ**2*(X2*X8+4*X2*
41992      &  X6+X2*X5-2*X3*X6-2*X8*X6)+8*PH**2*X3*X6-16*X2*X8*X6
41993         FM(4,5)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10-X9+X8-4
41994      &  *X7+2*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X3-2*X2*X10-2*X2*X7+
41995      &  X2*X6+2*X3*X6-2*X4*X6+4*X10*X6-X9*X6-X8*X6)+16*X2*X6*(X3+
41996      &  X10)
41997         FM(4,6)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-4*X3-2*
41998      &  X4-8*X10+X9+X8-4*X7-2*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X3+X10
41999      &  +X7)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
42000      &  -4*X2*X3-5*X2*X10+X2*X9-3*X2*X7-X2*X6+X2*X5+X3*X9+2*X3*X7
42001      &  -3*X3*X5+X4*X8+2*X4*X6-X4*X5-5*X10*X5+X9*X8+X9*X6+X8*X7+
42002      &  X8*X5-4*X7*X5+X5**2)-(16*X2*X5)*(X1+X3+X10+X7)
42003         FM(4,7)=8*PQ**4*(-X3-2*X4-3*X10-2*X9-X8-6*X7-3*X6)+2*PQ**2
42004      &  *PH**2*(X3+2*X4-3*X10-6*X7-3*X6)+4*PQ**2*(-4*X1*X10-8*X1*
42005      &  X7-4*X1*X6-6*X2*X10-2*X2*X9-X2*X8-12*X2*X7-6*X2*X6-4*X3*
42006      &  X7-4*X3*X6+8*X4*X6-4*X10*X5+8*X9*X6-4*X8*X7-4*X8*X6-8*X7*
42007      &  X5-4*X6*X5)+4*PH**2*(X1*X10+2*X1*X7+X1*X6+X3*X7+X3*X6-2*
42008      &  X4*X6)+8*X2*(-X10*X5+2*X9*X6-X8*X7-X8*X6-2*X7*X5-X6*X5)
42009         FM(4,8)=8*PQ**4*(-X3-2*X4-3*X10-X9-2*X8-6*X7-3*X6)+2*PQ**2
42010      &  *PH**2*(X3+2*X4-2*X10-2*X7-X6)+4*PQ**2*(-4*X1*X10-2*X1*X9
42011      &  +2*X1*X8-8*X1*X7-4*X1*X6-5*X2*X10-X2*X9-2*X2*X8-8*X2*X7-4
42012      &  *X2*X6+X3*X9-2*X3*X8-4*X3*X7-4*X3*X6-4*X3*X5+X4*X8+8*X4*
42013      &  X6-2*X4*X5-5*X10*X5+X9*X8+7*X9*X6-2*X9*X5-X8**2-5*X8*X7-2
42014      &  *X8*X6-X8*X5-10*X7*X5-2*X6*X5)+2*PH**2*(X1*X10-X3*X7+2*X3
42015      &  *X6-X4*X6)+4*(-X1*X9*X8+X1*X9*X5+X1*X8**2+2*X1*X8*X5-2*X2
42016      &  *X10*X5+2*X2*X9*X6-X2*X8*X7-X2*X8*X6-3*X2*X7*X5+2*X3*X9*
42017      &  X5-X3*X8*X5-2*X3*X5**2-X4*X8*X5-X4*X5**2)
42018         FM(5,5)=16*PQ**6+16*PQ**4*(-X1-X3+X4-X10-X7+X6)+16*PQ**2*(
42019      &  X3*X6+X4*X10+X4*X7+X4*X6+X10*X6)-16*X4*X10*X6
42020         FM(5,6)=16*PQ**6+8*PQ**4*(-2*X1+X2-4*X3+2*X4-4*X10+X9-X8-2
42021      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5-2*X3*X5+4*X4*X10-X4*X9-X4*
42022      &  X8+2*X4*X7-2*X4*X6+X4*X5-2*X10*X5-2*X7*X5)+16*X4*X5*(X10+
42023      &  X7)
42024         FM(5,7)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
42025      &  4*X1*X4+2*X1*X10+X1*X9-X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
42026      &  X4-3*X2*X10-2*X2*X7-X2*X6+6*X3**2+6*X3*X4+6*X3*X10+X3*X9+
42027      &  3*X3*X8+2*X3*X7+4*X3*X6+2*X3*X5+6*X4*X10+2*X4*X8+4*X4*X7+
42028      &  2*X4*X6+X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-X10*X5+
42029      &  2*X9*X7+2*X9*X6-X8*X6+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(-
42030      &  X1**2*X9+X1**2*X8+2*X1*X2*X10+3*X1*X2*X7+3*X1*X2*X6-X1*X3
42031      &  *X9-X1*X3*X8-X1*X3*X5-X1*X4*X8+X1*X4*X5-X1*X10*X9-X1*X10*
42032      &  X8-X1*X9*X7+X1*X8*X7+X2*X3*X7+3*X2*X3*X6-X2*X4*X6+3*X2*
42033      &  X10*X7+3*X2*X10*X6+3*X2*X7**2+3*X2*X7*X6+X3**2*X5+2*X3*X4
42034      &  *X5+X3*X10*X5-X3*X7*X5+X4*X10*X5+X4*X7*X5)
42035         FM(5,8)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
42036      &  4*X1*X4+2*X1*X10-X1*X9+X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
42037      &  X4-X2*X10+2*X2*X7+X2*X6+6*X3**2+6*X3*X4+6*X3*X10+2*X3*X8+
42038      &  2*X3*X7+4*X3*X6-2*X3*X5+6*X4*X10-X4*X9+2*X4*X8+4*X4*X7+2*
42039      &  X4*X6-X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-3*X10*X5+
42040      &  3*X9*X7+2*X9*X6+X8*X7+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(
42041      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9-X1*X3*X8+3*
42042      &  X1*X3*X5+3*X1*X4*X5-X1*X10*X9-X1*X10*X8+2*X1*X10*X5-X1*X9
42043      &  *X7-X1*X9*X6-X1*X8*X7-X2*X3*X7+X2*X3*X6+X2*X10*X7+X2*X10*
42044      &  X6+X2*X7**2+2*X2*X7*X6+3*X3**2*X5+3*X3*X4*X5+3*X3*X10*X5+
42045      &  X3*X7*X5+3*X4*X10*X5+3*X4*X7*X5-X4*X6*X5)
42046         FM(6,6)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X4+X9+X7
42047      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X4-X7)+16*PQ**2*(X2*X5-2*X4*
42048      &  X9-2*X4*X7+4*X4*X5+X9*X5)+8*PH**2*X4*X7-16*X4*X9*X5
42049         FM(6,7)=8*PQ**4*(-6*X3-3*X4-3*X10-2*X9-X8-X7-2*X6)+2*PQ**2
42050      &  *PH**2*(-2*X3-X4-2*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*X4
42051      &  -4*X1*X10+2*X1*X9-2*X1*X8-10*X2*X3-2*X2*X4-5*X2*X10-X2*X9
42052      &  -2*X2*X8-4*X2*X7-2*X2*X6-5*X3*X9-4*X3*X7-8*X3*X5-2*X4*X9+
42053      &  7*X4*X8-4*X4*X7+8*X4*X6-4*X4*X5-5*X10*X5-X9**2+X9*X8-2*X9
42054      &  *X7+X9*X6-2*X9*X5+X8*X7-X8*X5)+2*PH**2*(X1*X10-X3*X7+2*X4
42055      &  *X7-X4*X6)+4*(2*X1*X2*X9+X1*X2*X8+X1*X9**2-X1*X9*X8-2*X2
42056      &  **2*X7-X2**2*X6-3*X2*X3*X5-2*X2*X10*X5-X2*X9*X7-X2*X9*X6+
42057      &  2*X2*X8*X7-X3*X9*X5-X4*X9*X5+2*X4*X8*X5)
42058         FM(6,8)=8*PQ**4*(-6*X3-3*X4-3*X10-X9-2*X8-X7-2*X6)+2*PQ**2
42059      &  *PH**2*(-6*X3-3*X4-3*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*
42060      &  X4-4*X1*X10-8*X2*X3-4*X2*X4-4*X2*X10-4*X3*X9-4*X3*X7-12*
42061      &  X3*X5-4*X4*X9+8*X4*X8-4*X4*X7+8*X4*X6-6*X4*X5-6*X10*X5-X9
42062      &  *X5-2*X8*X5)+4*PH**2*(2*X1*X3+X1*X4+X1*X10+X3*X7+X4*X7-2*
42063      &  X4*X6)+8*X5*(-2*X2*X3-X2*X4-X2*X10-X3*X9-X4*X9+2*X4*X8)
42064         FM(7,7)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+9*
42065      &  X2*X10+7*X3*X7+2*X3*X6+2*X4*X7+7*X4*X6+X10*X5+2*X9*X7+7*
42066      &  X9*X6+7*X8*X7+2*X8*X6)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2
42067      &  *X4*X7-7*X4*X6)+4*X2*(X10*X5+2*X9*X7+7*X9*X6+7*X8*X7+2*X8
42068      &  *X6)
42069         FM(7,8)=72*PQ**4*X10+2*PQ**2*PH**2*X10+4*PQ**2*(2*X1*X10+
42070      &  10*X2*X10+7*X3*X9+2*X3*X8+14*X3*X7+4*X3*X6+2*X4*X9+7*X4*
42071      &  X8+4*X4*X7+14*X4*X6+10*X10*X5+X9**2+7*X9*X8+2*X9*X7+7*X9*
42072      &  X6+X8**2+7*X8*X7+2*X8*X6)+2*PH**2*(7*X1*X10-7*X3*X7-2*X3*
42073      &  X6-2*X4*X7-7*X4*X6)+2*(-2*X1*X9**2-14*X1*X9*X8-2*X1*X8**2
42074      &  +2*X2*X10*X5+2*X2*X9*X7+7*X2*X9*X6+7*X2*X8*X7+2*X2*X8*X6+
42075      &  7*X3*X9*X5+2*X3*X8*X5+2*X4*X9*X5+7*X4*X8*X5)
42076         FM(8,8)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+X2
42077      &  *X10+7*X3*X9+2*X3*X8+7*X3*X7+2*X3*X6+2*X4*X9+7*X4*X8+2*X4
42078      &  *X7+7*X4*X6+9*X10*X5)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2*
42079      &  X4*X7-7*X4*X6)+4*X5*(X2*X10+7*X3*X9+2*X3*X8+2*X4*X9+7*X4*
42080      &  X8)
42081         FM(9,9)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
42082      &  X3*X7+X4*X6-X10*X5+X9*X6+X8*X7)+PH**2*(X1*X10-X3*X7-X4*X6
42083      &  )+2*X2*(-X10*X5+X9*X6+X8*X7)
42084         FM(9,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
42085      &  X10+2*X3*X9+2*X3*X7+2*X4*X6-2*X10*X5+X9*X8+2*X8*X7)+PH**2
42086      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X8*X7+X3*
42087      &  X9*X5)
42088         FMXX=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
42089      &  X10+2*X4*X8+2*X4*X6+2*X3*X7-2*X10*X5+X9*X8+2*X9*X6)+PH**2
42090      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X9*X6+X4*
42091      &  X8*X5)
42092         FM(9,10)=0.5D0*(FMXX+FM(9,10))
42093         FM(10,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
42094      &  X3*X7+X4*X6-X10*X5+X9*X3+X8*X4)+PH**2*(X1*X10-X3*X7-X4*X6
42095      &  )+2*X5*(-X10*X2+X9*X3+X8*X4)
42096  
42097 C...Repackage matrix elements.
42098         DO 200 I=1,8
42099           DO 190 J=I,8
42100             RM(I,J)=FM(I,J)
42101   190     CONTINUE
42102   200   CONTINUE
42103         RM(7,7)=FM(7,7)-2D0*FM(9,9)
42104         RM(7,8)=FM(7,8)-2D0*FM(9,10)
42105         RM(8,8)=FM(8,8)-2D0*FM(10,10)
42106  
42107 C...Produce final result: matrix elements * colours * propagators.
42108         DO 220 I=1,8
42109           DO 210 J=I,8
42110             FAC=8D0
42111             IF(I.EQ.J)FAC=4D0
42112             WTQQBH=WTQQBH+RM(I,J)*FAC*CLR(I,J)/(DX(I)*DX(J))
42113   210     CONTINUE
42114   220   CONTINUE
42115         WTQQBH=-WTQQBH/256D0
42116  
42117       ELSE
42118 C...Evaluate matrix elements for q + qbar -> Q + Qbar + H.
42119         A11=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X2*X10+X3
42120      &  *X7+X4*X6+X9*X6+X8*X7)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X2)*(X9
42121      &  *X6+X8*X7)
42122         A12=-8D0*PQ**4*X10+4D0*PQ**2*(-X2*X10-X3*X9-2D0*X3*X7-X4*X8-
42123      &  2D0*X4*X6-X10*X5-X9*X8-X9*X6-X8*X7)+2D0*PH**2*(-X1*X10+X3*X7
42124      &  +X4*X6)+2D0*(2D0*X1*X9*X8-X2*X9*X6-X2*X8*X7-X3*X9*X5-X4*X8*
42125      &  X5)
42126         A22=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X3*X9+X3*
42127      &  X7+X4*X8+X4*X6+X10*X5)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X5)*(X3
42128      &  *X9+X4*X8)
42129  
42130 C...Produce final result: matrix elements * propagators.
42131         A11=A11/DX(7)**2
42132         A12=A12/(DX(7)*DX(8))
42133         A22=A22/DX(8)**2
42134         WTQQBH=-(A11+A22+2D0*A12)*8D0/9D0
42135       ENDIF
42136  
42137       RETURN
42138       END
42139  
42140 C*********************************************************************
42141  
42142 C...PYSTBH (and auxiliaries)
42143 C.. Evaluates the matrix elements for t + b + H production.
42144  
42145       SUBROUTINE PYSTBH(WTTBH)
42146  
42147 C...DOUBLE PRECISION AND INTEGER DECLARATIONS
42148       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42149       IMPLICIT INTEGER(I-N)
42150       INTEGER PYK,PYCHGE,PYCOMP
42151  
42152 C...COMMONBLOCKS
42153       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42154       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42155       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42156       COMMON/PYINT1/MINT(400),VINT(400)
42157       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
42158       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
42159       COMMON/PYINT4/MWID(500),WIDS(500,5)
42160       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
42161       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42162       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
42163      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
42164      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
42165      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
42166       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
42167       DOUBLE PRECISION MW2
42168       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
42169      &/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/,/PYCTBH/
42170  
42171 C...LOCAL ARRAYS AND COMPLEX VARIABLES
42172       DIMENSION QQ(4,2),PP(4,3)
42173       DATA QQ/8*0D0/
42174  
42175       WTTBH=0D0
42176  
42177 C...KINEMATIC PARAMETERS.
42178       SHPR=SQRT(VINT(26))*VINT(1)
42179       PH=SQRT(VINT(21))*VINT(1)
42180       SPH=PH**2
42181  
42182 C...SET UP OUTGOING KINEMATICS: 1=T, 2=TBAR, 3=H.
42183       DO 100 I=1,2
42184         PT=SQRT(MAX(0D0,VINT(197+5*I)))
42185         PP(1,I)=PT*COS(VINT(198+5*I))
42186         PP(2,I)=PT*SIN(VINT(198+5*I))
42187   100 CONTINUE
42188       PP(1,3)=-PP(1,1)-PP(1,2)
42189       PP(2,3)=-PP(2,1)-PP(2,2)
42190       PMS1=VINT(201)**2+PP(1,1)**2+PP(2,1)**2
42191       PMS2=VINT(206)**2+PP(1,2)**2+PP(2,2)**2
42192       PMS3=SPH+PP(1,3)**2+PP(2,3)**2
42193       PMT3=SQRT(PMS3)
42194       PP(3,3)=PMT3*SINH(VINT(211))
42195       PP(4,3)=PMT3*COSH(VINT(211))
42196       PMS12=(SHPR-PP(4,3))**2-PP(3,3)**2
42197       PP(3,1)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
42198      &VINT(213)*(SHPR-PP(4,3))*VINT(220))/(2D0*PMS12)
42199       PP(3,2)=-PP(3,1)-PP(3,3)
42200       PP(4,1)=SQRT(PMS1+PP(3,1)**2)
42201       PP(4,2)=SQRT(PMS2+PP(3,2)**2)
42202  
42203 C...CM SYSTEM, INGOING QUARKS/GLUONS
42204       QQ(3,1) = SHPR/2.D0
42205       QQ(4,1) = QQ(3,1)
42206       QQ(3,2) = -QQ(3,1)
42207       QQ(4,2) = QQ(4,1)
42208  
42209 C...PARAMETERS FOR AMPLITUDE METHOD
42210       ALPHA = AEM
42211       ALPHAS = AS
42212       SW2 = PARU(102)
42213       MW2 = PMAS(24,1)**2
42214       TANB = PARU(141)
42215       VTB = VCKM(3,3)
42216       RMB=PYMRUN(5,VINT(52))
42217  
42218       ISUB=MINT(1)
42219  
42220       IF (ISUB.EQ.401) THEN
42221         CALL PYTBHG(QQ(1,1),QQ(1,2),PP(1,1),PP(1,2),PP(1,3),
42222      &  VINT(201),VINT(206),RMB,VINT(43),WTTBH)
42223       ELSE IF (ISUB.EQ.402) THEN
42224         CALL PYTBHQ(QQ(1,1),QQ(1,2),PP(1,1),PP(1,2),PP(1,3),
42225      &  VINT(201),VINT(206),RMB,VINT(43),WTTBH)
42226       END IF
42227  
42228       RETURN
42229       END
42230 C------------------------------------------------------------------
42231       SUBROUTINE PYTBHB(MT,MB,MHP,BR,GAMT)
42232 C  WIDTH AND BRANCHING RATIO FOR (ON-SHELL) T-> B W+, T->B H+
42233       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42234       IMPLICIT INTEGER(I-N)
42235       DOUBLE PRECISION MW2,MT,MB,MHP,MW,KFUN
42236       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
42237       SAVE /PYCTBH/
42238  
42239 C   TOP WIDTH CALCULATION
42240 C       VTB  = 0.99
42241       MW=DSQRT(MW2)
42242       XB=(MB/MT)**2
42243       XW=(MW/MT)**2
42244       XH =(MHP/MT)**2
42245       GAMTBH = 0D0
42246       IF (MT .LT. (MHP+MB)) THEN
42247 C  T ->B W ONLY
42248          BETW = DSQRT(1.D0-2*(XB+XW)+(XW-XB)**2)
42249          GAMTBW = VTB**2*ALPHA/(16*SW2)*MT/XW*BETW*
42250      &        (2*(1.D0-XB-XW)-(1.D0+XB-XW)*(1.D0-XB -2*XW) )
42251          GAMT  = GAMTBW
42252       ELSE
42253 C T ->BW +T ->B H^+
42254          BETW = DSQRT(1.D0-2*(XB+XW)+(XW-XB)**2)
42255          GAMTBW = VTB**2*ALPHA/(16*SW2)*MT/XW*BETW*
42256      &        (2*(1.D0-XB-XW)-(1.D0+XB-XW)*(1.D0-XB -2*XW) )
42257 C
42258          KFUN = DSQRT( (1.D0-(MHP/MT)**2-(MB/MT)**2)**2
42259      &        -4.D0*(MHP*MB/MT**2)**2 )
42260          GAMTBH= ALPHA/SW2/8.D0*VTB**2*KFUN/MT *
42261      &        (V**2*((MT+MB)**2-MHP**2)+A**2*((MT-MB)**2-MHP**2))
42262          GAMT  = GAMTBW+GAMTBH
42263       ENDIF
42264 C THUS BR IS
42265       BR=GAMTBH/GAMT
42266       RETURN
42267       END
42268  
42269 C AMPLITUDE SQUARED (MATRIX ELEMENTS) FOR THE PROCESSES:
42270 C GG->TBH^+, QQBAR->TBH^+
42271 C AS A FUNCTION OF 4-MOMENTA FOR SUITABLE INTERFACE
42272 C (FOR INSTANCE WITH PYTHIA)
42273 C------------------------------------------------------------
42274 C BASED ON F. BORZUMATI, J.-L. KNEUR, N. POLONSKY  HEP-PH/9905443,
42275 C PHYS REV. D 60 (1999) 115011
42276 C (THESE FILES PREPARED BY J.-L. KNEUR)
42277 C------------------------------------------------------------
42278 C 1)  GG->TBH^+
42279        SUBROUTINE PYTBHG(Q1,Q2,P1,P2,P3,MT,MB,RMB,MHP,AMP2)
42280 C
42281 C CONVENTIONS AND INPUT/OUTPUT DEFINITIONS:
42282 C
42283 C INPUT: Q1,Q2 ARE ENTERING 4-MOMENTA OF INITIAL GLUONS OR QUARKS;
42284 C        P1, P2 ARE THE TOP AND BOTTOM OUTGOING 4-MOMENTA;
42285 C        P3 IS OUTGOING CHARGED HIGGS 4-MOMENTA.
42286 C  (NB FOR ALL 4-MOMENTA P(4) IS TIME-COMPONENT)
42287 C "PHYSICAL PARAMETERS" INPUT:
42288 C        MT,MB TOP AND BOTTOM MASSES;
42289 C        MHP CHARGED HIGGS MASS
42290 C   FURTHER PARAMETERS INPUT IS NEEDED FROM COMMON/PARAM/ (SEE BELOW)
42291 C
42292 C OUTPUT: AMP2  IS MATRIX ELEMENT (AMPLITUDE**2) FOR GG->TB H^+
42293 C (NB AMP2 IS TRULY AMPLITUDE SQUARRED, I.E. WITHOUT ANY
42294 C PHASE SPACE FACTORS INCLUDED. IT INCLUDES COLOUR AND COUPLING
42295 C FACTORS, AS EXPLICIT BELOW. ACCORDINGLY, FOR EXAMPLE THE TOTAL
42296 C CROSS-SECTION SHOULD BE (SYMBOLICALLY):
42297 C   SIGMA = INTEGRATE [PARTON DENSITY FUNCTIONS * 3-PARTICLE FINAL
42298 C           STATE PHASE-SPACE (STANDARDLY NORMALIZED) * AMP2 ]
42299 C
42300       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42301       IMPLICIT INTEGER(I-N)
42302       DOUBLE PRECISION MW2,MT,MB,MHP,MW
42303       DIMENSION Q1(4),Q2(4),P1(4),P2(4),P3(4)
42304       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42305       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42306       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42307  
42308       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
42309       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYCTBH/
42310 C !THE RELEVANT INPUT PARAMETERS ABOVE ARE NEEDED FOR CALCULATION
42311 C BUT ARE NOT DEFINED HERE SO THAT ONE MAY CHOOSE/VARY THEIR VALUES:
42312 C ACCORDINGLY, WHEN CALLING THESE SUBROUTINES, PLEASE SUPPLY VIA
42313 C THIS COMMON/PARAM/ YOUR PREFERRED ALPHA, ALPHAS,..AND TANB
42314 C (TAN BETA) VALUES
42315 C
42316 C THE NORMALIZED V,A COUPLINGS ARE DEFINED BELOW AND USED BOTH
42317 C IN THIS ROUTINE AND IN THE TOP WIDTH CALCULATION PYTBHB(..).
42318  
42319       PI = 4*DATAN(1.D0)
42320       MW = DSQRT(MW2)
42321 C
42322 C COLLECTING THE RELEVANT OVERALL FACTORS:
42323 C 8X8 INITIAL GLUON COLOR AVERAGE, 2X2 GLUON SPIN AVERAGE
42324       PS=1.D0/(8.D0*8.D0 *2.D0*2.D0)
42325 C COUPLING CONSTANT (OVERALL NORMALIZATION)
42326       FACT=(4.D0*PI*ALPHA)*(4.D0*PI*ALPHAS)**2/SW2/2.D0
42327 C NB ALPHA IS E^2/4/PI, BUT BETTER DEFINED IN TERMS OF G_FERMI:
42328 C ALPHA= DSQRT(2.D0)*GF*SW2*MW**2/PI
42329 C ALPHAS IS ALPHA_STRONG;
42330 C SW2 IS SIN(THETA_W)**2.
42331 C
42332 C      VTB=.998D0
42333 C VTB IS TOP-BOTTOM CKM MATRIX ELEMENT (APPROXIMATE VALUE HERE)
42334 C
42335       V = ( MT/MW/TANB +RMB/MW*TANB)/2.D0
42336       A = (-MT/MW/TANB +RMB/MW*TANB)/2.D0
42337 C V AND A ARE (NORMALIZED) VECTOR AND AXIAL TBH^+ COUPLINGS
42338 C
42339 C REDEFINING P2 INGOING FROM OVERALL MOMENTUM CONSERVATION
42340 C (BECAUSE P2 INGOING WAS USED IN OUR GRAPH CALCULATION CONVENTIONS)
42341       DO 100 KK=1,4
42342       P2(KK)=P3(KK)-Q1(KK)-Q2(KK)+P1(KK)
42343   100 CONTINUE
42344 C DEFINING VARIOUS RELEVANT 4-SCALAR PRODUCTS:
42345       S = 2*PYTBHS(Q1,Q2)
42346       P1Q1=PYTBHS(Q1,P1)
42347       P1Q2=PYTBHS(P1,Q2)
42348       P2Q1=PYTBHS(P2,Q1)
42349       P2Q2=PYTBHS(P2,Q2)
42350       P1P2=PYTBHS(P1,P2)
42351 C
42352 C   TOP WIDTH CALCULATION
42353       CALL PYTBHB(MT,MB,MHP,BR,GAMT)
42354 C   GAMT IS THE TOP WIDTH: T->BH^+ AND/OR T->B W^+
42355 C THEN DEFINE TOP (RESONANT) PROPAGATOR:
42356       A1INV= S -2*P1Q1 -2*P1Q2
42357       A1 =A1INV/(A1INV**2+ (GAMT*MT)**2)
42358 C (I.E. INTRODUCE THE TOP WIDTH IN A1 TO REGULARISE THE POLE)
42359 C  NB:    A12 = A1*A1 BUT CORRECT EXPRESSION BELOW BECAUSE OF
42360 C  THE TOP WIDTH
42361       A12 = 1.D0/(A1INV**2+ (GAMT*MT)**2)
42362       A2 =1.D0/(S +2*P2Q1 +2*P2Q2)
42363 C NOTE A2 IS B PROPAGATOR, DOES NOT NEED A WIDTH
42364 C  NOW COMES THE AMP**2:
42365 C NB COLOR FACTOR (COMING FROM GRAPHS) ALREADY INCLUDED IN
42366 C THE EXPRESSIONS BELOW
42367       V18=0.D0
42368       A18=0.D0
42369       V18= 640*A1/3+640*A2/3+32*A1*A2*MB**2-368*A12*MB*MT-
42370      &512*A1*A2*MB*MT/3-
42371      &368*A2**2*MB*MT+32*A1*A2*MT**2+496*A12*P1P2/3+
42372      &320*A1*A2*P1P2+496*A2**2*P1P2/3+128*A1*MB*MT**3/(3*P1Q1**2)+
42373      &128*A1*MT**4/(3*P1Q1**2)-256*A12*MB*MT**5/(3*P1Q1**2)+
42374      &256*A1*MT**2*P1P2/(3*P1Q1**2)-256*A12*MT**4*P1P2/(3*P1Q1**2)+
42375      &8/(3*P1Q1)-32*A1*MB*MT/P1Q1-56*A2*MB*MT/(3*P1Q1)+
42376      &88*A1*MT**2/(3*P1Q1)+72*A2*MT**2/P1Q1+
42377      &704*A12*MB*MT**3/(3*P1Q1)-224*A1*A2*MB*MT**3/(3*P1Q1)+
42378      &104*A1*P1P2/(3*P1Q1)+48*A2*P1P2/P1Q1+
42379      &128*A1*A2*MB*MT*P1P2/(3*P1Q1)+512*A12*MT**2*P1P2/(3*P1Q1)-
42380      &448*A1*A2*MT**2*P1P2/(3*P1Q1)-32*A1*A2*P1P2**2/P1Q1-
42381      &656*A1*A2*P1Q1/3-224*A2**2*P1Q1+128*A1*MB*MT**3/(3*P1Q2**2)+
42382      &128*A1*MT**4/(3*P1Q2**2)-256*A12*MB*MT**5/(3*P1Q2**2)+
42383      &256*A1*MT**2*P1P2/(3*P1Q2**2)-256*A12*MT**4*P1P2/(3*P1Q2**2)+
42384      &256*A1*MT**2*P1Q1/(3*P1Q2**2)+256*A12*MB*MT**3*P1Q1/(3*P1Q2**2)+
42385      &8/(3*P1Q2)-32*A1*MB*MT/P1Q2-56*A2*MB*MT/(3*P1Q2)
42386       V18=V18+88*A1*MT**2/(3*P1Q2)+72*A2*MT**2/P1Q2+
42387      &704*A12*MB*MT**3/(3*P1Q2)-224*A1*A2*MB*MT**3/(3*P1Q2)+
42388      &104*A1*P1P2/(3*P1Q2)+48*A2*P1P2/P1Q2+
42389      &128*A1*A2*MB*MT*P1P2/(3*P1Q2)+512*A12*MT**2*P1P2/(3*P1Q2)-
42390      &448*A1*A2*MT**2*P1P2/(3*P1Q2)-32*A1*A2*P1P2**2/P1Q2-
42391      &32*A1*MB*MT**3/(3*P1Q1*P1Q2)-32*A1*MT**4/(3*P1Q1*P1Q2)+
42392      &64*A12*MB*MT**5/(3*P1Q1*P1Q2)+16*P1P2/(3*P1Q1*P1Q2)-
42393      &64*A1*MT**2*P1P2/(3*P1Q1*P1Q2)+64*A12*MT**4*P1P2/(3*P1Q1*P1Q2)+
42394      &112*A1*P1Q1/P1Q2+272*A2*P1Q1/(3*P1Q2)-
42395      &272*A1*A2*MB**2*P1Q1/(3*P1Q2)+208*A12*MB*MT*P1Q1/(3*P1Q2)-
42396      &400*A1*A2*MB*MT*P1Q1/(3*P1Q2)-80*A1*A2*MT**2*P1Q1/P1Q2+
42397      &96*A12*P1P2*P1Q1/P1Q2-320*A1*A2*P1P2*P1Q1/P1Q2-
42398      &544*A1*A2*P1Q1**2/(3*P1Q2)-656*A1*A2*P1Q2/3-224*A2**2*P1Q2+
42399      &256*A1*MT**2*P1Q2/(3*P1Q1**2)+256*A12*MB*MT**3*P1Q2/(3*P1Q1**2)+
42400      &112*A1*P1Q2/P1Q1+272*A2*P1Q2/(3*P1Q1)-
42401      &272*A1*A2*MB**2*P1Q2/(3*P1Q1)+208*A12*MB*MT*P1Q2/(3*P1Q1)-
42402      &400*A1*A2*MB*MT*P1Q2/(3*P1Q1)-80*A1*A2*MT**2*P1Q2/P1Q1
42403       V18=V18+96*A12*P1P2*P1Q2/P1Q1-320*A1*A2*P1P2*P1Q2/P1Q1-
42404      &544*A1*A2*P1Q2**2/(3*P1Q1)+128*A2*MB**4/(3*P2Q1**2)+
42405      &128*A2*MB**3*MT/(3*P2Q1**2)-256*A2**2*MB**5*MT/(3*P2Q1**2)+
42406      &256*A2*MB**2*P1P2/(3*P2Q1**2)-256*A2**2*MB**4*P1P2/(3*P2Q1**2)+
42407      &256*A2*MB**2*P1Q1/(3*P2Q1**2)-256*A2**2*MB**4*P1Q1/(3*P2Q1**2)-
42408      &64*MB**3*MT**3/(3*P1Q2**2*P2Q1**2)-
42409      &64*MB**2*MT**2*P1P2/(3*P1Q2**2*P2Q1**2)-
42410      &64*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1**2)+
42411      &64*MB**3*MT/(3*P1Q2*P2Q1**2)+
42412      &256*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1**2)+
42413      &256*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1**2)+
42414      &256*A2*MB**3*MT*P1Q1/(3*P1Q2*P2Q1**2)+
42415      &512*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1**2)+
42416      &256*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1**2)-
42417      &256*A2**2*MB**4*P1Q2/(3*P2Q1**2)-8/(3*P2Q1)-72*A1*MB**2/P2Q1-
42418      &88*A2*MB**2/(3*P2Q1)+56*A1*MB*MT/(3*P2Q1)+32*A2*MB*MT/P2Q1+
42419      &224*A1*A2*MB**3*MT/(3*P2Q1)-704*A2**2*MB**3*MT/(3*P2Q1)
42420       V18=V18-48*A1*P1P2/P2Q1-104*A2*P1P2/(3*P2Q1)+
42421      &448*A1*A2*MB**2*P1P2/(3*P2Q1)-512*A2**2*MB**2*P1P2/(3*P2Q1)-
42422      &128*A1*A2*MB*MT*P1P2/(3*P2Q1)+32*A1*A2*P1P2**2/P2Q1-
42423      &16*P1P2/(3*P1Q1*P2Q1)-32*A1*MB*MT*P1P2/(3*P1Q1*P2Q1)-
42424      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q1)-
42425      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q1)-
42426      &64*A1*A2*P1P2**3/(3*P1Q1*P2Q1)-256*A2*P1Q1/(3*P2Q1)+
42427      &448*A1*A2*MB**2*P1Q1/(3*P2Q1)-368*A2**2*MB**2*P1Q1/(3*P2Q1)+
42428      &224*A1*A2*MB*MT*P1Q1/(3*P2Q1)+304*A1*A2*P1P2*P1Q1/(3*P2Q1)-
42429      &64*MB*MT**3/(3*P1Q2**2*P2Q1)-
42430      &256*A1*MB*MT**3*P1P2/(3*P1Q2**2*P2Q1)-
42431      &256*A1*MT**2*P1P2**2/(3*P1Q2**2*P2Q1)+
42432      &64*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
42433      &128*A1*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
42434      &128*A1*MB*MT**3*P1Q1/(3*P1Q2**2*P2Q1)-
42435      &256*A1*MT**2*P1P2*P1Q1/(3*P1Q2**2*P2Q1)-4*MB**2/(3*P1Q2*P2Q1)+
42436      &64*MB*MT/(3*P1Q2*P2Q1)-128*A2*MB**3*MT/(3*P1Q2*P2Q1)
42437       V18=V18-4*MT**2/(3*P1Q2*P2Q1)-128*A1*MB**2*MT**2/(3*P1Q2*P2Q1)-
42438      &128*A2*MB**2*MT**2/(3*P1Q2*P2Q1)-128*A1*MB*MT**3/(3*P1Q2*P2Q1)-
42439      &112*A2*MB**2*P1P2/(3*P1Q2*P2Q1)-32*A1*MB*MT*P1P2/(3*P1Q2*P2Q1)-
42440      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q1)-112*A1*MT**2*P1P2/(3*P1Q2*P2Q1)-
42441      &48*A1*P1P2**2/(P1Q2*P2Q1)-48*A2*P1P2**2/(P1Q2*P2Q1)+
42442      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q1)+
42443      &512*A1*A2*P1P2**3/(3*P1Q2*P2Q1)-8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q1)-
42444      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q1)+
42445      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q1)-
42446      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+
42447      &32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+8*P1Q1/(3*P1Q2*P2Q1)-
42448      &160*A1*MB**2*P1Q1/(3*P1Q2*P2Q1)-272*A2*MB**2*P1Q1/(3*P1Q2*P2Q1)+
42449      &56*A1*MB*MT*P1Q1/(3*P1Q2*P2Q1)+200*A2*MB*MT*P1Q1/(3*P1Q2*P2Q1)-
42450      &48*A1*P1P2*P1Q1/(P1Q2*P2Q1)-256*A2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
42451      &256*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
42452      &256*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1)+
42453      &1024*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q1)
42454       V18=V18-272*A2*P1Q1**2/(3*P1Q2*P2Q1)+
42455      &256*A1*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1)+
42456      &256*A1*A2*MB*MT*P1Q1**2/(3*P1Q2*P2Q1)+
42457      &512*A1*A2*P1P2*P1Q1**2/(3*P1Q2*P2Q1)+16*A2*P1Q2/(3*P2Q1)+
42458      &64*A1*A2*MB**2*P1Q2/P2Q1+32*A2**2*MB**2*P1Q2/(3*P2Q1)+
42459      &112*A1*A2*MB*MT*P1Q2/(3*P2Q1)+368*A1*A2*P1P2*P1Q2/(3*P2Q1)+
42460      &32*A2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
42461      &32*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
42462      &32*A1*A2*MB*MT*P1P2*P1Q2/(3*P1Q1*P2Q1)-
42463      &64*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q1)+224*A12*P2Q1+
42464      &656*A1*A2*P2Q1/3-256*A1*MT**2*P2Q1/(3*P1Q1**2)+
42465      &256*A12*MT**4*P2Q1/(3*P1Q1**2)-256*A1*P2Q1/(3*P1Q1)+
42466      &224*A1*A2*MB*MT*P2Q1/(3*P1Q1)-368*A12*MT**2*P2Q1/(3*P1Q1)+
42467      &448*A1*A2*MT**2*P2Q1/(3*P1Q1)+304*A1*A2*P1P2*P2Q1/(3*P1Q1)+
42468      &256*A12*MT**4*P2Q1/(3*P1Q2**2)+
42469      &256*A12*MT**2*P1Q1*P2Q1/(3*P1Q2**2)+16*A1*P2Q1/(3*P1Q2)+
42470      &112*A1*A2*MB*MT*P2Q1/(3*P1Q2)+32*A12*MT**2*P2Q1/(3*P1Q2)
42471       V18=V18+64*A1*A2*MT**2*P2Q1/P1Q2+368*A1*A2*P1P2*P2Q1/(3*P1Q2)+
42472      &16*A1*MT**2*P2Q1/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q1/(3*P1Q1*P1Q2)+
42473      &640*A12*P1Q1*P2Q1/(3*P1Q2)+544*A1*A2*P1Q1*P2Q1/(3*P1Q2)+
42474      &32*A12*P1Q2*P2Q1/P1Q1+944*A1*A2*P1Q2*P2Q1/(3*P1Q1)+
42475      &128*A2*MB**4/(3*P2Q2**2)+128*A2*MB**3*MT/(3*P2Q2**2)-
42476      &256*A2**2*MB**5*MT/(3*P2Q2**2)+256*A2*MB**2*P1P2/(3*P2Q2**2)-
42477      &256*A2**2*MB**4*P1P2/(3*P2Q2**2)-
42478      &64*MB**3*MT**3/(3*P1Q1**2*P2Q2**2)-
42479      &64*MB**2*MT**2*P1P2/(3*P1Q1**2*P2Q2**2)+
42480      &64*MB**3*MT/(3*P1Q1*P2Q2**2)+
42481      &256*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q2**2)+
42482      &256*A2*MB**2*P1P2**2/(3*P1Q1*P2Q2**2)-
42483      &256*A2**2*MB**4*P1Q1/(3*P2Q2**2)+256*A2*MB**2*P1Q2/(3*P2Q2**2)-
42484      &256*A2**2*MB**4*P1Q2/(3*P2Q2**2)-
42485      &64*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2**2)+
42486      &256*A2*MB**3*MT*P1Q2/(3*P1Q1*P2Q2**2)+
42487      &512*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2**2)
42488       V18=V18+256*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2**2)-
42489      &256*A2*MB**2*P2Q1/(3*P2Q2**2)-256*A2**2*MB**3*MT*P2Q1/(3*P2Q2**2)+
42490      &64*MB**2*MT**2*P2Q1/(3*P1Q1**2*P2Q2**2)+
42491      &64*MB**2*P2Q1/(3*P1Q1*P2Q2**2)-
42492      &128*A2*MB**3*MT*P2Q1/(3*P1Q1*P2Q2**2)-
42493      &128*A2*MB**2*MT**2*P2Q1/(3*P1Q1*P2Q2**2)-
42494      &256*A2*MB**2*P1P2*P2Q1/(3*P1Q1*P2Q2**2)+
42495      &256*A2**2*MB**2*P1Q1*P2Q1/(3*P2Q2**2)-
42496      &256*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2**2)-8/(3*P2Q2)-
42497      &72*A1*MB**2/P2Q2-88*A2*MB**2/(3*P2Q2)+56*A1*MB*MT/(3*P2Q2)+
42498      &32*A2*MB*MT/P2Q2+224*A1*A2*MB**3*MT/(3*P2Q2)-
42499      &704*A2**2*MB**3*MT/(3*P2Q2)-48*A1*P1P2/P2Q2-
42500      &104*A2*P1P2/(3*P2Q2)+448*A1*A2*MB**2*P1P2/(3*P2Q2)-
42501      &512*A2**2*MB**2*P1P2/(3*P2Q2)-128*A1*A2*MB*MT*P1P2/(3*P2Q2)+
42502      &32*A1*A2*P1P2**2/P2Q2-64*MB*MT**3/(3*P1Q1**2*P2Q2)-
42503      &256*A1*MB*MT**3*P1P2/(3*P1Q1**2*P2Q2)-
42504      &256*A1*MT**2*P1P2**2/(3*P1Q1**2*P2Q2)-4*MB**2/(3*P1Q1*P2Q2)
42505       V18=V18+64*MB*MT/(3*P1Q1*P2Q2)-128*A2*MB**3*MT/(3*P1Q1*P2Q2)-
42506      &4*MT**2/(3*P1Q1*P2Q2)-128*A1*MB**2*MT**2/(3*P1Q1*P2Q2)-
42507      &128*A2*MB**2*MT**2/(3*P1Q1*P2Q2)-128*A1*MB*MT**3/(3*P1Q1*P2Q2)-
42508      &112*A2*MB**2*P1P2/(3*P1Q1*P2Q2)-32*A1*MB*MT*P1P2/(3*P1Q1*P2Q2)-
42509      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q2)-112*A1*MT**2*P1P2/(3*P1Q1*P2Q2)-
42510      &48*A1*P1P2**2/(P1Q1*P2Q2)-48*A2*P1P2**2/(P1Q1*P2Q2)+
42511      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q2)+
42512      &512*A1*A2*P1P2**3/(3*P1Q1*P2Q2)+16*A2*P1Q1/(3*P2Q2)+
42513      &64*A1*A2*MB**2*P1Q1/P2Q2+32*A2**2*MB**2*P1Q1/(3*P2Q2)+
42514      &112*A1*A2*MB*MT*P1Q1/(3*P2Q2)+368*A1*A2*P1P2*P1Q1/(3*P2Q2)-
42515      &16*P1P2/(3*P1Q2*P2Q2)-32*A1*MB*MT*P1P2/(3*P1Q2*P2Q2)-
42516      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q2)-
42517      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q2)-
42518      &64*A1*A2*P1P2**3/(3*P1Q2*P2Q2)-8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q2)-
42519      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q2)+
42520      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q2)-
42521      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q2)
42522       V18=V18+32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q2)+
42523      &32*A2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
42524      &32*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
42525      &32*A1*A2*MB*MT*P1P2*P1Q1/(3*P1Q2*P2Q2)-
42526      &64*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q2)-256*A2*P1Q2/(3*P2Q2)+
42527      &448*A1*A2*MB**2*P1Q2/(3*P2Q2)-368*A2**2*MB**2*P1Q2/(3*P2Q2)+
42528      &224*A1*A2*MB*MT*P1Q2/(3*P2Q2)+304*A1*A2*P1P2*P1Q2/(3*P2Q2)+
42529      &64*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
42530      &128*A1*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
42531      &128*A1*MB*MT**3*P1Q2/(3*P1Q1**2*P2Q2)-
42532      &256*A1*MT**2*P1P2*P1Q2/(3*P1Q1**2*P2Q2)+8*P1Q2/(3*P1Q1*P2Q2)-
42533      &160*A1*MB**2*P1Q2/(3*P1Q1*P2Q2)-272*A2*MB**2*P1Q2/(3*P1Q1*P2Q2)+
42534      &56*A1*MB*MT*P1Q2/(3*P1Q1*P2Q2)+200*A2*MB*MT*P1Q2/(3*P1Q1*P2Q2)-
42535      &48*A1*P1P2*P1Q2/(P1Q1*P2Q2)-256*A2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
42536      &256*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
42537      &256*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2)+
42538      &1024*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q2)
42539       V18=V18-272*A2*P1Q2**2/(3*P1Q1*P2Q2)+
42540      &256*A1*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2)+
42541      &256*A1*A2*MB*MT*P1Q2**2/(3*P1Q1*P2Q2)+
42542      &512*A1*A2*P1P2*P1Q2**2/(3*P1Q1*P2Q2)-32*A2*MB**4/(3*P2Q1*P2Q2)-
42543      &32*A2*MB**3*MT/(3*P2Q1*P2Q2)+64*A2**2*MB**5*MT/(3*P2Q1*P2Q2)+
42544      &16*P1P2/(3*P2Q1*P2Q2)-64*A2*MB**2*P1P2/(3*P2Q1*P2Q2)+
42545      &64*A2**2*MB**4*P1P2/(3*P2Q1*P2Q2)+8*MB**2*P1P2/(3*P1Q1*P2Q1*P2Q2)+
42546      &8*MB*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)-
42547      &32*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
42548      &16*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
42549      &32*A2*MB**2*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
42550      &16*A2*MB**2*P1Q1/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q1/(3*P2Q1*P2Q2)+
42551      &8*MB**2*P1P2/(3*P1Q2*P2Q1*P2Q2)+8*MB*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)-
42552      &32*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
42553      &16*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
42554      &32*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1*P2Q2)+
42555      &16*MB*MT*P1P2**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
42556       V18=V18+16*P1P2**3/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42557      &32*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1*P2Q2)-
42558      &16*A2*MB**2*P1Q2/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q2/(3*P2Q1*P2Q2)-
42559      &32*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1*P2Q2)+272*A1*P2Q1/(3*P2Q2)+
42560      &112*A2*P2Q1/P2Q2-80*A1*A2*MB**2*P2Q1/P2Q2-
42561      &400*A1*A2*MB*MT*P2Q1/(3*P2Q2)+208*A2**2*MB*MT*P2Q1/(3*P2Q2)-
42562      &272*A1*A2*MT**2*P2Q1/(3*P2Q2)-320*A1*A2*P1P2*P2Q1/P2Q2+
42563      &96*A2**2*P1P2*P2Q1/P2Q2+256*A1*MB*MT**3*P2Q1/(3*P1Q1**2*P2Q2)+
42564      &512*A1*MT**2*P1P2*P2Q1/(3*P1Q1**2*P2Q2)-8*P2Q1/(3*P1Q1*P2Q2)-
42565      &200*A1*MB*MT*P2Q1/(3*P1Q1*P2Q2)-56*A2*MB*MT*P2Q1/(3*P1Q1*P2Q2)+
42566      &272*A1*MT**2*P2Q1/(3*P1Q1*P2Q2)+160*A2*MT**2*P2Q1/(3*P1Q1*P2Q2)+
42567      &256*A1*P1P2*P2Q1/(3*P1Q1*P2Q2)+48*A2*P1P2*P2Q1/(P1Q1*P2Q2)-
42568      &256*A1*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2)-
42569      &256*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q1*P2Q2)-
42570      &1024*A1*A2*P1P2**2*P2Q1/(3*P1Q1*P2Q2)-
42571      &544*A1*A2*P1Q1*P2Q1/(3*P2Q2)-640*A2**2*P1Q1*P2Q1/(3*P2Q2)-
42572      &32*A1*P1P2*P2Q1/(3*P1Q2*P2Q2)
42573       V18=V18+32*A1*A2*MB*MT*P1P2*P2Q1/(3*P1Q2*P2Q2)+
42574      &32*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q2*P2Q2)+
42575      &64*A1*A2*P1P2**2*P2Q1/(3*P1Q2*P2Q2)-
42576      &32*A1*MT**2*P1P2*P2Q1/(3*P1Q1*P1Q2*P2Q2)+
42577      &64*A1*A2*P1P2*P1Q1*P2Q1/(3*P1Q2*P2Q2)-
42578      &944*A1*A2*P1Q2*P2Q1/(3*P2Q2)-32*A2**2*P1Q2*P2Q1/P2Q2+
42579      &256*A1*MT**2*P1Q2*P2Q1/(3*P1Q1**2*P2Q2)+
42580      &96*A1*P1Q2*P2Q1/(P1Q1*P2Q2)+96*A2*P1Q2*P2Q1/(P1Q1*P2Q2)-
42581      &128*A1*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
42582      &256*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2)-
42583      &128*A1*A2*MT**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
42584      &512*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2)-
42585      &512*A1*A2*P1Q2**2*P2Q1/(3*P1Q1*P2Q2)+544*A1*A2*P2Q1**2/(3*P2Q2)-
42586      &256*A1*MT**2*P2Q1**2/(3*P1Q1**2*P2Q2)-
42587      &272*A1*P2Q1**2/(3*P1Q1*P2Q2)+
42588      &256*A1*A2*MB*MT*P2Q1**2/(3*P1Q1*P2Q2)+
42589      &256*A1*A2*MT**2*P2Q1**2/(3*P1Q1*P2Q2)
42590       V18=V18+512*A1*A2*P1P2*P2Q1**2/(3*P1Q1*P2Q2)+
42591      &512*A1*A2*P1Q2*P2Q1**2/(3*P1Q1*P2Q2)+224*A12*P2Q2+
42592      &656*A1*A2*P2Q2/3+256*A12*MT**4*P2Q2/(3*P1Q1**2)+
42593      &16*A1*P2Q2/(3*P1Q1)+112*A1*A2*MB*MT*P2Q2/(3*P1Q1)+
42594      &32*A12*MT**2*P2Q2/(3*P1Q1)+64*A1*A2*MT**2*P2Q2/P1Q1+
42595      &368*A1*A2*P1P2*P2Q2/(3*P1Q1)-256*A1*MT**2*P2Q2/(3*P1Q2**2)+
42596      &256*A12*MT**4*P2Q2/(3*P1Q2**2)-256*A1*P2Q2/(3*P1Q2)+
42597      &224*A1*A2*MB*MT*P2Q2/(3*P1Q2)-368*A12*MT**2*P2Q2/(3*P1Q2)+
42598      &448*A1*A2*MT**2*P2Q2/(3*P1Q2)+304*A1*A2*P1P2*P2Q2/(3*P1Q2)+
42599      &16*A1*MT**2*P2Q2/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q2/(3*P1Q1*P1Q2)+
42600      &32*A12*P1Q1*P2Q2/P1Q2+944*A1*A2*P1Q1*P2Q2/(3*P1Q2)+
42601      &256*A12*MT**2*P1Q2*P2Q2/(3*P1Q1**2)+
42602      &640*A12*P1Q2*P2Q2/(3*P1Q1)+544*A1*A2*P1Q2*P2Q2/(3*P1Q1)-
42603      &256*A2*MB**2*P2Q2/(3*P2Q1**2)-256*A2**2*MB**3*MT*P2Q2/(3*P2Q1**2)+
42604      &64*MB**2*MT**2*P2Q2/(3*P1Q2**2*P2Q1**2)+
42605      &64*MB**2*P2Q2/(3*P1Q2*P2Q1**2)-
42606      &128*A2*MB**3*MT*P2Q2/(3*P1Q2*P2Q1**2)
42607       V18=V18-128*A2*MB**2*MT**2*P2Q2/(3*P1Q2*P2Q1**2)-
42608      &256*A2*MB**2*P1P2*P2Q2/(3*P1Q2*P2Q1**2)-
42609      &256*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1**2)+
42610      &256*A2**2*MB**2*P1Q2*P2Q2/(3*P2Q1**2)+272*A1*P2Q2/(3*P2Q1)+
42611      &112*A2*P2Q2/P2Q1-80*A1*A2*MB**2*P2Q2/P2Q1-
42612      &400*A1*A2*MB*MT*P2Q2/(3*P2Q1)+208*A2**2*MB*MT*P2Q2/(3*P2Q1)-
42613      &272*A1*A2*MT**2*P2Q2/(3*P2Q1)-320*A1*A2*P1P2*P2Q2/P2Q1+
42614      &96*A2**2*P1P2*P2Q2/P2Q1-32*A1*P1P2*P2Q2/(3*P1Q1*P2Q1)+
42615      &32*A1*A2*MB*MT*P1P2*P2Q2/(3*P1Q1*P2Q1)+
42616      &32*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q1*P2Q1)+
42617      &64*A1*A2*P1P2**2*P2Q2/(3*P1Q1*P2Q1)-944*A1*A2*P1Q1*P2Q2/(3*P2Q1)-
42618      &32*A2**2*P1Q1*P2Q2/P2Q1+256*A1*MB*MT**3*P2Q2/(3*P1Q2**2*P2Q1)+
42619      &512*A1*MT**2*P1P2*P2Q2/(3*P1Q2**2*P2Q1)+
42620      &256*A1*MT**2*P1Q1*P2Q2/(3*P1Q2**2*P2Q1)-8*P2Q2/(3*P1Q2*P2Q1)-
42621      &200*A1*MB*MT*P2Q2/(3*P1Q2*P2Q1)-56*A2*MB*MT*P2Q2/(3*P1Q2*P2Q1)+
42622      &272*A1*MT**2*P2Q2/(3*P1Q2*P2Q1)+160*A2*MT**2*P2Q2/(3*P1Q2*P2Q1)+
42623      &256*A1*P1P2*P2Q2/(3*P1Q2*P2Q1)+48*A2*P1P2*P2Q2/(P1Q2*P2Q1)
42624       V18=V18-256*A1*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1)-
42625      &256*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q2*P2Q1)-
42626      &1024*A1*A2*P1P2**2*P2Q2/(3*P1Q2*P2Q1)-
42627      &32*A1*MT**2*P1P2*P2Q2/(3*P1Q1*P1Q2*P2Q1)+
42628      &96*A1*P1Q1*P2Q2/(P1Q2*P2Q1)+96*A2*P1Q1*P2Q2/(P1Q2*P2Q1)-
42629      &128*A1*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
42630      &256*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1)-
42631      &128*A1*A2*MT**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
42632      &512*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1)-
42633      &512*A1*A2*P1Q1**2*P2Q2/(3*P1Q2*P2Q1)-544*A1*A2*P1Q2*P2Q2/(3*P2Q1)-
42634      &640*A2**2*P1Q2*P2Q2/(3*P2Q1)+
42635      &64*A1*A2*P1P2*P1Q2*P2Q2/(3*P1Q1*P2Q1)+544*A1*A2*P2Q2**2/(3*P2Q1)-
42636      &256*A1*MT**2*P2Q2**2/(3*P1Q2**2*P2Q1)-
42637      &272*A1*P2Q2**2/(3*P1Q2*P2Q1)+
42638      &256*A1*A2*MB*MT*P2Q2**2/(3*P1Q2*P2Q1)+
42639      &256*A1*A2*MT**2*P2Q2**2/(3*P1Q2*P2Q1)+
42640      &512*A1*A2*P1P2*P2Q2**2/(3*P1Q2*P2Q1)
42641       V18=V18+512*A1*A2*P1Q1*P2Q2**2/(3*P1Q2*P2Q1)+
42642      &384*A12*MB*MT*P1Q1**2/S**2+
42643      &384*A12*P1P2*P1Q1**2/S**2+2688*A12*MB*MT*P1Q1*P1Q2/S**2+
42644      &2688*A12*P1P2*P1Q1*P1Q2/S**2+384*A12*MB*MT*P1Q2**2/S**2+
42645      &384*A12*P1P2*P1Q2**2/S**2+768*A1*A2*MB*MT*P1Q1*P2Q1/S**2+
42646      &768*A1*A2*P1P2*P1Q1*P2Q1/S**2+2688*A1*A2*MB*MT*P1Q2*P2Q1/S**2+
42647      &2688*A1*A2*P1P2*P1Q2*P2Q1/S**2-960*A12*P1Q1*P1Q2*P2Q1/S**2-
42648      &960*A1*A2*P1Q1*P1Q2*P2Q1/S**2+960*A12*P1Q2**2*P2Q1/S**2+
42649      &960*A1*A2*P1Q2**2*P2Q1/S**2+384*A2**2*MB*MT*P2Q1**2/S**2+
42650      &384*A2**2*P1P2*P2Q1**2/S**2-960*A1*A2*P1Q2*P2Q1**2/S**2-
42651      &960*A2**2*P1Q2*P2Q1**2/S**2+2688*A1*A2*MB*MT*P1Q1*P2Q2/S**2+
42652      &2688*A1*A2*P1P2*P1Q1*P2Q2/S**2+960*A12*P1Q1**2*P2Q2/S**2+
42653      &960*A1*A2*P1Q1**2*P2Q2/S**2+768*A1*A2*MB*MT*P1Q2*P2Q2/S**2+
42654      &768*A1*A2*P1P2*P1Q2*P2Q2/S**2-960*A12*P1Q1*P1Q2*P2Q2/S**2-
42655      &960*A1*A2*P1Q1*P1Q2*P2Q2/S**2+2688*A2**2*MB*MT*P2Q1*P2Q2/S**2+
42656      &2688*A2**2*P1P2*P2Q1*P2Q2/S**2+960*A1*A2*P1Q1*P2Q1*P2Q2/S**2+
42657      &960*A2**2*P1Q1*P2Q1*P2Q2/S**2+960*A1*A2*P1Q2*P2Q1*P2Q2/S**2+
42658      &960*A2**2*P1Q2*P2Q1*P2Q2/S**2+384*A2**2*MB*MT*P2Q2**2/S**2
42659       V18=V18+384*A2**2*P1P2*P2Q2**2/S**2-960*A1*A2*P1Q1*P2Q2**2/S**2-
42660      &960*A2**2*P1Q1*P2Q2**2/S**2+96*A1*MB*MT/S+96*A2*MB*MT/S-
42661      &768*A2**2*MB**3*MT/S-768*A12*MB*MT**3/S-192*A1*P1P2/S-
42662      &192*A2*P1P2/S-768*A2**2*MB**2*P1P2/S-2304*A1*A2*MB*MT*P1P2/S-
42663      &768*A12*MT**2*P1P2/S-2304*A1*A2*P1P2**2/S-
42664      &96*A1*MB*MT**3/(P1Q1*S)-192*A2*MB*MT*P1P2/(P1Q1*S)-
42665      &96*A1*MT**2*P1P2/(P1Q1*S)-192*A2*P1P2**2/(P1Q1*S)-192*A1*P1Q1/S-
42666      &144*A2*P1Q1/S-384*A1*A2*MB**2*P1Q1/S-480*A2**2*MB**2*P1Q1/S-
42667      &480*A12*MB*MT*P1Q1/S+96*A1*A2*MB*MT*P1Q1/S-
42668      &864*A12*P1P2*P1Q1/S-672*A1*A2*P1P2*P1Q1/S-96*A1*A2*P1Q1**2/S-
42669      &96*A1*MB*MT**3/(P1Q2*S)-192*A2*MB*MT*P1P2/(P1Q2*S)-
42670      &96*A1*MT**2*P1P2/(P1Q2*S)-192*A2*P1P2**2/(P1Q2*S)-
42671      &48*A1*MB*MT*P1Q1/(P1Q2*S)+96*A2*MB*MT*P1Q1/(P1Q2*S)-
42672      &48*A1*MT**2*P1Q1/(P1Q2*S)-192*A1*P1P2*P1Q1/(P1Q2*S)-
42673      &192*A2*P1P2*P1Q1/(P1Q2*S)+192*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*S)+
42674      &192*A1*A2*P1P2**2*P1Q1/(P1Q2*S)-192*A1*P1Q1**2/(P1Q2*S)-
42675      &192*A2*P1Q1**2/(P1Q2*S)+192*A1*A2*MB**2*P1Q1**2/(P1Q2*S)
42676       V18=V18-192*A12*MB*MT*P1Q1**2/(P1Q2*S)+
42677      &96*A1*A2*MB*MT*P1Q1**2/(P1Q2*S)+
42678      &192*A1*A2*P1P2*P1Q1**2/(P1Q2*S)-192*A1*P1Q2/S-144*A2*P1Q2/S-
42679      &384*A1*A2*MB**2*P1Q2/S-480*A2**2*MB**2*P1Q2/S-
42680      &480*A12*MB*MT*P1Q2/S+96*A1*A2*MB*MT*P1Q2/S-
42681      &864*A12*P1P2*P1Q2/S-672*A1*A2*P1P2*P1Q2/S-
42682      &48*A1*MB*MT*P1Q2/(P1Q1*S)+96*A2*MB*MT*P1Q2/(P1Q1*S)-
42683      &48*A1*MT**2*P1Q2/(P1Q1*S)-192*A1*P1P2*P1Q2/(P1Q1*S)-
42684      &192*A2*P1P2*P1Q2/(P1Q1*S)+192*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*S)+
42685      &192*A1*A2*P1P2**2*P1Q2/(P1Q1*S)-576*A1*A2*P1Q1*P1Q2/S-
42686      &96*A1*A2*P1Q2**2/S-192*A1*P1Q2**2/(P1Q1*S)-
42687      &192*A2*P1Q2**2/(P1Q1*S)+192*A1*A2*MB**2*P1Q2**2/(P1Q1*S)-
42688      &192*A12*MB*MT*P1Q2**2/(P1Q1*S)+96*A1*A2*MB*MT*P1Q2**2/(P1Q1*S)+
42689      &192*A1*A2*P1P2*P1Q2**2/(P1Q1*S)+96*A2*MB**3*MT/(P2Q1*S)+
42690      &96*A2*MB**2*P1P2/(P2Q1*S)+192*A1*MB*MT*P1P2/(P2Q1*S)+
42691      &192*A1*P1P2**2/(P2Q1*S)+96*A1*MB**2*P1Q1/(P2Q1*S)+
42692      &192*A2*MB**2*P1Q1/(P2Q1*S)+96*A1*MB*MT*P1Q1/(P2Q1*S)+
42693      &192*A1*A2*MB**3*MT*P1Q1/(P2Q1*S)+192*A1*P1P2*P1Q1/(P2Q1*S)
42694       V18=V18+192*A1*A2*MB**2*P1P2*P1Q1/(P2Q1*S)+
42695      &96*A1*A2*MB**2*P1Q1**2/(P2Q1*S)+
42696      &192*A2*MB**3*MT*P1Q1/(P1Q2*P2Q1*S)+
42697      &192*A2*MB**2*P1P2*P1Q1/(P1Q2*P2Q1*S)+
42698      &96*A1*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1*S)+
42699      &96*A1*P1P2**2*P1Q1/(P1Q2*P2Q1*S)+
42700      &96*A1*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
42701      &192*A2*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
42702      &48*A1*MB*MT*P1Q1**2/(P1Q2*P2Q1*S)+
42703      &96*A1*P1P2*P1Q1**2/(P1Q2*P2Q1*S)+96*A1*MB**2*P1Q2/(P2Q1*S)+
42704      &48*A2*MB**2*P1Q2/(P2Q1*S)-192*A1*A2*MB**3*MT*P1Q2/(P2Q1*S)-
42705      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q1*S)-
42706      &96*A1*A2*MB**2*P1Q2**2/(P2Q1*S)+144*A1*P2Q1/S+192*A2*P2Q1/S-
42707      &96*A1*A2*MB*MT*P2Q1/S+480*A2**2*MB*MT*P2Q1/S+
42708      &480*A12*MT**2*P2Q1/S+384*A1*A2*MT**2*P2Q1/S+
42709      &672*A1*A2*P1P2*P2Q1/S+864*A2**2*P1P2*P2Q1/S+
42710      &96*A2*MB*MT*P2Q1/(P1Q1*S)+192*A1*MT**2*P2Q1/(P1Q1*S)
42711       V18=V18+96*A2*MT**2*P2Q1/(P1Q1*S)+
42712      &192*A1*A2*MB*MT**3*P2Q1/(P1Q1*S)+
42713      &192*A2*P1P2*P2Q1/(P1Q1*S)+192*A1*A2*MT**2*P1P2*P2Q1/(P1Q1*S)-
42714      &192*A12*P1Q1*P2Q1/S-192*A2**2*P1Q1*P2Q1/S+
42715      &48*A1*MT**2*P2Q1/(P1Q2*S)+96*A2*MT**2*P2Q1/(P1Q2*S)-
42716      &192*A1*A2*MB*MT**3*P2Q1/(P1Q2*S)-
42717      &192*A1*A2*MT**2*P1P2*P2Q1/(P1Q2*S)-
42718      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P1Q2*S)-
42719      &192*A12*MT**2*P1Q1*P2Q1/(P1Q2*S)-
42720      &96*A1*A2*MT**2*P1Q1*P2Q1/(P1Q2*S)-
42721      &384*A1*A2*P1P2*P1Q1*P2Q1/(P1Q2*S)-384*A12*P1Q1**2*P2Q1/(P1Q2*S)-
42722      &384*A1*A2*P1Q1**2*P2Q1/(P1Q2*S)-480*A12*P1Q2*P2Q1/S-
42723      &960*A1*A2*P1Q2*P2Q1/S-480*A2**2*P1Q2*P2Q1/S+
42724      &144*A1*P1Q2*P2Q1/(P1Q1*S)+96*A2*P1Q2*P2Q1/(P1Q1*S)-
42725      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*S)-
42726      &96*A12*MT**2*P1Q2*P2Q1/(P1Q1*S)+
42727      &96*A1*A2*MT**2*P1Q2*P2Q1/(P1Q1*S)-
42728      &576*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*S)-192*A12*P1Q2**2*P2Q1/(P1Q1*S)
42729       V18=V18-384*A1*A2*P1Q2**2*P2Q1/(P1Q1*S)-96*A1*A2*P2Q1**2/S-
42730      &96*A1*A2*MT**2*P2Q1**2/(P1Q1*S)+96*A1*A2*MT**2*P2Q1**2/(P1Q2*S)+
42731      &288*A1*A2*P1Q2*P2Q1**2/(P1Q1*S)+96*A2*MB**3*MT/(P2Q2*S)+
42732      &96*A2*MB**2*P1P2/(P2Q2*S)+192*A1*MB*MT*P1P2/(P2Q2*S)+
42733      &192*A1*P1P2**2/(P2Q2*S)+96*A1*MB**2*P1Q1/(P2Q2*S)+
42734      &48*A2*MB**2*P1Q1/(P2Q2*S)-192*A1*A2*MB**3*MT*P1Q1/(P2Q2*S)-
42735      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q2*S)-
42736      &96*A1*A2*MB**2*P1Q1**2/(P2Q2*S)+96*A1*MB**2*P1Q2/(P2Q2*S)+
42737      &192*A2*MB**2*P1Q2/(P2Q2*S)+96*A1*MB*MT*P1Q2/(P2Q2*S)+
42738      &192*A1*A2*MB**3*MT*P1Q2/(P2Q2*S)+192*A1*P1P2*P1Q2/(P2Q2*S)+
42739      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q2*S)+
42740      &192*A2*MB**3*MT*P1Q2/(P1Q1*P2Q2*S)+
42741      &192*A2*MB**2*P1P2*P1Q2/(P1Q1*P2Q2*S)+
42742      &96*A1*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2*S)+
42743      &96*A1*P1P2**2*P1Q2/(P1Q1*P2Q2*S)+96*A1*A2*MB**2*P1Q2**2/(P2Q2*S)+
42744      &96*A1*MB**2*P1Q2**2/(P1Q1*P2Q2*S)+
42745      &192*A2*MB**2*P1Q2**2/(P1Q1*P2Q2*S)
42746       V18=V18+48*A1*MB*MT*P1Q2**2/(P1Q1*P2Q2*S)+
42747      &96*A1*P1P2*P1Q2**2/(P1Q1*P2Q2*S)-48*A2*MB**2*P2Q1/(P2Q2*S)+
42748      &96*A1*MB*MT*P2Q1/(P2Q2*S)-48*A2*MB*MT*P2Q1/(P2Q2*S)-
42749      &192*A1*P1P2*P2Q1/(P2Q2*S)-192*A2*P1P2*P2Q1/(P2Q2*S)+
42750      &192*A1*A2*MB*MT*P1P2*P2Q1/(P2Q2*S)+
42751      &192*A1*A2*P1P2**2*P2Q1/(P2Q2*S)-
42752      &192*A1*MB*MT**3*P2Q1/(P1Q1*P2Q2*S)-
42753      &96*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2*S)-
42754      &192*A1*MT**2*P1P2*P2Q1/(P1Q1*P2Q2*S)-
42755      &96*A2*P1P2**2*P2Q1/(P1Q1*P2Q2*S)+
42756      &96*A1*A2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
42757      &192*A2**2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
42758      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P2Q2*S)+
42759      &384*A1*A2*P1P2*P1Q1*P2Q1/(P2Q2*S)-96*A1*P1Q2*P2Q1/(P2Q2*S)-
42760      &144*A2*P1Q2*P2Q1/(P2Q2*S)-96*A1*A2*MB**2*P1Q2*P2Q1/(P2Q2*S)+
42761      &96*A2**2*MB**2*P1Q2*P2Q1/(P2Q2*S)+
42762      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P2Q2*S)
42763       V18=V18+576*A1*A2*P1P2*P1Q2*P2Q1/(P2Q2*S)-
42764      &96*A2*MB**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
42765      &48*A1*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
42766      &48*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
42767      &96*A1*MT**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
42768      &96*A1*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
42769      &96*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
42770      &96*A1*A2*P1Q1*P1Q2*P2Q1/(P2Q2*S)+288*A1*A2*P1Q2**2*P2Q1/(P2Q2*S)-
42771      &96*A1*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)-96*A2*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)+
42772      &192*A1*P2Q1**2/(P2Q2*S)+192*A2*P2Q1**2/(P2Q2*S)-
42773      &96*A1*A2*MB*MT*P2Q1**2/(P2Q2*S)+192*A2**2*MB*MT*P2Q1**2/(P2Q2*S)-
42774      &192*A1*A2*MT**2*P2Q1**2/(P2Q2*S)-192*A1*A2*P1P2*P2Q1**2/(P2Q2*S)+
42775      &48*A2*MB*MT*P2Q1**2/(P1Q1*P2Q2*S)+
42776      &192*A1*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
42777      &96*A2*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
42778      &96*A2*P1P2*P2Q1**2/(P1Q1*P2Q2*S)-384*A1*A2*P1Q1*P2Q1**2/(P2Q2*S)-
42779      &384*A2**2*P1Q1*P2Q1**2/(P2Q2*S)-384*A1*A2*P1Q2*P2Q1**2/(P2Q2*S)
42780       V18=V18-192*A2**2*P1Q2*P2Q1**2/(P2Q2*S)+
42781      &96*A1*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+
42782      &96*A2*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+144*A1*P2Q2/S+192*A2*P2Q2/S-
42783      &96*A1*A2*MB*MT*P2Q2/S+480*A2**2*MB*MT*P2Q2/S+
42784      &480*A12*MT**2*P2Q2/S+384*A1*A2*MT**2*P2Q2/S+
42785      &672*A1*A2*P1P2*P2Q2/S+864*A2**2*P1P2*P2Q2/S+
42786      &48*A1*MT**2*P2Q2/(P1Q1*S)+96*A2*MT**2*P2Q2/(P1Q1*S)-
42787      &192*A1*A2*MB*MT**3*P2Q2/(P1Q1*S)-
42788      &192*A1*A2*MT**2*P1P2*P2Q2/(P1Q1*S)-480*A12*P1Q1*P2Q2/S-
42789      &960*A1*A2*P1Q1*P2Q2/S-480*A2**2*P1Q1*P2Q2/S+
42790      &96*A2*MB*MT*P2Q2/(P1Q2*S)+192*A1*MT**2*P2Q2/(P1Q2*S)+
42791      &96*A2*MT**2*P2Q2/(P1Q2*S)+192*A1*A2*MB*MT**3*P2Q2/(P1Q2*S)+
42792      &192*A2*P1P2*P2Q2/(P1Q2*S)+192*A1*A2*MT**2*P1P2*P2Q2/(P1Q2*S)+
42793      &144*A1*P1Q1*P2Q2/(P1Q2*S)+96*A2*P1Q1*P2Q2/(P1Q2*S)-
42794      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*S)-
42795      &96*A12*MT**2*P1Q1*P2Q2/(P1Q2*S)+
42796      &96*A1*A2*MT**2*P1Q1*P2Q2/(P1Q2*S)
42797       V18=V18-576*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*S)-
42798      &192*A12*P1Q1**2*P2Q2/(P1Q2*S)-
42799      &384*A1*A2*P1Q1**2*P2Q2/(P1Q2*S)-192*A12*P1Q2*P2Q2/S-
42800      &192*A2**2*P1Q2*P2Q2/S-96*A1*A2*MB*MT*P1Q2*P2Q2/(P1Q1*S)-
42801      &192*A12*MT**2*P1Q2*P2Q2/(P1Q1*S)-
42802      &96*A1*A2*MT**2*P1Q2*P2Q2/(P1Q1*S)-
42803      &384*A1*A2*P1P2*P1Q2*P2Q2/(P1Q1*S)-384*A12*P1Q2**2*P2Q2/(P1Q1*S)-
42804      &384*A1*A2*P1Q2**2*P2Q2/(P1Q1*S)-48*A2*MB**2*P2Q2/(P2Q1*S)+
42805      &96*A1*MB*MT*P2Q2/(P2Q1*S)-48*A2*MB*MT*P2Q2/(P2Q1*S)-
42806      &192*A1*P1P2*P2Q2/(P2Q1*S)-192*A2*P1P2*P2Q2/(P2Q1*S)+
42807      &192*A1*A2*MB*MT*P1P2*P2Q2/(P2Q1*S)+
42808      &192*A1*A2*P1P2**2*P2Q2/(P2Q1*S)-96*A1*P1Q1*P2Q2/(P2Q1*S)-
42809      &144*A2*P1Q1*P2Q2/(P2Q1*S)-96*A1*A2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
42810      &96*A2**2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
42811      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P2Q1*S)+
42812      &576*A1*A2*P1P2*P1Q1*P2Q2/(P2Q1*S)+288*A1*A2*P1Q1**2*P2Q2/(P2Q1*S)-
42813      &192*A1*MB*MT**3*P2Q2/(P1Q2*P2Q1*S)
42814       V18=V18-96*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1*S)-
42815      &192*A1*MT**2*P1P2*P2Q2/(P1Q2*P2Q1*S)-
42816      &96*A2*P1P2**2*P2Q2/(P1Q2*P2Q1*S)-
42817      &96*A2*MB**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)+
42818      &48*A1*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)
42819  
42820       V18BIS=
42821      &48*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
42822      &96*A1*MT**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
42823      &96*A1*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
42824      &96*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
42825      &96*A1*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)-96*A2*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)+
42826      &96*A1*A2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
42827      &192*A2**2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
42828      &96*A1*A2*MB*MT*P1Q2*P2Q2/(P2Q1*S)+
42829      &384*A1*A2*P1P2*P1Q2*P2Q2/(P2Q1*S)+
42830      &96*A1*A2*P1Q1*P1Q2*P2Q2/(P2Q1*S)-576*A1*A2*P2Q1*P2Q2/S+
42831      &96*A1*A2*P1Q1*P2Q1*P2Q2/(P1Q2*S)+96*A1*A2*P1Q2*P2Q1*P2Q2/(P1Q1*S)-
42832      &96*A1*A2*P2Q2**2/S+96*A1*A2*MT**2*P2Q2**2/(P1Q1*S)-
42833      &96*A1*A2*MT**2*P2Q2**2/(P1Q2*S)+288*A1*A2*P1Q1*P2Q2**2/(P1Q2*S)+
42834      &192*A1*P2Q2**2/(P2Q1*S)+192*A2*P2Q2**2/(P2Q1*S)-
42835      &96*A1*A2*MB*MT*P2Q2**2/(P2Q1*S)+192*A2**2*MB*MT*P2Q2**2/(P2Q1*S)-
42836      &192*A1*A2*MT**2*P2Q2**2/(P2Q1*S)-192*A1*A2*P1P2*P2Q2**2/(P2Q1*S)
42837       V18BIS=V18BIS-384*A1*A2*P1Q1*P2Q2**2/(P2Q1*S)-
42838      &192*A2**2*P1Q1*P2Q2**2/(P2Q1*S)+
42839      &48*A2*MB*MT*P2Q2**2/(P1Q2*P2Q1*S)+
42840      &192*A1*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
42841      &96*A2*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
42842      &96*A2*P1P2*P2Q2**2/(P1Q2*P2Q1*S)+96*A1*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)+
42843      &96*A2*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)-384*A1*A2*P1Q2*P2Q2**2/(P2Q1*S)-
42844      &384*A2**2*P1Q2*P2Q2**2/(P2Q1*S)+512*A1*A2*S/3-
42845      &128*A1*MT**2*S/(3*P1Q1**2)-128*A12*MB*MT**3*S/(3*P1Q1**2)-
42846      &152*A1*S/(3*P1Q1)+152*A12*MB*MT*S/(3*P1Q1)+
42847      &128*A1*A2*MB*MT*S/(3*P1Q1)+112*A1*A2*MT**2*S/(3*P1Q1)-
42848      &16*A12*P1P2*S/P1Q1+152*A1*A2*P1P2*S/(3*P1Q1)-
42849      &128*A1*MT**2*S/(3*P1Q2**2)-128*A12*MB*MT**3*S/(3*P1Q2**2)-
42850      &152*A1*S/(3*P1Q2)+152*A12*MB*MT*S/(3*P1Q2)+
42851      &128*A1*A2*MB*MT*S/(3*P1Q2)+112*A1*A2*MT**2*S/(3*P1Q2)-
42852      &16*A12*P1P2*S/P1Q2+152*A1*A2*P1P2*S/(3*P1Q2)-
42853      &16*A1*MB*MT*S/(3*P1Q1*P1Q2)+32*A12*MB*MT**3*S/(3*P1Q1*P1Q2)
42854       V18BIS=V18BIS-16*A1*P1P2*S/(3*P1Q1*P1Q2)+
42855      &272*A1*A2*P1Q1*S/(3*P1Q2)+
42856      &272*A1*A2*P1Q2*S/(3*P1Q1)-128*A2*MB**2*S/(3*P2Q1**2)-
42857      &128*A2**2*MB**3*MT*S/(3*P2Q1**2)+
42858      &32*MB**2*MT**2*S/(3*P1Q2**2*P2Q1**2)+32*MB**2*S/(3*P1Q2*P2Q1**2)-
42859      &64*A2*MB**3*MT*S/(3*P1Q2*P2Q1**2)-
42860      &64*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1**2)-
42861      &128*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1**2)-
42862      &128*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1**2)+
42863      &128*A2**2*MB**2*P1Q2*S/(3*P2Q1**2)+152*A2*S/(3*P2Q1)-
42864      &112*A1*A2*MB**2*S/(3*P2Q1)-128*A1*A2*MB*MT*S/(3*P2Q1)-
42865      &152*A2**2*MB*MT*S/(3*P2Q1)-152*A1*A2*P1P2*S/(3*P2Q1)+
42866      &16*A2**2*P1P2*S/P2Q1+8*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q1)+
42867      &16*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q1)+
42868      &8*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q1)-8*A1*P1P2*S/(3*P1Q1*P2Q1)-
42869      &8*A2*P1P2*S/(3*P1Q1*P2Q1)+8*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1)+
42870      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1)
42871       V18BIS=V18BIS+8*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q1)+
42872      &32*A1*A2*P1P2**2*S/(3*P1Q1*P2Q1)-32*A2**2*P1Q1*S/(3*P2Q1)-
42873      &32*MT**2*S/(3*P1Q2**2*P2Q1)+64*A1*MB**2*MT**2*S/(3*P1Q2**2*P2Q1)+
42874      &64*A1*MB*MT**3*S/(3*P1Q2**2*P2Q1)+
42875      &128*A1*MT**2*P1P2*S/(3*P1Q2**2*P2Q1)-12*S/(P1Q2*P2Q1)+
42876      &24*A1*MB**2*S/(P1Q2*P2Q1)-64*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q1)+
42877      &24*A2*MT**2*S/(P1Q2*P2Q1)-128*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1)-
42878      &64*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q1)+56*A1*P1P2*S/(3*P1Q2*P2Q1)+
42879      &56*A2*P1P2*S/(3*P1Q2*P2Q1)-64*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1)-
42880      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1)-
42881      &64*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q1)-
42882      &256*A1*A2*P1P2**2*S/(3*P1Q2*P2Q1)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+
42883      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
42884      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+136*A2*P1Q1*S/(3*P1Q2*P2Q1)-
42885      &128*A1*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1)-
42886      &128*A1*A2*MB*MT*P1Q1*S/(3*P1Q2*P2Q1)-
42887      &256*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1)-160*A2**2*P1Q2*S/(3*P2Q1)
42888       V18BIS=V18BIS+16*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1)-
42889      &32*A12*P2Q1*S/(3*P1Q1)-
42890      &128*A12*MT**2*P2Q1*S/(3*P1Q2**2)-160*A12*P2Q1*S/(3*P1Q2)-
42891      &128*A2*MB**2*S/(3*P2Q2**2)-128*A2**2*MB**3*MT*S/(3*P2Q2**2)+
42892      &32*MB**2*MT**2*S/(3*P1Q1**2*P2Q2**2)+32*MB**2*S/(3*P1Q1*P2Q2**2)-
42893      &64*A2*MB**3*MT*S/(3*P1Q1*P2Q2**2)-
42894      &64*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2**2)-
42895      &128*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2**2)+
42896      &128*A2**2*MB**2*P1Q1*S/(3*P2Q2**2)-
42897      &128*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2**2)+152*A2*S/(3*P2Q2)-
42898      &112*A1*A2*MB**2*S/(3*P2Q2)-128*A1*A2*MB*MT*S/(3*P2Q2)-
42899      &152*A2**2*MB*MT*S/(3*P2Q2)-152*A1*A2*P1P2*S/(3*P2Q2)+
42900      &16*A2**2*P1P2*S/P2Q2-32*MT**2*S/(3*P1Q1**2*P2Q2)+
42901      &64*A1*MB**2*MT**2*S/(3*P1Q1**2*P2Q2)+
42902      &64*A1*MB*MT**3*S/(3*P1Q1**2*P2Q2)+
42903      &128*A1*MT**2*P1P2*S/(3*P1Q1**2*P2Q2)-12*S/(P1Q1*P2Q2)+
42904      &24*A1*MB**2*S/(P1Q1*P2Q2)-64*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q2)
42905       V18BIS=V18BIS+24*A2*MT**2*S/(P1Q1*P2Q2)-
42906      &128*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2)-
42907      &64*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q2)+56*A1*P1P2*S/(3*P1Q1*P2Q2)+
42908      &56*A2*P1P2*S/(3*P1Q1*P2Q2)-64*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2)-
42909      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q2)-
42910      &64*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q2)-
42911      &256*A1*A2*P1P2**2*S/(3*P1Q1*P2Q2)-160*A2**2*P1Q1*S/(3*P2Q2)+
42912      &8*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q2)+
42913      &16*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q2)+
42914      &8*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q2)-8*A1*P1P2*S/(3*P1Q2*P2Q2)-
42915      &8*A2*P1P2*S/(3*P1Q2*P2Q2)+8*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q2)+
42916      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q2)+
42917      &8*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q2)+
42918      &32*A1*A2*P1P2**2*S/(3*P1Q2*P2Q2)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
42919      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
42920      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
42921      &16*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q2)-32*A2**2*P1Q2*S/(3*P2Q2)
42922       V18BIS=V18BIS+136*A2*P1Q2*S/(3*P1Q1*P2Q2)-
42923      &128*A1*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2)-
42924      &128*A1*A2*MB*MT*P1Q2*S/(3*P1Q1*P2Q2)-
42925      &256*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q2)-16*A2*MB*MT*S/(3*P2Q1*P2Q2)+
42926      &32*A2**2*MB**3*MT*S/(3*P2Q1*P2Q2)-16*A2*P1P2*S/(3*P2Q1*P2Q2)-
42927      &4*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+8*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-
42928      &8*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-4*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
42929      &8*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1*P2Q2)-
42930      &8*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
42931      &2*MB**3*MT*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
42932      &4*MB**2*MT**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
42933      &2*MB*MT**3*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42934      &2*MB**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42935      &4*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42936      &2*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42937      &8*P1P2**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
42938      &8*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1*P2Q2)
42939       V18BIS=V18BIS+8*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1*P2Q2)+
42940      &272*A1*A2*P2Q1*S/(3*P2Q2)-
42941      &128*A1*MT**2*P2Q1*S/(3*P1Q1**2*P2Q2)-136*A1*P2Q1*S/(3*P1Q1*P2Q2)+
42942      &128*A1*A2*MB*MT*P2Q1*S/(3*P1Q1*P2Q2)+
42943      &128*A1*A2*MT**2*P2Q1*S/(3*P1Q1*P2Q2)+
42944      &256*A1*A2*P1P2*P2Q1*S/(3*P1Q1*P2Q2)-
42945      &16*A1*A2*P1P2*P2Q1*S/(3*P1Q2*P2Q2)+
42946      &8*A1*P1P2*P2Q1*S/(3*P1Q1*P1Q2*P2Q2)+
42947      &256*A1*A2*P1Q2*P2Q1*S/(3*P1Q1*P2Q2)-
42948      &128*A12*MT**2*P2Q2*S/(3*P1Q1**2)-160*A12*P2Q2*S/(3*P1Q1)-
42949      &32*A12*P2Q2*S/(3*P1Q2)+272*A1*A2*P2Q2*S/(3*P2Q1)-
42950      &16*A1*A2*P1P2*P2Q2*S/(3*P1Q1*P2Q1)-
42951      &128*A1*MT**2*P2Q2*S/(3*P1Q2**2*P2Q1)-136*A1*P2Q2*S/(3*P1Q2*P2Q1)+
42952      &128*A1*A2*MB*MT*P2Q2*S/(3*P1Q2*P2Q1)+
42953      &128*A1*A2*MT**2*P2Q2*S/(3*P1Q2*P2Q1)+
42954      &256*A1*A2*P1P2*P2Q2*S/(3*P1Q2*P2Q1)+
42955      &8*A1*P1P2*P2Q2*S/(3*P1Q1*P1Q2*P2Q1)
42956       V18BIS=V18BIS+256*A1*A2*P1Q1*P2Q2*S/(3*P1Q2*P2Q1)+
42957      &8*A12*MB*MT*S**2/(3*P1Q1*P1Q2)+16*A12*P1P2*S**2/(3*P1Q1*P1Q2)-
42958      &8*A1*A2*P1P2*S**2/(3*P1Q1*P2Q1)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1)-
42959      &8*A1*A2*P1P2*S**2/(3*P1Q2*P2Q2)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q2)+
42960      &8*A2**2*MB*MT*S**2/(3*P2Q1*P2Q2)+16*A2**2*P1P2*S**2/(3*P2Q1*P2Q2)-
42961      &4*A2*P1P2*S**2/(3*P1Q1*P2Q1*P2Q2)-
42962      &4*A2*P1P2*S**2/(3*P1Q2*P2Q1*P2Q2)+
42963      &2*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
42964 C
42965  
42966       A18 = 640*A1/3+640*A2/3+32*A1*A2*MB**2+368*A12*MB*MT+
42967      &512*A1*A2*MB*MT/3+
42968      &368*A2**2*MB*MT+32*A1*A2*MT**2+496*A12*P1P2/3+
42969      &320*A1*A2*P1P2+496*A2**2*P1P2/3-128*A1*MB*MT**3/(3*P1Q1**2)+
42970      &128*A1*MT**4/(3*P1Q1**2)+256*A12*MB*MT**5/(3*P1Q1**2)+
42971      &256*A1*MT**2*P1P2/(3*P1Q1**2)-256*A12*MT**4*P1P2/(3*P1Q1**2)+
42972      &8/(3*P1Q1)+32*A1*MB*MT/P1Q1+56*A2*MB*MT/(3*P1Q1)+
42973      &88*A1*MT**2/(3*P1Q1)+72*A2*MT**2/P1Q1-
42974      &704*A12*MB*MT**3/(3*P1Q1)+224*A1*A2*MB*MT**3/(3*P1Q1)+
42975      &104*A1*P1P2/(3*P1Q1)+48*A2*P1P2/P1Q1-
42976      &128*A1*A2*MB*MT*P1P2/(3*P1Q1)+512*A12*MT**2*P1P2/(3*P1Q1)-
42977      &448*A1*A2*MT**2*P1P2/(3*P1Q1)-32*A1*A2*P1P2**2/P1Q1-
42978      &656*A1*A2*P1Q1/3-224*A2**2*P1Q1-128*A1*MB*MT**3/(3*P1Q2**2)+
42979      &128*A1*MT**4/(3*P1Q2**2)+256*A12*MB*MT**5/(3*P1Q2**2)+
42980      &256*A1*MT**2*P1P2/(3*P1Q2**2)-256*A12*MT**4*P1P2/(3*P1Q2**2)+
42981      &256*A1*MT**2*P1Q1/(3*P1Q2**2)-256*A12*MB*MT**3*P1Q1/(3*P1Q2**2)+
42982      &8/(3*P1Q2)+32*A1*MB*MT/P1Q2+56*A2*MB*MT/(3*P1Q2)
42983       A18=A18+88*A1*MT**2/(3*P1Q2)+72*A2*MT**2/P1Q2-
42984      &704*A12*MB*MT**3/(3*P1Q2)+224*A1*A2*MB*MT**3/(3*P1Q2)+
42985      &104*A1*P1P2/(3*P1Q2)+48*A2*P1P2/P1Q2-
42986      &128*A1*A2*MB*MT*P1P2/(3*P1Q2)+512*A12*MT**2*P1P2/(3*P1Q2)-
42987      &448*A1*A2*MT**2*P1P2/(3*P1Q2)-32*A1*A2*P1P2**2/P1Q2+
42988      &32*A1*MB*MT**3/(3*P1Q1*P1Q2)-32*A1*MT**4/(3*P1Q1*P1Q2)-
42989      &64*A12*MB*MT**5/(3*P1Q1*P1Q2)+16*P1P2/(3*P1Q1*P1Q2)-
42990      &64*A1*MT**2*P1P2/(3*P1Q1*P1Q2)+64*A12*MT**4*P1P2/(3*P1Q1*P1Q2)+
42991      &112*A1*P1Q1/P1Q2+272*A2*P1Q1/(3*P1Q2)-
42992      &272*A1*A2*MB**2*P1Q1/(3*P1Q2)-208*A12*MB*MT*P1Q1/(3*P1Q2)+
42993      &400*A1*A2*MB*MT*P1Q1/(3*P1Q2)-80*A1*A2*MT**2*P1Q1/P1Q2+
42994      &96*A12*P1P2*P1Q1/P1Q2-320*A1*A2*P1P2*P1Q1/P1Q2-
42995      &544*A1*A2*P1Q1**2/(3*P1Q2)-656*A1*A2*P1Q2/3-224*A2**2*P1Q2+
42996      &256*A1*MT**2*P1Q2/(3*P1Q1**2)-256*A12*MB*MT**3*P1Q2/(3*P1Q1**2)+
42997      &112*A1*P1Q2/P1Q1+272*A2*P1Q2/(3*P1Q1)-
42998      &272*A1*A2*MB**2*P1Q2/(3*P1Q1)-208*A12*MB*MT*P1Q2/(3*P1Q1)+
42999      &400*A1*A2*MB*MT*P1Q2/(3*P1Q1)-80*A1*A2*MT**2*P1Q2/P1Q1
43000       A18=A18+96*A12*P1P2*P1Q2/P1Q1-320*A1*A2*P1P2*P1Q2/P1Q1-
43001      &544*A1*A2*P1Q2**2/(3*P1Q1)+128*A2*MB**4/(3*P2Q1**2)-
43002      &128*A2*MB**3*MT/(3*P2Q1**2)+256*A2**2*MB**5*MT/(3*P2Q1**2)+
43003      &256*A2*MB**2*P1P2/(3*P2Q1**2)-256*A2**2*MB**4*P1P2/(3*P2Q1**2)+
43004      &256*A2*MB**2*P1Q1/(3*P2Q1**2)-256*A2**2*MB**4*P1Q1/(3*P2Q1**2)+
43005      &64*MB**3*MT**3/(3*P1Q2**2*P2Q1**2)-
43006      &64*MB**2*MT**2*P1P2/(3*P1Q2**2*P2Q1**2)-
43007      &64*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1**2)-
43008      &64*MB**3*MT/(3*P1Q2*P2Q1**2)-
43009      &256*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1**2)+
43010      &256*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1**2)-
43011      &256*A2*MB**3*MT*P1Q1/(3*P1Q2*P2Q1**2)+
43012      &512*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1**2)+
43013      &256*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1**2)-
43014      &256*A2**2*MB**4*P1Q2/(3*P2Q1**2)-8/(3*P2Q1)-72*A1*MB**2/P2Q1-
43015      &88*A2*MB**2/(3*P2Q1)-56*A1*MB*MT/(3*P2Q1)-32*A2*MB*MT/P2Q1-
43016      &224*A1*A2*MB**3*MT/(3*P2Q1)+704*A2**2*MB**3*MT/(3*P2Q1)
43017       A18=A18-48*A1*P1P2/P2Q1-104*A2*P1P2/(3*P2Q1)+
43018      &448*A1*A2*MB**2*P1P2/(3*P2Q1)-512*A2**2*MB**2*P1P2/(3*P2Q1)+
43019      &128*A1*A2*MB*MT*P1P2/(3*P2Q1)+32*A1*A2*P1P2**2/P2Q1-
43020      &16*P1P2/(3*P1Q1*P2Q1)+32*A1*MB*MT*P1P2/(3*P1Q1*P2Q1)+
43021      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q1)+
43022      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q1)-
43023      &64*A1*A2*P1P2**3/(3*P1Q1*P2Q1)-256*A2*P1Q1/(3*P2Q1)+
43024      &448*A1*A2*MB**2*P1Q1/(3*P2Q1)-368*A2**2*MB**2*P1Q1/(3*P2Q1)-
43025      &224*A1*A2*MB*MT*P1Q1/(3*P2Q1)+304*A1*A2*P1P2*P1Q1/(3*P2Q1)+
43026      &64*MB*MT**3/(3*P1Q2**2*P2Q1)+
43027      &256*A1*MB*MT**3*P1P2/(3*P1Q2**2*P2Q1)-
43028      &256*A1*MT**2*P1P2**2/(3*P1Q2**2*P2Q1)+
43029      &64*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
43030      &128*A1*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1)+
43031      &128*A1*MB*MT**3*P1Q1/(3*P1Q2**2*P2Q1)-
43032      &256*A1*MT**2*P1P2*P1Q1/(3*P1Q2**2*P2Q1)-4*MB**2/(3*P1Q2*P2Q1)-
43033      &64*MB*MT/(3*P1Q2*P2Q1)+128*A2*MB**3*MT/(3*P1Q2*P2Q1)
43034       A18=A18-4*MT**2/(3*P1Q2*P2Q1)-128*A1*MB**2*MT**2/(3*P1Q2*P2Q1)-
43035      &128*A2*MB**2*MT**2/(3*P1Q2*P2Q1)+128*A1*MB*MT**3/(3*P1Q2*P2Q1)-
43036      &112*A2*MB**2*P1P2/(3*P1Q2*P2Q1)+32*A1*MB*MT*P1P2/(3*P1Q2*P2Q1)+
43037      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q1)-112*A1*MT**2*P1P2/(3*P1Q2*P2Q1)-
43038      &48*A1*P1P2**2/(P1Q2*P2Q1)-48*A2*P1P2**2/(P1Q2*P2Q1)-
43039      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q1)+
43040      &512*A1*A2*P1P2**3/(3*P1Q2*P2Q1)+8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43041      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43042      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43043      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+
43044      &32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+8*P1Q1/(3*P1Q2*P2Q1)-
43045      &160*A1*MB**2*P1Q1/(3*P1Q2*P2Q1)-272*A2*MB**2*P1Q1/(3*P1Q2*P2Q1)-
43046      &56*A1*MB*MT*P1Q1/(3*P1Q2*P2Q1)-200*A2*MB*MT*P1Q1/(3*P1Q2*P2Q1)-
43047      &48*A1*P1P2*P1Q1/(P1Q2*P2Q1)-256*A2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
43048      &256*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1)-
43049      &256*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1)+
43050      &1024*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q1)
43051       A18=A18-272*A2*P1Q1**2/(3*P1Q2*P2Q1)+
43052      &256*A1*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1)-
43053      &256*A1*A2*MB*MT*P1Q1**2/(3*P1Q2*P2Q1)+
43054      &512*A1*A2*P1P2*P1Q1**2/(3*P1Q2*P2Q1)+16*A2*P1Q2/(3*P2Q1)+
43055      &64*A1*A2*MB**2*P1Q2/P2Q1+32*A2**2*MB**2*P1Q2/(3*P2Q1)-
43056      &112*A1*A2*MB*MT*P1Q2/(3*P2Q1)+368*A1*A2*P1P2*P1Q2/(3*P2Q1)+
43057      &32*A2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43058      &32*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1)+
43059      &32*A1*A2*MB*MT*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43060      &64*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q1)+224*A12*P2Q1+
43061      &656*A1*A2*P2Q1/3-256*A1*MT**2*P2Q1/(3*P1Q1**2)+
43062      &256*A12*MT**4*P2Q1/(3*P1Q1**2)-256*A1*P2Q1/(3*P1Q1)-
43063      &224*A1*A2*MB*MT*P2Q1/(3*P1Q1)-368*A12*MT**2*P2Q1/(3*P1Q1)+
43064      &448*A1*A2*MT**2*P2Q1/(3*P1Q1)+304*A1*A2*P1P2*P2Q1/(3*P1Q1)+
43065      &256*A12*MT**4*P2Q1/(3*P1Q2**2)+
43066      &256*A12*MT**2*P1Q1*P2Q1/(3*P1Q2**2)+16*A1*P2Q1/(3*P1Q2)-
43067      &112*A1*A2*MB*MT*P2Q1/(3*P1Q2)+32*A12*MT**2*P2Q1/(3*P1Q2)
43068       A18=A18+64*A1*A2*MT**2*P2Q1/P1Q2+368*A1*A2*P1P2*P2Q1/(3*P1Q2)+
43069      &16*A1*MT**2*P2Q1/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q1/(3*P1Q1*P1Q2)+
43070      &640*A12*P1Q1*P2Q1/(3*P1Q2)+544*A1*A2*P1Q1*P2Q1/(3*P1Q2)+
43071      &32*A12*P1Q2*P2Q1/P1Q1+944*A1*A2*P1Q2*P2Q1/(3*P1Q1)+
43072      &128*A2*MB**4/(3*P2Q2**2)-128*A2*MB**3*MT/(3*P2Q2**2)+
43073      &256*A2**2*MB**5*MT/(3*P2Q2**2)+256*A2*MB**2*P1P2/(3*P2Q2**2)-
43074      &256*A2**2*MB**4*P1P2/(3*P2Q2**2)+
43075      &64*MB**3*MT**3/(3*P1Q1**2*P2Q2**2)-
43076      &64*MB**2*MT**2*P1P2/(3*P1Q1**2*P2Q2**2)-
43077      &64*MB**3*MT/(3*P1Q1*P2Q2**2)-
43078      &256*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q2**2)+
43079      &256*A2*MB**2*P1P2**2/(3*P1Q1*P2Q2**2)-
43080      &256*A2**2*MB**4*P1Q1/(3*P2Q2**2)+256*A2*MB**2*P1Q2/(3*P2Q2**2)-
43081      &256*A2**2*MB**4*P1Q2/(3*P2Q2**2)-
43082      &64*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2**2)-
43083      &256*A2*MB**3*MT*P1Q2/(3*P1Q1*P2Q2**2)+
43084      &512*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2**2)
43085       A18=A18+256*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2**2)-
43086      &256*A2*MB**2*P2Q1/(3*P2Q2**2)+256*A2**2*MB**3*MT*P2Q1/(3*P2Q2**2)+
43087      &64*MB**2*MT**2*P2Q1/(3*P1Q1**2*P2Q2**2)+
43088      &64*MB**2*P2Q1/(3*P1Q1*P2Q2**2)+
43089      &128*A2*MB**3*MT*P2Q1/(3*P1Q1*P2Q2**2)-
43090      &128*A2*MB**2*MT**2*P2Q1/(3*P1Q1*P2Q2**2)-
43091      &256*A2*MB**2*P1P2*P2Q1/(3*P1Q1*P2Q2**2)+
43092      &256*A2**2*MB**2*P1Q1*P2Q1/(3*P2Q2**2)-
43093      &256*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2**2)-8/(3*P2Q2)-
43094      &72*A1*MB**2/P2Q2-88*A2*MB**2/(3*P2Q2)-56*A1*MB*MT/(3*P2Q2)-
43095      &32*A2*MB*MT/P2Q2-224*A1*A2*MB**3*MT/(3*P2Q2)+
43096      &704*A2**2*MB**3*MT/(3*P2Q2)-48*A1*P1P2/P2Q2-
43097      &104*A2*P1P2/(3*P2Q2)+448*A1*A2*MB**2*P1P2/(3*P2Q2)-
43098      &512*A2**2*MB**2*P1P2/(3*P2Q2)+128*A1*A2*MB*MT*P1P2/(3*P2Q2)+
43099      &32*A1*A2*P1P2**2/P2Q2+64*MB*MT**3/(3*P1Q1**2*P2Q2)+
43100      &256*A1*MB*MT**3*P1P2/(3*P1Q1**2*P2Q2)-
43101      &256*A1*MT**2*P1P2**2/(3*P1Q1**2*P2Q2)-4*MB**2/(3*P1Q1*P2Q2)
43102       A18=A18-64*MB*MT/(3*P1Q1*P2Q2)+128*A2*MB**3*MT/(3*P1Q1*P2Q2)-
43103      &4*MT**2/(3*P1Q1*P2Q2)-128*A1*MB**2*MT**2/(3*P1Q1*P2Q2)-
43104      &128*A2*MB**2*MT**2/(3*P1Q1*P2Q2)+128*A1*MB*MT**3/(3*P1Q1*P2Q2)-
43105      &112*A2*MB**2*P1P2/(3*P1Q1*P2Q2)+32*A1*MB*MT*P1P2/(3*P1Q1*P2Q2)+
43106      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q2)-112*A1*MT**2*P1P2/(3*P1Q1*P2Q2)-
43107      &48*A1*P1P2**2/(P1Q1*P2Q2)-48*A2*P1P2**2/(P1Q1*P2Q2)-
43108      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q2)+
43109      &512*A1*A2*P1P2**3/(3*P1Q1*P2Q2)+16*A2*P1Q1/(3*P2Q2)+
43110      &64*A1*A2*MB**2*P1Q1/P2Q2+32*A2**2*MB**2*P1Q1/(3*P2Q2)-
43111      &112*A1*A2*MB*MT*P1Q1/(3*P2Q2)+368*A1*A2*P1P2*P1Q1/(3*P2Q2)-
43112      &16*P1P2/(3*P1Q2*P2Q2)+32*A1*MB*MT*P1P2/(3*P1Q2*P2Q2)+
43113      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q2)+
43114      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q2)-
43115      &64*A1*A2*P1P2**3/(3*P1Q2*P2Q2)+8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43116      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43117      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43118      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q2)
43119       A18=A18+32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q2)+
43120      &32*A2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43121      &32*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q2)+
43122      &32*A1*A2*MB*MT*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43123      &64*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q2)-256*A2*P1Q2/(3*P2Q2)+
43124      &448*A1*A2*MB**2*P1Q2/(3*P2Q2)-368*A2**2*MB**2*P1Q2/(3*P2Q2)-
43125      &224*A1*A2*MB*MT*P1Q2/(3*P2Q2)+304*A1*A2*P1P2*P1Q2/(3*P2Q2)+
43126      &64*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
43127      &128*A1*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2)+
43128      &128*A1*MB*MT**3*P1Q2/(3*P1Q1**2*P2Q2)-
43129      &256*A1*MT**2*P1P2*P1Q2/(3*P1Q1**2*P2Q2)+8*P1Q2/(3*P1Q1*P2Q2)-
43130      &160*A1*MB**2*P1Q2/(3*P1Q1*P2Q2)-272*A2*MB**2*P1Q2/(3*P1Q1*P2Q2)-
43131      &56*A1*MB*MT*P1Q2/(3*P1Q1*P2Q2)-200*A2*MB*MT*P1Q2/(3*P1Q1*P2Q2)-
43132      &48*A1*P1P2*P1Q2/(P1Q1*P2Q2)-256*A2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
43133      &256*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2)-
43134      &256*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2)+
43135      &1024*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q2)
43136       A18=A18-272*A2*P1Q2**2/(3*P1Q1*P2Q2)+
43137      &256*A1*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2)-
43138      &256*A1*A2*MB*MT*P1Q2**2/(3*P1Q1*P2Q2)+
43139      &512*A1*A2*P1P2*P1Q2**2/(3*P1Q1*P2Q2)-32*A2*MB**4/(3*P2Q1*P2Q2)+
43140      &32*A2*MB**3*MT/(3*P2Q1*P2Q2)-64*A2**2*MB**5*MT/(3*P2Q1*P2Q2)+
43141      &16*P1P2/(3*P2Q1*P2Q2)-64*A2*MB**2*P1P2/(3*P2Q1*P2Q2)+
43142      &64*A2**2*MB**4*P1P2/(3*P2Q1*P2Q2)+8*MB**2*P1P2/(3*P1Q1*P2Q1*P2Q2)-
43143      &8*MB*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
43144      &32*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
43145      &16*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
43146      &32*A2*MB**2*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
43147      &16*A2*MB**2*P1Q1/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q1/(3*P2Q1*P2Q2)+
43148      &8*MB**2*P1P2/(3*P1Q2*P2Q1*P2Q2)-8*MB*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
43149      &32*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
43150      &16*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
43151      &32*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
43152      &16*MB*MT*P1P2**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
43153       A18=A18+16*P1P2**3/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43154      &32*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1*P2Q2)-
43155      &16*A2*MB**2*P1Q2/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q2/(3*P2Q1*P2Q2)-
43156      &32*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1*P2Q2)+272*A1*P2Q1/(3*P2Q2)+
43157      &112*A2*P2Q1/P2Q2-80*A1*A2*MB**2*P2Q1/P2Q2+
43158      &400*A1*A2*MB*MT*P2Q1/(3*P2Q2)-208*A2**2*MB*MT*P2Q1/(3*P2Q2)-
43159      &272*A1*A2*MT**2*P2Q1/(3*P2Q2)-320*A1*A2*P1P2*P2Q1/P2Q2+
43160      &96*A2**2*P1P2*P2Q1/P2Q2-256*A1*MB*MT**3*P2Q1/(3*P1Q1**2*P2Q2)+
43161      &512*A1*MT**2*P1P2*P2Q1/(3*P1Q1**2*P2Q2)-8*P2Q1/(3*P1Q1*P2Q2)+
43162      &200*A1*MB*MT*P2Q1/(3*P1Q1*P2Q2)+56*A2*MB*MT*P2Q1/(3*P1Q1*P2Q2)+
43163      &272*A1*MT**2*P2Q1/(3*P1Q1*P2Q2)+160*A2*MT**2*P2Q1/(3*P1Q1*P2Q2)+
43164      &256*A1*P1P2*P2Q1/(3*P1Q1*P2Q2)+48*A2*P1P2*P2Q1/(P1Q1*P2Q2)+
43165      &256*A1*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2)-
43166      &256*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q1*P2Q2)-
43167      &1024*A1*A2*P1P2**2*P2Q1/(3*P1Q1*P2Q2)-
43168      &544*A1*A2*P1Q1*P2Q1/(3*P2Q2)-640*A2**2*P1Q1*P2Q1/(3*P2Q2)-
43169      &32*A1*P1P2*P2Q1/(3*P1Q2*P2Q2)
43170       A18=A18-32*A1*A2*MB*MT*P1P2*P2Q1/(3*P1Q2*P2Q2)+
43171      &32*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q2*P2Q2)+
43172      &64*A1*A2*P1P2**2*P2Q1/(3*P1Q2*P2Q2)-
43173      &32*A1*MT**2*P1P2*P2Q1/(3*P1Q1*P1Q2*P2Q2)+
43174      &64*A1*A2*P1P2*P1Q1*P2Q1/(3*P1Q2*P2Q2)-
43175      &944*A1*A2*P1Q2*P2Q1/(3*P2Q2)-32*A2**2*P1Q2*P2Q1/P2Q2+
43176      &256*A1*MT**2*P1Q2*P2Q1/(3*P1Q1**2*P2Q2)+
43177      &96*A1*P1Q2*P2Q1/(P1Q1*P2Q2)+96*A2*P1Q2*P2Q1/(P1Q1*P2Q2)-
43178      &128*A1*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)+
43179      &256*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2)-
43180      &128*A1*A2*MT**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
43181      &512*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2)-
43182      &512*A1*A2*P1Q2**2*P2Q1/(3*P1Q1*P2Q2)+544*A1*A2*P2Q1**2/(3*P2Q2)-
43183      &256*A1*MT**2*P2Q1**2/(3*P1Q1**2*P2Q2)-
43184      &272*A1*P2Q1**2/(3*P1Q1*P2Q2)-
43185      &256*A1*A2*MB*MT*P2Q1**2/(3*P1Q1*P2Q2)+
43186      &256*A1*A2*MT**2*P2Q1**2/(3*P1Q1*P2Q2)
43187       A18=A18+512*A1*A2*P1P2*P2Q1**2/(3*P1Q1*P2Q2)+
43188      &512*A1*A2*P1Q2*P2Q1**2/(3*P1Q1*P2Q2)+224*A12*P2Q2+
43189      &656*A1*A2*P2Q2/3+256*A12*MT**4*P2Q2/(3*P1Q1**2)+
43190      &16*A1*P2Q2/(3*P1Q1)-112*A1*A2*MB*MT*P2Q2/(3*P1Q1)+
43191      &32*A12*MT**2*P2Q2/(3*P1Q1)+64*A1*A2*MT**2*P2Q2/P1Q1+
43192      &368*A1*A2*P1P2*P2Q2/(3*P1Q1)-256*A1*MT**2*P2Q2/(3*P1Q2**2)+
43193      &256*A12*MT**4*P2Q2/(3*P1Q2**2)-256*A1*P2Q2/(3*P1Q2)-
43194      &224*A1*A2*MB*MT*P2Q2/(3*P1Q2)-368*A12*MT**2*P2Q2/(3*P1Q2)+
43195      &448*A1*A2*MT**2*P2Q2/(3*P1Q2)+304*A1*A2*P1P2*P2Q2/(3*P1Q2)+
43196      &16*A1*MT**2*P2Q2/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q2/(3*P1Q1*P1Q2)+
43197      &32*A12*P1Q1*P2Q2/P1Q2+944*A1*A2*P1Q1*P2Q2/(3*P1Q2)+
43198      &256*A12*MT**2*P1Q2*P2Q2/(3*P1Q1**2)+
43199      &640*A12*P1Q2*P2Q2/(3*P1Q1)+544*A1*A2*P1Q2*P2Q2/(3*P1Q1)-
43200      &256*A2*MB**2*P2Q2/(3*P2Q1**2)+256*A2**2*MB**3*MT*P2Q2/(3*P2Q1**2)+
43201      &64*MB**2*MT**2*P2Q2/(3*P1Q2**2*P2Q1**2)+
43202      &64*MB**2*P2Q2/(3*P1Q2*P2Q1**2)+
43203      &128*A2*MB**3*MT*P2Q2/(3*P1Q2*P2Q1**2)
43204       A18=A18-128*A2*MB**2*MT**2*P2Q2/(3*P1Q2*P2Q1**2)-
43205      &256*A2*MB**2*P1P2*P2Q2/(3*P1Q2*P2Q1**2)-
43206      &256*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1**2)+
43207      &256*A2**2*MB**2*P1Q2*P2Q2/(3*P2Q1**2)+272*A1*P2Q2/(3*P2Q1)+
43208      &112*A2*P2Q2/P2Q1-80*A1*A2*MB**2*P2Q2/P2Q1+
43209      &400*A1*A2*MB*MT*P2Q2/(3*P2Q1)-208*A2**2*MB*MT*P2Q2/(3*P2Q1)-
43210      &272*A1*A2*MT**2*P2Q2/(3*P2Q1)-320*A1*A2*P1P2*P2Q2/P2Q1+
43211      &96*A2**2*P1P2*P2Q2/P2Q1-32*A1*P1P2*P2Q2/(3*P1Q1*P2Q1)-
43212      &32*A1*A2*MB*MT*P1P2*P2Q2/(3*P1Q1*P2Q1)+
43213      &32*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q1*P2Q1)+
43214      &64*A1*A2*P1P2**2*P2Q2/(3*P1Q1*P2Q1)-944*A1*A2*P1Q1*P2Q2/(3*P2Q1)-
43215      &32*A2**2*P1Q1*P2Q2/P2Q1-256*A1*MB*MT**3*P2Q2/(3*P1Q2**2*P2Q1)+
43216      &512*A1*MT**2*P1P2*P2Q2/(3*P1Q2**2*P2Q1)+
43217      &256*A1*MT**2*P1Q1*P2Q2/(3*P1Q2**2*P2Q1)-8*P2Q2/(3*P1Q2*P2Q1)+
43218      &200*A1*MB*MT*P2Q2/(3*P1Q2*P2Q1)+56*A2*MB*MT*P2Q2/(3*P1Q2*P2Q1)+
43219      &272*A1*MT**2*P2Q2/(3*P1Q2*P2Q1)+160*A2*MT**2*P2Q2/(3*P1Q2*P2Q1)+
43220      &256*A1*P1P2*P2Q2/(3*P1Q2*P2Q1)+48*A2*P1P2*P2Q2/(P1Q2*P2Q1)
43221       A18=A18+256*A1*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1)-
43222      &256*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q2*P2Q1)-
43223      &1024*A1*A2*P1P2**2*P2Q2/(3*P1Q2*P2Q1)-
43224      &32*A1*MT**2*P1P2*P2Q2/(3*P1Q1*P1Q2*P2Q1)+
43225      &96*A1*P1Q1*P2Q2/(P1Q2*P2Q1)+96*A2*P1Q1*P2Q2/(P1Q2*P2Q1)-
43226      &128*A1*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)+
43227      &256*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1)-
43228      &128*A1*A2*MT**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
43229      &512*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1)-
43230      &512*A1*A2*P1Q1**2*P2Q2/(3*P1Q2*P2Q1)-544*A1*A2*P1Q2*P2Q2/(3*P2Q1)-
43231      &640*A2**2*P1Q2*P2Q2/(3*P2Q1)+
43232      &64*A1*A2*P1P2*P1Q2*P2Q2/(3*P1Q1*P2Q1)+544*A1*A2*P2Q2**2/(3*P2Q1)-
43233      &256*A1*MT**2*P2Q2**2/(3*P1Q2**2*P2Q1)-
43234      &272*A1*P2Q2**2/(3*P1Q2*P2Q1)-
43235      &256*A1*A2*MB*MT*P2Q2**2/(3*P1Q2*P2Q1)+
43236      &256*A1*A2*MT**2*P2Q2**2/(3*P1Q2*P2Q1)+
43237      &512*A1*A2*P1P2*P2Q2**2/(3*P1Q2*P2Q1)
43238       A18=A18+512*A1*A2*P1Q1*P2Q2**2/(3*P1Q2*P2Q1)-
43239      &384*A12*MB*MT*P1Q1**2/S**2+
43240      &384*A12*P1P2*P1Q1**2/S**2-2688*A12*MB*MT*P1Q1*P1Q2/S**2+
43241      &2688*A12*P1P2*P1Q1*P1Q2/S**2-384*A12*MB*MT*P1Q2**2/S**2+
43242      &384*A12*P1P2*P1Q2**2/S**2-768*A1*A2*MB*MT*P1Q1*P2Q1/S**2+
43243      &768*A1*A2*P1P2*P1Q1*P2Q1/S**2-2688*A1*A2*MB*MT*P1Q2*P2Q1/S**2+
43244      &2688*A1*A2*P1P2*P1Q2*P2Q1/S**2-960*A12*P1Q1*P1Q2*P2Q1/S**2-
43245      &960*A1*A2*P1Q1*P1Q2*P2Q1/S**2+960*A12*P1Q2**2*P2Q1/S**2+
43246      &960*A1*A2*P1Q2**2*P2Q1/S**2-384*A2**2*MB*MT*P2Q1**2/S**2+
43247      &384*A2**2*P1P2*P2Q1**2/S**2-960*A1*A2*P1Q2*P2Q1**2/S**2-
43248      &960*A2**2*P1Q2*P2Q1**2/S**2-2688*A1*A2*MB*MT*P1Q1*P2Q2/S**2+
43249      &2688*A1*A2*P1P2*P1Q1*P2Q2/S**2+960*A12*P1Q1**2*P2Q2/S**2+
43250      &960*A1*A2*P1Q1**2*P2Q2/S**2-768*A1*A2*MB*MT*P1Q2*P2Q2/S**2+
43251      &768*A1*A2*P1P2*P1Q2*P2Q2/S**2-960*A12*P1Q1*P1Q2*P2Q2/S**2-
43252      &960*A1*A2*P1Q1*P1Q2*P2Q2/S**2-2688*A2**2*MB*MT*P2Q1*P2Q2/S**2+
43253      &2688*A2**2*P1P2*P2Q1*P2Q2/S**2+960*A1*A2*P1Q1*P2Q1*P2Q2/S**2+
43254      &960*A2**2*P1Q1*P2Q1*P2Q2/S**2+960*A1*A2*P1Q2*P2Q1*P2Q2/S**2
43255       A18=A18+960*A2**2*P1Q2*P2Q1*P2Q2/S**2-
43256      &384*A2**2*MB*MT*P2Q2**2/S**2+
43257      &384*A2**2*P1P2*P2Q2**2/S**2-960*A1*A2*P1Q1*P2Q2**2/S**2-
43258      &960*A2**2*P1Q1*P2Q2**2/S**2-96*A1*MB*MT/S-96*A2*MB*MT/S+
43259      &768*A2**2*MB**3*MT/S+768*A12*MB*MT**3/S-192*A1*P1P2/S-
43260      &192*A2*P1P2/S-768*A2**2*MB**2*P1P2/S+2304*A1*A2*MB*MT*P1P2/S-
43261      &768*A12*MT**2*P1P2/S-2304*A1*A2*P1P2**2/S+
43262      &96*A1*MB*MT**3/(P1Q1*S)+192*A2*MB*MT*P1P2/(P1Q1*S)-
43263      &96*A1*MT**2*P1P2/(P1Q1*S)-192*A2*P1P2**2/(P1Q1*S)-192*A1*P1Q1/S-
43264      &144*A2*P1Q1/S-384*A1*A2*MB**2*P1Q1/S-480*A2**2*MB**2*P1Q1/S+
43265      &480*A12*MB*MT*P1Q1/S-96*A1*A2*MB*MT*P1Q1/S-
43266      &864*A12*P1P2*P1Q1/S-672*A1*A2*P1P2*P1Q1/S-96*A1*A2*P1Q1**2/S+
43267      &96*A1*MB*MT**3/(P1Q2*S)+192*A2*MB*MT*P1P2/(P1Q2*S)-
43268      &96*A1*MT**2*P1P2/(P1Q2*S)-192*A2*P1P2**2/(P1Q2*S)+
43269      &48*A1*MB*MT*P1Q1/(P1Q2*S)-96*A2*MB*MT*P1Q1/(P1Q2*S)-
43270      &48*A1*MT**2*P1Q1/(P1Q2*S)-192*A1*P1P2*P1Q1/(P1Q2*S)-
43271      &192*A2*P1P2*P1Q1/(P1Q2*S)-192*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*S)
43272       A18=A18+192*A1*A2*P1P2**2*P1Q1/(P1Q2*S)-192*A1*P1Q1**2/(P1Q2*S)-
43273      &192*A2*P1Q1**2/(P1Q2*S)+192*A1*A2*MB**2*P1Q1**2/(P1Q2*S)+
43274      &192*A12*MB*MT*P1Q1**2/(P1Q2*S)-96*A1*A2*MB*MT*P1Q1**2/(P1Q2*S)+
43275      &192*A1*A2*P1P2*P1Q1**2/(P1Q2*S)-192*A1*P1Q2/S-144*A2*P1Q2/S-
43276      &384*A1*A2*MB**2*P1Q2/S-480*A2**2*MB**2*P1Q2/S+
43277      &480*A12*MB*MT*P1Q2/S-96*A1*A2*MB*MT*P1Q2/S-
43278      &864*A12*P1P2*P1Q2/S-672*A1*A2*P1P2*P1Q2/S+
43279      &48*A1*MB*MT*P1Q2/(P1Q1*S)-96*A2*MB*MT*P1Q2/(P1Q1*S)-
43280      &48*A1*MT**2*P1Q2/(P1Q1*S)-192*A1*P1P2*P1Q2/(P1Q1*S)-
43281      &192*A2*P1P2*P1Q2/(P1Q1*S)-192*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*S)+
43282      &192*A1*A2*P1P2**2*P1Q2/(P1Q1*S)-576*A1*A2*P1Q1*P1Q2/S-
43283      &96*A1*A2*P1Q2**2/S-192*A1*P1Q2**2/(P1Q1*S)-
43284      &192*A2*P1Q2**2/(P1Q1*S)+192*A1*A2*MB**2*P1Q2**2/(P1Q1*S)+
43285      &192*A12*MB*MT*P1Q2**2/(P1Q1*S)-96*A1*A2*MB*MT*P1Q2**2/(P1Q1*S)+
43286      &192*A1*A2*P1P2*P1Q2**2/(P1Q1*S)-96*A2*MB**3*MT/(P2Q1*S)+
43287      &96*A2*MB**2*P1P2/(P2Q1*S)-192*A1*MB*MT*P1P2/(P2Q1*S)+
43288      &192*A1*P1P2**2/(P2Q1*S)+96*A1*MB**2*P1Q1/(P2Q1*S)
43289       A18=A18+192*A2*MB**2*P1Q1/(P2Q1*S)-96*A1*MB*MT*P1Q1/(P2Q1*S)-
43290      &192*A1*A2*MB**3*MT*P1Q1/(P2Q1*S)+192*A1*P1P2*P1Q1/(P2Q1*S)+
43291      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q1*S)+
43292      &96*A1*A2*MB**2*P1Q1**2/(P2Q1*S)-
43293      &192*A2*MB**3*MT*P1Q1/(P1Q2*P2Q1*S)+
43294      &192*A2*MB**2*P1P2*P1Q1/(P1Q2*P2Q1*S)-
43295      &96*A1*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1*S)+
43296      &96*A1*P1P2**2*P1Q1/(P1Q2*P2Q1*S)+
43297      &96*A1*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
43298      &192*A2*MB**2*P1Q1**2/(P1Q2*P2Q1*S)-
43299      &48*A1*MB*MT*P1Q1**2/(P1Q2*P2Q1*S)+
43300      &96*A1*P1P2*P1Q1**2/(P1Q2*P2Q1*S)+96*A1*MB**2*P1Q2/(P2Q1*S)+
43301      &48*A2*MB**2*P1Q2/(P2Q1*S)+192*A1*A2*MB**3*MT*P1Q2/(P2Q1*S)-
43302      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q1*S)-
43303      &96*A1*A2*MB**2*P1Q2**2/(P2Q1*S)+144*A1*P2Q1/S+192*A2*P2Q1/S+
43304      &96*A1*A2*MB*MT*P2Q1/S-480*A2**2*MB*MT*P2Q1/S+
43305      &480*A12*MT**2*P2Q1/S+384*A1*A2*MT**2*P2Q1/S
43306       A18=A18+672*A1*A2*P1P2*P2Q1/S+864*A2**2*P1P2*P2Q1/S-
43307      &96*A2*MB*MT*P2Q1/(P1Q1*S)+192*A1*MT**2*P2Q1/(P1Q1*S)+
43308      &96*A2*MT**2*P2Q1/(P1Q1*S)-192*A1*A2*MB*MT**3*P2Q1/(P1Q1*S)+
43309      &192*A2*P1P2*P2Q1/(P1Q1*S)+192*A1*A2*MT**2*P1P2*P2Q1/(P1Q1*S)-
43310      &192*A12*P1Q1*P2Q1/S-192*A2**2*P1Q1*P2Q1/S+
43311      &48*A1*MT**2*P2Q1/(P1Q2*S)+96*A2*MT**2*P2Q1/(P1Q2*S)+
43312      &192*A1*A2*MB*MT**3*P2Q1/(P1Q2*S)-
43313      &192*A1*A2*MT**2*P1P2*P2Q1/(P1Q2*S)+
43314      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P1Q2*S)-
43315      &192*A12*MT**2*P1Q1*P2Q1/(P1Q2*S)-
43316      &96*A1*A2*MT**2*P1Q1*P2Q1/(P1Q2*S)-
43317      &384*A1*A2*P1P2*P1Q1*P2Q1/(P1Q2*S)-384*A12*P1Q1**2*P2Q1/(P1Q2*S)-
43318      &384*A1*A2*P1Q1**2*P2Q1/(P1Q2*S)-480*A12*P1Q2*P2Q1/S-
43319      &960*A1*A2*P1Q2*P2Q1/S-480*A2**2*P1Q2*P2Q1/S+
43320      &144*A1*P1Q2*P2Q1/(P1Q1*S)+96*A2*P1Q2*P2Q1/(P1Q1*S)+
43321      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*S)-
43322      &96*A12*MT**2*P1Q2*P2Q1/(P1Q1*S)
43323       A18=A18+96*A1*A2*MT**2*P1Q2*P2Q1/(P1Q1*S)-
43324      &576*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*S)-192*A12*P1Q2**2*P2Q1/(P1Q1*S)-
43325      &384*A1*A2*P1Q2**2*P2Q1/(P1Q1*S)-96*A1*A2*P2Q1**2/S-
43326      &96*A1*A2*MT**2*P2Q1**2/(P1Q1*S)+96*A1*A2*MT**2*P2Q1**2/(P1Q2*S)+
43327      &288*A1*A2*P1Q2*P2Q1**2/(P1Q1*S)-96*A2*MB**3*MT/(P2Q2*S)+
43328      &96*A2*MB**2*P1P2/(P2Q2*S)-192*A1*MB*MT*P1P2/(P2Q2*S)+
43329      &192*A1*P1P2**2/(P2Q2*S)+96*A1*MB**2*P1Q1/(P2Q2*S)+
43330      &48*A2*MB**2*P1Q1/(P2Q2*S)+192*A1*A2*MB**3*MT*P1Q1/(P2Q2*S)-
43331      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q2*S)-
43332      &96*A1*A2*MB**2*P1Q1**2/(P2Q2*S)+96*A1*MB**2*P1Q2/(P2Q2*S)+
43333      &192*A2*MB**2*P1Q2/(P2Q2*S)-96*A1*MB*MT*P1Q2/(P2Q2*S)-
43334      &192*A1*A2*MB**3*MT*P1Q2/(P2Q2*S)+192*A1*P1P2*P1Q2/(P2Q2*S)+
43335      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q2*S)-
43336      &192*A2*MB**3*MT*P1Q2/(P1Q1*P2Q2*S)+
43337      &192*A2*MB**2*P1P2*P1Q2/(P1Q1*P2Q2*S)-
43338      &96*A1*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2*S)+
43339      &96*A1*P1P2**2*P1Q2/(P1Q1*P2Q2*S)+96*A1*A2*MB**2*P1Q2**2/(P2Q2*S)
43340       A18=A18+96*A1*MB**2*P1Q2**2/(P1Q1*P2Q2*S)+
43341      &192*A2*MB**2*P1Q2**2/(P1Q1*P2Q2*S)-
43342      &48*A1*MB*MT*P1Q2**2/(P1Q1*P2Q2*S)+
43343      &96*A1*P1P2*P1Q2**2/(P1Q1*P2Q2*S)-48*A2*MB**2*P2Q1/(P2Q2*S)-
43344      &96*A1*MB*MT*P2Q1/(P2Q2*S)+48*A2*MB*MT*P2Q1/(P2Q2*S)-
43345      &192*A1*P1P2*P2Q1/(P2Q2*S)-192*A2*P1P2*P2Q1/(P2Q2*S)-
43346      &192*A1*A2*MB*MT*P1P2*P2Q1/(P2Q2*S)+
43347      &192*A1*A2*P1P2**2*P2Q1/(P2Q2*S)+
43348      &192*A1*MB*MT**3*P2Q1/(P1Q1*P2Q2*S)+
43349      &96*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2*S)-
43350      &192*A1*MT**2*P1P2*P2Q1/(P1Q1*P2Q2*S)-
43351      &96*A2*P1P2**2*P2Q1/(P1Q1*P2Q2*S)+
43352      &96*A1*A2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
43353      &192*A2**2*MB**2*P1Q1*P2Q1/(P2Q2*S)-
43354      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P2Q2*S)+
43355      &384*A1*A2*P1P2*P1Q1*P2Q1/(P2Q2*S)-96*A1*P1Q2*P2Q1/(P2Q2*S)-
43356      &144*A2*P1Q2*P2Q1/(P2Q2*S)-96*A1*A2*MB**2*P1Q2*P2Q1/(P2Q2*S)
43357       A18=A18+96*A2**2*MB**2*P1Q2*P2Q1/(P2Q2*S)-
43358      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P2Q2*S)+
43359      &576*A1*A2*P1P2*P1Q2*P2Q1/(P2Q2*S)-
43360      &96*A2*MB**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43361      &48*A1*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43362      &48*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43363      &96*A1*MT**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43364      &96*A1*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43365      &96*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
43366      &96*A1*A2*P1Q1*P1Q2*P2Q1/(P2Q2*S)+288*A1*A2*P1Q2**2*P2Q1/(P2Q2*S)-
43367      &96*A1*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)-96*A2*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)+
43368      &192*A1*P2Q1**2/(P2Q2*S)+192*A2*P2Q1**2/(P2Q2*S)+
43369      &96*A1*A2*MB*MT*P2Q1**2/(P2Q2*S)-192*A2**2*MB*MT*P2Q1**2/(P2Q2*S)-
43370      &192*A1*A2*MT**2*P2Q1**2/(P2Q2*S)-192*A1*A2*P1P2*P2Q1**2/(P2Q2*S)-
43371      &48*A2*MB*MT*P2Q1**2/(P1Q1*P2Q2*S)+
43372      &192*A1*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
43373      &96*A2*MT**2*P2Q1**2/(P1Q1*P2Q2*S)
43374       A18=A18+96*A2*P1P2*P2Q1**2/(P1Q1*P2Q2*S)-
43375      &384*A1*A2*P1Q1*P2Q1**2/(P2Q2*S)-
43376      &384*A2**2*P1Q1*P2Q1**2/(P2Q2*S)-384*A1*A2*P1Q2*P2Q1**2/(P2Q2*S)-
43377      &192*A2**2*P1Q2*P2Q1**2/(P2Q2*S)+96*A1*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+
43378      &96*A2*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+144*A1*P2Q2/S+192*A2*P2Q2/S+
43379      &96*A1*A2*MB*MT*P2Q2/S-480*A2**2*MB*MT*P2Q2/S+
43380      &480*A12*MT**2*P2Q2/S+384*A1*A2*MT**2*P2Q2/S+
43381      &672*A1*A2*P1P2*P2Q2/S+864*A2**2*P1P2*P2Q2/S+
43382      &48*A1*MT**2*P2Q2/(P1Q1*S)+96*A2*MT**2*P2Q2/(P1Q1*S)+
43383      &192*A1*A2*MB*MT**3*P2Q2/(P1Q1*S)-
43384      &192*A1*A2*MT**2*P1P2*P2Q2/(P1Q1*S)-480*A12*P1Q1*P2Q2/S-
43385      &960*A1*A2*P1Q1*P2Q2/S-480*A2**2*P1Q1*P2Q2/S-
43386      &96*A2*MB*MT*P2Q2/(P1Q2*S)+192*A1*MT**2*P2Q2/(P1Q2*S)+
43387      &96*A2*MT**2*P2Q2/(P1Q2*S)-192*A1*A2*MB*MT**3*P2Q2/(P1Q2*S)+
43388      &192*A2*P1P2*P2Q2/(P1Q2*S)+192*A1*A2*MT**2*P1P2*P2Q2/(P1Q2*S)+
43389      &144*A1*P1Q1*P2Q2/(P1Q2*S)+96*A2*P1Q1*P2Q2/(P1Q2*S)+
43390      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*S)
43391       A18=A18-96*A12*MT**2*P1Q1*P2Q2/(P1Q2*S)+
43392      &96*A1*A2*MT**2*P1Q1*P2Q2/(P1Q2*S)-
43393      &576*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*S)-192*A12*P1Q1**2*P2Q2/(P1Q2*S)-
43394      &384*A1*A2*P1Q1**2*P2Q2/(P1Q2*S)-192*A12*P1Q2*P2Q2/S-
43395      &192*A2**2*P1Q2*P2Q2/S+96*A1*A2*MB*MT*P1Q2*P2Q2/(P1Q1*S)-
43396      &192*A12*MT**2*P1Q2*P2Q2/(P1Q1*S)-
43397      &96*A1*A2*MT**2*P1Q2*P2Q2/(P1Q1*S)-
43398      &384*A1*A2*P1P2*P1Q2*P2Q2/(P1Q1*S)-384*A12*P1Q2**2*P2Q2/(P1Q1*S)-
43399      &384*A1*A2*P1Q2**2*P2Q2/(P1Q1*S)-48*A2*MB**2*P2Q2/(P2Q1*S)-
43400      &96*A1*MB*MT*P2Q2/(P2Q1*S)+48*A2*MB*MT*P2Q2/(P2Q1*S)-
43401      &192*A1*P1P2*P2Q2/(P2Q1*S)-192*A2*P1P2*P2Q2/(P2Q1*S)-
43402      &192*A1*A2*MB*MT*P1P2*P2Q2/(P2Q1*S)+
43403      &192*A1*A2*P1P2**2*P2Q2/(P2Q1*S)-96*A1*P1Q1*P2Q2/(P2Q1*S)-
43404      &144*A2*P1Q1*P2Q2/(P2Q1*S)-96*A1*A2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
43405      &96*A2**2*MB**2*P1Q1*P2Q2/(P2Q1*S)-
43406      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P2Q1*S)+
43407      &576*A1*A2*P1P2*P1Q1*P2Q2/(P2Q1*S)+288*A1*A2*P1Q1**2*P2Q2/(P2Q1*S)
43408       A18=A18+192*A1*MB*MT**3*P2Q2/(P1Q2*P2Q1*S)+
43409      &96*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1*S)-
43410      &192*A1*MT**2*P1P2*P2Q2/(P1Q2*P2Q1*S)-
43411      &96*A2*P1P2**2*P2Q2/(P1Q2*P2Q1*S)-
43412      &96*A2*MB**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43413      &48*A1*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43414      &48*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43415      &96*A1*MT**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43416      &96*A1*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43417      &96*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43418      &96*A1*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)-96*A2*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)+
43419      &96*A1*A2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
43420      &192*A2**2*MB**2*P1Q2*P2Q2/(P2Q1*S)-
43421      &96*A1*A2*MB*MT*P1Q2*P2Q2/(P2Q1*S)+
43422      &384*A1*A2*P1P2*P1Q2*P2Q2/(P2Q1*S)+
43423      &96*A1*A2*P1Q1*P1Q2*P2Q2/(P2Q1*S)-576*A1*A2*P2Q1*P2Q2/S+
43424      &96*A1*A2*P1Q1*P2Q1*P2Q2/(P1Q2*S)+96*A1*A2*P1Q2*P2Q1*P2Q2/(P1Q1*S)
43425       A18=A18-96*A1*A2*P2Q2**2/S+96*A1*A2*MT**2*P2Q2**2/(P1Q1*S)-
43426      &96*A1*A2*MT**2*P2Q2**2/(P1Q2*S)+288*A1*A2*P1Q1*P2Q2**2/(P1Q2*S)+
43427      &192*A1*P2Q2**2/(P2Q1*S)+192*A2*P2Q2**2/(P2Q1*S)+
43428      &96*A1*A2*MB*MT*P2Q2**2/(P2Q1*S)-192*A2**2*MB*MT*P2Q2**2/(P2Q1*S)-
43429      &192*A1*A2*MT**2*P2Q2**2/(P2Q1*S)-192*A1*A2*P1P2*P2Q2**2/(P2Q1*S)-
43430      &384*A1*A2*P1Q1*P2Q2**2/(P2Q1*S)-192*A2**2*P1Q1*P2Q2**2/(P2Q1*S)-
43431      &48*A2*MB*MT*P2Q2**2/(P1Q2*P2Q1*S)+
43432      &192*A1*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
43433      &96*A2*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
43434      &96*A2*P1P2*P2Q2**2/(P1Q2*P2Q1*S)+96*A1*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)+
43435      &96*A2*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)-384*A1*A2*P1Q2*P2Q2**2/(P2Q1*S)-
43436      &384*A2**2*P1Q2*P2Q2**2/(P2Q1*S)+512*A1*A2*S/3-
43437      &128*A1*MT**2*S/(3*P1Q1**2)+128*A12*MB*MT**3*S/(3*P1Q1**2)-
43438      &152*A1*S/(3*P1Q1)-152*A12*MB*MT*S/(3*P1Q1)-
43439      &128*A1*A2*MB*MT*S/(3*P1Q1)+112*A1*A2*MT**2*S/(3*P1Q1)-
43440      &16*A12*P1P2*S/P1Q1+152*A1*A2*P1P2*S/(3*P1Q1)-
43441      &128*A1*MT**2*S/(3*P1Q2**2)+128*A12*MB*MT**3*S/(3*P1Q2**2)
43442       A18=A18-152*A1*S/(3*P1Q2)-152*A12*MB*MT*S/(3*P1Q2)-
43443      &128*A1*A2*MB*MT*S/(3*P1Q2)+112*A1*A2*MT**2*S/(3*P1Q2)-
43444      &16*A12*P1P2*S/P1Q2+152*A1*A2*P1P2*S/(3*P1Q2)+
43445      &16*A1*MB*MT*S/(3*P1Q1*P1Q2)-32*A12*MB*MT**3*S/(3*P1Q1*P1Q2)-
43446      &16*A1*P1P2*S/(3*P1Q1*P1Q2)+272*A1*A2*P1Q1*S/(3*P1Q2)+
43447      &272*A1*A2*P1Q2*S/(3*P1Q1)-128*A2*MB**2*S/(3*P2Q1**2)+
43448      &128*A2**2*MB**3*MT*S/(3*P2Q1**2)+
43449      &32*MB**2*MT**2*S/(3*P1Q2**2*P2Q1**2)+32*MB**2*S/(3*P1Q2*P2Q1**2)
43450  
43451       A18BIS=
43452      &64*A2*MB**3*MT*S/(3*P1Q2*P2Q1**2)-
43453      &64*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1**2)-
43454      &128*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1**2)-
43455      &128*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1**2)+
43456      &128*A2**2*MB**2*P1Q2*S/(3*P2Q1**2)+152*A2*S/(3*P2Q1)-
43457      &112*A1*A2*MB**2*S/(3*P2Q1)+128*A1*A2*MB*MT*S/(3*P2Q1)+
43458      &152*A2**2*MB*MT*S/(3*P2Q1)-152*A1*A2*P1P2*S/(3*P2Q1)+
43459      &16*A2**2*P1P2*S/P2Q1-8*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q1)+
43460      &16*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q1)-
43461      &8*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q1)-8*A1*P1P2*S/(3*P1Q1*P2Q1)-
43462      &8*A2*P1P2*S/(3*P1Q1*P2Q1)+8*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1)-
43463      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1)+
43464      &8*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q1)+
43465      &32*A1*A2*P1P2**2*S/(3*P1Q1*P2Q1)-32*A2**2*P1Q1*S/(3*P2Q1)-
43466      &32*MT**2*S/(3*P1Q2**2*P2Q1)+64*A1*MB**2*MT**2*S/(3*P1Q2**2*P2Q1)-
43467      &64*A1*MB*MT**3*S/(3*P1Q2**2*P2Q1)
43468       A18BIS=A18BIS+128*A1*MT**2*P1P2*S/(3*P1Q2**2*P2Q1)-
43469      &12*S/(P1Q2*P2Q1)+
43470      &24*A1*MB**2*S/(P1Q2*P2Q1)+64*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q1)+
43471      &24*A2*MT**2*S/(P1Q2*P2Q1)-128*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1)+
43472      &64*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q1)+56*A1*P1P2*S/(3*P1Q2*P2Q1)+
43473      &56*A2*P1P2*S/(3*P1Q2*P2Q1)-64*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1)+
43474      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1)-
43475      &64*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q1)-
43476      &256*A1*A2*P1P2**2*S/(3*P1Q2*P2Q1)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
43477      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
43478      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+136*A2*P1Q1*S/(3*P1Q2*P2Q1)-
43479      &128*A1*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1)+
43480      &128*A1*A2*MB*MT*P1Q1*S/(3*P1Q2*P2Q1)-
43481      &256*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1)-160*A2**2*P1Q2*S/(3*P2Q1)+
43482      &16*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1)-32*A12*P2Q1*S/(3*P1Q1)-
43483      &128*A12*MT**2*P2Q1*S/(3*P1Q2**2)-160*A12*P2Q1*S/(3*P1Q2)-
43484      &128*A2*MB**2*S/(3*P2Q2**2)+128*A2**2*MB**3*MT*S/(3*P2Q2**2)
43485       A18BIS=A18BIS+32*MB**2*MT**2*S/(3*P1Q1**2*P2Q2**2)+
43486      &32*MB**2*S/(3*P1Q1*P2Q2**2)+
43487      &64*A2*MB**3*MT*S/(3*P1Q1*P2Q2**2)-
43488      &64*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2**2)-
43489      &128*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2**2)+
43490      &128*A2**2*MB**2*P1Q1*S/(3*P2Q2**2)-
43491      &128*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2**2)+152*A2*S/(3*P2Q2)-
43492      &112*A1*A2*MB**2*S/(3*P2Q2)+128*A1*A2*MB*MT*S/(3*P2Q2)+
43493      &152*A2**2*MB*MT*S/(3*P2Q2)-152*A1*A2*P1P2*S/(3*P2Q2)+
43494      &16*A2**2*P1P2*S/P2Q2-32*MT**2*S/(3*P1Q1**2*P2Q2)+
43495      &64*A1*MB**2*MT**2*S/(3*P1Q1**2*P2Q2)-
43496      &64*A1*MB*MT**3*S/(3*P1Q1**2*P2Q2)+
43497      &128*A1*MT**2*P1P2*S/(3*P1Q1**2*P2Q2)-12*S/(P1Q1*P2Q2)+
43498      &24*A1*MB**2*S/(P1Q1*P2Q2)+64*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q2)+
43499      &24*A2*MT**2*S/(P1Q1*P2Q2)-128*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2)+
43500      &64*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q2)+56*A1*P1P2*S/(3*P1Q1*P2Q2)+
43501      &56*A2*P1P2*S/(3*P1Q1*P2Q2)-64*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2)
43502       A18BIS=A18BIS+128*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q2)-
43503      &64*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q2)-
43504      &256*A1*A2*P1P2**2*S/(3*P1Q1*P2Q2)-160*A2**2*P1Q1*S/(3*P2Q2)-
43505      &8*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q2)+
43506      &16*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q2)-
43507      &8*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q2)-8*A1*P1P2*S/(3*P1Q2*P2Q2)-
43508      &8*A2*P1P2*S/(3*P1Q2*P2Q2)+8*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q2)-
43509      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q2)+
43510      &8*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q2)+
43511      &32*A1*A2*P1P2**2*S/(3*P1Q2*P2Q2)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
43512      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
43513      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
43514      &16*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q2)-32*A2**2*P1Q2*S/(3*P2Q2)+
43515      &136*A2*P1Q2*S/(3*P1Q1*P2Q2)-128*A1*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2)+
43516      &128*A1*A2*MB*MT*P1Q2*S/(3*P1Q1*P2Q2)-
43517      &256*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q2)+16*A2*MB*MT*S/(3*P2Q1*P2Q2)-
43518      &32*A2**2*MB**3*MT*S/(3*P2Q1*P2Q2)-16*A2*P1P2*S/(3*P2Q1*P2Q2)
43519       A18BIS=A18BIS-4*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+
43520      &8*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+
43521      &8*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-4*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
43522      &8*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
43523      &8*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1*P2Q2)-
43524      &2*MB**3*MT*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43525      &4*MB**2*MT**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43526      &2*MB*MT**3*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43527      &2*MB**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43528      &4*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43529      &2*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43530      &8*P1P2**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43531      &8*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1*P2Q2)+
43532      &8*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1*P2Q2)+272*A1*A2*P2Q1*S/(3*P2Q2)-
43533      &128*A1*MT**2*P2Q1*S/(3*P1Q1**2*P2Q2)-136*A1*P2Q1*S/(3*P1Q1*P2Q2)-
43534      &128*A1*A2*MB*MT*P2Q1*S/(3*P1Q1*P2Q2)+
43535      &128*A1*A2*MT**2*P2Q1*S/(3*P1Q1*P2Q2)
43536       A18BIS=A18BIS+256*A1*A2*P1P2*P2Q1*S/(3*P1Q1*P2Q2)-
43537      &16*A1*A2*P1P2*P2Q1*S/(3*P1Q2*P2Q2)+
43538      &8*A1*P1P2*P2Q1*S/(3*P1Q1*P1Q2*P2Q2)+
43539      &256*A1*A2*P1Q2*P2Q1*S/(3*P1Q1*P2Q2)-
43540      &128*A12*MT**2*P2Q2*S/(3*P1Q1**2)-160*A12*P2Q2*S/(3*P1Q1)-
43541      &32*A12*P2Q2*S/(3*P1Q2)+272*A1*A2*P2Q2*S/(3*P2Q1)-
43542      &16*A1*A2*P1P2*P2Q2*S/(3*P1Q1*P2Q1)-
43543      &128*A1*MT**2*P2Q2*S/(3*P1Q2**2*P2Q1)-136*A1*P2Q2*S/(3*P1Q2*P2Q1)-
43544      &128*A1*A2*MB*MT*P2Q2*S/(3*P1Q2*P2Q1)+
43545      &128*A1*A2*MT**2*P2Q2*S/(3*P1Q2*P2Q1)+
43546      &256*A1*A2*P1P2*P2Q2*S/(3*P1Q2*P2Q1)+
43547      &8*A1*P1P2*P2Q2*S/(3*P1Q1*P1Q2*P2Q1)+
43548      &256*A1*A2*P1Q1*P2Q2*S/(3*P1Q2*P2Q1)-
43549      &8*A12*MB*MT*S**2/(3*P1Q1*P1Q2)+16*A12*P1P2*S**2/(3*P1Q1*P1Q2)-
43550      &8*A1*A2*P1P2*S**2/(3*P1Q1*P2Q1)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1)-
43551      &8*A1*A2*P1P2*S**2/(3*P1Q2*P2Q2)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q2)-
43552      &8*A2**2*MB*MT*S**2/(3*P2Q1*P2Q2)+16*A2**2*P1P2*S**2/(3*P2Q1*P2Q2)
43553       A18BIS=A18BIS-4*A2*P1P2*S**2/(3*P1Q1*P2Q1*P2Q2)-
43554      &4*A2*P1P2*S**2/(3*P1Q2*P2Q1*P2Q2)+
43555      &2*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
43556 C
43557       V18=V18+V18BIS
43558       A18=A18+A18BIS
43559       V910 =-48*A12*MB*MT-48*A2**2*MB*MT-48*A12*P1P2-48*A2**2*P1P2-
43560      &384*A12*MB*MT*P1Q1*P1Q2/S**2-384*A12*P1P2*P1Q1*P1Q2/S**2-
43561      &384*A1*A2*MB*MT*P1Q2*P2Q1/S**2-384*A1*A2*P1P2*P1Q2*P2Q1/S**2+
43562      &192*A12*P1Q1*P1Q2*P2Q1/S**2+192*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
43563      &192*A12*P1Q2**2*P2Q1/S**2-192*A1*A2*P1Q2**2*P2Q1/S**2+
43564      &192*A1*A2*P1Q2*P2Q1**2/S**2+192*A2**2*P1Q2*P2Q1**2/S**2-
43565      &384*A1*A2*MB*MT*P1Q1*P2Q2/S**2-384*A1*A2*P1P2*P1Q1*P2Q2/S**2-
43566      &192*A12*P1Q1**2*P2Q2/S**2-192*A1*A2*P1Q1**2*P2Q2/S**2+
43567      &192*A12*P1Q1*P1Q2*P2Q2/S**2+192*A1*A2*P1Q1*P1Q2*P2Q2/S**2-
43568      &384*A2**2*MB*MT*P2Q1*P2Q2/S**2-384*A2**2*P1P2*P2Q1*P2Q2/S**2-
43569      &192*A1*A2*P1Q1*P2Q1*P2Q2/S**2-192*A2**2*P1Q1*P2Q1*P2Q2/S**2-
43570      &192*A1*A2*P1Q2*P2Q1*P2Q2/S**2-192*A2**2*P1Q2*P2Q1*P2Q2/S**2+
43571      &192*A1*A2*P1Q1*P2Q2**2/S**2+192*A2**2*P1Q1*P2Q2**2/S**2+
43572      &96*A12*MB*MT*P1Q1/S-96*A1*A2*MB*MT*P1Q1/S+
43573      &96*A12*P1P2*P1Q1/S-96*A1*A2*P1P2*P1Q1/S+96*A12*MB*MT*P1Q2/S-
43574      &96*A1*A2*MB*MT*P1Q2/S+96*A12*P1P2*P1Q2/S-96*A1*A2*P1P2*P1Q2/S+
43575      &96*A1*A2*MB*MT*P2Q1/S-96*A2**2*MB*MT*P2Q1/S
43576       V910=V910+96*A1*A2*P1P2*P2Q1/S-
43577      &96*A2**2*P1P2*P2Q1/S+96*A12*P1Q2*P2Q1/S+
43578      &192*A1*A2*P1Q2*P2Q1/S+96*A2**2*P1Q2*P2Q1/S+
43579      &96*A1*A2*MB*MT*P2Q2/S-96*A2**2*MB*MT*P2Q2/S+
43580      &96*A1*A2*P1P2*P2Q2/S-96*A2**2*P1P2*P2Q2/S+96*A12*P1Q1*P2Q2/S+
43581      &192*A1*A2*P1Q1*P2Q2/S+96*A2**2*P1Q1*P2Q2/S
43582 C
43583       A910 = 48*A12*MB*MT+48*A2**2*MB*MT-48*A12*P1P2-48*A2**2*P1P2+
43584      &384*A12*MB*MT*P1Q1*P1Q2/S**2-384*A12*P1P2*P1Q1*P1Q2/S**2+
43585      &384*A1*A2*MB*MT*P1Q2*P2Q1/S**2-384*A1*A2*P1P2*P1Q2*P2Q1/S**2+
43586      &192*A12*P1Q1*P1Q2*P2Q1/S**2+192*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
43587      &192*A12*P1Q2**2*P2Q1/S**2-192*A1*A2*P1Q2**2*P2Q1/S**2+
43588      &192*A1*A2*P1Q2*P2Q1**2/S**2+192*A2**2*P1Q2*P2Q1**2/S**2+
43589      &384*A1*A2*MB*MT*P1Q1*P2Q2/S**2-384*A1*A2*P1P2*P1Q1*P2Q2/S**2-
43590      &192*A12*P1Q1**2*P2Q2/S**2-192*A1*A2*P1Q1**2*P2Q2/S**2+
43591      &192*A12*P1Q1*P1Q2*P2Q2/S**2+192*A1*A2*P1Q1*P1Q2*P2Q2/S**2+
43592      &384*A2**2*MB*MT*P2Q1*P2Q2/S**2-384*A2**2*P1P2*P2Q1*P2Q2/S**2-
43593      &192*A1*A2*P1Q1*P2Q1*P2Q2/S**2-192*A2**2*P1Q1*P2Q1*P2Q2/S**2-
43594      &192*A1*A2*P1Q2*P2Q1*P2Q2/S**2-192*A2**2*P1Q2*P2Q1*P2Q2/S**2+
43595      &192*A1*A2*P1Q1*P2Q2**2/S**2+192*A2**2*P1Q1*P2Q2**2/S**2-
43596      &96*A12*MB*MT*P1Q1/S+96*A1*A2*MB*MT*P1Q1/S+
43597      &96*A12*P1P2*P1Q1/S-96*A1*A2*P1P2*P1Q1/S-96*A12*MB*MT*P1Q2/S+
43598      &96*A1*A2*MB*MT*P1Q2/S+96*A12*P1P2*P1Q2/S-96*A1*A2*P1P2*P1Q2/S-
43599      &96*A1*A2*MB*MT*P2Q1/S+96*A2**2*MB*MT*P2Q1/S
43600       A910=A910+96*A1*A2*P1P2*P2Q1/S-
43601      &96*A2**2*P1P2*P2Q1/S+96*A12*P1Q2*P2Q1/S+
43602      &192*A1*A2*P1Q2*P2Q1/S+96*A2**2*P1Q2*P2Q1/S-
43603      &96*A1*A2*MB*MT*P2Q2/S+96*A2**2*MB*MT*P2Q2/S+
43604      &96*A1*A2*P1P2*P2Q2/S-96*A2**2*P1P2*P2Q2/S+96*A12*P1Q1*P2Q2/S+
43605      &192*A1*A2*P1Q1*P2Q2/S+96*A2**2*P1Q1*P2Q2/S
43606 C
43607 C FINAL RESULT;
43608 C
43609       AMP2= FACT*PS*VTB**2*(V**2 *(V18 +V910)+A**2 *(A18+A910) )
43610  
43611       END
43612 C---------------------------------------------------------
43613 C 2)  Q QBAR ->TBH^+
43614        SUBROUTINE PYTBHQ(Q1,Q2,P1,P2,P3,MT,MB,RMB,MHP,AMP2)
43615 C
43616 C AMP2(OUTPUT) =MATRIX ELEMENT (AMPLITUDE**2) FOR Q QBAR->TB H^+
43617 C (NB SAME STRUCTURE AS FOR PYTBHG ROUTINE ABOVE)
43618       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43619       IMPLICIT INTEGER(I-N)
43620       DOUBLE PRECISION MW2,MT,MB,MHP,MW
43621       DIMENSION Q1(4),Q2(4),P1(4),P2(4),P3(4)
43622       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43623       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43624       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
43625       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
43626       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYCTBH/
43627 C !THE RELEVANT INPUT PARAMETERS ABOVE ARE NEEDED FOR CALCULATION
43628 C BUT ARE NOT DEFINED HERE SO THAT ONE MAY CHOOSE/VARY THEIR VALUES:
43629 C ACCORDINGLY, WHEN CALLING THESE SUBROUTINES, PLEASE SUPPLY VIA
43630 C THIS COMMON/PARAM/ YOUR PREFERRED ALPHA, ALPHAS,..AND TANB VALUES
43631 C
43632 C THE NORMALIZED V,A COUPLINGS ARE DEFINED BELOW AND USED BOTH
43633 C IN THIS ROUTINE AND IN THE TOP WIDTH CALCULATION PYTBHB(..).
43634 C
43635       DIMENSION YY(2,2)
43636  
43637       PI = 4*DATAN(1.D0)
43638       MW = DSQRT(MW2)
43639  
43640 C COLLECTING THE RELEVANT OVERALL FACTORS:
43641 C 3X3 INITIAL QUARK COLOR AVERAGE, 2X2 QUARK SPIN AVERAGE
43642       PS=1.D0/(3.D0*3.D0 *2.D0*2.D0)
43643 C COUPLING CONSTANT (OVERALL NORMALIZATION)
43644       FACT=(4.D0*PI*ALPHA)*(4.D0*PI*ALPHAS)**2/SW2/2.D0
43645 C NB ALPHA IS E^2/4/PI, BUT BETTER DEFINED IN TERMS OF G_FERMI:
43646 C ALPHA= DSQRT(2.D0)*GF*SW2*MW**2/PI
43647 C ALPHAS IS ALPHA_STRONG;
43648 C SW2 IS SIN(THETA_W)**2.
43649 C
43650 C      VTB=.998D0
43651 C VTB IS TOP-BOTTOM CKM MATRIX ELEMENT (APPROXIMATE VALUE HERE)
43652 C
43653       V = ( MT/MW/TANB +RMB/MW*TANB)/2.D0
43654       A = (-MT/MW/TANB +RMB/MW*TANB)/2.D0
43655 C V AND A ARE (NORMALIZED) VECTOR AND AXIAL TBH^+ COUPLINGS
43656 C
43657 C REDEFINING P2 INGOING FROM OVERALL MOMENTUM CONSERVATION
43658 C (BECAUSE P2 INGOING WAS USED IN OUR GRAPH CALCULATION CONVENTIONS)
43659       DO 100 KK=1,4
43660         P2(KK)=P3(KK)-Q1(KK)-Q2(KK)+P1(KK)
43661   100 CONTINUE
43662 C DEFINING VARIOUS RELEVANT 4-SCALAR PRODUCTS:
43663       S = 2*PYTBHS(Q1,Q2)
43664       P1Q1=PYTBHS(Q1,P1)
43665       P1Q2=PYTBHS(P1,Q2)
43666       P2Q1=PYTBHS(P2,Q1)
43667       P2Q2=PYTBHS(P2,Q2)
43668       P1P2=PYTBHS(P1,P2)
43669 C
43670 C   TOP WIDTH CALCULATION
43671       CALL PYTBHB(MT,MB,MHP,BR,GAMT)
43672 C   GAMT IS THE TOP WIDTH: T->BH^+ AND/OR T->B W^+
43673 C THEN DEFINE TOP (RESONANT) PROPAGATOR:
43674       A1INV= S -2*P1Q1 -2*P1Q2
43675       A1 =A1INV/(A1INV**2+ (GAMT*MT)**2)
43676 C (I.E. INTRODUCE THE TOP WIDTH IN A1 TO REGULARISE THE POLE)
43677 C  NB  A12 = A1*A1 BUT WITH CORRECT WIDTH TREATMENT
43678       A12 = 1.D0/(A1INV**2+ (GAMT*MT)**2)
43679       A2 =1.D0/(S +2*P2Q1 +2*P2Q2)
43680 C NOTE A2 IS B PROPAGATOR, DOES NOT NEED A WIDTH
43681 C  NOW COMES THE AMP**2:
43682 C NB COLOR FACTOR (COMING FORM GRAPHS) ALREADY INCLUDED IN
43683 C THE EXPRESSIONS BELOW
43684       YY(1, 1) = -16*A**2*A2**2*MB*MT+
43685      &64*A**2*A2**2*P1Q2*P2Q1**2/S**2+
43686      &128*A**2*A2**2*MB*MT*P2Q1*P2Q2/S**2-
43687      &128*A**2*A2**2*P1P2*P2Q1*P2Q2/S**2-
43688      &64*A**2*A2**2*P1Q1*P2Q1*P2Q2/S**2-
43689      &64*A**2*A2**2*P1Q2*P2Q1*P2Q2/S**2+
43690      &64*A**2*A2**2*P1Q1*P2Q2**2/S**2-
43691      &32*A**2*A2**2*MB**3*MT/S+32*A**2*A2**2*MB**2*P1P2/S+
43692      &32*A**2*A2**2*MB**2*P1Q1/S+32*A**2*A2**2*MB**2*P1Q2/S-
43693      &32*A**2*A2**2*P1P2*P2Q1/S-32*A**2*A2**2*P1Q1*P2Q1/S-
43694      &32*A**2*A2**2*P1P2*P2Q2/S-32*A**2*A2**2*P1Q2*P2Q2/S+
43695      &16*A2**2*MB*MT*V**2+64*A2**2*P1Q2*P2Q1**2*V**2/S**2-
43696      &128*A2**2*MB*MT*P2Q1*P2Q2*V**2/S**2-
43697      &128*A2**2*P1P2*P2Q1*P2Q2*V**2/S**2-
43698      &64*A2**2*P1Q1*P2Q1*P2Q2*V**2/S**2-
43699      &64*A2**2*P1Q2*P2Q1*P2Q2*V**2/S**2+
43700      &64*A2**2*P1Q1*P2Q2**2*V**2/S**2
43701       YY(1, 1)=YY(1, 1)+32*A2**2*MB**3*MT*V**2/S+
43702      &32*A2**2*MB**2*P1P2*V**2/S+
43703      &32*A2**2*MB**2*P1Q1*V**2/S+32*A2**2*MB**2*P1Q2*V**2/S-
43704      &32*A2**2*P1P2*P2Q1*V**2/S-32*A2**2*P1Q1*P2Q1*V**2/S-
43705      &32*A2**2*P1P2*P2Q2*V**2/S-32*A2**2*P1Q2*P2Q2*V**2/S
43706       YY(1, 1)=2*YY(1, 1)
43707  
43708       YY(1, 2) = -32*A**2*A1*A2*MB*MT+
43709      &128*A**2*A1*A2*MB*MT*P1Q2*P2Q1/S**2-
43710      &128*A**2*A1*A2*P1P2*P1Q2*P2Q1/S**2+
43711      &64*A**2*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
43712      &64*A**2*A1*A2*P1Q2**2*P2Q1/S**2+
43713      &64*A**2*A1*A2*P1Q2*P2Q1**2/S**2+
43714      &128*A**2*A1*A2*MB*MT*P1Q1*P2Q2/S**2-
43715      &128*A**2*A1*A2*P1P2*P1Q1*P2Q2/S**2-
43716      &64*A**2*A1*A2*P1Q1**2*P2Q2/S**2+
43717      &64*A**2*A1*A2*P1Q1*P1Q2*P2Q2/S**2-
43718      &64*A**2*A1*A2*P1Q1*P2Q1*P2Q2/S**2-
43719      &64*A**2*A1*A2*P1Q2*P2Q1*P2Q2/S**2+
43720      &64*A**2*A1*A2*P1Q1*P2Q2**2/S**2-
43721      &64*A**2*A1*A2*MB*MT*P1P2/S+
43722      &64*A**2*A1*A2*P1P2**2/S+32*A**2*A1*A2*MB**2*P1Q1/S+
43723      &32*A**2*A1*A2*P1P2*P1Q1/S+32*A**2*A1*A2*MB**2*P1Q2/S+
43724      &32*A**2*A1*A2*P1P2*P1Q2/S-32*A**2*A1*A2*MT**2*P2Q1/S
43725       YY(1, 2)=YY(1, 2)-32*A**2*A1*A2*P1P2*P2Q1/S-
43726      &64*A**2*A1*A2*P1Q1*P2Q1/S-
43727      &32*A**2*A1*A2*MT**2*P2Q2/S-32*A**2*A1*A2*P1P2*P2Q2/S-
43728      &64*A**2*A1*A2*P1Q2*P2Q2/S+32*A1*A2*MB*MT*V**2-
43729      &128*A1*A2*MB*MT*P1Q2*P2Q1*V**2/S**2 -
43730      &128*A1*A2*P1P2*P1Q2*P2Q1*V**2/S**2+
43731      &64*A1*A2*P1Q1*P1Q2*P2Q1*V**2/S**2-
43732      &64*A1*A2*P1Q2**2*P2Q1*V**2/S**2+
43733      &64*A1*A2*P1Q2*P2Q1**2*V**2/S**2-
43734      &128*A1*A2*MB*MT*P1Q1*P2Q2*V**2/S**2-
43735      &128*A1*A2*P1P2*P1Q1*P2Q2*V**2/S**2-
43736      &64*A1*A2*P1Q1**2*P2Q2*V**2/S**2+
43737      &64*A1*A2*P1Q1*P1Q2*P2Q2*V**2/S**2-
43738      &64*A1*A2*P1Q1*P2Q1*P2Q2*V**2/S**2-
43739      &64*A1*A2*P1Q2*P2Q1*P2Q2*V**2/S**2+
43740      &64*A1*A2*P1Q1*P2Q2**2*V**2/S**2+
43741      &64*A1*A2*MB*MT*P1P2*V**2/S+64*A1*A2*P1P2**2*V**2/S
43742       YY(1, 2)=YY(1, 2)+32*A1*A2*MB**2*P1Q1*V**2/S+
43743      &32*A1*A2*P1P2*P1Q1*V**2/S+
43744      &32*A1*A2*MB**2*P1Q2*V**2/S+32*A1*A2*P1P2*P1Q2*V**2/S-
43745      &32*A1*A2*MT**2*P2Q1*V**2/S-32*A1*A2*P1P2*P2Q1*V**2/S-
43746      &64*A1*A2*P1Q1*P2Q1*V**2/S-32*A1*A2*MT**2*P2Q2*V**2/S-
43747      &32*A1*A2*P1P2*P2Q2*V**2/S-64*A1*A2*P1Q2*P2Q2*V**2/S
43748  
43749  
43750       YY(2, 2) =-16*A**2*A12*MB*MT+
43751      &128*A**2*A12*MB*MT*P1Q1*P1Q2/S**2-
43752      &128*A**2*A12*P1P2*P1Q1*P1Q2/S**2+
43753      &64*A**2*A12*P1Q1*P1Q2*P2Q1/S**2-
43754      &64*A**2*A12*P1Q2**2*P2Q1/S**2-64*A**2*A12*P1Q1**2*P2Q2/S**2+
43755      &64*A**2*A12*P1Q1*P1Q2*P2Q2/S**2-32*A**2*A12*MB*MT**3/S+
43756      &32*A**2*A12*MT**2*P1P2/S+32*A**2*A12*P1P2*P1Q1/S+
43757      &32*A**2*A12*P1P2*P1Q2/S-32*A**2*A12*MT**2*P2Q1/S-
43758      &32*A**2*A12*P1Q1*P2Q1/S-32*A**2*A12*MT**2*P2Q2/S-
43759      &32*A**2*A12*P1Q2*P2Q2/S+16*A12*MB*MT*V**2-
43760      &128*A12*MB*MT*P1Q1*P1Q2*V**2/S**2-
43761      &128*A12*P1P2*P1Q1*P1Q2*V**2/S**2+
43762      &64*A12*P1Q1*P1Q2*P2Q1*V**2/S**2-
43763      &64*A12*P1Q2**2*P2Q1*V**2/S**2-64*A12*P1Q1**2*P2Q2*V**2/S**2+
43764      &64*A12*P1Q1*P1Q2*P2Q2*V**2/S**2+32*A12*MB*MT**3*V**2/S+
43765      &32*A12*MT**2*P1P2*V**2/S+32*A12*P1P2*P1Q1*V**2/S+
43766      &32*A12*P1P2*P1Q2*V**2/S-32*A12*MT**2*P2Q1*V**2/S
43767       YY(2, 2)=YY(2, 2)-32*A12*P1Q1*P2Q1*V**2/S-
43768      &32*A12*MT**2*P2Q2*V**2/S-
43769      &32*A12*P1Q2*P2Q2*V**2/S
43770       YY(2, 2)=2*YY(2, 2)
43771  
43772       RES=YY(1,1)+2*YY(1,2)+YY(2,2)
43773       AMP2=  FACT*PS*VTB**2*RES
43774  
43775       END
43776 C=====================================================================
43777 C     ************* FUNCTION SCALAR PRODUCTS *************************
43778       DOUBLE PRECISION FUNCTION PYTBHS(A,B)
43779       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43780       IMPLICIT INTEGER(I-N)
43781       DIMENSION A(4),B(4)
43782       DUM=A(4)*B(4)
43783       DO 100 ID=1,3
43784          DUM=DUM-A(ID)*B(ID)
43785   100 CONTINUE
43786       PYTBHS=DUM
43787       RETURN
43788       END
43789  
43790 C*********************************************************************
43791  
43792 C...PYMSIN
43793 C...Initializes supersymmetry: finds sparticle masses and
43794 C...branching ratios and stores this information.
43795 C...AUTHOR: STEPHEN MRENNA
43796 C...Author: P. Skands (SLHA + RPV + ISASUSY Interface, NMSSM)
43797  
43798       SUBROUTINE PYMSIN
43799  
43800 C...Double precision and integer declarations.
43801       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43802       IMPLICIT INTEGER(I-N)
43803       INTEGER PYK,PYCHGE,PYCOMP
43804 C...Parameter statement to help give large particle numbers.
43805       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
43806      &KEXCIT=4000000,KDIMEN=5000000)
43807 C...Commonblocks.
43808       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43809       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43810       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
43811       COMMON/PYDAT4/CHAF(500,2)
43812       CHARACTER CHAF*16
43813       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
43814       COMMON/PYINT4/MWID(500),WIDS(500,5)
43815       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
43816       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
43817       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
43818      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
43819       COMMON/PYHTRI/HHH(7)
43820       COMMON/PYQNUM/NQNUM,NQDUM,KQNUM(500,0:9)
43821       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYPARS/,/PYINT4/,
43822      &/PYMSSM/,/PYMSRV/,/PYSSMT/
43823  
43824 C...Local variables.
43825       DOUBLE PRECISION ALFA,BETA
43826       DOUBLE PRECISION TANB,AL,BE,COSA,COSB,SINA,SINB,XW
43827       INTEGER I,J,J1,I1,K1
43828       INTEGER KC,LKNT,IDLAM(400,3)
43829       DOUBLE PRECISION XLAM(0:400)
43830       DOUBLE PRECISION WDTP(0:400),WDTE(0:400,0:5)
43831       DOUBLE PRECISION XARG,COS2B,XMW2,XMZ2
43832       DOUBLE PRECISION DELM,XMDIF
43833       DOUBLE PRECISION DX,DY,DS,DMU2,DMA2,DQ2,DU2,DD2,DL2,DE2,DHU2,DHD2
43834       DOUBLE PRECISION ARG,SGNMU,R
43835       INTEGER IMSSM
43836       INTEGER IRPRTY
43837       INTEGER KFSUSY(50),MWIDSU(36),MDCYSU(36)
43838       SAVE MWIDSU,MDCYSU
43839       DATA KFSUSY/
43840      &1000001,2000001,1000002,2000002,1000003,2000003,
43841      &1000004,2000004,1000005,2000005,1000006,2000006,
43842      &1000011,2000011,1000012,2000012,1000013,2000013,
43843      &1000014,2000014,1000015,2000015,1000016,2000016,
43844      &1000021,1000022,1000023,1000025,1000035,1000024,
43845      &1000037,1000039,     25,     35,     36,     37,
43846      &      6,     24,     45,     46,1000045, 9*0/
43847       DATA INIT/0/
43848  
43849 C...Automatically read QNUMBERS, MASS, and DECAY tables      
43850       IF (IMSS(21).NE.0.OR.MSTP(161).NE.0) THEN
43851         NQNUM=0
43852         CALL PYSLHA(0,0,IFAIL)
43853         CALL PYSLHA(5,0,IFAIL)
43854       ENDIF
43855       IF (IMSS(22).NE.0.OR.MSTP(161).NE.0) CALL PYSLHA(2,0,IFAIL)
43856
43857 C...Do nothing further if SUSY not requested
43858       IMSSM=IMSS(1)
43859       IF(IMSSM.EQ.0) RETURN
43860       
43861 C...Save copy of MWID(KC) and MDCY(KC,1) values before
43862 C...they are set to zero for the LSP.
43863       IF(INIT.EQ.0) THEN
43864         INIT=1
43865         DO 100 I=1,36
43866           KF=KFSUSY(I)
43867           KC=PYCOMP(KF)
43868           MWIDSU(I)=MWID(KC)
43869           MDCYSU(I)=MDCY(KC,1)
43870   100   CONTINUE
43871       ENDIF
43872  
43873 C...Restore MWID(KC) and MDCY(KC,1) values previously zeroed for LSP.
43874       DO 110 I=1,36
43875         KF=KFSUSY(I)
43876         KC=PYCOMP(KF)
43877         IF(MDCY(KC,1).EQ.0.AND.MDCYSU(I).NE.0) THEN
43878           MWID(KC)=MWIDSU(I)
43879           MDCY(KC,1)=MDCYSU(I)
43880         ENDIF
43881   110 CONTINUE
43882  
43883 C...First part of routine: set masses and couplings.
43884  
43885 C...Reset mixing values in sfermion sector to pure left/right.
43886       DO 120 I=1,16
43887         SFMIX(I,1)=1D0
43888         SFMIX(I,4)=1D0
43889         SFMIX(I,2)=0D0
43890         SFMIX(I,3)=0D0
43891   120 CONTINUE
43892  
43893 C...Add NMSSM states if NMSSM switched on, and change old names.
43894       IF (IMSS(13).NE.0.AND.PYCOMP(1000045).EQ.0) THEN
43895 C...  Switch on NMSSM
43896         WRITE(MSTU(11),*) '(PYMSIN:) switching on NMSSM'
43897  
43898         KFN=25
43899         KCN=KFN
43900         CHAF(KCN,1)='h_10'
43901         CHAF(KCN,2)=' '
43902  
43903         KFN=35
43904         KCN=KFN
43905         CHAF(KCN,1)='h_20'
43906         CHAF(KCN,2)=' '
43907  
43908         KFN=45
43909         KCN=KFN
43910         CHAF(KCN,1)='h_30'
43911         CHAF(KCN,2)=' '
43912  
43913         KFN=36
43914         KCN=KFN
43915         CHAF(KCN,1)='A_10'
43916         CHAF(KCN,2)=' '
43917  
43918         KFN=46
43919         KCN=KFN
43920         CHAF(KCN,1)='A_20'
43921         CHAF(KCN,2)=' '
43922  
43923         KFN=1000045
43924         KCN=PYCOMP(KFN)
43925         IF (KCN.EQ.0) THEN
43926           DO 123 KCT=100,MSTU(6)
43927             IF(KCHG(KCT,4).GT.100) KCN=KCT
43928  123      CONTINUE
43929           KCN=KCN+1
43930           KCHG(KCN,4)=KFN
43931           MSTU(20)=0
43932         ENDIF
43933 C...  Set stable for now
43934         PMAS(KCN,2)=1D-6
43935         MWID(KCN)=0
43936         MDCY(KCN,1)=0
43937         MDCY(KCN,2)=0
43938         MDCY(KCN,3)=0
43939         CHAF(KCN,1)='~chi_50'
43940         CHAF(KCN,2)=' '
43941       ENDIF
43942  
43943 C...Read spectrum from SLHA file.
43944       IF (IMSSM.EQ.11) THEN
43945         CALL PYSLHA(1,0,IFAIL)
43946       ENDIF
43947  
43948 C...Common couplings.
43949       TANB=RMSS(5)
43950       BETA=ATAN(TANB)
43951       COSB=COS(BETA)
43952       SINB=TANB*COSB
43953       COS2B=COS(2D0*BETA)
43954       ALFA=RMSS(18)
43955       XMW2=PMAS(24,1)**2
43956       XMZ2=PMAS(23,1)**2
43957       XW=PARU(102)
43958  
43959 C...Define sparticle masses for a general MSSM simulation.
43960       IF(IMSSM.EQ.1) THEN
43961         IF(IMSS(9).EQ.0) RMSS(22)=RMSS(9)
43962         DO 130 I=1,5,2
43963           KC=PYCOMP(KSUSY1+I)
43964           PMAS(KC,1)=SQRT(RMSS(8)**2-(2D0*XMW2+XMZ2)*COS2B/6D0)
43965           KC=PYCOMP(KSUSY2+I)
43966           PMAS(KC,1)=SQRT(RMSS(9)**2+(XMW2-XMZ2)*COS2B/3D0)
43967           KC=PYCOMP(KSUSY1+I+1)
43968           PMAS(KC,1)=SQRT(RMSS(8)**2+(4D0*XMW2-XMZ2)*COS2B/6D0)
43969           KC=PYCOMP(KSUSY2+I+1)
43970           PMAS(KC,1)=SQRT(RMSS(22)**2-(XMW2-XMZ2)*COS2B*2D0/3D0)
43971   130   CONTINUE
43972         XARG=RMSS(6)**2-PMAS(24,1)**2*ABS(COS(2D0*BETA))
43973         IF(XARG.LT.0D0) THEN
43974           WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
43975      &    ' FROM THE SUM RULE. '
43976           WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
43977           RETURN
43978         ELSE
43979           XARG=SQRT(XARG)
43980         ENDIF
43981         DO 140 I=11,15,2
43982           PMAS(PYCOMP(KSUSY1+I),1)=RMSS(6)
43983           PMAS(PYCOMP(KSUSY2+I),1)=RMSS(7)
43984           PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
43985           PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
43986   140   CONTINUE
43987         IF(IMSS(8).EQ.1) THEN
43988           RMSS(13)=RMSS(6)
43989           RMSS(14)=RMSS(7)
43990         ENDIF
43991  
43992 C...Alternatively derive masses from SUGRA relations.
43993       ELSEIF(IMSSM.EQ.2) THEN
43994         RMSS(36)=RMSS(16)
43995         CALL PYAPPS
43996 C...Or use ISASUSY
43997       ELSEIF(IMSSM.EQ.12.OR.IMSSM.EQ.13) THEN
43998         RMSS(36)=RMSS(16)
43999         CALL PYSUGI
44000         ALFA=RMSS(18)
44001         GOTO 170
44002       ELSE
44003         GOTO 170
44004       ENDIF
44005  
44006 C...Add in extra D-term contributions.
44007       IF(IMSS(7).EQ.1) THEN
44008         R=0.43D0
44009         DX=RMSS(23)
44010         DY=RMSS(24)
44011         DS=RMSS(25)
44012         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44013         WRITE(MSTU(11),*) 'C  NEW DTERMS ADDED TO SCALAR MASSES   '
44014         WRITE(MSTU(11),*) 'C   IN A U(B-L) THEORY                 '
44015         WRITE(MSTU(11),*) 'C   DX = ',DX
44016         WRITE(MSTU(11),*) 'C   DY = ',DY
44017         WRITE(MSTU(11),*) 'C   DS = ',DS
44018         WRITE(MSTU(11),*) 'C                                      '
44019         DY=R*DY-4D0/33D0*(1D0-R)*DX+(1D0-R)/33D0*DS
44020         WRITE(MSTU(11),*) 'C   DY AT THE WEAK SCALE = ',DY
44021         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44022         DQ2=DY/6D0-DX/3D0-DS/3D0
44023         DU2=-2D0*DY/3D0-DX/3D0-DS/3D0
44024         DD2=DY/3D0+DX-2D0*DS/3D0
44025         DL2=-DY/2D0+DX-2D0*DS/3D0
44026         DE2=DY-DX/3D0-DS/3D0
44027         DHU2=DY/2D0+2D0*DX/3D0+2D0*DS/3D0
44028         DHD2=-DY/2D0-2D0*DX/3D0+DS
44029         DMU2=(-DY/2D0-2D0/3D0*DX+(COSB**2-2D0*SINB**2/3D0)*DS)
44030      &  /ABS(COS2B)
44031         DMA2 = 2D0*DMU2+DHU2+DHD2
44032         DO 150 I=1,5,2
44033           KC=PYCOMP(KSUSY1+I)
44034           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
44035           KC=PYCOMP(KSUSY2+I)
44036           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DD2)
44037           KC=PYCOMP(KSUSY1+I+1)
44038           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
44039           KC=PYCOMP(KSUSY2+I+1)
44040           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DU2)
44041   150   CONTINUE
44042         DO 160 I=11,15,2
44043           KC=PYCOMP(KSUSY1+I)
44044           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
44045           KC=PYCOMP(KSUSY2+I)
44046           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DE2)
44047           KC=PYCOMP(KSUSY1+I+1)
44048           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
44049   160   CONTINUE
44050         IF(RMSS(4)**2+DMU2.LT.0D0) THEN
44051           WRITE(MSTU(11),*) ' MU2 DRIVEN NEGATIVE '
44052           CALL PYSTOP(104)
44053         ENDIF
44054         SGNMU=SIGN(1D0,RMSS(4))
44055         RMSS(4)=SGNMU*SQRT(RMSS(4)**2+DMU2)
44056         ARG=RMSS(10)**2*SIGN(1D0,RMSS(10))+DQ2
44057         RMSS(10)=SIGN(SQRT(ABS(ARG)),ARG)
44058         ARG=RMSS(11)**2*SIGN(1D0,RMSS(11))+DD2
44059         RMSS(11)=SIGN(SQRT(ABS(ARG)),ARG)
44060         ARG=RMSS(12)**2*SIGN(1D0,RMSS(12))+DU2
44061         RMSS(12)=SIGN(SQRT(ABS(ARG)),ARG)
44062         ARG=RMSS(13)**2*SIGN(1D0,RMSS(13))+DL2
44063         RMSS(13)=SIGN(SQRT(ABS(ARG)),ARG)
44064         ARG=RMSS(14)**2*SIGN(1D0,RMSS(14))+DE2
44065         RMSS(14)=SIGN(SQRT(ABS(ARG)),ARG)
44066         IF( RMSS(19)**2 + DMA2 .LE. 50D0 ) THEN
44067           WRITE(MSTU(11),*) ' MA DRIVEN TOO LOW '
44068           CALL PYSTOP(104)
44069         ENDIF
44070         RMSS(19)=SQRT(RMSS(19)**2+DMA2)
44071         RMSS(6)=SQRT(RMSS(6)**2+DL2)
44072         RMSS(7)=SQRT(RMSS(7)**2+DE2)
44073         WRITE(MSTU(11),*) ' MTL = ',RMSS(10)
44074         WRITE(MSTU(11),*) ' MBR = ',RMSS(11)
44075         WRITE(MSTU(11),*) ' MTR = ',RMSS(12)
44076         WRITE(MSTU(11),*) ' SEL = ',RMSS(6),RMSS(13)
44077         WRITE(MSTU(11),*) ' SER = ',RMSS(7),RMSS(14)
44078       ENDIF
44079  
44080 C...Fix the third generation sfermions.
44081       CALL PYTHRG
44082  
44083 C...Fix the neutralino--chargino--gluino sector.
44084       CALL PYINOM
44085  
44086 C...Fix the Higgs sector.
44087       CALL PYHGGM(ALFA)
44088  
44089 C...Choose the Gunion-Haber convention.
44090       ALFA=-ALFA
44091       RMSS(18)=ALFA
44092  
44093 C...Print information on mass parameters.
44094       IF(IMSSM.EQ.2.AND.MSTP(122).GT.0) THEN
44095         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44096         WRITE(MSTU(11),*) ' USING APPROXIMATE SUGRA RELATIONS '
44097         WRITE(MSTU(11),*) ' M0 = ',RMSS(8)
44098         WRITE(MSTU(11),*) ' M1/2=',RMSS(1)
44099         WRITE(MSTU(11),*) ' TANB=',RMSS(5)
44100         WRITE(MSTU(11),*) ' MU = ',RMSS(4)
44101         WRITE(MSTU(11),*) ' AT = ',RMSS(16)
44102         WRITE(MSTU(11),*) ' MA = ',RMSS(19)
44103         WRITE(MSTU(11),*) ' MTOP=',PMAS(6,1)
44104         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44105       ENDIF
44106       IF(IMSS(20).EQ.1) THEN
44107         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44108         WRITE(MSTU(11),*) ' DEBUG MODE '
44109         WRITE(MSTU(11),*) ' UMIX = ',UMIX(1,1),UMIX(1,2),
44110      &  UMIX(2,1),UMIX(2,2)
44111         WRITE(MSTU(11),*) ' UMIXI = ',UMIXI(1,1),UMIXI(1,2),
44112      &  UMIXI(2,1),UMIXI(2,2)
44113         WRITE(MSTU(11),*) ' VMIX = ',VMIX(1,1),VMIX(1,2),
44114      &  VMIX(2,1),VMIX(2,2)
44115         WRITE(MSTU(11),*) ' VMIXI = ',VMIXI(1,1),VMIXI(1,2),
44116      &  VMIXI(2,1),VMIXI(2,2)
44117         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(1,I),I=1,4)
44118         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(1,I),I=1,4)
44119         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(2,I),I=1,4)
44120         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(2,I),I=1,4)
44121         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(3,I),I=1,4)
44122         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(3,I),I=1,4)
44123         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(4,I),I=1,4)
44124         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(4,I),I=1,4)
44125         WRITE(MSTU(11),*) ' ALFA = ',ALFA
44126         WRITE(MSTU(11),*) ' BETA = ',BETA
44127         WRITE(MSTU(11),*) ' STOP = ',(SFMIX(6,I),I=1,4)
44128         WRITE(MSTU(11),*) ' SBOT = ',(SFMIX(5,I),I=1,4)
44129         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44130       ENDIF
44131  
44132 C...Set up the Higgs couplings - needed here since initialization
44133 C...in PYINRE did not yet occur when PYWIDT is called below.
44134   170 AL=ALFA
44135       BE=BETA
44136       SINA=SIN(AL)
44137       COSA=COS(AL)
44138       COSB=COS(BE)
44139       SINB=TANB*COSB
44140       SBMA=SIN(BE-AL)
44141       SAPB=SIN(AL+BE)
44142       CAPB=COS(AL+BE)
44143       CBMA=COS(BE-AL)
44144       C2A=COS(2D0*AL)
44145       C2B=COSB**2-SINB**2
44146 C...tanb (used for H+)
44147       PARU(141)=TANB
44148  
44149 C...Firstly: h
44150 C...Coupling to d-type quarks
44151       PARU(161)=SINA/COSB
44152 C...Coupling to u-type quarks
44153       PARU(162)=-COSA/SINB
44154 C...Coupling to leptons
44155       PARU(163)=PARU(161)
44156 C...Coupling to Z
44157       PARU(164)=SBMA
44158 C...Coupling to W
44159       PARU(165)=PARU(164)
44160  
44161 C...Secondly: H
44162 C...Coupling to d-type quarks
44163       PARU(171)=-COSA/COSB
44164 C...Coupling to u-type quarks
44165       PARU(172)=-SINA/SINB
44166 C...Coupling to leptons
44167       PARU(173)=PARU(171)
44168 C...Coupling to Z
44169       PARU(174)=CBMA
44170 C...Coupling to W
44171       PARU(175)=PARU(174)
44172 C...Coupling to h
44173       IF(IMSS(4).GE.2) THEN
44174         PARU(176)=COS(2D0*AL)*COS(BE+AL)-2D0*SIN(2D0*AL)*SIN(BE+AL)
44175       ELSE
44176         HHH(3)=HHH(3)+HHH(4)+HHH(5)
44177         PARU(176)=-3D0/HHH(1)*(HHH(1)*SINA**2*COSB*COSA+
44178      1  HHH(2)*COSA**2*SINB*SINA+HHH(3)*(SINA**3*SINB+COSA**3*COSB-
44179      2  2D0/3D0*CBMA)-HHH(6)*SINA*(COSB*C2A+COSA*CAPB)+
44180      3  HHH(7)*COSA*(SINB*C2A+SINA*CAPB))
44181       ENDIF
44182 C...Coupling to H+
44183 C...Define later
44184       IF(IMSS(4).GE.2) THEN
44185         PARU(168)=-SBMA-COS(2D0*BE)*SAPB/2D0/(1D0-XW)
44186       ELSE
44187         PARU(168)=1D0/HHH(1)*(HHH(1)*SINB**2*COSB*SINA-
44188      1 HHH(2)*COSB**2*SINB*COSA-HHH(3)*(SINB**3*COSA-COSB**3*SINA)+
44189      2 2D0*HHH(5)*SBMA-HHH(6)*SINB*(COSB*SAPB+SINA*C2B)-
44190      3 HHH(7)*COSB*(COSA*C2B-SINB*SAPB)-(HHH(5)-HHH(4))*SBMA)
44191       ENDIF
44192 C...Coupling to A
44193       IF(IMSS(4).GE.2) THEN
44194         PARU(177)=COS(2D0*BE)*COS(BE+AL)
44195       ELSE
44196         PARU(177)=-1D0/HHH(1)*(HHH(1)*SINB**2*COSB*COSA+
44197      1 HHH(2)*COSB**2*SINB*SINA+HHH(3)*(SINB**3*SINA+COSB**3*COSA)-
44198      2 2D0*HHH(5)*CBMA-HHH(6)*SINB*(COSB*CAPB+COSA*C2B)+
44199      3 HHH(7)*COSB*(SINB*CAPB+SINA*C2B))
44200       ENDIF
44201 C...Coupling to H+
44202       IF(IMSS(4).GE.2) THEN
44203         PARU(178)=PARU(177)
44204       ELSE
44205         PARU(178)=PARU(177)-(HHH(5)-HHH(4))/HHH(1)*CBMA
44206       ENDIF
44207 C...Thirdly, A
44208 C...Coupling to d-type quarks
44209       PARU(181)=TANB
44210 C...Coupling to u-type quarks
44211       PARU(182)=1D0/PARU(181)
44212 C...Coupling to leptons
44213       PARU(183)=PARU(181)
44214       PARU(184)=0D0
44215       PARU(185)=0D0
44216 C...Coupling to Z h
44217       PARU(186)=COS(BE-AL)
44218 C...Coupling to Z H
44219       PARU(187)=SIN(BE-AL)
44220       PARU(188)=0D0
44221       PARU(189)=0D0
44222       PARU(190)=0D0
44223  
44224 C...Finally: H+
44225 C...Coupling to W h
44226       PARU(195)=COS(BE-AL)
44227  
44228 C...Tell that all Higgs couplings have been set.
44229       MSTP(4)=1
44230  
44231 C...Set R-Violating couplings.
44232 C...Set lambda couplings to common value or "natural values".
44233       IF ((IMSS(51).NE.3).AND.(IMSS(51).NE.0)) THEN
44234         VIR3=1D0/(126D0)**3
44235         DO 200 IRK=1,3
44236           DO 190 IRI=1,3
44237             DO 180 IRJ=1,3
44238               IF (IRI.NE.IRJ) THEN
44239                 IF (IRI.LT.IRJ) THEN
44240                   RVLAM(IRI,IRJ,IRK)=RMSS(51)
44241                   IF (IMSS(51).EQ.2) RVLAM(IRI,IRJ,IRK)=RMSS(51)*
44242      &              SQRT(PMAS(9+2*IRI,1)*PMAS(9+2*IRJ,1)*
44243      &              PMAS(9+2*IRK,1)*VIR3)
44244                 ELSE
44245                   RVLAM(IRI,IRJ,IRK)=-RVLAM(IRJ,IRI,IRK)
44246                 ENDIF
44247               ELSE
44248                 RVLAM(IRI,IRJ,IRK)=0D0
44249               ENDIF
44250   180       CONTINUE
44251   190     CONTINUE
44252   200   CONTINUE
44253       ENDIF
44254 C...Set lambda' couplings to common value or "natural values".
44255       IF ((IMSS(52).NE.3).AND.(IMSS(52).NE.0)) THEN
44256         VIR3=1D0/(126D0)**3
44257         DO 230 IRI=1,3
44258           DO 220 IRJ=1,3
44259             DO 210 IRK=1,3
44260               RVLAMP(IRI,IRJ,IRK)=RMSS(52)
44261               IF (IMSS(52).EQ.2) RVLAMP(IRI,IRJ,IRK)=RMSS(52)*
44262      &          SQRT(PMAS(9+2*IRI,1)*0.5D0*(PMAS(2*IRJ,1)+
44263      &          PMAS(2*IRJ-1,1))*PMAS(2*IRK-1,1)*VIR3)
44264   210       CONTINUE
44265   220     CONTINUE
44266   230   CONTINUE
44267       ENDIF
44268 C...Set lambda'' couplings to common value or "natural values".
44269       IF ((IMSS(53).NE.3).AND.(IMSS(53).NE.0)) THEN
44270         VIR3=1D0/(126D0)**3
44271         DO 260 IRI=1,3
44272           DO 250 IRJ=1,3
44273             DO 240 IRK=1,3
44274               IF (IRJ.NE.IRK) THEN
44275                 IF (IRJ.LT.IRK) THEN
44276                   RVLAMB(IRI,IRJ,IRK)=RMSS(53)
44277                   IF (IMSS(53).EQ.2) RVLAMB(IRI,IRJ,IRK)=
44278      &              RMSS(53)*SQRT(PMAS(2*IRI,1)*PMAS(2*IRJ-1,1)*
44279      &              PMAS(2*IRK-1,1)*VIR3)
44280                 ELSE
44281                   RVLAMB(IRI,IRJ,IRK)=-RVLAMB(IRI,IRK,IRJ)
44282                 ENDIF
44283               ELSE
44284                 RVLAMB(IRI,IRJ,IRK) = 0D0
44285               ENDIF
44286   240       CONTINUE
44287   250     CONTINUE
44288   260   CONTINUE
44289       ENDIF
44290  
44291 C...Antisymmetrize couplings set by user
44292       IF (IMSS(51).EQ.3.OR.IMSS(53).EQ.3) THEN
44293         DO 290 IRI=1,3
44294           DO 280 IRJ=1,3
44295             DO 270 IRK=1,3
44296               IF (RVLAM(IRI,IRJ,IRK).NE.-RVLAM(IRJ,IRI,IRK)) THEN
44297                 RVLAM(IRJ,IRI,IRK)=-RVLAM(IRI,IRJ,IRK)
44298                 IF (IRI.EQ.IRJ) RVLAM(IRI,IRJ,IRK)=0D0
44299               ENDIF
44300               IF (RVLAMB(IRI,IRJ,IRK).NE.-RVLAMB(IRI,IRK,IRJ)) THEN
44301                 RVLAMB(IRI,IRK,IRJ)=-RVLAMB(IRI,IRJ,IRK)
44302                 IF (IRJ.EQ.IRK) RVLAMB(IRI,IRJ,IRK)=0D0
44303               ENDIF
44304   270       CONTINUE
44305   280     CONTINUE
44306   290   CONTINUE
44307       ENDIF
44308  
44309 C...Write spectrum to SLHA file
44310       IF (IMSS(23).NE.0) THEN
44311         IFAIL=0
44312         CALL PYSLHA(3,0,IFAIL)
44313       ENDIF
44314  
44315 C...Second part of routine: set decay modes and branching ratios.
44316  
44317 C...Allow chi10 -> gravitino + gamma or not.
44318       KC=PYCOMP(KSUSY1+39)
44319       IF( IMSS(11) .NE. 0 ) THEN
44320         PMAS(KC,1)=RMSS(21)/1D9
44321         PMAS(KC,2)=0D0
44322         IRPRTY=0
44323         WRITE(MSTU(11),*) ' ALLOWING DECAYS TO GRAVITINOS '
44324       ELSE IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
44325         IRPRTY=0
44326         IF (IMSS(51).GE.1) WRITE(MSTU(11),*)
44327      &       ' ALLOWING SUSY LLE DECAYS'
44328         IF (IMSS(52).GE.1) WRITE(MSTU(11),*)
44329      &       ' ALLOWING SUSY LQD DECAYS'
44330         IF (IMSS(53).GE.1) WRITE(MSTU(11),*)
44331      &       ' ALLOWING SUSY UDD DECAYS'
44332         IF (IMSS(53).GE.1.AND.IMSS(52).GE.1) WRITE(MSTU(11),*)
44333      &   ' --- Warning: R-Violating couplings possibly',
44334      &       ' incompatible with proton decay'
44335       ELSE
44336         PMAS(KC,1)=9999D0
44337         IRPRTY=1
44338       ENDIF
44339  
44340 C...Loop over sparticle and Higgs species.
44341       PMCHI1=PMAS(PYCOMP(KSUSY1+22),1)
44342 C...Find the LSP or NLSP for a gravitino LSP
44343       ILSP=0
44344       PMLSP=1D20
44345       DO 300 I=1,36
44346         KF=KFSUSY(I)
44347         IF(KF.EQ.1000039) GOTO 300
44348         KC=PYCOMP(KF)
44349         IF(PMAS(KC,1).LT.PMLSP) THEN
44350           ILSP=I
44351           PMLSP=PMAS(KC,1)
44352         ENDIF
44353   300 CONTINUE
44354       DO 370 I=1,50
44355         IF (I.GT.39.AND.IMSS(13).NE.1) GOTO 370
44356         KF=KFSUSY(I)
44357         IF (KF.EQ.0) GOTO 370
44358         KC=PYCOMP(KF)
44359         LKNT=0
44360  
44361 C...Check if there are any decays listed for this sparticle
44362 C...in a file
44363         IF (IMSS(22).NE.0.OR.MSTP(161).NE.0) THEN
44364           IFAIL=0
44365           CALL PYSLHA(2,KF,IFAIL)
44366           IF (IFAIL.EQ.0.OR.KF.EQ.6.OR.KF.EQ.24) GOTO 370
44367         ELSEIF (I.GE.37) THEN
44368           GOTO 370
44369         ENDIF
44370  
44371 C...Sfermion decays.
44372         IF(I.LE.24) THEN
44373 C...First check to see if sneutrino is lighter than chi10.
44374           IF((I.EQ.15.OR.I.EQ.19.OR.I.EQ.23).AND.
44375      &    PMAS(KC,1).LT.PMCHI1) THEN
44376           ELSE
44377             CALL PYSFDC(KF,XLAM,IDLAM,LKNT)
44378           ENDIF
44379  
44380 C...Gluino decays.
44381         ELSEIF(I.EQ.25) THEN
44382           CALL PYGLUI(KF,XLAM,IDLAM,LKNT)
44383           IF(I.EQ.ILSP.AND.IRPRTY.EQ.1) LKNT=0
44384  
44385 C...Neutralino decays.
44386         ELSEIF(I.GE.26.AND.I.LE.29) THEN
44387           CALL PYNJDC(KF,XLAM,IDLAM,LKNT)
44388 C...chi10 stable or chi10 -> gravitino + gamma.
44389           IF(I.EQ.26.AND.IRPRTY.EQ.1) THEN
44390             PMAS(KC,2)=1D-6
44391             MDCY(KC,1)=0
44392             MWID(KC)=0
44393           ENDIF
44394  
44395 C...Chargino decays.
44396         ELSEIF(I.GE.30.AND.I.LE.31) THEN
44397           CALL PYCJDC(KF,XLAM,IDLAM,LKNT)
44398  
44399 C...Gravitino is stable.
44400         ELSEIF(I.EQ.32) THEN
44401           MDCY(KC,1)=0
44402           MWID(KC)=0
44403  
44404 C...Higgs decays.
44405         ELSEIF(I.GE.33.AND.I.LE.36) THEN
44406 C...Calculate decays to non-SUSY particles.
44407           CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
44408           LKNT=0
44409           DO 310 I1=0,100
44410             XLAM(I1)=0D0
44411   310     CONTINUE
44412           DO 330 I1=1,MDCY(KC,3)
44413             K1=MDCY(KC,2)+I1-1
44414             IF(IABS(KFDP(K1,1)).GT.KSUSY1.OR.
44415      &      IABS(KFDP(K1,2)).GT.KSUSY1) GOTO 330
44416             XLAM(I1)=WDTP(I1)
44417             XLAM(0)=XLAM(0)+XLAM(I1)
44418             DO 320 J1=1,3
44419               IDLAM(I1,J1)=KFDP(K1,J1)
44420   320       CONTINUE
44421             LKNT=LKNT+1
44422   330     CONTINUE
44423 C...Add the decays to SUSY particles.
44424           CALL PYHEXT(KF,XLAM,IDLAM,LKNT)
44425         ENDIF
44426 C...Zero the branching ratios for use in loop mode
44427 C...thanks to K. Matchev (FNAL)
44428         DO 340 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
44429           BRAT(IDC)=0D0
44430   340   CONTINUE
44431  
44432 C...Set stable particles.
44433         IF(LKNT.EQ.0) THEN
44434           MDCY(KC,1)=0
44435           MWID(KC)=0
44436           PMAS(KC,2)=1D-6
44437           PMAS(KC,3)=1D-5
44438           PMAS(KC,4)=0D0
44439  
44440 C...Store branching ratios in the standard tables.
44441         ELSE
44442           IDC=MDCY(KC,2)+MDCY(KC,3)-1
44443           DELM=1D6
44444           DO 360 IL=1,LKNT
44445             IDCSV=IDC
44446   350       IDC=IDC+1
44447             BRAT(IDC)=0D0
44448             IF(IDC.EQ.MDCY(KC,2)+MDCY(KC,3)) IDC=MDCY(KC,2)
44449             IF(IDLAM(IL,1).EQ.KFDP(IDC,1).AND.IDLAM(IL,2).EQ.
44450      &      KFDP(IDC,2).AND.IDLAM(IL,3).EQ.KFDP(IDC,3)) THEN
44451               BRAT(IDC)=XLAM(IL)/XLAM(0)
44452               XMDIF=PMAS(KC,1)
44453               IF(MDME(IDC,1).GE.1) THEN
44454                 XMDIF=XMDIF-PMAS(PYCOMP(KFDP(IDC,1)),1)-
44455      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
44456                 IF(KFDP(IDC,3).NE.0) XMDIF=XMDIF-
44457      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
44458               ENDIF
44459               IF(I.LE.32) THEN
44460                 IF(XMDIF.GE.0D0) THEN
44461                   DELM=MIN(DELM,XMDIF)
44462                 ELSE
44463                   WRITE(MSTU(11),*) ' ERROR WITH DELM ',DELM,XMDIF
44464                   WRITE(MSTU(11),*) ' KF = ',KF
44465                   WRITE(MSTU(11),*) ' KF(decay) = ',(KFDP(IDC,J),J=1,3)
44466                 ENDIF
44467               ENDIF
44468               GOTO 360
44469             ELSEIF(IDC.EQ.IDCSV) THEN
44470               WRITE(MSTU(11),*) ' Error in PYMSIN: SUSY decay ',
44471      &        'channel not recognized:'
44472               WRITE(MSTU(11),*) KF,' -> ',(IDLAM(IL,J),J=1,3)
44473               GOTO 360
44474             ELSE
44475               GOTO 350
44476             ENDIF
44477   360     CONTINUE
44478  
44479 C...Store width, cutoff and lifetime.
44480           PMAS(KC,2)=XLAM(0)
44481           IF(PMAS(KC,2).LT.0.1D0*DELM) THEN
44482             PMAS(KC,3)=PMAS(KC,2)*10D0
44483           ELSE
44484             PMAS(KC,3)=0.95D0*DELM
44485           ENDIF
44486           IF(PMAS(KC,2).NE.0D0) THEN
44487             PMAS(KC,4)=PARU(3)/PMAS(KC,2)*1D-12
44488           ENDIF
44489 C...Write decays to SLHA file
44490           IF (IMSS(24).NE.0) THEN
44491             IFAIL=0
44492             CALL PYSLHA(4,KF,IFAIL)
44493           ENDIF
44494  
44495         ENDIF
44496   370 CONTINUE
44497  
44498       RETURN
44499       END
44500 C*********************************************************************
44501  
44502 C...PYSLHA
44503 C...Read/write spectrum or decay data from SLHA standard file(s).
44504 C...P. Skands
44505  
44506 C...MUPDA=0 : READ QNUMBERS/PARTICLE ON LUN=IMSS(21)
44507 C...MUPDA=1 : READ SLHA SPECTRUM ON LUN=IMSS(21)
44508 C...MUPDA=2 : LOOK FOR DECAY TABLE FOR KF=KFORIG ON LUN=IMSS(22)
44509 C...          (KFORIG=0 : read all decay tables)
44510 C...MUPDA=3 : WRITE SPECTRUM ON LUN=IMSS(23)
44511 C...(MUPDA=4 : WRITE DECAY TABLE FOR KF=KFORIG ON LUN=IMSS(24))
44512 C...MUPDA=5 : READ MASS FOR KF=KFORIG ONLY
44513 C...          (KFORIG=0 : read all MASS entries)
44514  
44515 C...Recent updates:
44516 C...17 Sep 2007: introduced /PYQNUM/ for QNUMBERS storage
44517 C...           : Corrected QNUMBERS name-formation; root only until space
44518       SUBROUTINE PYSLHA(MUPDA,KFORIG,IRETRN)
44519  
44520 C...Double precision and integer declarations.
44521       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44522       IMPLICIT INTEGER(I-N)
44523       INTEGER PYK,PYCHGE,PYCOMP
44524       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
44525      &KEXCIT=4000000,KDIMEN=5000000)
44526 C...Commonblocks.
44527       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44528       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
44529       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
44530       COMMON/PYDAT4/CHAF(500,2)
44531       CHARACTER CHAF*16
44532       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
44533       CHARACTER*40 ISAVER,VISAJE
44534       COMMON/PYINT4/MWID(500),WIDS(500,5)
44535       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYPARS/,/PYINT4/
44536 C...SUSY blocks
44537       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
44538       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
44539      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
44540       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
44541       SAVE /PYMSSM/,/PYSSMT/,/PYMSRV/
44542  
44543 C...Local arrays, character variables and data.
44544       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
44545      &     AU(3,3),AD(3,3),AE(3,3)
44546       COMMON/PYLH3C/CPRO(2),CVER(2)
44547 C...The common block of new states (QNUMBERS / PARTICLE)
44548       COMMON/PYQNUM/NQNUM,NQDUM,KQNUM(500,0:9)
44549 C...- NQNUM : Number of QNUMBERS blocks that have been read in
44550 C...- KQNUM(I,0) : KF of new state
44551 C...- KQNUM(I,1) : 3 times electric charge
44552 C...- KQNUM(I,2) : Number of spin states: (2S + 1)
44553 C...- KQNUM(I,3) : Colour rep  (1: singlet, 3: triplet, 8: octet)
44554 C...- KQNUM(I,4) : Particle/Antiparticle distinction (0=own anti)
44555 C...- KQNUM(I,5:9) : space available for further quantum numbers
44556       DIMENSION MMOD(100),MSPC(100),KFDEC(100)
44557       SAVE /PYLH3P/,/PYLH3C/,/PYQNUM/,MMOD,MSPC,KFDEC
44558 C...MMOD: flags to set for each block read in.
44559 C... 1: MODSEL     2: MINPAR     3: EXTPAR     4: SMINPUTS
44560 C...MSPC: Flags to set for each block read in.
44561 C... 1: MASS       2: NMIX       3: UMIX       4: VMIX       5: SBOTMIX
44562 C... 6: STOPMIX    7: STAUMIX    8: HMIX       9: GAUGE     10: AU
44563 C...11: AD        12: AE        13: YU        14: YD        15: YE
44564 C...16: SPINFO    17: ALPHA     18: MSOFT     19: QNUMBERS
44565       CHARACTER CPRO*12,CVER*12,CHNLIN*6
44566       CHARACTER DOC*11, CHDUM*120, CHBLCK*60
44567       CHARACTER CHINL*120,CHKF*9,CHTMP*16
44568       INTEGER VERBOS
44569       SAVE VERBOS
44570 C...Date of last Change
44571       PARAMETER (DOC='05 Nov 2007')
44572 C...Local arrays and initial values
44573       DIMENSION IDC(5),KFSUSY(50)
44574       SAVE KFSUSY
44575       DATA NQNUM /0/
44576       DATA NDECAY /0/
44577       DATA VERBOS /1/
44578       DATA NHELLO /0/
44579       DATA MLHEF /0/
44580       DATA MLHEFD /0/
44581       DATA KFSUSY/
44582      &1000001,1000002,1000003,1000004,1000005,1000006,
44583      &2000001,2000002,2000003,2000004,2000005,2000006,
44584      &1000011,1000012,1000013,1000014,1000015,1000016,
44585      &2000011,2000012,2000013,2000014,2000015,2000016,
44586      &1000021,1000022,1000023,1000025,1000035,1000024,
44587      &1000037,1000039,     25,     35,     36,     37,
44588      &      6,     24,     45,     46,1000045, 9*0/
44589       DATA KFDEC/100*0/
44590       RMFUN(IP)=PMAS(PYCOMP(IP),1)
44591  
44592 C...Shorthand for spectrum and decay table unit numbers
44593       IMSS21=IMSS(21)
44594       IMSS22=IMSS(22)
44595  
44596 C...Default for LHEF input: read header information
44597       IF (IMSS21.EQ.0.AND.MSTP(161).NE.0) IMSS21=MSTP(161)
44598       IF (IMSS22.EQ.0.AND.MSTP(161).NE.0) IMSS22=MSTP(161)
44599       IF (IMSS21.EQ.MSTP(161)) MLHEF=1
44600       IF (IMSS22.EQ.MSTP(161)) MLHEFD=1
44601  
44602 C...Hello World
44603       IF (NHELLO.EQ.0) THEN
44604         IF ((MLHEF.NE.1.AND.MLHEFD.NE.1).OR.(IMSS(1).NE.0)) THEN
44605           WRITE(MSTU(11),5000) DOC
44606           NHELLO=1
44607         ENDIF
44608       ENDIF
44609  
44610 C...SLHA file assumed opened by user on unit LFN, stored in IMSS(20
44611 C...+MUPDA).
44612       LFN=IMSS21
44613       IF (MUPDA.EQ.2) LFN=IMSS22
44614       IF (MUPDA.EQ.3) LFN=IMSS(23)
44615       IF (MUPDA.EQ.4) LFN=IMSS(24)
44616 C...Flag that we have not yet found whatever we were asked to find.
44617       IRETRN=1
44618  
44619 C...STOP IF LFN IS ZERO (i.e. if no LFN was given).
44620       IF (LFN.EQ.0) THEN
44621         WRITE(MSTU(11),*) '* (PYSLHA:) No valid unit given in IMSS'
44622         GOTO 9999
44623       ENDIF
44624  
44625 C...If reading LHEF header, start by rewinding file
44626       IF (MLHEF.EQ.1.OR.MLHEFD.EQ.1) REWIND(LFN)
44627  
44628 C...If told to read spectrum, first zero all previous information.
44629       IF (MUPDA.EQ.1) THEN
44630 C...Zero all block read flags
44631         DO 100 M=1,100
44632           MMOD(M)=0
44633           MSPC(M)=0
44634   100   CONTINUE
44635 C...Zero all (MSSM) masses, widths, and lifetimes in PYTHIA
44636         DO 110 ISUSY=1,36
44637           KC=PYCOMP(KFSUSY(ISUSY))
44638           PMAS(KC,1)=0D0
44639   110   CONTINUE
44640 C...Zero all (3rd gen sfermion + gaugino/higgsino) mixing matrices.
44641         DO 130 J=1,4
44642           SFMIX(5,J) =0D0
44643           SFMIX(6,J) =0D0
44644           SFMIX(15,J)=0D0
44645           DO 120 L=1,4
44646             ZMIX(L,J) =0D0
44647             ZMIXI(L,J)=0D0
44648             IF (J.LE.2.AND.L.LE.2) THEN
44649               UMIX(L,J) =0D0
44650               UMIXI(L,J)=0D0
44651               VMIX(L,J) =0D0
44652               VMIXI(L,J)=0D0
44653             ENDIF
44654   120     CONTINUE
44655 C...Zero signed masses.
44656           SMZ(J)=0D0
44657           IF (J.LE.2) SMW(J)=0D0
44658   130   CONTINUE
44659  
44660 C...If reading decays, reset PYTHIA decay counters.
44661       ELSEIF (MUPDA.EQ.2) THEN
44662 C...Check if DECAY for this KF already read
44663         IF (KFORIG.NE.0) THEN
44664           DO 140 IDEC=1,NDECAY
44665             IF (KFORIG.EQ.KFDEC(IDEC)) THEN
44666               IRETRN=0
44667               RETURN
44668             ENDIF
44669   140     CONTINUE
44670         ENDIF
44671         KCC=100
44672         NDC=0
44673         BRSUM=0D0
44674         DO 150 KC=1,MSTU(6)
44675           IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
44676           NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
44677   150   CONTINUE
44678       ELSEIF (MUPDA.EQ.5) THEN
44679 C...Zero block read flags
44680         DO 160 M=1,100
44681           MSPC(M)=0
44682   160   CONTINUE
44683       ENDIF
44684  
44685 C............READ
44686 C...(QNUMBERS, spectrum, or decays of KF=KFORIG or MASS of KF=KFORIG)
44687       IF(MUPDA.EQ.0.OR.MUPDA.EQ.1.OR.MUPDA.EQ.2.OR.MUPDA.EQ.5) THEN
44688 C...Initialize program and version strings
44689         IF(MUPDA.EQ.1.OR.MUPDA.EQ.2) THEN
44690         CPRO(MUPDA)=' '
44691         CVER(MUPDA)=' '
44692         ENDIF
44693  
44694 C...Initialize read loop
44695         MERR=0
44696         NLINE=0
44697         CHBLCK=' '
44698 C...READ NEW LINE INTO CHINL. GOTO 300 AT END-OF-FILE.
44699   170   CHINL=' '
44700         READ(LFN,'(A120)',END=400) CHINL
44701 C...Count which line number we're at.
44702         NLINE=NLINE+1
44703         WRITE(CHNLIN,'(I6)') NLINE
44704  
44705 C...Skip comment and empty lines without processing.
44706         IF (CHINL(1:1).EQ.'#'.OR.CHINL.EQ.' ') GOTO 170
44707  
44708 C...We assume all upper case below. Rewrite CHINL to all upper case.
44709         INL=0
44710         IGOOD=0
44711   180   INL=INL+1
44712         IF (CHINL(INL:INL).NE.'#') THEN
44713           DO 190 ICH=97,122
44714             IF (CHAR(ICH).EQ.CHINL(INL:INL)) CHINL(INL:INL)=CHAR(ICH-32)
44715   190     CONTINUE
44716 C...Extra safety. Chek for sensible input on line
44717           IF (IGOOD.EQ.0) THEN
44718             DO 200 ICH=48,90
44719               IF (CHAR(ICH).EQ.CHINL(INL:INL)) IGOOD=1
44720   200       CONTINUE
44721           ENDIF
44722           IF (INL.LT.120) GOTO 180
44723         ENDIF
44724         IF (IGOOD.EQ.0) GOTO 170
44725  
44726 C...Exit when first <event> tag reached in LHEF file
44727         DO 210 I1=1,10
44728           IF (CHINL(I1:I1+5).EQ.'<EVENT') THEN
44729             REWIND(LFN)
44730             GOTO 400
44731           ENDIF
44732   210   CONTINUE
44733  
44734 C...Check for BLOCK begin statement (spectrum).
44735         IF (CHINL(1:5).EQ.'BLOCK') THEN
44736           MERR=0
44737           READ(CHINL,'(A6,A)',ERR=580) CHDUM,CHBLCK
44738 C...Check if another of this type of block was already read.
44739 C...(logarithmic interpolation not yet implemented, so duplicates always
44740 C...give errors)
44741           IF (CHBLCK(1:6).EQ.'MODSEL'.AND.MMOD(1).NE.0) MERR=7
44742           IF (CHBLCK(1:6).EQ.'MINPAR'.AND.MMOD(2).NE.0) MERR=7
44743           IF (CHBLCK(1:6).EQ.'EXTPAR'.AND.MMOD(3).NE.0) MERR=7
44744           IF (CHBLCK(1:8).EQ.'SMINPUTS'.AND.MMOD(4).NE.0) MERR=7
44745           IF (CHBLCK(1:4).EQ.'MASS'.AND.MSPC(1).NE.0) MERR=7
44746           IF (CHBLCK(1:4).EQ.'NMIX'.AND.MSPC(2).NE.0) MERR=7
44747           IF (CHBLCK(1:4).EQ.'UMIX'.AND.MSPC(3).NE.0) MERR=7
44748           IF (CHBLCK(1:4).EQ.'VMIX'.AND.MSPC(4).NE.0) MERR=7
44749           IF (CHBLCK(1:7).EQ.'SBOTMIX'.AND.MSPC(5).NE.0) MERR=7
44750           IF (CHBLCK(1:7).EQ.'STOPMIX'.AND.MSPC(6).NE.0) MERR=7
44751           IF (CHBLCK(1:7).EQ.'STAUMIX'.AND.MSPC(7).NE.0) MERR=7
44752           IF (CHBLCK(1:4).EQ.'HMIX'.AND.MSPC(8).NE.0) MERR=7
44753           IF (CHBLCK(1:5).EQ.'ALPHA'.AND.MSPC(17).NE.0) MERR=7
44754           IF (CHBLCK(1:5).EQ.'AU'.AND.MSPC(10).NE.0) MERR=7
44755           IF (CHBLCK(1:5).EQ.'AD'.AND.MSPC(11).NE.0) MERR=7
44756           IF (CHBLCK(1:5).EQ.'AE'.AND.MSPC(12).NE.0) MERR=7
44757           IF (CHBLCK(1:5).EQ.'MSOFT'.AND.MSPC(18).NE.0) MERR=7
44758 C...Check for new particles
44759           IF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.CHBLCK(1:8).EQ.'PARTICLE')
44760      &        THEN
44761             MSPC(19)=MSPC(19)+1
44762 C...Read PDG code
44763             READ(CHBLCK(9:60),*) KFQ
44764  
44765             DO 220 MQ=1,NQNUM
44766               IF (KQNUM(MQ,0).EQ.KFQ) THEN
44767                 MERR=17
44768                 GOTO 380
44769               ENDIF
44770   220       CONTINUE
44771             IF (NHELLO.EQ.0) THEN
44772               WRITE(MSTU(11),5000) DOC
44773               NHELLO=1
44774             ENDIF
44775             WRITE(MSTU(11),'(A,I9,A,F12.3)')
44776      &           ' * (PYSLHA:) Reading in '//CHBLCK(1:8)//
44777      &           ' for KF =',KFQ
44778             NQNUM=NQNUM+1
44779             KQNUM(NQNUM,0)=KFQ
44780             MSPC(19)=MSPC(19)+1
44781             KCQ=PYCOMP(KFQ)
44782 C...Only read in new codes (also OK to overwrite if KF > 3000000)
44783             IF (KCQ.EQ.0.OR.IABS(KFQ).GE.3000000) THEN
44784               IF (KCQ.EQ.0) THEN
44785                 DO 230 KCT=100,MSTU(6)
44786                   IF(KCHG(KCT,4).GT.100) KCQ=KCT
44787   230           CONTINUE
44788                 KCQ=KCQ+1
44789               ENDIF
44790               KCC=KCQ
44791               KCHG(KCQ,4)=KFQ
44792 C...First write PDG code as name
44793               WRITE(CHTMP,*) KFQ
44794               WRITE(CHTMP,'(A)') CHTMP(2:10)
44795 C...Then look for real name
44796               IBEG=9
44797   240         IBEG=IBEG+1
44798               IF (CHBLCK(IBEG:IBEG).NE.'#'.AND.IBEG.LT.59) GOTO 240
44799   250         IBEG=IBEG+1
44800               IF (CHBLCK(IBEG:IBEG).EQ.' '.AND.IBEG.LT.59) GOTO 250
44801               IEND=IBEG-1
44802   260         IEND=IEND+1
44803               IF (CHBLCK(IEND+1:IEND+1).NE.' '.AND.IEND.LT.59) GOTO 260
44804               IF (IEND.LT.59) THEN
44805                 READ(CHBLCK(IBEG:IEND),'(A)',ERR=270) CHDUM
44806                 IF (CHDUM.NE.' ') CHTMP=CHDUM
44807               ENDIF
44808   270         READ(CHTMP,'(A)') CHAF(KCQ,1)
44809               MSTU(20)=0
44810 C...Set stable for now
44811               PMAS(KCQ,2)=1D-6
44812               MWID(KCQ)=0
44813               MDCY(KCQ,1)=0
44814               MDCY(KCQ,2)=0
44815               MDCY(KCQ,3)=0
44816             ELSE
44817               WRITE(MSTU(11),*)
44818      &           '* (PYSLHA:) KF =',KFQ,' already exists: ',
44819      &             CHAF(KCQ,1), '. Entry ignored.'
44820               MERR=7
44821             ENDIF
44822           ENDIF
44823 C...Finalize this line and read next.
44824           GOTO 380
44825 C...Check for DECAY begin statement (decays).
44826         ELSEIF (CHINL(1:3).EQ.'DEC') THEN
44827           MERR=0
44828           BRSUM=0D0
44829           CHBLCK='DECAY'
44830 C...Read KF code and WIDTH
44831           MPSIGN=1
44832           READ(CHINL(7:INL),*,ERR=590) KF, WIDTH
44833           IF (KF.LE.0) THEN
44834             KF=-KF
44835             MPSIGN=-1
44836           ENDIF
44837 C...If this is not the KF we're looking for...
44838           IF ((KFORIG.NE.0.AND.KF.NE.KFORIG).OR.MUPDA.NE.2) THEN
44839 C...Set block skip flag and read next line.
44840             MERR=16
44841             GOTO 380
44842           ELSE
44843 C...Check whether decay table for this particle already read in
44844             DO 280 IDECAY=1,NDECAY
44845               IF (KFDEC(IDECAY).EQ.KF) THEN
44846                 MERR=16
44847                 GOTO 380
44848               ENDIF
44849   280       CONTINUE
44850           ENDIF
44851  
44852 C...Determine PYTHIA KC code of particle
44853           KCREP=0
44854           IF(KF.LE.100) THEN
44855             KCREP=KF
44856           ELSE
44857             DO 290 KCR=101,KCC
44858               IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
44859   290       CONTINUE
44860           ENDIF
44861           KC=KCREP
44862           IF (KCREP.NE.0) THEN
44863 C...Particle is already known. Don't do anything yet.
44864           ELSE
44865 C...  Add new particle. Actually, this should not happen.
44866 C...  New particles should be added already when reading the spectrum
44867 C...  information, so go under previously stable category.
44868             KCC=KCC+1
44869             KC=KCC
44870           ENDIF
44871  
44872           IF (WIDTH.LE.0D0) THEN
44873 C...Stable (i.e. LSP)
44874             WRITE(MSTU(11),*)
44875      &           '* (PYSLHA:) Reading in SLHA stable particle ',
44876      &              'KF =',KF,': ',CHAF(KCREP,1)(1:16)
44877             IF (WIDTH.LT.0D0) THEN
44878               CALL PYERRM(19,'(PYSLHA:) Negative width forced to'//
44879      &             ' zero !')
44880               WIDTH=0D0
44881             ENDIF
44882             PMAS(KC,2)=1D-6
44883             MWID(KC)=0
44884             MDCY(KC,1)=0
44885 C...Ignore any decay lines that may be present for this KF
44886             MERR=16
44887             MDCY(KC,2)=0
44888             MDCY(KC,3)=0
44889 C...Return ok
44890             IRETRN=0
44891           ENDIF
44892 C...Finalize and start reading in decay modes.
44893           GOTO 380
44894         ELSEIF (MOD(MERR,10).GE.6) THEN
44895 C...If ignore block flag set, skip directly to next line.
44896           GOTO 170
44897         ENDIF
44898  
44899 C...READ SPECTRUM
44900         IF (MUPDA.EQ.0.AND.MERR.EQ.0) THEN
44901           IF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.CHBLCK(1:8).EQ.'PARTICLE')
44902      &        THEN
44903             READ(CHINL,*) INDX, IVAL
44904             IF (INDX.GE.1.AND.INDX.LE.9) KQNUM(NQNUM,INDX)=IVAL
44905             IF (INDX.EQ.1) KCHG(KCQ,1)=IVAL
44906             IF (INDX.EQ.3) KCHG(KCQ,2)=0
44907             IF (INDX.EQ.3.AND.IVAL.EQ.3) KCHG(KCQ,2)=1
44908             IF (INDX.EQ.3.AND.IVAL.EQ.-3) KCHG(KCQ,2)=-1
44909             IF (INDX.EQ.3.AND.IVAL.EQ.8) KCHG(KCQ,2)=2
44910             IF (INDX.EQ.4) THEN
44911               KCHG(KCQ,3)=IVAL
44912               IF (IVAL.EQ.1) THEN
44913                 CHTMP=CHAF(KCQ,1)
44914                 IF (CHTMP.EQ.' ') THEN
44915                   WRITE(CHAF(KCQ,1),*) KCHG(KCQ,4)
44916                   WRITE(CHAF(KCQ,2),*) -KCHG(KCQ,4)
44917                 ELSE
44918                   ILAST=17
44919   300             ILAST=ILAST-1
44920                   IF (CHTMP(ILAST:ILAST).EQ.' ') GOTO 300
44921                   IF (CHTMP(ILAST:ILAST).EQ.'+') THEN
44922                     CHTMP(ILAST:ILAST)='-'
44923                   ELSE
44924                     CHTMP(ILAST+1:MIN(16,ILAST+4))='bar'
44925                   ENDIF
44926                   CHAF(KCQ,2)=CHTMP
44927                 ENDIF
44928               ENDIF
44929             ENDIF
44930           ELSE
44931             MERR=8
44932           ENDIF
44933         ELSEIF ((MUPDA.EQ.1.OR.MUPDA.EQ.5).AND.MERR.EQ.0) THEN
44934 C...MASS: Mass spectrum
44935           IF (CHBLCK(1:4).EQ.'MASS') THEN
44936             READ(CHINL,*) KF, VAL
44937             MERR=1
44938             KC=0
44939             IF (MUPDA.EQ.1.OR.KF.EQ.KFORIG.OR.KFORIG.EQ.0) THEN
44940 C...Read in masses for anything
44941               MERR=0
44942               KC=PYCOMP(KF)
44943 C...Don't read in masses for the light quarks
44944               IF (IABS(KF).LE.3) THEN
44945                   WRITE(MSTU(11),'(A,I9,A,F12.3)')
44946      &                 ' * (PYSLHA:) Ignoring MASS entry for KF =',
44947      &                 KF
44948                 MERR=1
44949               ENDIF
44950               IF (KC.NE.0) THEN
44951                 MSPC(1)=MSPC(1)+1
44952                 PMAS(KC,1) = ABS(VAL)
44953                 IF (MUPDA.EQ.5.AND.IMSS(1).EQ.0) THEN
44954                   WRITE(MSTU(11),'(A,I9,A,F12.3)')
44955      &                 ' * (PYSLHA:) Reading in MASS entry for KF =',
44956      &                 KF, ', pole mass =', VAL
44957                   IRETRN=0
44958                 ENDIF
44959 C...  Signed masses
44960                 IF (KF.EQ.1000021.AND.MSPC(18).EQ.0) RMSS(3)=VAL
44961                 IF (KF.EQ.1000022) SMZ(1)=VAL
44962                 IF (KF.EQ.1000023) SMZ(2)=VAL
44963                 IF (KF.EQ.1000025) SMZ(3)=VAL
44964                 IF (KF.EQ.1000035) SMZ(4)=VAL
44965                 IF (KF.EQ.1000024) SMW(1)=VAL
44966                 IF (KF.EQ.1000037) SMW(2)=VAL
44967               ENDIF
44968             ELSEIF (MUPDA.EQ.5) THEN
44969               MERR=0
44970             ENDIF
44971 C...  MODSEL: Model selection and global switches
44972           ELSEIF (CHBLCK(1:6).EQ.'MODSEL') THEN
44973             READ(CHINL,*) INDX, IVAL
44974             IF (INDX.LE.200.AND.INDX.GT.0) THEN
44975               IF (IMSS(1).EQ.0) IMSS(1)=11
44976               MODSEL(INDX)=IVAL
44977               MMOD(1)=MMOD(1)+1
44978               IF (INDX.EQ.3.AND.IVAL.EQ.1.AND.PYCOMP(1000045).EQ.0) THEN
44979 C...  Switch on NMSSM
44980                 WRITE(MSTU(11),*) '* (PYSLHA:) switching on NMSSM'
44981                 IMSS(13)=MAX(1,IMSS(13))
44982 C...  Add NMSSM states if not already done
44983  
44984                 KFN=25
44985                 KCN=KFN
44986                 CHAF(KCN,1)='h_10'
44987                 CHAF(KCN,2)=' '
44988  
44989                 KFN=35
44990                 KCN=KFN
44991                 CHAF(KCN,1)='h_20'
44992                 CHAF(KCN,2)=' '
44993  
44994                 KFN=45
44995                 KCN=KFN
44996                 CHAF(KCN,1)='h_30'
44997                 CHAF(KCN,2)=' '
44998  
44999                 KFN=36
45000                 KCN=KFN
45001                 CHAF(KCN,1)='A_10'
45002                 CHAF(KCN,2)=' '
45003  
45004                 KFN=46
45005                 KCN=KFN
45006                 CHAF(KCN,1)='A_20'
45007                 CHAF(KCN,2)=' '
45008  
45009                 KFN=1000045
45010                 KCN=PYCOMP(KFN)
45011                 IF (KCN.EQ.0) THEN
45012                   DO 310 KCT=100,MSTU(6)
45013                     IF(KCHG(KCT,4).GT.100) KCN=KCT
45014   310             CONTINUE
45015                   KCN=KCN+1
45016                   KCHG(KCN,4)=KFN
45017                   MSTU(20)=0
45018                 ENDIF
45019 C...  Set stable for now
45020                 PMAS(KCN,2)=1D-6
45021                 MWID(KCN)=0
45022                 MDCY(KCN,1)=0
45023                 MDCY(KCN,2)=0
45024                 MDCY(KCN,3)=0
45025                 CHAF(KCN,1)='~chi_50'
45026                 CHAF(KCN,2)=' '
45027               ENDIF
45028             ELSE
45029               MERR=1
45030             ENDIF
45031           ELSEIF (MUPDA.EQ.5) THEN
45032 C...If MUPDA = 5, skip all except MASS, return if MODSEL
45033             MERR=8
45034           ELSEIF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.
45035      &          CHBLCK(1:8).EQ.'PARTICLE') THEN
45036 C...Don't print a warning for QNUMBERS when reading spectrum
45037             MERR=8
45038 C...MINPAR: Minimal model parameters
45039           ELSEIF (CHBLCK(1:6).EQ.'MINPAR') THEN
45040             READ(CHINL,*) INDX, VAL
45041             IF (INDX.LE.100.AND.INDX.GT.0) THEN
45042               PARMIN(INDX)=VAL
45043               MMOD(2)=MMOD(2)+1
45044             ELSE
45045               MERR=1
45046             ENDIF
45047             IF (MMOD(3).NE.0) THEN
45048               WRITE(MSTU(11),*)
45049      &             '* (PYSLHA:) MINPAR should come before EXTPAR !'
45050               MERR=1
45051             ENDIF
45052 C...tan(beta)
45053             IF (INDX.EQ.3) RMSS(5)=VAL
45054 C...EXTPAR: non-minimal model parameters.
45055           ELSEIF (CHBLCK(1:6).EQ.'EXTPAR') THEN
45056             IF (MMOD(1).NE.0) THEN
45057               READ(CHINL,*) INDX, VAL
45058               IF (INDX.LE.200.AND.INDX.GT.0) THEN
45059                 PAREXT(INDX)=VAL
45060                 MMOD(3)=MMOD(3)+1
45061               ELSE
45062                 MERR=1
45063               ENDIF
45064             ELSE
45065               WRITE(MSTU(11),*)
45066      &             '* (PYSLHA:) Reading EXTPAR, but no MODSEL !'
45067               MERR=1
45068             ENDIF
45069 C...tan(beta)
45070             IF (INDX.EQ.25) RMSS(5)=VAL
45071           ELSEIF (CHBLCK(1:8).EQ.'SMINPUTS') THEN
45072             READ(CHINL,*) INDX, VAL
45073             IF (INDX.LE.3.OR.INDX.EQ.5.OR.INDX.GE.7) THEN
45074               MERR=1
45075             ELSEIF (INDX.EQ.4) THEN
45076               PMAS(PYCOMP(23),1)=VAL
45077             ELSEIF (INDX.EQ.6) THEN
45078               PMAS(PYCOMP(6),1)=VAL
45079             ENDIF
45080           ELSEIF (CHBLCK(1:4).EQ.'NMIX'.OR.CHBLCK(1:4).EQ.'VMIX'.OR
45081      $           .CHBLCK(1:4).EQ.'UMIX'.OR.CHBLCK(1:7).EQ.'STOPMIX'.OR
45082      $           .CHBLCK(1:7).EQ.'SBOTMIX'.OR.CHBLCK(1:7).EQ.'STAUMIX')
45083      $           THEN
45084 C...NMIX,UMIX,VMIX,STOPMIX,SBOTMIX, and STAUMIX. Mixing.
45085             IM=0
45086             IF (CHBLCK(5:6).EQ.'IM') IM=1
45087   320       READ(CHINL,*) INDX1, INDX2, VAL
45088             IF (CHBLCK(1:1).EQ.'N'.AND.INDX1.LE.4.AND.INDX2.LE.4) THEN
45089               IF (IM.EQ.0) ZMIX(INDX1,INDX2) = VAL
45090               IF (IM.EQ.1) ZMIXI(INDX1,INDX2)= VAL
45091               MSPC(2)=MSPC(2)+1
45092             ELSEIF (CHBLCK(1:1).EQ.'U') THEN
45093               IF (IM.EQ.0) UMIX(INDX1,INDX2) = VAL
45094               IF (IM.EQ.1) UMIXI(INDX1,INDX2)= VAL
45095               MSPC(3)=MSPC(3)+1
45096             ELSEIF (CHBLCK(1:1).EQ.'V') THEN
45097               IF (IM.EQ.0) VMIX(INDX1,INDX2) = VAL
45098               IF (IM.EQ.1) VMIXI(INDX1,INDX2)= VAL
45099               MSPC(4)=MSPC(4)+1
45100             ELSEIF (CHBLCK(1:4).EQ.'STOP'.OR.CHBLCK(1:4).EQ.'SBOT'.OR
45101      $             .CHBLCK(1:4).EQ.'STAU') THEN
45102               IF (CHBLCK(1:4).EQ.'STOP') THEN
45103                 KFSM=6
45104                 ISPC=6
45105               ELSEIF (CHBLCK(1:4).EQ.'SBOT') THEN
45106                 KFSM=5
45107                 ISPC=5
45108               ELSEIF (CHBLCK(1:4).EQ.'STAU') THEN
45109                 KFSM=15
45110                 ISPC=7
45111               ENDIF
45112 C...Set SFMIX element
45113               SFMIX(KFSM,2*(INDX1-1)+INDX2)=VAL
45114               MSPC(ISPC)=MSPC(ISPC)+1
45115             ENDIF
45116 C...Running parameters
45117           ELSEIF (CHBLCK(1:4).EQ.'HMIX') THEN
45118             READ(CHBLCK(8:25),*,ERR=620) Q
45119             READ(CHINL,*) INDX, VAL
45120             MSPC(8)=MSPC(8)+1
45121             IF (INDX.EQ.1) THEN
45122               RMSS(4) = VAL
45123             ELSE
45124               MERR=1
45125               MSPC(8)=MSPC(8)-1
45126             ENDIF
45127           ELSEIF (CHBLCK(1:5).EQ.'ALPHA') THEN
45128             READ(CHINL,*,ERR=630) VAL
45129             RMSS(18)= VAL
45130             MSPC(17)=MSPC(17)+1
45131 C...Higgs parameters set manually or with FeynHiggs.
45132             IMSS(4)=MAX(2,IMSS(4))
45133           ELSEIF (CHBLCK(1:2).EQ.'AU'.OR.CHBLCK(1:2).EQ.'AD'.OR
45134      &           .CHBLCK(1:2).EQ.'AE') THEN
45135             READ(CHBLCK(9:26),*,ERR=620) Q
45136             READ(CHINL,*) INDX1, INDX2, VAL
45137             IF (CHBLCK(2:2).EQ.'U') THEN
45138               AU(INDX1,INDX2)=VAL
45139               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(16)=VAL
45140               MSPC(11)=MSPC(11)+1
45141             ELSEIF (CHBLCK(2:2).EQ.'D') THEN
45142               AD(INDX1,INDX2)=VAL
45143               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(15)=VAL
45144               MSPC(10)=MSPC(10)+1
45145             ELSEIF (CHBLCK(2:2).EQ.'E') THEN
45146               AE(INDX1,INDX2)=VAL
45147               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(17)=VAL
45148               MSPC(12)=MSPC(12)+1
45149             ELSE
45150               MERR=1
45151             ENDIF
45152           ELSEIF (CHBLCK(1:5).EQ.'MSOFT') THEN
45153             IF (MSPC(18).EQ.0) THEN
45154               READ(CHBLCK(9:25),*,ERR=620) Q
45155               RMSOFT(0)=Q
45156             ENDIF
45157             READ(CHINL,*) INDX, VAL
45158             RMSOFT(INDX)=VAL
45159             MSPC(18)=MSPC(18)+1
45160           ELSEIF (CHBLCK(1:5).EQ.'GAUGE') THEN
45161             MERR=8
45162           ELSEIF (CHBLCK(1:2).EQ.'YU'.OR.CHBLCK(1:2).EQ.'YD'.OR
45163      &           .CHBLCK(1:2).EQ.'YE') THEN
45164             MERR=8
45165           ELSEIF (CHBLCK(1:6).EQ.'SPINFO') THEN
45166             READ(CHINL(1:6),*) INDX
45167             IT=0
45168             MIRD=0
45169   330       IT=IT+1
45170             IF (CHINL(IT:IT).EQ.' ') GOTO 330
45171 C...Don't read index
45172             IF (CHINL(IT:IT).EQ.CHAR(INDX+48).AND.MIRD.EQ.0) THEN
45173               MIRD=1
45174               GOTO 330
45175             ENDIF
45176             IF (INDX.EQ.1) CPRO(1)=CHINL(IT:IT+12)
45177             IF (INDX.EQ.2) CVER(1)=CHINL(IT:IT+12)
45178           ELSE
45179 C...  Set unrecognized block flag.
45180             MERR=6
45181           ENDIF
45182  
45183 C...DECAY TABLES
45184 C...Read in decay information
45185         ELSEIF (MUPDA.EQ.2.AND.MERR.EQ.0) THEN
45186 C...Read new decay chanel
45187           IF(CHINL(1:1).EQ.' '.AND.CHBLCK(1:5).EQ.'DECAY') THEN
45188             NDC=NDC+1
45189 C...Read in branching ratio and number of daughters for this mode.
45190             READ(CHINL(4:50),*,ERR=390) BRAT(NDC)
45191             READ(CHINL(4:50),*,ERR=600) DUM, NDA
45192             IF (NDA.LE.5) THEN
45193               IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
45194      &             '(PYSLHA:) Decay data arrays full by KF ='
45195      $             //CHAF(KC,1))
45196 C...If first decay channel, set decays start point in decay table
45197               IF(BRSUM.LE.0D0.AND.BRAT(NDC).NE.0D0) THEN
45198                 IF (KFORIG.EQ.0) WRITE(MSTU(11),*)
45199      &              '* (PYSLHA:) Reading in SLHA decay table for ',
45200      &              'KF =',KF,': ',CHAF(KCREP,1)(1:16)
45201 C...Set particle parameters (mass set when reading BLOCK MASS above)
45202                 PMAS(KC,2)=WIDTH
45203                 IF (KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) THEN
45204                   WRITE(MSTU(11),*)
45205      &                '*  Note: the Pythia gg->h/H/A cross section'//
45206      &                ' is proportional to the h/H/A->gg width'
45207                 ENDIF
45208                 PMAS(KC,3)=0D0
45209                 PMAS(KC,4)=PARU(3)*1D-12/WIDTH
45210                 MWID(KC)=2
45211                 MDCY(KC,1)=1
45212                 MDCY(KC,2)=NDC
45213                 MDCY(KC,3)=0
45214 C...Add to list of DECAY blocks currently read
45215                 NDECAY=NDECAY+1
45216                 KFDEC(NDECAY)=KF
45217 C...Return ok
45218                 IRETRN=0
45219               ENDIF
45220 C...  Count up number of decay modes for this particle
45221               MDCY(KC,3)=MDCY(KC,3)+1
45222 C...  Read in decay daughters.
45223               READ(CHINL(4:120),*,ERR=610) DUM,IDM, (IDC(IDA),IDA=1,NDA)
45224 C...  Flip sign if reading antiparticle decays (if antipartner exists)
45225               DO 340 IDA=1,NDA
45226                 IF (KCHG(PYCOMP(IDC(IDA)),3).NE.0)
45227      &               IDC(IDA)=MPSIGN*IDC(IDA)
45228   340         CONTINUE
45229 C...Switch on decay channel, with products ordered in decreasing ABS(KF)
45230               MDME(NDC,1)=1
45231               IF (BRAT(NDC).LE.0D0) MDME(NDC,1)=0
45232               BRSUM=BRSUM+ABS(BRAT(NDC))
45233               BRAT(NDC)=ABS(BRAT(NDC))
45234   350         IFLIP=0
45235               DO 360 IDA=1,NDA-1
45236                 IF (IABS(IDC(IDA+1)).GT.IABS(IDC(IDA))) THEN
45237                   ITMP=IDC(IDA)
45238                   IDC(IDA)=IDC(IDA+1)
45239                   IDC(IDA+1)=ITMP
45240                   IFLIP=IFLIP+1
45241                 ENDIF
45242   360         CONTINUE
45243               IF (IFLIP.GT.0) GOTO 350
45244 C...Treat as ordinary decay, no fancy stuff.
45245               MDME(NDC,2)=0
45246               DO 370 IDA=1,5
45247                 IF (IDA.LE.NDA) THEN
45248                   KFDP(NDC,IDA)=IDC(IDA)
45249                 ELSE
45250                   KFDP(NDC,IDA)=0
45251                 ENDIF
45252   370         CONTINUE
45253 C              WRITE(MSTU(11),7510) NDC, BRAT(NDC), NDA,
45254 C     &            (KFDP(NDC,J),J=1,NDA)
45255             ELSE
45256               CALL PYERRM(7,'(PYSLHA:) Too many daughters on line'//
45257      &             CHNLIN)
45258               MERR=11
45259               NDC=NDC-1
45260             ENDIF
45261           ELSEIF(CHINL(1:1).EQ.'+') THEN
45262             MERR=11
45263           ELSEIF(CHBLCK(1:6).EQ.'DCINFO') THEN
45264             MERR=16
45265           ELSE
45266             MERR=16
45267           ENDIF
45268         ENDIF
45269 C...  Error check.
45270   380   IF (MOD(MERR,10).EQ.1.AND.(MUPDA.EQ.1.OR.MUPDA.EQ.2)) THEN
45271           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring line '//CHNLIN//': '
45272      &         //CHINL(1:40)
45273           MERR=0
45274         ELSEIF (MERR.EQ.6.AND.MUPDA.EQ.1) THEN
45275           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring BLOCK '//
45276      &         CHBLCK(1:MIN(INL,40))//'... on line'//CHNLIN
45277         ELSEIF (MERR.EQ.8.AND.MUPDA.EQ.1) THEN
45278           WRITE(MSTU(11),*) '* (PYSLHA:) PYTHIA will not use BLOCK '
45279      &         //CHBLCK(1:INL)//'... on line'//CHNLIN
45280         ELSEIF (MERR.EQ.16.AND.MUPDA.EQ.2.AND.IMSS21.EQ.0.AND.
45281      &         CHBLCK(1:1).NE.'D'.AND.VERBOS.EQ.1) THEN
45282           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring BLOCK '//CHBLCK(1:INL)
45283      &         //'... on line'//CHNLIN
45284         ELSEIF (MERR.EQ.7.AND.MUPDA.EQ.1) THEN
45285           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring extra BLOCK '/
45286      &         /CHBLCK(1:INL)//'... on line'//CHNLIN
45287         ELSEIF (MERR.EQ.2.AND.MUPDA.EQ.1) THEN
45288           WRITE (CHTMP,*) KF
45289           WRITE(MSTU(11),*)
45290      &         '* (PYSLHA:) Ignoring extra MASS entry for KF='//
45291      &         CHTMP(1:9)//' on line'//CHNLIN
45292         ENDIF
45293 C...Iterate read loop
45294         GOTO 170
45295 C...Error catching
45296   390   WRITE(*,*) '* (PYSLHA:) read BR error on line',NLINE,
45297      &      ', ignoring subsequent lines.'
45298         WRITE(*,*) '* (PYSLHA:) Offending line:',CHINL(1:46)
45299         CHBLCK=' '
45300         GOTO 170
45301 C...End of read loop
45302   400   CONTINUE
45303 C...Set flag that KC codes have been rearranged.
45304         MSTU(20)=0
45305         VERBOS=0
45306  
45307 C...Perform possible tests that new information is consistent.
45308         IF (MUPDA.EQ.1) THEN
45309           MSTU23=MSTU(23)
45310           MSTU27=MSTU(27)
45311 C...Check Z and top masses
45312           IF (ABS(PMAS(PYCOMP(23),1)-91.2D0).GT.1D0) THEN
45313             WRITE(CHTMP,*) PMAS(PYCOMP(23),1)
45314             CALL PYERRM(19,'(PYSLHA:) note Z boson mass, M ='//CHTMP)
45315           ENDIF
45316           IF (ABS(PMAS(PYCOMP(6),1)-175D0).GT.25D0) THEN
45317             WRITE(CHTMP,*) PMAS(PYCOMP(6),1)
45318             CALL PYERRM(19,'(PYSLHA:) note top quark mass, M ='
45319      &           //CHTMP//'GeV')
45320           ENDIF
45321 C...Check masses
45322           DO 410 ISUSY=1,37
45323             KF=KFSUSY(ISUSY)
45324 C...Don't complain about right-handed neutrinos
45325             IF (KF.EQ.KSUSY2+12.OR.KF.EQ.KSUSY2+14.OR.KF.EQ.KSUSY2
45326      &           +16) GOTO 410
45327 C...Only check gravitino in GMSB scenarios
45328             IF (MODSEL(1).NE.2.AND.KF.EQ.KSUSY1+39) GOTO 410
45329             KC=PYCOMP(KF)
45330             IF (PMAS(KC,1).EQ.0D0) THEN
45331               WRITE(CHTMP,*) KF
45332               CALL PYERRM(9
45333      &             ,'(PYSLHA:) No mass information found for KF ='
45334      &             //CHTMP)
45335             ENDIF
45336   410     CONTINUE
45337 C...Check mixing matrices (MSSM only)
45338           IF (IMSS(13).EQ.0) THEN
45339             IF (MSPC(2).NE.16.AND.MSPC(2).NE.32) CALL PYERRM(9
45340      &           ,'(PYSLHA:) Inconsistent # of elements in NMIX')
45341             IF (MSPC(3).NE.4.AND.MSPC(3).NE.8) CALL PYERRM(9
45342      &           ,'(PYSLHA:) Inconsistent # of elements in UMIX')
45343             IF (MSPC(4).NE.4.AND.MSPC(4).NE.8) CALL PYERRM(9
45344      &           ,'(PYSLHA:) Inconsistent # of elements in VMIX')
45345             IF (MSPC(5).NE.4) CALL PYERRM(9
45346      &           ,'(PYSLHA:) Inconsistent # of elements in SBOTMIX')
45347             IF (MSPC(6).NE.4) CALL PYERRM(9
45348      &           ,'(PYSLHA:) Inconsistent # of elements in STOPMIX')
45349             IF (MSPC(7).NE.4) CALL PYERRM(9
45350      &           ,'(PYSLHA:) Inconsistent # of elements in STAUMIX')
45351             IF (MSPC(8).LT.1) CALL PYERRM(9
45352      &           ,'(PYSLHA:) Too few elements in HMIX')
45353             IF (MSPC(10).EQ.0) CALL PYERRM(9
45354      &           ,'(PYSLHA:) Missing A_b trilinear coupling')
45355             IF (MSPC(11).EQ.0) CALL PYERRM(9
45356      &           ,'(PYSLHA:) Missing A_t trilinear coupling')
45357             IF (MSPC(12).EQ.0) CALL PYERRM(9
45358      &           ,'(PYSLHA:) Missing A_tau trilinear coupling')
45359             IF (MSPC(17).LT.1) CALL PYERRM(9
45360      &           ,'(PYSLHA:) Missing Higgs mixing angle alpha')
45361           ENDIF
45362 C...Check wavefunction normalizations.
45363 C...Sfermions
45364           DO 420 ISPC=5,7
45365             IF (MSPC(ISPC).EQ.4) THEN
45366               KFSM=ISPC
45367               IF (ISPC.EQ.7) KFSM=15
45368               CHECK=ABS(SFMIX(KFSM,1)*SFMIX(KFSM,4)-SFMIX(KFSM,2)
45369      &             *SFMIX(KFSM,3))
45370               IF (ABS(1D0-CHECK).GT.1D-3) THEN
45371                 KCSM=PYCOMP(KFSM)
45372                 CALL PYERRM(17
45373      &               ,'(PYSLHA:) Non-orthonormal mixing matrix for ~'
45374      &               //CHAF(KCSM,1))
45375               ENDIF
45376             ENDIF
45377   420     CONTINUE
45378 C...Neutralinos + charginos
45379           DO 440 J=1,4
45380             CN1=0D0
45381             CN2=0D0
45382             CU1=0D0
45383             CU2=0D0
45384             CV1=0D0
45385             CV2=0D0
45386             DO 430 L=1,4
45387               CN1=CN1+ZMIX(J,L)**2
45388               CN2=CN2+ZMIX(L,J)**2
45389               IF (J.LE.2.AND.L.LE.2) THEN
45390                 CU1=CU1+UMIX(J,L)**2
45391                 CU2=CU2+UMIX(L,J)**2
45392                 CV1=CV1+VMIX(J,L)**2
45393                 CV2=CV2+VMIX(L,J)**2
45394               ENDIF
45395   430       CONTINUE
45396 C...NMIX normalization
45397             IF (MSPC(2).EQ.16.AND.(ABS(1D0-CN1).GT.1D-3.OR.ABS(1D0-CN2)
45398      &           .GT.1D-3).AND.IMSS(13).EQ.0) THEN
45399               CALL PYERRM(19,
45400      &             '(PYSLHA:) NMIX: Inconsistent normalization.')
45401               WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F7.4))') J, CN1, CN2
45402             ENDIF
45403 C...UMIX, VMIX normalizations
45404             IF (MSPC(3).EQ.4.OR.MSPC(4).EQ.4.AND.IMSS(13).EQ.0) THEN
45405               IF (J.LE.2) THEN
45406                 IF (ABS(1D0-CU1).GT.1D-3.OR.ABS(1D0-CU2).GT.1D-3) THEN
45407                   CALL PYERRM(19
45408      &                ,'(PYSLHA:) UMIX: Inconsistent normalization.')
45409                   WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F6.2))') J, CU1,
45410      &                 CU2
45411                 ENDIF
45412                 IF (ABS(1D0-CV1).GT.1D-3.OR.ABS(1D0-CV2).GT.1D-3) THEN
45413                   CALL PYERRM(19,
45414      &                '(PYSLHA:) VMIX: Inconsistent normalization.')
45415                   WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F6.2))') J, CV1,
45416      &                 CV2
45417                 ENDIF
45418               ENDIF
45419             ENDIF
45420   440     CONTINUE
45421           IF (MSTU(27).EQ.MSTU27.AND.MSTU(23).EQ.MSTU23) THEN
45422             WRITE(MSTU(11),'(1x,"*"/1x,A/1x,"*")')
45423      &           '*  PYSLHA:  No spectrum inconsistencies were found.'
45424           ELSE
45425             WRITE(MSTU(11),'(1x,"*"/1x,A/1x,"*",A/1x,"*",A/)')
45426      &           '* (PYSLHA:) INCONSISTENT SPECTRUM WARNING.'
45427      &           ,' Warning: one or more (serious)'//
45428      &           ' inconsistencies were found in the spectrum !'
45429      &           ,' Read the error messages above and check your'//
45430      &           ' input file.'
45431           ENDIF
45432 C...Increase precision in Higgs sector using FeynHiggs
45433           IF (IMSS(4).EQ.3) THEN
45434 C...FeynHiggs needs MSOFT.
45435             IERR=0
45436             IF (MSPC(18).EQ.0) THEN
45437               WRITE(MSTU(11),'(1x,"*"/1x,A/)')
45438      &             '* (PYSLHA:) BLOCK MSOFT not found in SLHA file.'//
45439      &              ' Cannot call FeynHiggs.'
45440               IERR=-1
45441             ELSE
45442               WRITE(MSTU(11),'(1x,/1x,A/)')
45443      &             '* (PYSLHA:) Now calling FeynHiggs.'
45444               CALL PYFEYN(IERR)
45445               IF (IERR.NE.0) IMSS(4)=2
45446             ENDIF
45447           ENDIF
45448         ELSEIF (MUPDA.EQ.2.AND.IRETRN.EQ.0.AND.MERR.NE.16) THEN
45449           IBEG=1
45450           IF (KFORIG.NE.0) IBEG=NDECAY
45451           DO 490 IDECAY=IBEG,NDECAY
45452             KF = KFDEC(IDECAY)
45453             KC = PYCOMP(KF)
45454             WRITE(CHKF,8300) KF
45455             IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3
45456      $          ),PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0.OR.(MDCY(KC,3)
45457      $          .EQ.0.AND.MDCY(KC,1).GE.1)) CALL PYERRM(17
45458      $          ,'(PYSLHA:) Mass/width/life/(# channels) wrong for KF='
45459      $          //CHKF)
45460             BRSUM=0D0
45461             BROPN=0D0
45462             DO 460 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
45463               IF(MDME(IDA,2).GT.80) GOTO 460
45464               KQ=KCHG(KC,1)
45465               PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
45466               MERR=0
45467               DO 450 J=1,5
45468                 KP=KFDP(IDA,J)
45469                 IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
45470                   IF(KP.EQ.81) KQ=0
45471                 ELSEIF(PYCOMP(KP).EQ.0) THEN
45472                   MERR=3
45473                 ELSE
45474                   KQ=KQ-PYCHGE(KP)
45475                   KPC=PYCOMP(KP)
45476                   PMS=PMS-PMAS(KPC,1)
45477                   IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
45478      &                PMAS(KPC,3))
45479                 ENDIF
45480   450         CONTINUE
45481               IF(KQ.NE.0) MERR=MAX(2,MERR)
45482               IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
45483      &            MERR=MAX(1,MERR)
45484               IF(MERR.EQ.3) CALL PYERRM(17,
45485      &            '(PYSLHA:) Unknown particle code in decay of KF ='
45486      $            //CHKF)
45487               IF(MERR.EQ.2) CALL PYERRM(17,
45488      &            '(PYSLHA:) Charge not conserved in decay of KF ='
45489      $            //CHKF)
45490               IF(MERR.EQ.1) CALL PYERRM(7,
45491      &            '(PYSLHA:) Kinematically unallowed decay of KF ='
45492      $            //CHKF)
45493               BRSUM=BRSUM+BRAT(IDA)
45494               IF (MDME(IDA,1).GT.0) BROPN=BROPN+BRAT(IDA)
45495   460       CONTINUE
45496 C...Check branching ratio sum.
45497             IF (BROPN.LE.0D0) THEN
45498 C...If zero, set stable.
45499               WRITE(CHTMP,8500) BROPN
45500               CALL PYERRM(7
45501      &            ,"(PYSLHA:) Effective BR sum for KF="//CHKF//' is '//
45502      &            CHTMP(9:16)//'. Changed to stable.')
45503               PMAS(KC,2)=1D-6
45504               MWID(KC)=0
45505 C...If BR's > 1, rescale.
45506             ELSEIF (BRSUM.GT.(1D0+1D-6)) THEN
45507               WRITE(CHTMP,8500) BRSUM
45508               IF (BRSUM.GT.(1D0+1D-3)) CALL PYERRM(7
45509      &            ,"(PYSLHA:) Forced rescaling of BR's for KF="//CHKF//
45510      &            ' ; sum was'//CHTMP(9:16)//'.')
45511               FAC=1D0/BRSUM
45512               DO 470 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
45513                 IF(MDME(IDA,2).GT.80) GOTO 470
45514                 BRAT(IDA)=FAC*BRAT(IDA)
45515   470         CONTINUE
45516             ELSEIF (BRSUM.LT.(1D0-1D-6)) THEN
45517 C...If BR's < 1, insert dummy mode for proper cross section rescaling.
45518               WRITE(CHTMP,8500) BRSUM
45519               IF (BRSUM.LT.(1D0-1D-3)) CALL PYERRM(7
45520      &            ,"(PYSLHA:) Sum of BR's for KF="//CHKF//' is '//
45521      &            CHTMP(9:16)//'. Dummy mode will be inserted.')
45522 C...Move table and insert dummy mode
45523               DO 480 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
45524                 NDC=NDC+1
45525                 BRAT(NDC)=BRAT(IDA)
45526                 KFDP(NDC,1)=KFDP(IDA,1)
45527                 KFDP(NDC,2)=KFDP(IDA,2)
45528                 KFDP(NDC,3)=KFDP(IDA,3)
45529                 KFDP(NDC,4)=KFDP(IDA,4)
45530                 KFDP(NDC,5)=KFDP(IDA,5)
45531                 MDME(NDC,1)=MDME(IDA,1)
45532   480         CONTINUE
45533               NDC=NDC+1
45534               BRAT(NDC)=1D0-BRSUM
45535               KFDP(NDC,1)=0
45536               KFDP(NDC,2)=0
45537               KFDP(NDC,3)=0
45538               KFDP(NDC,4)=0
45539               KFDP(NDC,5)=0
45540               MDME(NDC,1)=0
45541               BRSUM=1D0
45542 C...Update MDCY
45543               MDCY(KC,3)=MDCY(KC,3)+1
45544               MDCY(KC,2)=NDC-MDCY(KC,3)+1
45545             ENDIF
45546   490     CONTINUE
45547         ENDIF
45548  
45549  
45550 C...WRITE SPECTRUM ON SLHA FILE
45551       ELSEIF(MUPDA.EQ.3) THEN
45552 C...If SPYTHIA or ISASUSY runtime was called for SUGRA, update PARMIN.
45553         IF (IMSS(1).EQ.2.OR.IMSS(1).EQ.12) THEN
45554           MODSEL(1)=1
45555           PARMIN(1)=RMSS(8)
45556           PARMIN(2)=RMSS(1)
45557           PARMIN(3)=RMSS(5)
45558           PARMIN(4)=SIGN(1D0,RMSS(4))
45559           PARMIN(5)=RMSS(36)
45560         ENDIF
45561 C...Write spectrum
45562         WRITE(LFN,7000) 'SLHA MSSM spectrum'
45563         WRITE(LFN,7000) 'Pythia 6.4: T. Sjostrand, S. Mrenna,'
45564      &    // ' P. Skands.'
45565         WRITE(LFN,7010) 'MODSEL',  'Model selection'
45566         WRITE(LFN,7110) 1, MODSEL(1)
45567         WRITE(LFN,7010) 'MINPAR', 'Parameters for minimal model.'
45568         IF (MODSEL(1).EQ.1) THEN
45569           WRITE(LFN,7210) 1, PARMIN(1), 'm0'
45570           WRITE(LFN,7210) 2, PARMIN(2), 'm12'
45571           WRITE(LFN,7210) 3, PARMIN(3), 'tan(beta)'
45572           WRITE(LFN,7210) 4, PARMIN(4), 'sign(mu)'
45573           WRITE(LFN,7210) 5, PARMIN(5), 'a0'
45574         ELSEIF(MODSEL(2).EQ.2) THEN
45575           WRITE(LFN,7210) 1, PARMIN(1), 'Lambda'
45576           WRITE(LFN,7210) 2, PARMIN(2), 'M'
45577           WRITE(LFN,7210) 3, PARMIN(3), 'tan(beta)'
45578           WRITE(LFN,7210) 4, PARMIN(4), 'sign(mu)'
45579           WRITE(LFN,7210) 5, PARMIN(5), 'N5'
45580           WRITE(LFN,7210) 6, PARMIN(6), 'c_grav'
45581         ENDIF
45582         WRITE(LFN,7000) ' '
45583         WRITE(LFN,7010) 'MASS', 'Mass spectrum'
45584         DO 500 I=1,36
45585           KF=KFSUSY(I)
45586           KC=PYCOMP(KF)
45587           IF (KF.EQ.1000039.AND.MODSEL(1).NE.2) GOTO 500
45588           KFSM=KF-KSUSY1
45589           IF (KFSM.GE.22.AND.KFSM.LE.37) THEN
45590             IF (KFSM.EQ.22)  WRITE(LFN,7220) KF, SMZ(1), CHAF(KC,1)
45591             IF (KFSM.EQ.23)  WRITE(LFN,7220) KF, SMZ(2), CHAF(KC,1)
45592             IF (KFSM.EQ.25)  WRITE(LFN,7220) KF, SMZ(3), CHAF(KC,1)
45593             IF (KFSM.EQ.35)  WRITE(LFN,7220) KF, SMZ(4), CHAF(KC,1)
45594             IF (KFSM.EQ.24)  WRITE(LFN,7220) KF, SMW(1), CHAF(KC,1)
45595             IF (KFSM.EQ.37)  WRITE(LFN,7220) KF, SMW(2), CHAF(KC,1)
45596           ELSE
45597             WRITE(LFN,7220) KF, PMAS(KC,1), CHAF(KC,1)
45598           ENDIF
45599   500   CONTINUE
45600 C...SUSY scale
45601         RMSUSY=SQRT(PMAS(PYCOMP(KSUSY1+6),1)*PMAS(PYCOMP(KSUSY2+6),1))
45602         WRITE(LFN,7020) 'HMIX',RMSUSY,'Higgs parameters'
45603         WRITE(LFN,7210) 1, RMSS(4),'mu'
45604         WRITE(LFN,7010) 'ALPHA',' '
45605         WRITE(LFN,7210) 1, RMSS(18), 'alpha'
45606         WRITE(LFN,7020) 'AU',RMSUSY
45607         WRITE(LFN,7410) 3, 3, RMSS(16), 'A_t'
45608         WRITE(LFN,7020) 'AD',RMSUSY
45609         WRITE(LFN,7410) 3, 3, RMSS(15), 'A_b'
45610         WRITE(LFN,7020) 'AE',RMSUSY
45611         WRITE(LFN,7410) 3, 3, RMSS(17), 'A_tau'
45612         WRITE(LFN,7010) 'STOPMIX','~t mixing matrix'
45613         WRITE(LFN,7410) 1, 1, SFMIX(6,1)
45614         WRITE(LFN,7410) 1, 2, SFMIX(6,2)
45615         WRITE(LFN,7410) 2, 1, SFMIX(6,3)
45616         WRITE(LFN,7410) 2, 2, SFMIX(6,4)
45617         WRITE(LFN,7010) 'SBOTMIX','~b mixing matrix'
45618         WRITE(LFN,7410) 1, 1, SFMIX(5,1)
45619         WRITE(LFN,7410) 1, 2, SFMIX(5,2)
45620         WRITE(LFN,7410) 2, 1, SFMIX(5,3)
45621         WRITE(LFN,7410) 2, 2, SFMIX(5,4)
45622         WRITE(LFN,7010) 'STAUMIX','~tau mixing matrix'
45623         WRITE(LFN,7410) 1, 1, SFMIX(15,1)
45624         WRITE(LFN,7410) 1, 2, SFMIX(15,2)
45625         WRITE(LFN,7410) 2, 1, SFMIX(15,3)
45626         WRITE(LFN,7410) 2, 2, SFMIX(15,4)
45627         WRITE(LFN,7010) 'NMIX','~chi0 mixing matrix'
45628         DO 520 I1=1,4
45629           DO 510 I2=1,4
45630             WRITE(LFN,7410) I1, I2, ZMIX(I1,I2)
45631   510     CONTINUE
45632   520   CONTINUE
45633         WRITE(LFN,7010) 'UMIX','~chi^+ U mixing matrix'
45634         DO 540 I1=1,2
45635           DO 530 I2=1,2
45636             WRITE(LFN,7410) I1, I2, UMIX(I1,I2)
45637   530     CONTINUE
45638   540   CONTINUE
45639         WRITE(LFN,7010) 'VMIX','~chi^+ V mixing matrix'
45640         DO 560 I1=1,2
45641           DO 550 I2=1,2
45642             WRITE(LFN,7410) I1, I2, VMIX(I1,I2)
45643   550     CONTINUE
45644   560   CONTINUE
45645         WRITE(LFN,7010) 'SPINFO'
45646         IF (IMSS(1).EQ.2) THEN
45647           CPRO(1)='PYTHIA'
45648           CVER(1)='6.4'
45649         ELSEIF (IMSS(1).EQ.12) THEN
45650           ISAVER=VISAJE()
45651           CPRO(1)='ISASUSY'
45652           CVER(1)=ISAVER(1:12)
45653         ENDIF
45654         WRITE(LFN,7310) 1, CPRO(1), 'Spectrum Calculator'
45655         WRITE(LFN,7310) 2, CVER(1), 'Version number'
45656       ENDIF
45657  
45658 C...Print user information about spectrum
45659       IF (MUPDA.EQ.1.OR.MUPDA.EQ.3) THEN
45660         IF (CPRO(MOD(MUPDA,2)).NE.' '.AND.CVER(MOD(MUPDA,2)).NE.' ')
45661      &       WRITE(MSTU(11),5030) CPRO(1), CVER(1)
45662         IF (IMSS(4).EQ.3) WRITE(MSTU(11),5040)
45663         IF (MUPDA.EQ.1) THEN
45664           WRITE(MSTU(11),5020) LFN
45665         ELSE
45666           WRITE(MSTU(11),5010) LFN
45667         ENDIF
45668  
45669         WRITE(MSTU(11),5400)
45670         WRITE(MSTU(11),5500) 'Pole masses'
45671         WRITE(MSTU(11),5700) (RMFUN(KSUSY1+IP),IP=1,6)
45672      $       ,(RMFUN(KSUSY2+IP),IP=1,6)
45673         WRITE(MSTU(11),5800) (RMFUN(KSUSY1+IP),IP=11,16)
45674      $       ,(RMFUN(KSUSY2+IP),IP=11,16)
45675         IF (IMSS(13).EQ.0) THEN
45676           WRITE(MSTU(11),5900) RMFUN(KSUSY1+21),RMFUN(KSUSY1+22)
45677      $         ,RMFUN(KSUSY1+23),RMFUN(KSUSY1+25),RMFUN(KSUSY1+35),
45678      $         RMFUN(KSUSY1+24),RMFUN(KSUSY1+37)
45679           WRITE(MSTU(11),6000) CHAF(25,1),CHAF(35,1),CHAF(36,1),
45680      &         CHAF(37,1), ' ', ' ',' ',' ',
45681      &         RMFUN(25), RMFUN(35), RMFUN(36), RMFUN(37)
45682         ELSEIF (IMSS(13).EQ.1) THEN
45683           KF1=KSUSY1+21
45684           KF2=KSUSY1+22
45685           KF3=KSUSY1+23
45686           KF4=KSUSY1+25
45687           KF5=KSUSY1+35
45688           KF6=KSUSY1+45
45689           KF7=KSUSY1+24
45690           KF8=KSUSY1+37
45691           WRITE(MSTU(11),6000) CHAF(PYCOMP(KF1),1),CHAF(PYCOMP(KF2),1),
45692      &         CHAF(PYCOMP(KF3),1),CHAF(PYCOMP(KF4),1),
45693      &         CHAF(PYCOMP(KF5),1),CHAF(PYCOMP(KF6),1),
45694      &         CHAF(PYCOMP(KF7),1),CHAF(PYCOMP(KF8),1),
45695      &         RMFUN(KF1),RMFUN(KF2),RMFUN(KF3),RMFUN(KF4),
45696      &         RMFUN(KF5),RMFUN(KF6),RMFUN(KF7),RMFUN(KF8)
45697           WRITE(MSTU(11),6000) CHAF(25,1), CHAF(35,1), CHAF(45,1),
45698      &         CHAF(36,1), CHAF(46,1), CHAF(37,1),' ',' ',
45699      &         RMFUN(25), RMFUN(35), RMFUN(45), RMFUN(36), RMFUN(46),
45700      &         RMFUN(37)
45701         ENDIF
45702         WRITE(MSTU(11),5400)
45703         WRITE(MSTU(11),5500) 'Mixing structure'
45704         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
45705         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
45706      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
45707         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
45708      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
45709      &       ),(SFMIX(15,J),J=3,4)
45710         WRITE(MSTU(11),5400)
45711         WRITE(MSTU(11),5500) 'Couplings'
45712         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17)
45713         WRITE(MSTU(11),6450) RMSS(18), RMSS(5), RMSS(4)
45714         WRITE(MSTU(11),5400)
45715         WRITE(MSTU(11),6500)
45716  
45717       ENDIF
45718  
45719 C...Only rewind when reading
45720       IF (MUPDA.LE.2.OR.MUPDA.EQ.5) REWIND(LFN)
45721  
45722  9999 RETURN
45723  
45724 C...Serious error catching
45725   580 write(*,*) '* (PYSLHA:) read BLOCK error on line',NLINE
45726       write(*,*) CHINL(1:80)
45727       CALL PYSTOP(106)
45728   590 WRITE(*,*) '* (PYSLHA:) read DECAY error on line',NLINE
45729       WRITE(*,*) CHINL(1:72)
45730       CALL PYSTOP(106)
45731   600 WRITE(*,*) '* (PYSLHA:) read NDA error on line',NLINE
45732       WRITE(*,*) CHINL(1:80)
45733       CALL PYSTOP(106)
45734   610 WRITE(*,*) '* (PYSLHA:) decay daughter read error on line',NLINE
45735       WRITE(*,*) CHINL(1:80)
45736   620 WRITE(*,*) '* (PYSLHA:) read Q error in BLOCK ',CHBLCK
45737       CALL PYSTOP(106)
45738   630 WRITE(*,*) '* (PYSLHA:) read error in line ',NLINE,':'
45739       WRITE(*,*) CHINL(1:80)
45740       CALL PYSTOP(106)
45741  
45742  8300 FORMAT(I9)
45743  8500 FORMAT(F16.5)
45744  
45745 C...Formats for user information printout.
45746  5000 FORMAT(1x,18('*'),1x,'PYSLHA v1.10: SUSY/BSM SPECTRUM '
45747      &     ,'INTERFACE',1x,17('*')/1x,'*',2x
45748      &     ,'PYSLHA:  Last Change',1x,A,1x,'-',1x,'P.Z. Skands')
45749  5010 FORMAT(1x,'*',3x,'Wrote spectrum file on unit: ',I3)
45750  5020 FORMAT(1x,'*',3x,'Read spectrum file on unit: ',I3)
45751  5030 FORMAT(1x,'*',3x,'Spectrum Calculator was: ',A,' version ',A)
45752  5040 FORMAT(1x,'*',3x,'Higgs sector corrected with FeynHiggs')
45753  5100 FORMAT(1x,'*',1x,'Model parameters:'/1x,'*',1x,'----------------')
45754  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
45755      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
45756  5300 FORMAT(1x,'*'/1x,'*',1x,'Model spectrum :'/1x,'*',1x
45757      &     ,'----------------')
45758  5400 FORMAT(1x,'*',1x,A)
45759  5500 FORMAT(1x,'*',1x,A,':')
45760  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
45761      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
45762  5700 FORMAT(1x,'*',4x,1x,'~d',2x,1x,4x,'~u',2x,1x,4x,'~s',2x,1x,
45763      &     4x,'~c',2x,1x,4x,'~b(12)',1x,1x,1x,'~t(12)'/1x,'*',2x,'L',1x
45764      &     ,6(F8.2,1x)/1x,'*',2x,'R',1x,6(F8.2,1x))
45765  5800 FORMAT(1x,'*'/1x,'*',4x,1x,'~e',2x,1x,4x,'~nu_e',2x,1x,1x,'~mu',2x
45766      &     ,1x,3x,'~nu_mu',2x,1x,'~tau(12)',1x,'~nu_tau'/1x,'*',2x
45767      &     ,'L',1x,6(F8.2,1x)/1x,'*',2x,'R',1x,6(F8.2,1x))
45768  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
45769      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
45770      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
45771  6000 FORMAT(1x,'*'/1x,'*',3x,1x,8(1x,A7,1x)/1x,'*',3x,1x,8(F8.2,1x))
45772  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
45773      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
45774      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
45775      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
45776      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
45777      &     ,1x,F6.3,1x),'|')
45778  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
45779      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
45780      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
45781      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
45782      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
45783  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
45784      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
45785      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
45786      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
45787      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
45788      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
45789      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
45790  6400 FORMAT(1x,'*',3x,'  A_b = ',F8.2,4x,'      A_t = ',F8.2,4x
45791      &     ,'A_tau = ',F8.2)
45792  6450 FORMAT(1x,'*',3x,'alpha = ',F8.2,4x,'tan(beta) = ',F8.2,4x
45793      &     ,'   mu = ',F8.2)
45794  6500 FORMAT(1x,32('*'),1x,'END OF PYSLHA',1x,31('*'))
45795  
45796 C...Format to use for comments
45797  7000 FORMAT('# ',A)
45798 C...Format to use for block statements
45799  7010 FORMAT('Block',1x,A,3x,'#',1x,A)
45800  7020 FORMAT('Block',1x,A,1x,'Q=',1P,E16.8,0P,3x,'#',1x,A)
45801 C...Indexed Int
45802  7110 FORMAT(1x,I4,1x,I4,3x,'#')
45803 C...Non-Indexed Double
45804  7200 FORMAT(9x,1P,E16.8,0P,3x,'#',1x,A)
45805 C...Indexed Double
45806  7210 FORMAT(1x,I4,3x,1P,E16.8,0P,3x,'#',1x,A)
45807 C...Long Indexed Double (PDG + double)
45808  7220 FORMAT(1x,I9,3x,1P,E16.8,0P,3x,'#',1x,A)
45809 C...Indexed Char(12)
45810  7310 FORMAT(1x,I4,3x,A12,3x,'#',1x,A)
45811 C...Single matrix
45812  7410 FORMAT(1x,I2,1x,I2,3x,1P,E16.8,0P,3x,'#',1x,A)
45813 C...Double Matrix
45814  7420 FORMAT(1x,I2,1x,I2,3x,1P,E16.8,3x,E16.8,0P,3x,'#',1x,A)
45815 C...Write Decay Table
45816  7500 FORMAT('Decay',1x,I9,1x,'WIDTH=',1P,E16.8,0P,3x,'#',1x,A)
45817  7510 FORMAT(4x,I5,1x,1P,E16.8,0P,3x,I2,3x,'IDA=',1x,5(1x,I9),
45818      &    3x,'#',1x,A)
45819  
45820       END
45821
45822  
45823 C*********************************************************************
45824  
45825 C...PYAPPS
45826 C...Uses approximate analytical formulae to determine the full set of
45827 C...MSSM parameters from SUGRA input.
45828 C...See M. Drees and S.P. Martin, hep-ph/9504124
45829  
45830       SUBROUTINE PYAPPS
45831  
45832 C...Double precision and integer declarations.
45833       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45834       IMPLICIT INTEGER(I-N)
45835       INTEGER PYK,PYCHGE,PYCOMP
45836 C...Parameter statement to help give large particle numbers.
45837       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
45838      &KEXCIT=4000000,KDIMEN=5000000)
45839 C...Commonblocks.
45840       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45841       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45842       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
45843       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/
45844
45845       WRITE(MSTU(11),*) '(PYAPPS:) approximate mSUGRA relations'//
45846      &' not intended for serious physics studies'
45847       IMSS(5)=0
45848       IMSS(8)=0
45849       XMT=PMAS(6,1)
45850       XMZ2=PMAS(23,1)**2
45851       XMW2=PMAS(24,1)**2
45852       TANB=RMSS(5)
45853       BETA=ATAN(TANB)
45854       XW=PARU(102)
45855       XMG=RMSS(1)
45856       XMG2=XMG*XMG
45857       XM0=RMSS(8)
45858       XM02=XM0*XM0
45859 C...Temporary sign change for AT. Others unchanged.
45860       AT=-RMSS(16)
45861       RMSS(15)=RMSS(16)
45862       RMSS(17)=RMSS(16)
45863       SINB=TANB/SQRT(TANB**2+1D0)
45864       COSB=SINB/TANB
45865  
45866       DTERM=XMZ2*COS(2D0*BETA)
45867       XMER=SQRT(XM02+0.15D0*XMG2-XW*DTERM)
45868       XMEL=SQRT(XM02+0.52D0*XMG2-(0.5D0-XW)*DTERM)
45869       RMSS(6)=XMEL
45870       RMSS(7)=XMER
45871       XMUR=SQRT(PYRNMQ(2,2D0/3D0*XW*DTERM))
45872       XMDR=SQRT(PYRNMQ(3,-1D0/3D0*XW*DTERM))
45873       XMUL=SQRT(PYRNMQ(1,(0.5D0-2D0/3D0*XW)*DTERM))
45874       XMDL=SQRT(PYRNMQ(1,-(0.5D0-1D0/3D0*XW)*DTERM))
45875       DO 100 I=1,5,2
45876         PMAS(PYCOMP(KSUSY1+I),1)=XMDL
45877         PMAS(PYCOMP(KSUSY2+I),1)=XMDR
45878         PMAS(PYCOMP(KSUSY1+I+1),1)=XMUL
45879         PMAS(PYCOMP(KSUSY2+I+1),1)=XMUR
45880   100 CONTINUE
45881       XARG=XMEL**2-XMW2*ABS(COS(2D0*BETA))
45882       IF(XARG.LT.0D0) THEN
45883         WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
45884      &  ' FROM THE SUM RULE. '
45885         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
45886         RETURN
45887       ELSE
45888         XARG=SQRT(XARG)
45889       ENDIF
45890       DO 110 I=11,15,2
45891         PMAS(PYCOMP(KSUSY1+I),1)=XMEL
45892         PMAS(PYCOMP(KSUSY2+I),1)=XMER
45893         PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
45894         PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
45895   110 CONTINUE
45896       RMT=PYMRUN(6,PMAS(6,1)**2)
45897       XTOP=(RMT/150D0/SINB)**2*(.9D0*XM02+2.1D0*XMG2+
45898      &(1D0-(RMT/190D0/SINB)**3)*(.24D0*AT**2+AT*XMG))
45899       RMB=PYMRUN(5,PMAS(6,1)**2)
45900       XBOT=(RMB/150D0/COSB)**2*(.9D0*XM02+2.1D0*XMG2+
45901      &(1D0-(RMB/190D0/COSB)**3)*(.24D0*AT**2+AT*XMG))
45902       XTAU=1D-4/COSB**2*(XM02+0.15D0*XMG2+AT**2/3D0)
45903       ATP=AT*(1D0-(RMT/190D0/SINB)**2)+XMG*(3.47D0-1.9D0*(RMT/190D0/
45904      &SINB)**2)
45905       RMSS(16)=-ATP
45906       XMU2=-.5D0*XMZ2+(SINB**2*(XM02+.52D0*XMG2-XTOP)-
45907      &COSB**2*(XM02+.52D0*XMG2-XBOT-XTAU/3D0))/(COSB**2-SINB**2)
45908       XMA2=2D0*(XM02+.52D0*XMG2+XMU2)-XTOP-XBOT-XTAU/3D0
45909       XMU=SIGN(SQRT(XMU2),RMSS(4))
45910       RMSS(4)=XMU
45911       IF(XMA2.GT.0D0) THEN
45912         RMSS(19)=SQRT(XMA2)
45913       ELSE
45914         WRITE(MSTU(11),*) ' PYAPPS:: PSEUDOSCALAR MASS**2 < 0 '
45915         CALL PYSTOP(102)
45916       ENDIF
45917       ARG=XM02+0.15D0*XMG2-2D0*XTAU/3D0-XW*DTERM
45918       IF(ARG.GT.0D0) THEN
45919         RMSS(14)=SQRT(ARG)
45920       ELSE
45921         WRITE(MSTU(11),*) ' PYAPPS:: RIGHT STAU MASS**2 < 0 '
45922         CALL PYSTOP(102)
45923       ENDIF
45924       ARG=XM02+0.52D0*XMG2-XTAU/3D0-(0.5D0-XW)*DTERM
45925       IF(ARG.GT.0D0) THEN
45926         RMSS(13)=SQRT(ARG)
45927       ELSE
45928         WRITE(MSTU(11),*) ' PYAPPS::  LEFT STAU MASS**2 < 0 '
45929         CALL PYSTOP(102)
45930       ENDIF
45931       ARG=PYRNMQ(1,-(XBOT+XTOP)/3D0)
45932       IF(ARG.GT.0D0) THEN
45933         RMSS(10)=SQRT(ARG)
45934       ELSE
45935         RMSS(10)=-SQRT(-ARG)
45936       ENDIF
45937       ARG=PYRNMQ(2,-2D0*XTOP/3D0)
45938       IF(ARG.GT.0D0) THEN
45939         RMSS(12)=SQRT(ARG)
45940       ELSE
45941         RMSS(12)=-SQRT(-ARG)
45942       ENDIF
45943       ARG=PYRNMQ(3,-2D0*XBOT/3D0)
45944       IF(ARG.GT.0D0) THEN
45945         RMSS(11)=SQRT(ARG)
45946       ELSE
45947         RMSS(11)=-SQRT(-ARG)
45948       ENDIF
45949  
45950       RETURN
45951       END
45952  
45953 C*********************************************************************
45954  
45955 C...PYSUGI
45956 C...Interface to ISASUSY version 7.71.
45957 C...Warning: this interface should not be used with earlier versions
45958 C...of ISASUSY, since common block incompatibilities may then arise.
45959 C...Calls SUGRA (in ISAJET) to perform RGE evolution.
45960 C...Then converts to Gunion-Haber conventions.
45961  
45962       SUBROUTINE PYSUGI
45963       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45964  
45965       INTEGER PYK,PYCHGE,PYCOMP
45966       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
45967      &KEXCIT=4000000,KDIMEN=5000000)
45968  
45969 C...Date of Change
45970       CHARACTER DOC*11
45971       PARAMETER (DOC='01 May 2006')
45972  
45973 C...ISASUGRA Input:
45974       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
45975 C...XISAIN contains the MSSMi inputs in natural order.
45976       COMMON /SUGXIN/ XISAIN(24),XSUGIN(7),XGMIN(14),XNRIN(4),
45977      $XAMIN(7)
45978       REAL XISAIN,XSUGIN,XGMIN,XNRIN,XAMIN
45979       SAVE /SUGXIN/
45980 C...ISASUGRA Output
45981       CHARACTER*40 ISAVER,VISAJE
45982       REAL SUPER
45983       COMMON /SSPAR/ SUPER(72)
45984       COMMON /SUGMG/ MSS(32),GSS(31),MGUTSS,GGUTSS,AGUTSS,FTGUT,
45985      $FBGUT,FTAGUT,FNGUT
45986       REAL MSS,GSS,MGUTSS,GGUTSS,AGUTSS,FTGUT,FBGUT,FTAGUT,FNGUT
45987       COMMON /SUGPAS/ XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
45988      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
45989      $FNMZ,AMNRMJ,NOGOOD,IAL3UN,ITACHY,MHPNEG,ASM3,
45990      $VUMT,VDMT,ASMTP,ASMSS,M3Q
45991       REAL XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
45992      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
45993      $FNMZ,AMNRMJ,ASM3,VUMT,VDMT,ASMTP,ASMSS,M3Q
45994       INTEGER NOGOOD,IAL3UN,ITACHY,MHPNEG
45995       INTEGER IALLOW
45996       SAVE /SUGMG/,/SSPAR/
45997 C SUPER: Filled by ISASUGRA.
45998 C SUPER(1)        = mass of ~g
45999 C SUPER(2:17)     = mass of ~u_L,~u_R,~d_L,~d_R,~s_L,~s_R,~c_L,~c_R,~b_L
46000 C                          ,~b_R,~b_1,~b_2,~t_L,~t_R,~t_1,~t_2
46001 C SUPER(18:25)    = mass of ~e_L,~e_R,~mu_L,~mu_R,~tau_L,~tau_R,~tau_1
46002 C                          ,~tau_2
46003 C SUPER(26:28)    = mass of ~nu_e,~nu_mu,~nu_tau
46004 C SUPER(29)       = Higgsino mass = - mu
46005 C SUPER(30)       = ratio v2/v1 of vev's
46006 C SUPER(31:34)    = Signed neutralino masses
46007 C SUPER(35:50)    = Neutralino mixing matrix
46008 C SUPER(51:52)    = Signed chargino masses
46009 C SUPER(53:54)    = Chargino left, right mixing angles
46010 C SUPER(55:58)    = mass of h0, H0, A0, H+
46011 C SUPER(59)       = Higgs mixing angle alpha
46012 C SUPER(60:65)    = A_t, theta_t, A_b, theta_b, A_tau, theta_tau
46013 C SUPER(66)       = Gravitino mass
46014 C SUPER(67:69)    = Top,Bottom, and Tau masses at MSUSY (not used)
46015 C SUPER(70)       = b-Yukawa at mA scale (not used)
46016 C SUPER(71:72)    = H_u, H_d vev's at MSUSY (not used)
46017 C GSS: Filled by ISASUGRA
46018 C     GSS( 1) = g_1        GSS( 2) = g_2        GSS( 3) = g_3
46019 C     GSS( 4) = y_tau      GSS( 5) = y_b        GSS( 6) = y_t
46020 C     GSS( 7) = M_1        GSS( 8) = M_2        GSS( 9) = M_3
46021 C     GSS(10) = A_tau      GSS(11) = A_b        GSS(12) = A_t
46022 C     GSS(13) = M_h12     GSS(14) = M_h22     GSS(15) = M_er2
46023 C     GSS(16) = M_el2     GSS(17) = M_dnr2    GSS(18) = M_upr2
46024 C     GSS(19) = M_upl2    GSS(20) = M_taur2   GSS(21) = M_taul2
46025 C     GSS(22) = M_btr2    GSS(23) = M_tpr2    GSS(24) = M_tpl2
46026 C     GSS(25) = mu         GSS(26) = B          GSS(27) = Y_N
46027 C     GSS(28) = M_nr       GSS(29) = A_n        GSS(30) = log(vdq)
46028 C     GSS(31) = log(vuq)
46029 C MSS: Filled by ISASUGRA
46030 C     MSS( 1) = glss     MSS( 2) = upl      MSS( 3) = upr
46031 C     MSS( 4) = dnl      MSS( 5) = dnr      MSS( 6) = stl
46032 C     MSS( 7) = str      MSS( 8) = chl      MSS( 9) = chr
46033 C     MSS(10) = b1       MSS(11) = b2       MSS(12) = t1
46034 C     MSS(13) = t2       MSS(14) = nuel     MSS(15) = numl
46035 C     MSS(16) = nutl     MSS(17) = el-      MSS(18) = er-
46036 C     MSS(19) = mul-     MSS(20) = mur-     MSS(21) = tau1
46037 C     MSS(22) = tau2     MSS(23) = z1ss     MSS(24) = z2ss
46038 C     MSS(25) = z3ss     MSS(26) = z4ss     MSS(27) = w1ss
46039 C     MSS(28) = w2ss     MSS(29) = hl0      MSS(30) = hh0
46040 C     MSS(31) = ha0      MSS(32) = h+
46041 C Unification, filled by ISASUGRA if applicable.
46042 C     MGUTSS  = M_GUT    GGUTSS  = g_GUT    AGUTSS  = alpha_GUTC
46043  
46044 C...SPYTHIA Input/Output
46045       INTEGER IMSS
46046       DOUBLE PRECISION RMSS
46047       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46048       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
46049      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
46050 C...SLHA Input/Output
46051       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
46052      &     AU(3,3),AD(3,3),AE(3,3)
46053 C...PYTHIA common blocks
46054       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46055       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
46056       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46057  
46058       SAVE  /PYMSSM/,/PYSSMT/,/PYLH3P/,/PYDAT1/,/PYPARS/,/PYDAT2/
46059 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
46060       INTEGER IMODEL
46061       REAL M0,MHF,A0,MT
46062       CHARACTER*20 CHMOD(5)
46063       CHARACTER*32 FNAME
46064  
46065       COMMON /SUGNU/ XNUSUG(18)
46066       REAL XNUSUG
46067       SAVE /SUGNU/
46068  
46069       DATA CHMOD/'mSUGRA','mGMSB','non-universal SUGRA',
46070      &     'truly unified SUGRA', 'non-minimal GMSB'/
46071  
46072 C...Start by checking for incompatibilities/inconsistencies:
46073       DO 100 ICHK=2,9
46074         IF (ICHK.NE.8.AND.ICHK.NE.4.AND.IMSS(ICHK).NE.0) THEN
46075           WRITE (MSTU(11),*) '(PYSUGI:) IMSS(',ICHK,')=',IMSS(ICHK)
46076      &         ,' option not used by PYSUGI'
46077         ENDIF
46078   100 CONTINUE
46079 C...ISAJET works with REAL numbers.
46080       MZERO=REAL(RMSS(8))
46081       MHLF=REAL(RMSS(1))
46082       AZERO=REAL(RMSS(16))
46083       TANB=REAL(RMSS(5))
46084       SGNMU=REAL(RMSS(4))
46085       MTOP=REAL(PMAS(6,1))
46086       IMODEL=0
46087       IF (IMSS(1).EQ.12) THEN
46088         IMODEL=1
46089         GOTO 130
46090       ELSEIF(IMSS(1).EQ.13) THEN
46091 C...Read from isajet par file in IMSS(20)
46092         LFN=IMSS(20)
46093 C...STOP IF LFN IS ZERO (i.e. if no LFN was given).
46094         IF (LFN.EQ.0) THEN
46095           WRITE(MSTU(11),*) '(PYSUGI:) No valid unit given in IMSS(20)'
46096           GOTO 9999
46097         ENDIF
46098         WRITE(MSTU(11),*) 'READING SUSY MODEL FROM FILE...'
46099 CMrenna change to allow any susy model
46100         WRITE(MSTU(11),*) 'ENTER 1 for mSUGRA:'
46101         WRITE(MSTU(11),*) 'ENTER 2 for mGMSB:'
46102         WRITE(MSTU(11),*) 'ENTER 3 for non-universal SUGRA:'
46103         WRITE(MSTU(11),*) 'ENTER 4 for SUGRA with truly unified'//
46104      &       ' gauge couplings:'
46105         WRITE(MSTU(11),*) 'ENTER 5 for non-minimal GMSB:'
46106         READ(LFN,*) IMODEL
46107         IF (IMODEL.EQ.4) THEN
46108           IAL3UN=1
46109           IMODEL=1
46110         ENDIF
46111         IF (IMODEL.EQ.1.OR.IMODEL.EQ.3) THEN
46112           WRITE(MSTU(11),*) 'ENTER M_0, M_(1/2), A_0, tan(beta),'
46113      &         //' sgn(mu), M_t:'
46114           READ(LFN,*) M0,MHF,A0,TANB,SGNMU,MT
46115           IF (IMODEL.EQ.3) THEN
46116             IMODEL=1
46117  110        WRITE(MSTU(11),*) ' ENTER 1,...,5 for NUSUGx keyword;'
46118      &           //' 0 to continue:'
46119             WRITE(MSTU(11),*) ' NUSUG1 = GUT scale gaugino masses'
46120             WRITE(MSTU(11),*) ' NUSUG2 = GUT scale A terms'
46121             WRITE(MSTU(11),*) ' NUSUG3 = GUT scale Higgs masses'
46122             WRITE(MSTU(11),*) ' NUSUG4 = GUT scale 1st/2nd'
46123      &           //' generation masses'
46124             WRITE(MSTU(11),*)
46125      &           ' NUSUG5 = GUT scale 3rd generation masses'
46126             READ(LFN,*) INUSUG
46127             IF (INUSUG.EQ.0) THEN
46128               GOTO 120
46129             ELSEIF (INUSUG.EQ.1) THEN
46130               WRITE(MSTU(11),*) 'Enter GUT scale M_1, M_2, M_3:'
46131               READ(LFN,*) XNUSUG(1),XNUSUG(2),XNUSUG(3)
46132               IF (XNUSUG(3).LE.0.) THEN
46133                 WRITE(MSTU(11),*) ' NEGATIVE M_3 IS NOT ALLOWED'
46134                 CALL PYSTOP(109)
46135               END IF
46136             ELSEIF (INUSUG.EQ.2) THEN
46137               WRITE(MSTU(11),*) 'Enter GUT scale A_t, A_b, A_tau:'
46138               READ(LFN,*) XNUSUG(6),XNUSUG(5),XNUSUG(4)
46139             ELSEIF (INUSUG.EQ.3) THEN
46140               WRITE(MSTU(11),*) 'Enter GUT scale m_Hd, m_Hu:'
46141               READ(LFN,*) XNUSUG(7),XNUSUG(8)
46142             ELSEIF (INUSUG.EQ.4) THEN
46143               WRITE(MSTU(11),*) 'Enter GUT scale M(ul), M(dr),'
46144      &             //' M(ur), M(el), M(er):'
46145               READ(LFN,*) XNUSUG(13),XNUSUG(11),XNUSUG(12),
46146      &             XNUSUG(10),XNUSUG(9)
46147             ELSEIF (INUSUG.EQ.5) THEN
46148               WRITE(MSTU(11),*) 'Enter GUT scale M(tl), M(br), M(tr),'
46149      &              //' M(Ll), M(Lr):'
46150               READ(LFN,*) XNUSUG(18),XNUSUG(16),XNUSUG(17),
46151      &             XNUSUG(15),XNUSUG(14)
46152             ENDIF
46153             GOTO 110
46154           ENDIF
46155         ELSEIF (IMODEL.EQ.2.OR.IMODEL.EQ.5) THEN
46156           IMSS(11)=1
46157           WRITE(MSTU(11),*) 'ENTER Lambda, M_mes, N_5, tan(beta),'
46158      &         ,' sgn(mu), M_t, C_gv:'
46159           READ(LFN,*) M0,MHF,A0,TANB,SGNMU,MT,XCMGV
46160           XGMIN(7)=XCMGV
46161           XGMIN(8)=1.
46162 C...Planck scale: AMPL = 2.4 E18 GeV = {8 pi G_newton}^{1/2}
46163           AMPL=2.4D18
46164           AMGVSS=M0*MHF*XCMGV/SQRT(3D0)/AMPL
46165           IF (IMODEL.EQ.5) THEN
46166             IMODEL=2
46167             WRITE(MSTU(11),*) 'Rsl = factor multiplying gaugino'
46168      &           ,' masses at M_mes'
46169             WRITE(MSTU(11),*) 'dmH_d2, dmH_u2 = Higgs mass**2'
46170      &           ,' shifts at M_mes'
46171             WRITE(MSTU(11),*) 'd_Y = mass**2 shifts proportional to',
46172      &           ' Y at M_mes'
46173             WRITE(MSTU(11),*) 'n5_1,n5_2,n5_3 = n5 values for U(1),'
46174      &           ,'SU(2),SU(3)'
46175             WRITE(MSTU(11),*) 'ENTER Rsl, dmH_d2, dmH_u2, d_Y, n5_1,'
46176      &           ,' n5_2, n5_3'
46177             READ(LFN,*) XGMIN(8),XGMIN(9),XGMIN(10),XGMIN(11),XGMIN(12),
46178      $           XGMIN(13),XGMIN(14)
46179           ENDIF
46180         ELSE
46181           WRITE(MSTU(11),*) 'Invalid model choice.'
46182           GOTO 9999
46183         ENDIF
46184       ENDIF
46185  
46186  120  MZERO=M0
46187       MHLF=MHF
46188       AZERO=A0
46189 C     TANB=REAL(RMSS(5))
46190 C     SGNMU=REAL(RMSS(4))
46191       MTOP=MT
46192  
46193 C...Initialize MSSM parameter array
46194  130  DO 140 IPAR=1,72
46195         SUPER(IPAR)=0.0
46196  140  CONTINUE
46197 C...Call ISASUGRA
46198       CALL SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODEL)
46199 C...Check whether ISASUSY thought the model was OK.
46200       IF (NOGOOD.NE.0) THEN
46201         IF (NOGOOD.EQ.1) CALL PYERRM(26
46202      &       ,'(PYSUGI:) SUSY parameters give tachyonic particles.')
46203         IF (NOGOOD.EQ.2) CALL PYERRM(26
46204      &       ,'(PYSUGI:) SUSY parameters give no EWSB.')
46205         IF (NOGOOD.EQ.3) CALL PYERRM(26
46206      &       ,'(PYSUGI:) SUSY parameters give m(A0) < 0.')
46207         IF (NOGOOD.EQ.4) CALL PYERRM(26
46208      &       ,'(PYSUGI:) SUSY parameters give Yukawa > 100.')
46209         IF (NOGOOD.EQ.7) CALL PYERRM(26
46210      &       ,'(PYSUGI:) SUSY parameters give x_T EWSB bad.')
46211         IF (NOGOOD.EQ.8) CALL PYERRM(26
46212      &       ,'(PYSUGI:) SUSY parameters give m(h0)2 < 0.')
46213 C...Give warning, but don't stop, if LSP not ~chi_10.
46214         IF (NOGOOD.EQ.5) CALL PYERRM(16
46215      &       ,'(PYSUGI:) SUSY parameters give ~chi_10 not LSP.')
46216       ENDIF
46217 C...Warn about possible GUT scale tachyons.
46218       IF (ITACHY.NE.0) CALL PYERRM(16,
46219      &       '(PYSUGI:) Tachyonic sleptons at GUT scale.')
46220 C...Finalize spectrum (last iteration)
46221 C...(Thanks to A. Raklev for pointing this out.)
46222 C...NB: SSMSSM also calculates decays, but these are not used by Pythia.
46223       CALL SSMSSM(XISAIN(1),XISAIN(2),XISAIN(3),
46224      $ XISAIN(4),XISAIN(5),XISAIN(6),XISAIN(7),XISAIN(8),XISAIN(9),
46225      $ XISAIN(10),XISAIN(11),XISAIN(12),XISAIN(13),XISAIN(14),
46226      $ XISAIN(15),XISAIN(16),XISAIN(17),XISAIN(18),XISAIN(19),
46227      $ XISAIN(20),XISAIN(21),XISAIN(22),XISAIN(23),XISAIN(24),
46228      $ MTOP,IALLOW,1)
46229  
46230 C...M1, M2, M3.
46231       RMSS(1)=dble(GSS(7))
46232       RMSS(2)=dble(GSS(8))
46233       RMSS(3)=dble(GSS(9))
46234       RMSOFT(1)=dble(GSS(7))
46235       RMSOFT(2)=dble(GSS(8))
46236       RMSOFT(3)=dble(GSS(9))
46237 C...Mu = - Higgsino mass.
46238       RMSS(4)=-SUPER(29)
46239       RMSS(5)=TANB
46240 C...Slepton and squark masses. 2 first generations.
46241       RMSS(6)=0.5*(SUPER(18)+SUPER(20))
46242       RMSS(7)=0.5*(SUPER(19)+SUPER(21))
46243       RMSS(8)=0.25*(SUPER(2)+SUPER(4)+SUPER(6)+SUPER(8))
46244       RMSS(9)=0.25*(SUPER(3)+SUPER(5)+SUPER(7)+SUPER(9))
46245 C...Third generation.
46246       RMSS(10)=0.5*(SUPER(14)+SUPER(10))
46247       RMSS(11)=SUPER(11)
46248       RMSS(12)=SUPER(15)
46249       RMSS(13)=SUPER(22)
46250       RMSS(14)=SUPER(23)
46251 C...SLHA: store exact soft spectrum in RMSOFT
46252       RMSOFT(31)=SUPER(18)
46253       RMSOFT(32)=SUPER(20)
46254       RMSOFT(33)=SUPER(22)
46255       RMSOFT(34)=SUPER(19)
46256       RMSOFT(35)=SUPER(21)
46257       RMSOFT(36)=SUPER(23)
46258       RMSOFT(41)=0.5D0*(SUPER(2)+SUPER(4))
46259       RMSOFT(42)=0.5D0*(SUPER(6)+SUPER(8))
46260       RMSOFT(43)=0.5D0*(SUPER(10)+SUPER(14))
46261       RMSOFT(44)=SUPER(3)
46262       RMSOFT(45)=SUPER(9)
46263       RMSOFT(46)=SUPER(15)
46264       RMSOFT(47)=SUPER(5)
46265       RMSOFT(48)=SUPER(7)
46266       RMSOFT(49)=SUPER(11)
46267  
46268 C...~b, ~t, and ~tau trilinear couplings and mixing angles.
46269       RMSS(15)=SUPER(62)
46270       RMSS(16)=SUPER(60)
46271       RMSS(17)=SUPER(64)
46272       RMSS(26)=SUPER(63)
46273       RMSS(27)=SUPER(61)
46274       RMSS(28)=SUPER(65)
46275 C...SLHA trilinears
46276       DO 142 K1=1,3
46277         DO 141 K2=1,3
46278           AE(K1,K2)=0D0
46279           AU(K1,K2)=0D0
46280           AD(K1,K2)=0D0
46281  141    CONTINUE
46282  142  CONTINUE
46283       AE(3,3)=SUPER(64)
46284       AU(3,3)=SUPER(60)
46285       AD(3,3)=SUPER(62)
46286 C...Higgs mixing angle alpha (Gunion-Haber convention).
46287       RMSS(18)=-SUPER(59)
46288 C...A0 mass.
46289       RMSS(19)=SUPER(57)
46290 C...GUT scale coupling
46291       RMSS(20)=AGUTSS
46292 C...Gravitino mass (for future compatibility)
46293       RMSS(21)=MAX(RMSS(21),DBLE(SUPER(66)))
46294  
46295 C...Now we're done with RMSS. Time to fill PMAS (m > 0 required).
46296 C...Higgs sector.
46297       PMAS(PYCOMP(25),1)=ABS(SUPER(55))
46298       PMAS(PYCOMP(35),1)=ABS(SUPER(56))
46299       PMAS(PYCOMP(36),1)=ABS(SUPER(57))
46300       PMAS(PYCOMP(37),1)=ABS(SUPER(58))
46301 C...Gluino.
46302       PMAS(PYCOMP(KSUSY1+21),1)=ABS(SUPER(1))
46303 C...Squarks and Sleptons.
46304       DO 150 ILR=1,2
46305         ILRM=ILR-1
46306         PMAS(PYCOMP(ILR*KSUSY1+1),1)=ABS(SUPER(4+ILRM))
46307         PMAS(PYCOMP(ILR*KSUSY1+2),1)=ABS(SUPER(2+ILRM))
46308         PMAS(PYCOMP(ILR*KSUSY1+3),1)=ABS(SUPER(6+ILRM))
46309         PMAS(PYCOMP(ILR*KSUSY1+4),1)=ABS(SUPER(8+ILRM))
46310         PMAS(PYCOMP(ILR*KSUSY1+5),1)=ABS(SUPER(12+ILRM))
46311         PMAS(PYCOMP(ILR*KSUSY1+6),1)=ABS(SUPER(16+ILRM))
46312         PMAS(PYCOMP(ILR*KSUSY1+11),1)=ABS(SUPER(18+ILRM))
46313         PMAS(PYCOMP(ILR*KSUSY1+13),1)=ABS(SUPER(20+ILRM))
46314         PMAS(PYCOMP(ILR*KSUSY1+15),1)=ABS(SUPER(24+ILRM))
46315   150 CONTINUE
46316       PMAS(PYCOMP(KSUSY1+12),1)=ABS(SUPER(26))
46317       PMAS(PYCOMP(KSUSY1+14),1)=ABS(SUPER(27))
46318       PMAS(PYCOMP(KSUSY1+16),1)=ABS(SUPER(28))
46319 C...Neutralinos.
46320       PMAS(PYCOMP(KSUSY1+22),1)=ABS(SUPER(31))
46321       PMAS(PYCOMP(KSUSY1+23),1)=ABS(SUPER(32))
46322       PMAS(PYCOMP(KSUSY1+25),1)=ABS(SUPER(33))
46323       PMAS(PYCOMP(KSUSY1+35),1)=ABS(SUPER(34))
46324 C...Signed masses (extra minus from going to G-H convention).
46325       SMZ(1)=-SUPER(31)
46326       SMZ(2)=-SUPER(32)
46327       SMZ(3)=-SUPER(33)
46328       SMZ(4)=-SUPER(34)
46329 C...Charginos
46330       PMAS(PYCOMP(KSUSY1+24),1)=ABS(SUPER(51))
46331       PMAS(PYCOMP(KSUSY1+37),1)=ABS(SUPER(52))
46332 C...Signed masses (extra minus from going to G-H convention).
46333       SMW(1)=-SUPER(51)
46334       SMW(2)=-SUPER(52)
46335  
46336 C... Neutralino Mixing.
46337       DO 160 IN=1,4
46338         ZMIX(IN,1)= SUPER(38+4*(IN-1))
46339         ZMIX(IN,2)= SUPER(37+4*(IN-1))
46340         ZMIX(IN,3)=-SUPER(36+4*(IN-1))
46341         ZMIX(IN,4)=-SUPER(35+4*(IN-1))
46342   160 CONTINUE
46343 C...Chargino Mixing (PYTHIA same angle as HERWIG).
46344       THX=1D0
46345       THY=1D0
46346       IF (SUPER(53).GT.0) THX=-1D0
46347       IF (SUPER(54).GT.0) THY=-1D0
46348       UMIX(1,1) = -SIN(SUPER(53))
46349       UMIX(1,2) = -COS(SUPER(53))
46350       UMIX(2,1) = -THX*COS(SUPER(53))
46351       UMIX(2,2) = THX*SIN(SUPER(53))
46352       VMIX(1,1) = -SIN(SUPER(54))
46353       VMIX(1,2) = -COS(SUPER(54))
46354       VMIX(2,1) = -THY*COS(SUPER(54))
46355       VMIX(2,2) = THY*SIN(SUPER(54))
46356 C...Sfermion mixing (PYTHIA same angle as ISAJET)
46357       SFMIX(5,1)=COS(SUPER(63))
46358       SFMIX(5,2)=SIN(SUPER(63))
46359       SFMIX(5,3)=-SIN(SUPER(63))
46360       SFMIX(5,4)=COS(SUPER(63))
46361       SFMIX(6,1)=COS(SUPER(61))
46362       SFMIX(6,2)=SIN(SUPER(61))
46363       SFMIX(6,3)=-SIN(SUPER(61))
46364       SFMIX(6,4)=COS(SUPER(61))
46365       SFMIX(15,1)=COS(SUPER(65))
46366       SFMIX(15,2)=SIN(SUPER(65))
46367       SFMIX(15,3)=-SIN(SUPER(65))
46368       SFMIX(15,4)=COS(SUPER(65))
46369  
46370       IF (MSTP(122).NE.0) THEN
46371 C...Print a few lines to make the user know what's happening
46372         ISAVER=VISAJE()
46373         WRITE(MSTU(11),5000) DOC, ISAVER
46374         WRITE(MSTU(11),5100)
46375         IF (IMODEL.EQ.1) THEN
46376           WRITE(MSTU(11),5200) MZERO, MHLF, AZERO, TANB, NINT(SGNMU),
46377      &         MTOP
46378           WRITE(MSTU(11),5300)
46379         ENDIF
46380         WRITE(MSTU(11),5500) 'Pole masses'
46381         WRITE(MSTU(11),5700) (SUPER(IP),IP=2,16,2),(SUPER(IP),IP=3,17,2)
46382         WRITE(MSTU(11),5800) (SUPER(IP),IP=18,24,2),(SUPER(IP),IP=26,28)
46383      &       ,(SUPER(IP),IP=19,25,2)
46384         WRITE(MSTU(11),5900) SUPER(1),(SMZ(IP),IP=1,4), (SMW(IP)
46385      &       ,IP=1,2)
46386         WRITE(MSTU(11),5400)
46387         WRITE(MSTU(11),6000) (SUPER(IP),IP=55,58)
46388         WRITE(MSTU(11),5400)
46389         WRITE(MSTU(11),5500) 'EW scale mixing structure'
46390         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
46391         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
46392      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
46393         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
46394      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
46395      &       ),(SFMIX(15,J),J=3,4)
46396         WRITE(MSTU(11),5400)
46397         WRITE(MSTU(11),6450) RMSS(18)
46398         WRITE(MSTU(11),5400)
46399         WRITE(MSTU(11),5500) 'Couplings'
46400         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17),RMSS(20)
46401         WRITE(MSTU(11),5400)
46402       ENDIF
46403  
46404 C...Call FeynHiggs to improve Higgs sector if requested
46405       IF (IMSS(4).EQ.3) THEN
46406         IF (MSTP(122).NE.0) WRITE(MSTU(11),'(1x,"*"/1x,"*",A)')
46407      &       ' (PYSUGI:) Now calling FeynHiggs.'
46408         CALL PYFEYN(IERR)
46409         IF (IERR.EQ.0) THEN
46410           IMSS(4)=2
46411           IF (MSTP(122).NE.0) THEN
46412             WRITE(MSTU(11),5400)
46413             WRITE(MSTU(11),5500)
46414      &           'Corrected Higgs masses and mixing'
46415             WRITE(MSTU(11),6000) PMAS(25,1),PMAS(35,1),PMAS(36,1),
46416      &           PMAS(37,1)
46417             WRITE(MSTU(11),6450) RMSS(18)
46418             WRITE(MSTU(11),5400)
46419           ENDIF
46420         ENDIF
46421       ENDIF
46422  
46423       IF (MSTP(122).NE.0) WRITE(MSTU(11),6500)
46424  
46425 C...Fix the higgs sector (in PYMSIN) using the masses and mixing angle
46426 C...output by ISASUSY.
46427       IMSS(4)=MAX(2,IMSS(4))
46428  
46429  5000 FORMAT(1x,19('*'),1x,'PYSUGI v1.52: PYTHIA/ISASUSY '
46430      &     ,'INTERFACE',1x,19('*')/1x,'*',3x,'PYSUGI: Last Change',1x,A
46431      &     ,1x,'-',1x,'P. Skands / S. Mrenna'/1x,'*',2x,A/1x,'*')
46432  5100 FORMAT(1x,'*',1x,'ISASUSY Input:'/1x,'*',1x,'----------------')
46433  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
46434      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
46435  5300 FORMAT(1x,'*'/1x,'*',1x,'ISASUSY Output:'/1x,'*',1x
46436      &     ,'----------------')
46437  5400 FORMAT(1x,'*',1x,A)
46438  5500 FORMAT(1x,'*',1x,A,':')
46439  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
46440      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
46441  5700 FORMAT(1x,'*',4x,4x,'~u',2x,1x,4x,'~d',2x,1x,4x,'~s',2x,1x,
46442      &     4x,'~c',2x,1x,4x,'~b',2x,1x,2x,'~b(12)',1x,4x,'~t',2x,1x, 2x,
46443      &     '~t(12)'/1x,'*',2x,'L',1x,8(F8.2,1x)/1x,'*',2x,'R',1x,8(F8.2
46444      &     ,1x))
46445  5800 FORMAT(1x,'*'/1x,'*',4x,4x,'~e',2x,1x,3x,'~mu',2x,1x,3x,'~tau',1x
46446      &     ,1x,'~tau(12)',1x,2x,'~nu_e',1x,1x,1x,'~nu_mu',1x,1x,1x
46447      &     ,'~nu_tau'/1x,'*',2x,'L',1x,7(F8.2,1x)/1x,'*',2x,'R',1x,4(F8
46448      &     .2,1x))
46449  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
46450      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
46451      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
46452  6000 FORMAT(1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
46453      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x))
46454  6050 FORMAT(1x,'*'/1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
46455      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x),3x,'(Before FeynHiggs)')
46456  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
46457      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
46458      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
46459      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
46460      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
46461      &     ,1x,F6.3,1x),'|')
46462  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
46463      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
46464      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
46465      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
46466      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
46467  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
46468      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
46469      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
46470      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
46471      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
46472      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
46473      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
46474  6400 FORMAT(1x,'*',3x,'A_b = ',F8.2,4x,'A_t = ',F8.2,4x,'A_tau = ',F8.2
46475      &     ,4x,'Alpha_GUT = ',F8.2)
46476  6450 FORMAT(1x,'*',3x,'Alpha_Higgs = ',F8.4)
46477  6500 FORMAT(1x,32('*'),1x,'END OF PYSUGI',1x,31('*'))
46478  
46479  9999 RETURN
46480       END
46481  
46482 C*********************************************************************
46483  
46484 C...PYFEYN
46485 C...Interface to FeynHiggs for MSSM Higgs sector.
46486 C...Pythia6.402: Updated to FeynHiggs v.2.3.0+ w/ DOUBLE COMPLEX
46487 C...P. Skands
46488  
46489       SUBROUTINE PYFEYN(IERR)
46490  
46491 C...Double precision and integer declarations.
46492       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46493       IMPLICIT INTEGER(I-N)
46494       INTEGER PYK,PYCHGE,PYCOMP
46495 C...Commonblocks.
46496       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46497       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46498 C...SUSY blocks
46499       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46500 C...FeynHiggs variables
46501       DOUBLE PRECISION RMHIGG(4)
46502       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
46503       DOUBLE COMPLEX DMU,
46504      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
46505      &     DM1, DM2, DM3
46506 C...SLHA Common Block
46507       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
46508      &     AU(3,3),AD(3,3),AE(3,3)
46509       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYLH3P/
46510  
46511       IERR=0
46512       CALL FHSETFLAGS(IERR,4,0,0,2,0,2,1,1)
46513       IF (IERR.NE.0) THEN
46514         CALL PYERRM(11,'(PYHGGM:) Caught error from FHSETFLAGS.'
46515      &       //'Will not use FeynHiggs for this run.')
46516         RETURN
46517       ENDIF
46518       Q=RMSOFT(0)
46519       DMB=PMAS(5,1)
46520       DMT=PMAS(6,1)
46521       DMZ=PMAS(23,1)
46522       DMW=PMAS(24,1)
46523       DMA=PMAS(36,1)
46524       DM1=RMSOFT(1)
46525       DM2=RMSOFT(2)
46526       DM3=RMSOFT(3)
46527       DTANB=RMSS(5)
46528       DMU=RMSS(4)
46529       DM3SL=RMSOFT(33)
46530       DM3SE=RMSOFT(36)
46531       DM3SQ=RMSOFT(43)
46532       DM3SU=RMSOFT(46)
46533       DM3SD=RMSOFT(49)
46534       DM2SL=RMSOFT(32)
46535       DM2SE=RMSOFT(35)
46536       DM2SQ=RMSOFT(42)
46537       DM2SU=RMSOFT(45)
46538       DM2SD=RMSOFT(48)
46539       DM1SL=RMSOFT(31)
46540       DM1SE=RMSOFT(34)
46541       DM1SQ=RMSOFT(41)
46542       DM1SU=RMSOFT(44)
46543       DM1SD=RMSOFT(47)
46544       AE33=AE(3,3)
46545       AE22=AE(2,2)
46546       AE11=AE(1,1)
46547       AU33=AU(3,3)
46548       AU22=AU(2,2)
46549       AU11=AU(1,1)
46550       AD33=AD(3,3)
46551       AD22=AD(2,2)
46552       AD11=AD(1,1)
46553       CALL FHSETPARA(IERR, 1D0, DMT, DMB, DMW, DMZ, DTANB,
46554      &     DMA,0D0, DM3SL, DM3SE, DM3SQ, DM3SU, DM3SD,
46555      &     DM2SL, DM2SE, DM2SQ, DM2SU, DM2SD,
46556      &     DM1SL, DM1SE, DM1SQ, DM1SU, DM1SD,DMU,
46557      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
46558      &     DM1, DM2, DM3, 0D0, 0D0,Q,Q,Q)
46559       IF (IERR.NE.0) THEN
46560         CALL PYERRM(11,'(PYHGGM:) Caught error from FHSETPARA.'
46561      &       //' Will not use FeynHiggs for this run.')
46562         RETURN
46563       ENDIF
46564 C...  Get Higgs masses & alpha_eff. (UHIGGS redundant here, only for CPV)
46565       SAEFF=0D0
46566       CALL FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS)
46567       IF (IERR.NE.0) THEN
46568         CALL PYERRM(11,'(PYFEYN:) Caught error from FHHIG'//
46569      &       'GSCORR. Will not use FeynHiggs for this run.')
46570         RETURN
46571       ENDIF
46572       ALPHA = ASIN(DBLE(SAEFF))
46573       R=RMSS(18)/ALPHA
46574       IF (R.LT.0D0.OR.ABS(R).GT.1.2D0.OR.ABS(R).LT.0.8D0) THEN
46575         CALL PYERRM(1,'(PYFEYN:) Large corrections in Higgs sector.')
46576         WRITE(MSTU(11),*) '   Old Alpha:', RMSS(18)
46577         WRITE(MSTU(11),*) '   New Alpha:', ALPHA
46578       ENDIF
46579       IF (RMHIGG(1).LT.0.85D0*PMAS(25,1).OR.RMHIGG(1).GT.
46580      &       1.15D0*PMAS(25,1)) THEN
46581         CALL PYERRM(1,'(PYFEYN:) Large corrections in Higgs sector.')
46582         WRITE(MSTU(11),*) '   Old m(h0):', PMAS(25,1)
46583         WRITE(MSTU(11),*) '   New m(h0):', RMHIGG(1)
46584       ENDIF
46585       RMSS(18)=ALPHA
46586       PMAS(25,1)=RMHIGG(1)
46587       PMAS(35,1)=RMHIGG(2)
46588       PMAS(36,1)=RMHIGG(3)
46589       PMAS(37,1)=RMHIGG(4)
46590  
46591       RETURN
46592       END
46593  
46594 C*********************************************************************
46595  
46596 C...PYRNMQ
46597 C...Determines the running mass of Squarks.
46598  
46599       FUNCTION PYRNMQ(ID,DTERM)
46600  
46601 C...Double precision and integer declarations.
46602       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46603       IMPLICIT INTEGER(I-N)
46604       INTEGER PYK,PYCHGE,PYCOMP
46605 C...Commonblock.
46606       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46607       SAVE /PYMSSM/
46608  
46609 C...Local variables.
46610       DOUBLE PRECISION PI,R
46611       DOUBLE PRECISION TOL
46612       DOUBLE PRECISION CI(3)
46613       EXTERNAL PYALPS
46614       DOUBLE PRECISION PYALPS
46615       DATA TOL/0.001D0/
46616       DATA PI,R/3.141592654D0,.61803399D0/
46617       DATA CI/0.47D0,0.07D0,0.02D0/
46618  
46619       C=1D0-R
46620       CA=CI(ID)
46621       AG=(0.71D0)**2/4D0/PI
46622       AG=RMSS(20)
46623       XM0=RMSS(8)
46624       XMG=RMSS(1)
46625       XM02=XM0*XM0
46626       XMG2=XMG*XMG
46627  
46628       AS=PYALPS(XM02+6D0*XMG2)
46629       CG=8D0/9D0*((AS/AG)**2-1D0)
46630       BX=XM02+(CA+CG)*XMG2+DTERM
46631       AX=MIN(50D0**2,0.5D0*BX)
46632       CX=MAX(2000D0**2,2D0*BX)
46633  
46634       X0=AX
46635       X3=CX
46636       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
46637         X1=BX
46638         X2=BX+C*(CX-BX)
46639       ELSE
46640         X2=BX
46641         X1=BX-C*(BX-AX)
46642       ENDIF
46643       AS1=PYALPS(X1)
46644       CG=8D0/9D0*((AS1/AG)**2-1D0)
46645       F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
46646       AS2=PYALPS(X2)
46647       CG=8D0/9D0*((AS2/AG)**2-1D0)
46648       F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
46649   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
46650         IF(F2.LT.F1) THEN
46651           X0=X1
46652           X1=X2
46653           X2=R*X1+C*X3
46654           F1=F2
46655           AS2=PYALPS(X2)
46656           CG=8D0/9D0*((AS2/AG)**2-1D0)
46657           F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
46658         ELSE
46659           X3=X2
46660           X2=X1
46661           X1=R*X2+C*X0
46662           F2=F1
46663           AS1=PYALPS(X1)
46664           CG=8D0/9D0*((AS1/AG)**2-1D0)
46665           F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
46666         ENDIF
46667         GOTO 100
46668       ENDIF
46669       IF(F1.LT.F2) THEN
46670         PYRNMQ=X1
46671         XMIN=X1
46672       ELSE
46673         PYRNMQ=X2
46674         XMIN=X2
46675       ENDIF
46676  
46677       RETURN
46678       END
46679  
46680 C*********************************************************************
46681  
46682 C...PYTHRG
46683 C...Calculates the mass eigenstates of the third generation sfermions.
46684 C...Created:  5-31-96
46685  
46686       SUBROUTINE PYTHRG
46687  
46688 C...Double precision and integer declarations.
46689       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46690       IMPLICIT INTEGER(I-N)
46691       INTEGER PYK,PYCHGE,PYCOMP
46692 C...Parameter statement to help give large particle numbers.
46693       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
46694      &KEXCIT=4000000,KDIMEN=5000000)
46695 C...Commonblocks.
46696       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46697       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46698       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46699       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
46700      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
46701       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
46702  
46703 C...Local variables.
46704       DOUBLE PRECISION BETA
46705       DOUBLE PRECISION AM2(2,2),RT(2,2),DI(2,2)
46706       DOUBLE PRECISION XMZ2,XMW2,TANB,XMU,COS2B,XMQL2,XMQR2
46707       DOUBLE PRECISION XMF,XMF2,DIFF,SAME,XMF12,XMF22,SMALL
46708       DOUBLE PRECISION ATR,AMQR,AMQL
46709       INTEGER ID1(3),ID2(3),ID3(3),ID4(3)
46710       INTEGER IF,I,J,II,JJ,IT,L
46711       LOGICAL DTERM
46712       DATA SMALL/1D-3/
46713       DATA ID1/10,10,13/
46714       DATA ID2/5,6,15/
46715       DATA ID3/15,16,17/
46716       DATA ID4/11,12,14/
46717       DATA DTERM/.TRUE./
46718  
46719       XMZ2=PMAS(23,1)**2
46720       XMW2=PMAS(24,1)**2
46721       TANB=RMSS(5)
46722       XMU=-RMSS(4)
46723       BETA=ATAN(TANB)
46724       COS2B=COS(2D0*BETA)
46725  
46726 C...OPTION TO FIX T1, T2, B1 MASSES AND MIXINGS
46727  
46728       IOPT=IMSS(5)
46729       IF(IOPT.EQ.1) THEN
46730         CTT=DCOS(RMSS(27))
46731         CTT2=CTT**2
46732         STT=DSIN(RMSS(27))
46733         STT2=STT**2
46734         XM12=RMSS(10)**2
46735         XM22=RMSS(12)**2
46736         XMQL2=CTT2*XM12+STT2*XM22
46737         XMQR2=STT2*XM12+CTT2*XM22
46738         XMF2=PYMRUN(6,PMAS(6,1)**2)**2
46739         ATOP=-XMU/TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
46740         RMSS(16)=ATOP
46741 C......SUBTRACT OUT D-TERM AND FERMION MASS
46742         XMQL2=XMQL2-XMF2-(4D0*XMW2-XMZ2)*COS2B/6D0
46743         XMQR2=XMQR2-XMF2+(XMW2-XMZ2)*COS2B*2D0/3D0
46744         IF(XMQL2.GE.0D0) THEN
46745           RMSS(10)=SQRT(XMQL2)
46746         ELSE
46747           RMSS(10)=-SQRT(-XMQL2)
46748         ENDIF
46749         IF(XMQR2.GE.0D0) THEN
46750           RMSS(12)=SQRT(XMQR2)
46751         ELSE
46752           RMSS(12)=-SQRT(-XMQR2)
46753         ENDIF
46754  
46755 C SAME FOR BOTTOM SQUARK
46756         CTT=DCOS(RMSS(26))
46757         CTT2=CTT**2
46758         STT=DSIN(RMSS(26))
46759         STT2=STT**2
46760         XM22=RMSS(11)**2
46761         XMF2=PYMRUN(5,PMAS(6,1)**2)**2
46762         XMQL2=SIGN(RMSS(10)**2,RMSS(10))-(2D0*XMW2+XMZ2)*COS2B/6D0+XMF2
46763         IF(ABS(CTT).GE..9999D0) THEN
46764           ABOT=-XMU*TANB
46765           XMQR2=RMSS(11)**2
46766         ELSEIF(ABS(CTT).LE.1D-4) THEN
46767           ABOT=-XMU*TANB
46768           XMQR2=RMSS(11)**2
46769         ELSE
46770           XM12=(XMQL2-STT2*XM22)/CTT2
46771           XMQR2=STT2*XM12+CTT2*XM22
46772           ABOT=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
46773         ENDIF
46774         RMSS(15)=ABOT
46775 C......SUBTRACT OUT D-TERM AND FERMION MASS
46776         XMQR2=XMQR2-(XMW2-XMZ2)*COS2B/3D0-XMF2
46777         IF(XMQR2.GE.0D0) THEN
46778           RMSS(11)=SQRT(XMQR2)
46779         ELSE
46780           RMSS(11)=-SQRT(-XMQR2)
46781         ENDIF
46782 C SAME FOR TAU SLEPTON
46783         CTT=DCOS(RMSS(28))
46784         CTT2=CTT**2
46785         STT=DSIN(RMSS(28))
46786         STT2=STT**2
46787         XM12=RMSS(13)**2
46788         XM22=RMSS(14)**2
46789         XMQL2=CTT2*XM12+STT2*XM22
46790         XMQR2=STT2*XM12+CTT2*XM22
46791         XMFR=PMAS(15,1)
46792         XMF2=XMFR**2
46793         ATAU=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
46794         RMSS(17)=ATAU
46795 C......SUBTRACT OUT D-TERM AND FERMION MASS
46796         XMQL2=XMQL2-XMF2+(-.5D0*XMZ2+XMW2)*COS2B
46797         XMQR2=XMQR2-XMF2+(XMZ2-XMW2)*COS2B
46798         IF(XMQL2.GE.0D0) THEN
46799           RMSS(13)=SQRT(XMQL2)
46800         ELSE
46801           RMSS(13)=-SQRT(-XMQL2)
46802         ENDIF
46803         IF(XMQR2.GE.0D0) THEN
46804           RMSS(14)=SQRT(XMQR2)
46805         ELSE
46806           RMSS(14)=-SQRT(-XMQR2)
46807         ENDIF
46808       ENDIF
46809       DO 170 L=1,3
46810         AMQL=RMSS(ID1(L))
46811         IF(AMQL.LT.0D0) THEN
46812           XMQL2=-AMQL**2
46813         ELSE
46814           XMQL2=AMQL**2
46815         ENDIF
46816         ATR=RMSS(ID3(L))
46817         AMQR=RMSS(ID4(L))
46818         IF(AMQR.LT.0D0) THEN
46819           XMQR2=-AMQR**2
46820         ELSE
46821           XMQR2=AMQR**2
46822         ENDIF
46823         IF=ID2(L)
46824         XMF=PYMRUN(IF,PMAS(6,1)**2)
46825         XMF2=XMF**2
46826         AM2(1,1)=XMQL2+XMF2
46827         AM2(2,2)=XMQR2+XMF2
46828         IF(AM2(1,1).EQ.AM2(2,2)) AM2(2,2)=AM2(2,2)*1.00001D0
46829         IF(DTERM) THEN
46830           IF(L.EQ.1) THEN
46831             AM2(1,1)=AM2(1,1)-(2D0*XMW2+XMZ2)*COS2B/6D0
46832             AM2(2,2)=AM2(2,2)+(XMW2-XMZ2)*COS2B/3D0
46833             AM2(1,2)=XMF*(ATR+XMU*TANB)
46834           ELSEIF(L.EQ.2) THEN
46835             AM2(1,1)=AM2(1,1)+(4D0*XMW2-XMZ2)*COS2B/6D0
46836             AM2(2,2)=AM2(2,2)-(XMW2-XMZ2)*COS2B*2D0/3D0
46837             AM2(1,2)=XMF*(ATR+XMU/TANB)
46838           ELSEIF(L.EQ.3) THEN
46839             IF(IMSS(8).EQ.1) THEN
46840               AM2(1,1)=RMSS(6)**2
46841               AM2(2,2)=RMSS(7)**2
46842               AM2(1,2)=0D0
46843               RMSS(13)=RMSS(6)
46844               RMSS(14)=RMSS(7)
46845             ELSE
46846               AM2(1,1)=AM2(1,1)-(-.5D0*XMZ2+XMW2)*COS2B
46847               AM2(2,2)=AM2(2,2)-(XMZ2-XMW2)*COS2B
46848               AM2(1,2)=XMF*(ATR+XMU*TANB)
46849             ENDIF
46850           ENDIF
46851         ENDIF
46852         AM2(2,1)=AM2(1,2)
46853         DETM=AM2(1,1)*AM2(2,2)-AM2(2,1)**2
46854         IF(DETM.LT.0D0) THEN
46855           WRITE(MSTU(11),*) ID2(L),DETM,AM2
46856           CALL PYERRM(30,' NEGATIVE**2 MASS FOR SFERMION IN PYTHRG ')
46857         ENDIF
46858         SAME=0.5D0*(AM2(1,1)+AM2(2,2))
46859         DIFF=0.5D0*SQRT((AM2(1,1)-AM2(2,2))**2+4D0*AM2(1,2)*AM2(2,1))
46860         XMF12=SAME-DIFF
46861         XMF22=SAME+DIFF
46862         IT=0
46863         IF(XMF22-XMF12.GT.0D0) THEN
46864           RT(1,1) = SQRT(MAX(0D0,(XMF22-AM2(1,1))/(XMF22-XMF12)))
46865           RT(2,2) = RT(1,1)
46866           RT(1,2) = -SIGN(SQRT(MAX(0D0,1D0-RT(1,1)**2)),
46867      &    AM2(1,2)/(XMF22-XMF12))
46868           RT(2,1) = -RT(1,2)
46869         ELSE
46870           RT(1,1) = 1D0
46871           RT(2,2) = RT(1,1)
46872           RT(1,2) = 0D0
46873           RT(2,1) = -RT(1,2)
46874         ENDIF
46875   100   CONTINUE
46876         IT=IT+1
46877  
46878         DO 140 I=1,2
46879           DO 130 JJ=1,2
46880             DI(I,JJ)=0D0
46881             DO 120 II=1,2
46882               DO 110 J=1,2
46883                 DI(I,JJ)=DI(I,JJ)+RT(I,J)*AM2(J,II)*RT(JJ,II)
46884   110         CONTINUE
46885   120       CONTINUE
46886   130     CONTINUE
46887   140   CONTINUE
46888  
46889         IF(DI(1,1).GT.DI(2,2)) THEN
46890           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION '
46891           WRITE(MSTU(11),*) L,SQRT(XMF12),SQRT(XMF22)
46892           WRITE(MSTU(11),*) AM2
46893           WRITE(MSTU(11),*) DI
46894           WRITE(MSTU(11),*) RT
46895           DI(1,1)=-RT(2,1)
46896           DI(2,2)=RT(1,2)
46897           DI(1,2)=-RT(2,2)
46898           DI(2,1)=RT(1,1)
46899           DO 160 I=1,2
46900             DO 150 J=1,2
46901               RT(I,J)=DI(I,J)
46902   150       CONTINUE
46903   160     CONTINUE
46904           GOTO 100
46905         ELSEIF(ABS(DI(1,2)*DI(2,1)/DI(1,1)/DI(2,2)).GT.SMALL) THEN
46906           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
46907      &    ' OFF DIAGONAL ELEMENTS '
46908           WRITE(MSTU(11),*) 'MASSES = ',L,SQRT(XMF12),SQRT(XMF22)
46909           WRITE(MSTU(11),*) DI
46910           WRITE(MSTU(11),*) ' ROTATION = ',RT
46911 C...STOP
46912         ELSEIF(DI(1,1).LT.0D0.OR.DI(2,2).LT.0D0) THEN
46913           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
46914      &    ' NEGATIVE MASSES '
46915           CALL PYSTOP(111)
46916         ENDIF
46917         PMAS(PYCOMP(KSUSY1+IF),1)=SQRT(XMF12)
46918         PMAS(PYCOMP(KSUSY2+IF),1)=SQRT(XMF22)
46919         SFMIX(IF,1)=RT(1,1)
46920         SFMIX(IF,2)=RT(1,2)
46921         SFMIX(IF,3)=RT(2,1)
46922         SFMIX(IF,4)=RT(2,2)
46923   170 CONTINUE
46924  
46925 C.....TAU SNEUTRINO MASS...L=3
46926  
46927       XARG=AM2(1,1)+XMW2*COS2B
46928       IF(XARG.LT.0D0) THEN
46929         WRITE(MSTU(11),*) ' PYTHRG:: TAU SNEUTRINO MASS IS NEGATIVE'//
46930      &  ' FROM THE SUM RULE. '
46931         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
46932         RETURN
46933       ELSE
46934         PMAS(PYCOMP(KSUSY1+16),1)=SQRT(XARG)
46935       ENDIF
46936  
46937       RETURN
46938       END
46939 C*********************************************************************
46940  
46941 C...PYINOM
46942 C...Finds the mass eigenstates and mixing matrices for neutralinos
46943 C...and charginos.
46944  
46945       SUBROUTINE PYINOM
46946  
46947 C...Double precision and integer declarations.
46948       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46949       IMPLICIT INTEGER(I-N)
46950       INTEGER PYCOMP
46951 C...Parameter statement to help give large particle numbers.
46952       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
46953      &KEXCIT=4000000,KDIMEN=5000000)
46954 C...Commonblocks.
46955       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46956       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46957       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46958       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
46959      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
46960       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
46961  
46962 C...Local variables.
46963       DOUBLE PRECISION XMW,XMZ,XM(4)
46964       DOUBLE PRECISION AR(5,5),WR(5),ZR(5,5),ZI(5,5),AI(5,5)
46965       DOUBLE PRECISION WI(5),FV1(5),FV2(5),FV3(5)
46966       DOUBLE PRECISION COSW,SINW
46967       DOUBLE PRECISION XMU
46968       DOUBLE PRECISION TANB,COSB,SINB
46969       DOUBLE PRECISION XM1,XM2,XM3,BETA
46970       DOUBLE PRECISION Q2,AEM,A1,A2,AQ,RM1,RM2
46971       DOUBLE PRECISION ARG,X0,X1,AX0,AX1,AT,BT
46972       DOUBLE PRECISION Y0,Y1,AMGX0,AM1X0,AMGX1,AM1X1
46973       DOUBLE PRECISION ARGX0,AR1X0,ARGX1,AR1X1
46974       DOUBLE PRECISION PYALPS,PYALEM
46975       DOUBLE PRECISION PYRNM3
46976       COMPLEX*16 CAR(4,4),CAI(4,4),CA1,CA2
46977       INTEGER IERR,INDEX(4),I,J,K,IOPT,ILR,KFNCHI(4)
46978       DATA KFNCHI/1000022,1000023,1000025,1000035/
46979  
46980       IOPT=IMSS(2)
46981       IF(IMSS(1).EQ.2) THEN
46982         IOPT=1
46983       ENDIF
46984 C...M1, M2, AND M3 ARE INDEPENDENT
46985       IF(IOPT.EQ.0) THEN
46986         XM1=RMSS(1)
46987         XM2=RMSS(2)
46988         XM3=RMSS(3)
46989       ELSEIF(IOPT.GE.1) THEN
46990         Q2=PMAS(23,1)**2
46991         AEM=PYALEM(Q2)
46992         A2=AEM/PARU(102)
46993         A1=AEM/(1D0-PARU(102))
46994         XM1=RMSS(1)
46995         XM2=RMSS(2)
46996         IF(IMSS(1).EQ.2) XM1=RMSS(1)/RMSS(20)*A1*5D0/3D0
46997         IF(IOPT.EQ.1) THEN
46998           XM2=XM1*A2/A1*3D0/5D0
46999           RMSS(2)=XM2
47000         ELSEIF(IOPT.EQ.3) THEN
47001           XM1=XM2*5D0/3D0*A1/A2
47002           RMSS(1)=XM1
47003         ENDIF
47004         XM3=PYRNM3(XM2/A2)
47005         RMSS(3)=XM3
47006         IF(XM3.LE.0D0) THEN
47007           WRITE(MSTU(11),*) ' ERROR WITH M3 = ',XM3
47008           CALL PYSTOP(105)
47009         ENDIF
47010       ENDIF
47011  
47012 C...GLUINO MASS
47013       IF(IMSS(3).EQ.1) THEN
47014         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)
47015       ELSE
47016         AQ=0D0
47017         DO 110 I=1,4
47018           DO 100 ILR=1,2
47019             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
47020             AQ=AQ+0.5D0*((2D0-RM1)*(RM1*LOG(RM1)-1D0)
47021      &      +(1D0-RM1)**2*LOG(ABS(1D0-RM1)))
47022   100     CONTINUE
47023   110   CONTINUE
47024  
47025         DO 130 I=5,6
47026           DO 120 ILR=1,2
47027             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
47028             RM2=PMAS(I,1)**2/XM3**2
47029             ARG=(RM1-RM2-1D0)**2-4D0*RM2**2
47030             IF(ARG.GE.0D0) THEN
47031               X0=0.5D0*(1D0+RM2-RM1-SQRT(ARG))
47032               AX0=ABS(X0)
47033               X1=0.5D0*(1D0+RM2-RM1+SQRT(ARG))
47034               AX1=ABS(X1)
47035               IF(X0.EQ.1D0) THEN
47036                 AT=-1D0
47037                 BT=0.25D0
47038               ELSEIF(X0.EQ.0D0) THEN
47039                 AT=0D0
47040                 BT=-0.25D0
47041               ELSE
47042                 AT=0.5D0*LOG(ABS(1D0-X0))*(1D0-X0**2)+
47043      &          0.5D0*X0**2*LOG(AX0)
47044                 BT=(-1D0-2D0*X0)/4D0
47045               ENDIF
47046               IF(X1.EQ.1D0) THEN
47047                 AT=-1D0+AT
47048                 BT=0.25D0+BT
47049               ELSEIF(X1.EQ.0D0) THEN
47050                 AT=0D0+AT
47051                 BT=-0.25D0+BT
47052               ELSE
47053                 AT=0.5D0*LOG(ABS(1D0-X1))*(1D0-X1**2)+0.5D0*
47054      &          X1**2*LOG(AX1)+AT
47055                 BT=(-1D0-2D0*X1)/4D0+BT
47056               ENDIF
47057               AQ=AQ+AT+BT
47058             ELSE
47059               X0=0.5D0*(1D0+RM2-RM1)
47060               Y0=-0.5D0*SQRT(-ARG)
47061               AMGX0=SQRT(X0**2+Y0**2)
47062               AM1X0=SQRT((1D0-X0)**2+Y0**2)
47063               ARGX0=ATAN2(-X0,-Y0)
47064               AR1X0=ATAN2(1D0-X0,Y0)
47065               X1=X0
47066               Y1=-Y0
47067               AMGX1=AMGX0
47068               AM1X1=AM1X0
47069               ARGX1=ATAN2(-X1,-Y1)
47070               AR1X1=ATAN2(1D0-X1,Y1)
47071               AT=0.5D0*LOG(AM1X0)*(1D0-X0**2+3D0*Y0**2)
47072      &        +0.5D0*(X0**2-Y0**2)*LOG(AMGX0)
47073               BT=(-1D0-2D0*X0)/4D0+X0*Y0*( AR1X0-ARGX0 )
47074               AT=AT+0.5D0*LOG(AM1X1)*(1D0-X1**2+3D0*Y1**2)
47075      &        +0.5D0*(X1**2-Y1**2)*LOG(AMGX1)
47076               BT=BT+(-1D0-2D0*X1)/4D0+X1*Y1*( AR1X1-ARGX1 )
47077               AQ=AQ+AT+BT
47078             ENDIF
47079   120     CONTINUE
47080   130   CONTINUE
47081         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)*(1D0+PYALPS(XM3**2)
47082      &  /(2D0*PARU(2))*(15D0+AQ))
47083       ENDIF
47084  
47085 C...NEUTRALINO MASSES
47086       DO 150 I=1,4
47087         DO 140 J=1,4
47088           AI(I,J)=0D0
47089   140   CONTINUE
47090   150 CONTINUE
47091       XMZ=PMAS(23,1)/100D0
47092       XMW=PMAS(24,1)/100D0
47093       XMU=RMSS(4)/100D0
47094       SINW=SQRT(PARU(102))
47095       COSW=SQRT(1D0-PARU(102))
47096       TANB=RMSS(5)
47097       BETA=ATAN(TANB)
47098       COSB=COS(BETA)
47099       SINB=TANB*COSB
47100
47101       XM2=XM2/100D0
47102       XM1=XM1/100D0
47103       
47104  
47105 C... Definitions:
47106 C...    psi^0 =(-i bino^0, -i wino^0, h_d^0(=H_1^0), h_u^0(=H_2^0))
47107 C... => L_neutralino = -1/2*(psi^0)^T * [AR] * psi^0 + h.c.
47108       AR(1,1) = XM1*COS(RMSS(30))
47109       AI(1,1) = XM1*SIN(RMSS(30))
47110       AR(2,2) = XM2*COS(RMSS(31))
47111       AI(2,2) = XM2*SIN(RMSS(31))
47112       AR(3,3) = 0D0
47113       AR(4,4) = 0D0
47114       AR(1,2) = 0D0
47115       AR(2,1) = 0D0
47116       AR(1,3) = -XMZ*SINW*COSB
47117       AR(3,1) = AR(1,3)
47118       AR(1,4) = XMZ*SINW*SINB
47119       AR(4,1) = AR(1,4)
47120       AR(2,3) = XMZ*COSW*COSB
47121       AR(3,2) = AR(2,3)
47122       AR(2,4) = -XMZ*COSW*SINB
47123       AR(4,2) = AR(2,4)
47124       AR(3,4) = -XMU*COS(RMSS(33))
47125       AI(3,4) = -XMU*SIN(RMSS(33))
47126       AR(4,3) = -XMU*COS(RMSS(33))
47127       AI(4,3) = -XMU*SIN(RMSS(33))
47128 C      CALL PYEIG4(AR,WR,ZR)
47129       CALL PYEICG(5,4,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
47130       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
47131      & 'PROBLEM WITH PYEICG IN PYINOM ')
47132       DO 160 I=1,4
47133         INDEX(I)=I
47134         XM(I)=ABS(WR(I))
47135   160 CONTINUE
47136       DO 180 I=2,4
47137         K=I
47138         DO 170 J=I-1,1,-1
47139           IF(XM(K).LT.XM(J)) THEN
47140             ITMP=INDEX(J)
47141             XTMP=XM(J)
47142             INDEX(J)=INDEX(K)
47143             XM(J)=XM(K)
47144             INDEX(K)=ITMP
47145             XM(K)=XTMP
47146             K=K-1
47147           ELSE
47148             GOTO 180
47149           ENDIF
47150   170   CONTINUE
47151   180 CONTINUE
47152  
47153  
47154       DO 210 I=1,4
47155         K=INDEX(I)
47156         SMZ(I)=WR(K)*100D0
47157         PMAS(PYCOMP(KFNCHI(I)),1)=ABS(SMZ(I))
47158         S=0D0
47159         DO 190 J=1,4
47160           S=S+ZR(J,K)**2+ZI(J,K)**2
47161   190   CONTINUE
47162         DO 200 J=1,4
47163           ZMIX(I,J)=ZR(J,K)/SQRT(S)
47164           ZMIXI(I,J)=ZI(J,K)/SQRT(S)
47165           IF(ABS(ZMIX(I,J)).LT.1D-6) ZMIX(I,J)=0D0
47166           IF(ABS(ZMIXI(I,J)).LT.1D-6) ZMIXI(I,J)=0D0
47167   200   CONTINUE
47168   210 CONTINUE
47169  
47170 C...CHARGINO MASSES
47171 C.....Find eigenvectors of X X^*
47172       DO I=1,4
47173         DO J=1,4
47174           AR(I,J)=0D0
47175           AI(I,J)=0D0
47176         ENDDO
47177       ENDDO
47178       AI(1,1) = 0D0
47179       AI(2,2) = 0D0
47180       AR(1,1) = XM2**2+2D0*XMW**2*SINB**2
47181       AR(2,2) = XMU**2+2D0*XMW**2*COSB**2
47182       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
47183      &XMU*COS(RMSS(33))*SINB)
47184       AI(1,2) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*COSB-
47185      &XMU*SIN(RMSS(33))*SINB)
47186       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
47187      &XMU*COS(RMSS(33))*SINB)
47188       AI(2,1) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*COSB+
47189      &XMU*SIN(RMSS(33))*SINB)
47190       CALL PYEICG(5,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
47191       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
47192      & 'PROBLEM WITH PYEICG IN PYINOM ')
47193       INDEX(1)=1
47194       INDEX(2)=2
47195       IF(WR(2).LT.WR(1)) THEN
47196         INDEX(1)=2
47197         INDEX(2)=1
47198       ENDIF
47199
47200  
47201       DO 240 I=1,2
47202         K=INDEX(I)
47203         SMW(I)=SQRT(WR(K))*100D0
47204         S=0D0
47205         DO 220 J=1,2
47206           S=S+ZR(J,K)**2+ZI(J,K)**2
47207   220   CONTINUE
47208         DO 230 J=1,2
47209           UMIX(I,J)=ZR(J,K)/SQRT(S)
47210           UMIXI(I,J)=-ZI(J,K)/SQRT(S)
47211           IF(ABS(UMIX(I,J)).LT.1D-6) UMIX(I,J)=0D0
47212           IF(ABS(UMIXI(I,J)).LT.1D-6) UMIXI(I,J)=0D0
47213   230   CONTINUE
47214   240 CONTINUE
47215 C...Force chargino mass > neutralino mass
47216       IFRC=0
47217       IF(ABS(SMW(1)).LT.ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1)) THEN
47218         CALL PYERRM(18,'(PYINOM:) '//
47219      &      'forcing m(~chi+_1) > m(~chi0_1) + 2m(pi0)')
47220         SMW(1)=SIGN(ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1),SMW(1))
47221         IFRC=1
47222       ENDIF
47223       PMAS(PYCOMP(KSUSY1+24),1)=SMW(1)
47224       PMAS(PYCOMP(KSUSY1+37),1)=SMW(2)
47225  
47226 C.....Find eigenvectors of X^* X
47227       DO I=1,4
47228         DO J=1,4
47229           AR(I,J)=0D0
47230           AI(I,J)=0D0
47231           ZR(I,J)=0D0
47232           ZI(I,J)=0D0
47233         ENDDO
47234       ENDDO
47235       AI(1,1) = 0D0
47236       AI(2,2) = 0D0
47237       AR(1,1) = XM2**2+2D0*XMW**2*COSB**2
47238       AR(2,2) = XMU**2+2D0*XMW**2*SINB**2
47239       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
47240      &XMU*COS(RMSS(33))*COSB)
47241       AI(1,2) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*SINB+
47242      &XMU*SIN(RMSS(33))*COSB)
47243       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
47244      &XMU*COS(RMSS(33))*COSB)
47245       AI(2,1) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*SINB-
47246      &XMU*SIN(RMSS(33))*COSB)
47247       CALL PYEICG(5,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
47248       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
47249      & 'PROBLEM WITH PYEICG IN PYINOM ')
47250       INDEX(1)=1
47251       INDEX(2)=2
47252       IF(WR(2).LT.WR(1)) THEN
47253         INDEX(1)=2
47254         INDEX(2)=1
47255       ENDIF
47256  
47257       SIMAG=0D0
47258       DO 270 I=1,2
47259         K=INDEX(I)
47260         S=0D0
47261         DO 250 J=1,2
47262           S=S+ZR(J,K)**2+ZI(J,K)**2
47263           SIMAG=SIMAG+ZI(J,K)**2
47264   250   CONTINUE
47265         DO 260 J=1,2
47266           VMIX(I,J)=ZR(J,K)/SQRT(S)
47267           VMIXI(I,J)=-ZI(J,K)/SQRT(S)
47268           IF(ABS(VMIX(I,J)).LT.1D-6) VMIX(I,J)=0D0
47269           IF(ABS(VMIXI(I,J)).LT.1D-6) VMIXI(I,J)=0D0
47270   260   CONTINUE
47271   270 CONTINUE
47272
47273 C.....Simplify if no phases
47274       IF(SIMAG.LT.1D-6) THEN
47275         AR(1,1) = XM2*COS(RMSS(31))
47276         AR(2,2) = XMU*COS(RMSS(33))
47277         AR(1,2) = SQRT(2D0)*XMW*SINB
47278         AR(2,1) = SQRT(2D0)*XMW*COSB
47279         IKNT=0
47280  300    CONTINUE
47281         DO I=1,2
47282           DO J=1,2
47283             ZR(I,J)=0D0
47284           ENDDO
47285         ENDDO
47286
47287         DO I=1,2
47288           DO J=1,2
47289             DO K=1,2
47290               DO L=1,2
47291                 ZR(I,J)=ZR(I,J)+UMIX(I,K)*AR(K,L)*VMIX(J,L)
47292               ENDDO
47293             ENDDO
47294           ENDDO
47295         ENDDO
47296         VMIX(1,1)=VMIX(1,1)*SMW(1)/ZR(1,1)/100D0
47297         VMIX(1,2)=VMIX(1,2)*SMW(1)/ZR(1,1)/100D0
47298         VMIX(2,1)=VMIX(2,1)*SMW(2)/ZR(2,2)/100D0
47299         VMIX(2,2)=VMIX(2,2)*SMW(2)/ZR(2,2)/100D0
47300         IF(IKNT.EQ.2.AND.IFRC.EQ.0) THEN
47301           CALL PYERRM(18,'(PYINOM:) Problem with Charginos')
47302         ELSEIF(ZR(1,1).LT.0D0.OR.ZR(2,2).LT.0D0) THEN
47303           IKNT=IKNT+1
47304           GOTO 300
47305         ENDIF
47306 C.....Must deal with phases
47307       ELSE
47308         CAR(1,1) = XM2*CMPLX(COS(RMSS(31)),SIN(RMSS(31)))
47309         CAR(2,2) = XMU*CMPLX(COS(RMSS(33)),SIN(RMSS(33)))
47310         CAR(1,2) = SQRT(2D0)*XMW*SINB*CMPLX(1D0,0D0)
47311         CAR(2,1) = SQRT(2D0)*XMW*COSB*CMPLX(1D0,0D0)
47312
47313         IKNT=0
47314  310    CONTINUE
47315         DO I=1,2
47316           DO J=1,2
47317             CAI(I,J)=CMPLX(0D0,0D0)
47318           ENDDO
47319         ENDDO
47320
47321         DO I=1,2
47322           DO J=1,2
47323             DO K=1,2
47324               DO L=1,2
47325                 CAI(I,J)=CAI(I,J)+CMPLX(UMIX(I,K),-UMIXI(I,K))*CAR(K,L)*
47326      &           CMPLX(VMIX(J,L),VMIXI(J,L))
47327               ENDDO
47328             ENDDO
47329           ENDDO
47330         ENDDO
47331
47332         CA1=SMW(1)*CAI(1,1)/ABS(CAI(1,1))**2/100D0
47333         CA2=SMW(2)*CAI(2,2)/ABS(CAI(2,2))**2/100D0
47334         TEMPR=VMIX(1,1)
47335         TEMPI=VMIXI(1,1)
47336         VMIX(1,1)=TEMPR*DBLE(CA1)-TEMPI*DIMAG(CA1)
47337         VMIXI(1,1)=TEMPI*DBLE(CA1)+TEMPR*DIMAG(CA1)
47338         TEMPR=VMIX(1,2)
47339         TEMPI=VMIXI(1,2)
47340         VMIX(1,2)=TEMPR*DBLE(CA1)-TEMPI*DIMAG(CA1)
47341         VMIXI(1,2)=TEMPI*DBLE(CA1)+TEMPR*DIMAG(CA1)
47342         TEMPR=VMIX(2,1)
47343         TEMPI=VMIXI(2,1)
47344         VMIX(2,1)=TEMPR*DBLE(CA2)-TEMPI*DIMAG(CA2)
47345         VMIXI(2,1)=TEMPI*DBLE(CA2)+TEMPR*DIMAG(CA2)
47346         TEMPR=VMIX(2,2)
47347         TEMPI=VMIXI(2,2)
47348         VMIX(2,2)=TEMPR*DBLE(CA2)-TEMPI*DIMAG(CA2)
47349         VMIXI(2,2)=TEMPI*DBLE(CA2)+TEMPR*DIMAG(CA2)
47350         IF(IKNT.EQ.2.AND.IFRC.EQ.0) THEN
47351           CALL PYERRM(18,'(PYINOM:) Problem with Charginos')
47352         ELSEIF(DBLE(CA1).LT.0D0.OR.DBLE(CA2).LT.0D0.OR.
47353      &   ABS(IMAG(CA1)).GT.1D-3.OR.ABS(IMAG(CA2)).GT.1D-3) THEN
47354           IKNT=IKNT+1
47355           GOTO 310
47356         ENDIF
47357       ENDIF 
47358       RETURN
47359       END
47360  
47361 C*********************************************************************
47362  
47363 C...PYRNM3
47364 C...Calculates the running of M3, the SU(3) gluino mass parameter.
47365  
47366       FUNCTION PYRNM3(RGUT)
47367  
47368 C...Double precision and integer declarations.
47369       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47370       IMPLICIT INTEGER(I-N)
47371       INTEGER PYK,PYCHGE,PYCOMP
47372  
47373 C...Local variables.
47374       DOUBLE PRECISION R
47375       DOUBLE PRECISION TOL
47376       EXTERNAL PYALPS
47377       DOUBLE PRECISION PYALPS
47378       DATA TOL/0.001D0/
47379       DATA R/0.61803399D0/
47380  
47381       C=1D0-R
47382  
47383       BX=RGUT*PYALPS(RGUT**2)
47384       AX=MIN(50D0,BX*0.5D0)
47385       CX=MAX(2000D0,2D0*BX)
47386  
47387       X0=AX
47388       X3=CX
47389       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
47390         X1=BX
47391         X2=BX+C*(CX-BX)
47392       ELSE
47393         X2=BX
47394         X1=BX-C*(BX-AX)
47395       ENDIF
47396       AS1=PYALPS(X1**2)
47397       F1=ABS(X1-RGUT*AS1)
47398       AS2=PYALPS(X2**2)
47399       F2=ABS(X2-RGUT*AS2)
47400   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
47401         IF(F2.LT.F1) THEN
47402           X0=X1
47403           X1=X2
47404           X2=R*X1+C*X3
47405           F1=F2
47406           AS2=PYALPS(X2**2)
47407           F2=ABS(X2-RGUT*AS2)
47408         ELSE
47409           X3=X2
47410           X2=X1
47411           X1=R*X2+C*X0
47412           F2=F1
47413           AS1=PYALPS(X1**2)
47414           F1=ABS(X1-RGUT*AS1)
47415         ENDIF
47416         GOTO 100
47417       ENDIF
47418       IF(F1.LT.F2) THEN
47419         PYRNM3=X1
47420         XMIN=X1
47421       ELSE
47422         PYRNM3=X2
47423         XMIN=X2
47424       ENDIF
47425  
47426       RETURN
47427       END
47428  
47429 C*********************************************************************
47430  
47431 C...PYEIG4
47432 C...Finds eigenvalues and eigenvectors to a 4 * 4 matrix.
47433 C...Specific application: mixing in neutralino sector.
47434  
47435       SUBROUTINE PYEIG4(A,W,Z)
47436  
47437 C...Double precision and integer declarations.
47438       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47439       IMPLICIT INTEGER(I-N)
47440       INTEGER PYK,PYCHGE,PYCOMP
47441  
47442 C...Arrays: in call and local.
47443       DIMENSION A(4,4),W(4),Z(4,4),X(4),D(4,4),E(4)
47444  
47445 C...Coefficients of fourth-degree equation from matrix.
47446 C...x**4 + b3 * x**3 + b2 * x**2 + b1 * x + b0 = 0.
47447       B3=-(A(1,1)+A(2,2)+A(3,3)+A(4,4))
47448       B2=0D0
47449       DO 110 I=1,3
47450         DO 100 J=I+1,4
47451           B2=B2+A(I,I)*A(J,J)-A(I,J)*A(J,I)
47452   100   CONTINUE
47453   110 CONTINUE
47454       B1=0D0
47455       B0=0D0
47456       DO 120 I=1,4
47457         I1=MOD(I,4)+1
47458         I2=MOD(I+1,4)+1
47459         I3=MOD(I+2,4)+1
47460         B1=B1+A(I,I)*(-A(I1,I1)*A(I2,I2)+A(I1,I2)*A(I2,I1)+
47461      &  A(I1,I3)*A(I3,I1)+A(I2,I3)*A(I3,I2))-
47462      &  A(I,I1)*A(I1,I2)*A(I2,I)-A(I,I2)*A(I2,I1)*A(I1,I)
47463         B0=B0+(-1D0)**(I+1)*A(1,I)*(
47464      &  A(2,I1)*(A(3,I2)*A(4,I3)-A(3,I3)*A(4,I2))+
47465      &  A(2,I2)*(A(3,I3)*A(4,I1)-A(3,I1)*A(4,I3))+
47466      &  A(2,I3)*(A(3,I1)*A(4,I2)-A(3,I2)*A(4,I1)))
47467   120 CONTINUE
47468  
47469 C...Coefficients of third-degree equation needed for
47470 C...separation into two second-degree equations.
47471 C...u**3 + c2 * u**2 + c1 * u + c0 = 0.
47472       C2=-B2
47473       C1=B1*B3-4D0*B0
47474       C0=-B1**2-B0*B3**2+4D0*B0*B2
47475       CQ=C1/3D0-C2**2/9D0
47476       CR=C1*C2/6D0-C0/2D0-C2**3/27D0
47477       CQR=CQ**3+CR**2
47478  
47479 C...Cases with one or three real roots.
47480       IF(CQR.GE.0D0) THEN
47481         S1=(CR+SQRT(CQR))**(1D0/3D0)
47482         S2=(CR-SQRT(CQR))**(1D0/3D0)
47483         U=S1+S2-C2/3D0
47484       ELSE
47485         SABS=SQRT(-CQ)
47486         THE=ACOS(CR/SABS**3)/3D0
47487         SRE=SABS*COS(THE)
47488         U=2D0*SRE-C2/3D0
47489       ENDIF
47490  
47491 C...Find and solve two second-degree equations.
47492       P1=B3/2D0-SQRT(B3**2/4D0+U-B2)
47493       P2=B3/2D0+SQRT(B3**2/4D0+U-B2)
47494       Q1=U/2D0+SQRT(U**2/4D0-B0)
47495       Q2=U/2D0-SQRT(U**2/4D0-B0)
47496       IF(ABS(P1*Q1+P2*Q2-B1).LT.ABS(P1*Q2+P2*Q1-B1)) THEN
47497         QSAV=Q1
47498         Q1=Q2
47499         Q2=QSAV
47500       ENDIF
47501       X(1)=-P1/2D0+SQRT(P1**2/4D0-Q1)
47502       X(2)=-P1/2D0-SQRT(P1**2/4D0-Q1)
47503       X(3)=-P2/2D0+SQRT(P2**2/4D0-Q2)
47504       X(4)=-P2/2D0-SQRT(P2**2/4D0-Q2)
47505  
47506 C...Order eigenvalues in asceding mass.
47507       W(1)=X(1)
47508       DO 150 I1=2,4
47509         DO 130 I2=I1-1,1,-1
47510           IF(ABS(X(I1)).GE.ABS(W(I2))) GOTO 140
47511           W(I2+1)=W(I2)
47512   130   CONTINUE
47513   140   W(I2+1)=X(I1)
47514   150 CONTINUE
47515  
47516 C...Find equation system for eigenvectors.
47517       DO 250 I=1,4
47518         DO 170 J1=1,4
47519           D(J1,J1)=A(J1,J1)-W(I)
47520           DO 160 J2=J1+1,4
47521             D(J1,J2)=A(J1,J2)
47522             D(J2,J1)=A(J2,J1)
47523   160     CONTINUE
47524   170   CONTINUE
47525  
47526 C...Find largest element in matrix.
47527         DAMAX=0D0
47528         DO 190 J1=1,4
47529           DO 180 J2=1,4
47530             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 180
47531             JA=J1
47532             JB=J2
47533             DAMAX=ABS(D(J1,J2))
47534   180     CONTINUE
47535   190   CONTINUE
47536  
47537 C...Subtract others by multiple of row selected above.
47538         DAMAX=0D0
47539         DO 210 J3=JA+1,JA+3
47540           J1=J3-4*((J3-1)/4)
47541           RL=D(J1,JB)/D(JA,JB)
47542           DO 200 J2=1,4
47543             D(J1,J2)=D(J1,J2)-RL*D(JA,J2)
47544             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 200
47545             JC=J1
47546             JD=J2
47547             DAMAX=ABS(D(J1,J2))
47548   200     CONTINUE
47549   210   CONTINUE
47550  
47551 C...Do one more subtraction of a row.
47552         DAMAX=0D0
47553         DO 230 J3=JC+1,JC+3
47554           J1=J3-4*((J3-1)/4)
47555           IF(J1.EQ.JA) GOTO 230
47556           RL=D(J1,JD)/D(JC,JD)
47557           DO 220 J2=1,4
47558             IF(J2.EQ.JB) GOTO 220
47559             D(J1,J2)=D(J1,J2)-RL*D(JC,J2)
47560             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 220
47561             JE=J1
47562             DAMAX=ABS(D(J1,J2))
47563   220     CONTINUE
47564   230   CONTINUE
47565  
47566 C...Construct unnormalized eigenvector.
47567         JF1=JD+1-4*(JD/4)
47568         JF2=JD+2-4*((JD+1)/4)
47569         IF(JF1.EQ.JB) JF1=JD+3-4*((JD+2)/4)
47570         IF(JF2.EQ.JB) JF2=JD+3-4*((JD+2)/4)
47571         E(JF1)=-D(JE,JF2)
47572         E(JF2)=D(JE,JF1)
47573         E(JD)=-(D(JC,JF1)*E(JF1)+D(JC,JF2)*E(JF2))/D(JC,JD)
47574         E(JB)=-(D(JA,JF1)*E(JF1)+D(JA,JF2)*E(JF2)+D(JA,JD)*E(JD))/
47575      &  D(JA,JB)
47576  
47577 C...Normalize and fill in final array.
47578         EA=SQRT(E(1)**2+E(2)**2+E(3)**2+E(4)**2)
47579         SGN=(-1D0)**INT(PYR(0)+0.5D0)
47580         DO 240 J=1,4
47581           Z(I,J)=SGN*E(J)/EA
47582   240   CONTINUE
47583   250 CONTINUE
47584  
47585       RETURN
47586       END
47587  
47588 C*********************************************************************
47589  
47590 C...PYHGGM
47591 C...Determines the Higgs boson mass spectrum using several inputs.
47592  
47593       SUBROUTINE PYHGGM(ALPHA)
47594  
47595 C...Double precision and integer declarations.
47596       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47597       IMPLICIT INTEGER(I-N)
47598       INTEGER PYK,PYCHGE,PYCOMP
47599 C...Parameter statement to help give large particle numbers.
47600       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
47601      &KEXCIT=4000000,KDIMEN=5000000)
47602 C...Commonblocks.
47603       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47604       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47605       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
47606       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
47607       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/
47608  
47609 C...Local variables.
47610       DOUBLE PRECISION AT,AB,XMU,TANB
47611       DOUBLE PRECISION ALPHA
47612       INTEGER IHOPT
47613       DOUBLE PRECISION DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD
47614       DOUBLE PRECISION DMU,DMH,DHM,DMHCH,DSA,DCA,DTANBA
47615       DOUBLE PRECISION DMC,DMDR,DMHP,DHMP,DAMP
47616       DOUBLE PRECISION DSTOP1,DSTOP2,DSBOT1,DSBOT2
47617  
47618       IHOPT=IMSS(4)
47619       IF(IHOPT.EQ.2) THEN
47620         ALPHA=RMSS(18)
47621         RETURN
47622       ENDIF
47623       AT=RMSS(16)
47624       AB=RMSS(15)
47625       DMGL=RMSS(3)
47626       XMU=RMSS(4)
47627       TANB=RMSS(5)
47628  
47629       DMA=RMSS(19)
47630       DTANB=TANB
47631       DMQ=RMSS(10)
47632       DMUR=RMSS(12)
47633       DMDR=RMSS(11)
47634       DMTOP=PMAS(6,1)
47635       DMC=PMAS(PYCOMP(KSUSY1+37),1)
47636       DAU=AT
47637       DAD=AB
47638       DMU=XMU
47639       RMSS(40)=0D0
47640       RMSS(41)=0D0
47641  
47642       IF(IHOPT.EQ.0) THEN
47643         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
47644      &  DMHCH,DSA,DCA,DTANBA)
47645       ELSEIF(IHOPT.EQ.1) THEN
47646         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
47647      &  DMHCH,DSA,DCA,DTANBA)
47648         CALL PYPOLE(3,DMC,DMA,DTANB,DMQ,DMUR,DMDR,DMTOP,DAU,DAD,DMU,
47649      &  DMH,DMHP,DHM,DHMP,DAMP,DSA,DCA,
47650      &  DSTOP1,DSTOP2,DSBOT1,DSBOT2,DTANBA,DMGL,DDT,DDB)
47651         RMSS(40)=DDT
47652         RMSS(41)=DDB
47653         DMH=DMHP
47654         DHM=DHMP
47655         DMA=DAMP
47656         IF(ABS(PMAS(PYCOMP(1000006),1)-DSTOP2).GT.5D-1) THEN
47657          WRITE(MSTU(11),*) ' STOP1 MASS DOES NOT MATCH IN PYHGGM '
47658          WRITE(MSTU(11),*) ' STOP1 MASSES = ',
47659      & PMAS(PYCOMP(1000006),1),DSTOP2
47660         ENDIF
47661         IF(ABS(PMAS(PYCOMP(2000006),1)-DSTOP1).GT.5D-1) THEN
47662          WRITE(MSTU(11),*) ' STOP2 MASS DOES NOT MATCH IN PYHGGM '
47663          WRITE(MSTU(11),*) ' STOP2 MASSES = ',
47664      & PMAS(PYCOMP(2000006),1),DSTOP1
47665         ENDIF
47666         IF(ABS(PMAS(PYCOMP(1000005),1)-DSBOT2).GT.5D-1) THEN
47667          WRITE(MSTU(11),*) ' SBOT1 MASS DOES NOT MATCH IN PYHGGM '
47668          WRITE(MSTU(11),*) ' SBOT1 MASSES = ',
47669      & PMAS(PYCOMP(1000005),1),DSBOT2
47670         ENDIF
47671         IF(ABS(PMAS(PYCOMP(2000005),1)-DSBOT1).GT.5D-1) THEN
47672          WRITE(MSTU(11),*) ' SBOT2 MASS DOES NOT MATCH IN PYHGGM '
47673          WRITE(MSTU(11),*) ' SBOT2 MASSES = ',
47674      & PMAS(PYCOMP(2000005),1),DSBOT1
47675         ENDIF
47676  
47677       ELSEIF (IHOPT.EQ.3) THEN
47678 c...Use FeynHiggs to fix Higgs sector (cf feynhiggs.de)
47679 C...Currently only available for SLHA spectrum read-in.
47680         IF (IMSS(1).NE.11.AND.IMSS(1).NE.12.AND.IMSS(1).NE.13) THEN
47681           CALL PYERRM(11,'(PYHGGM:) FeynHiggs needs SLHA or ISASUSY'
47682      &         //' spectrum, change IMSS(1) or IMSS(4) option.')
47683         ENDIF
47684         ALPHA=RMSS(18)
47685         RETURN
47686       ENDIF
47687  
47688       ALPHA=ACOS(DCA)
47689  
47690       PMAS(25,1)=DMH
47691       PMAS(35,1)=DHM
47692       PMAS(36,1)=DMA
47693       PMAS(37,1)=DMHCH
47694  
47695       RETURN
47696       END
47697  
47698 C*********************************************************************
47699  
47700 C...PYSUBH
47701 C...This routine computes the renormalization group improved
47702 C...values of Higgs masses and couplings in the MSSM.
47703  
47704 C...Program based on the work by M. Carena, J.R. Espinosa,
47705 c...M. Quiros and C.E.M. Wagner, CERN-preprint CERN-TH/95-45
47706  
47707 C...Input: MA,TANB = TAN(BETA),MQ,MUR,MTOP,AU,AD,MU
47708 C...All masses in GeV units. MA is the CP-odd Higgs mass,
47709 C...MTOP is the physical top mass, MQ and MUR are the soft
47710 C...supersymmetry breaking mass parameters of left handed
47711 C...and right handed stops respectively, AU and AD are the
47712 C...stop and sbottom trilinear soft breaking terms,
47713 C...respectively,  and MU is the supersymmetric
47714 C...Higgs mass parameter. We use the  conventions from
47715 C...the physics report of Haber and Kane: left right
47716 C...stop mixing term proportional to (AU - MU/TANB)
47717 C...We use as input TANB defined at the scale MTOP
47718  
47719 C...Output: MH,HM,MHCH, SA = SIN(ALPHA), CA= COS(ALPHA), TANBA
47720 C...where MH and HM are the lightest and heaviest CP-even
47721 C...Higgs masses, MHCH is the charged Higgs mass and
47722 C...ALPHA is the Higgs mixing angle
47723 C...TANBA is the angle TANB at the CP-odd Higgs mass scale
47724  
47725 C...Range of validity:
47726 C...(STOP1**2 - STOP2**2)/(STOP2**2 + STOP1**2) < 0.5
47727 C...(SBOT1**2 - SBOT2**2)/(SBOT2**2 + SBOT2**2) < 0.5
47728 C...where STOP1, STOP2, SBOT1 and SBOT2 are the stop and
47729 C...are the sbottom  mass eigenvalues, respectively. This
47730 C...range automatically excludes the existence of tachyons.
47731 C...For the charged Higgs mass computation, the method is
47732 C...valid if
47733 C...2 * |MB * AD* TANB|  < M_SUSY**2,  2 * |MTOP * AU| < M_SUSY**2
47734 C...2 * |MB * MU * TANB| < M_SUSY**2,  2 * |MTOP * MU| < M_SUSY**2
47735 C...where M_SUSY**2 is the average of the squared stop mass
47736 C...eigenvalues, M_SUSY**2 = (STOP1**2 + STOP2**2)/2. The sbottom
47737 C...masses have been assumed to be of order of the stop ones
47738 C...M_SUSY**2 = (MQ**2 + MUR**2)*0.5 + MTOP**2
47739  
47740       SUBROUTINE PYSUBH (XMA,TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM,
47741      &XMHCH,SA,CA,TANBA)
47742  
47743 C...Double precision and integer declarations.
47744       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47745       IMPLICIT INTEGER(I-N)
47746       INTEGER PYK,PYCHGE,PYCOMP
47747 C...Parameter statement to help give large particle numbers.
47748       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
47749      &KEXCIT=4000000,KDIMEN=5000000)
47750 C...Commonblocks.
47751       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47752       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47753       COMMON/PYHTRI/HHH(7)
47754       SAVE /PYDAT1/,/PYDAT2/
47755  
47756 C...Local variables.
47757       DOUBLE PRECISION PYALEM,PYALPS
47758       DOUBLE PRECISION TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM
47759       DOUBLE PRECISION XMHCH,SA,CA
47760       DOUBLE PRECISION XMA,AEM,ALP1,ALP2,ALPH3Z,V,PI
47761       DOUBLE PRECISION Q02
47762       DOUBLE PRECISION TANBA,TANBT,XMB,ALP3
47763       DOUBLE PRECISION RMTOP,XMS,T,SINB,COSB
47764       DOUBLE PRECISION XLAM1,XLAM2,XLAM3,XLAM4,XLAM5,XLAM6
47765       DOUBLE PRECISION XLAM7,XAU,XAD,G1,G2,G3,HU,HD,HU2
47766       DOUBLE PRECISION HD2,HU4,HD4,SINBT,COSBT
47767       DOUBLE PRECISION TRM2,DETM2,XMH2,XHM2,XMHCH2
47768       DOUBLE PRECISION SINALP,COSALP,AUD,PI2,XMS2,XMS4,AD2
47769       DOUBLE PRECISION AU2,XMU2,XMZ,XMS3
47770  
47771       XMZ = PMAS(23,1)
47772       Q02=XMZ**2
47773       AEM=PYALEM(Q02)
47774       ALP1=AEM/(1D0-PARU(102))
47775       ALP2=AEM/PARU(102)
47776       ALPH3Z=PYALPS(Q02)
47777  
47778       ALP1 = 0.0101D0
47779       ALP2 = 0.0337D0
47780       ALPH3Z = 0.12D0
47781  
47782       V = 174.1D0
47783       PI = PARU(1)
47784       TANBA = TANB
47785       TANBT = TANB
47786  
47787 C...MBOTTOM(MTOP) = 3. GEV
47788       XMB = PYMRUN(5,XMTOP**2)
47789       ALP3 = ALPH3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPH3Z*
47790      &LOG(XMTOP**2/XMZ**2))
47791  
47792 C...RMTOP= RUNNING TOP QUARK MASS
47793       RMTOP = XMTOP/(1D0+4D0*ALP3/3D0/PI)
47794       XMS = ((XMQ**2 + XMUR**2)/2D0 + XMTOP**2)**0.5D0
47795       T = LOG(XMS**2/XMTOP**2)
47796       SINB = TANB/((1D0 + TANB**2)**0.5D0)
47797       COSB = SINB/TANB
47798 C...IF(MA.LE.XMTOP) TANBA = TANBT
47799       IF(XMA.GT.XMTOP)
47800      &TANBA = TANBT*(1D0-3D0/32D0/PI**2*
47801      &(RMTOP**2/V**2/SINB**2-XMB**2/V**2/COSB**2)*
47802      &LOG(XMA**2/XMTOP**2))
47803  
47804       SINBT = TANBT/SQRT(1D0 + TANBT**2)
47805       COSBT = 1D0/SQRT(1D0 + TANBT**2)
47806 C      COS2BT = (TANBT**2 - 1D0)/(TANBT**2 + 1D0)
47807       G1 = SQRT(ALP1*4D0*PI)
47808       G2 = SQRT(ALP2*4D0*PI)
47809       G3 = SQRT(ALP3*4D0*PI)
47810       HU = RMTOP/V/SINBT
47811       HD =  XMB/V/COSBT
47812       HU2=HU*HU
47813       HD2=HD*HD
47814       HU4=HU2*HU2
47815       HD4=HD2*HD2
47816       AU2=AU**2
47817       AD2=AD**2
47818       XMS2=XMS**2
47819       XMS3=XMS**3
47820       XMS4=XMS2*XMS2
47821       XMU2=XMU*XMU
47822       PI2=PI*PI
47823  
47824       XAU = (2D0*AU2/XMS2)*(1D0 - AU2/12D0/XMS2)
47825       XAD = (2D0*AD2/XMS2)*(1D0 - AD2/12D0/XMS2)
47826       AUD = (-6D0*XMU2/XMS2 - ( XMU2- AD*AU)**2/XMS4
47827      &+ 3D0*(AU + AD)**2/XMS2)/6D0
47828       XLAM1 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HD2*T/8D0/PI2)
47829      &+(3D0*HD4/8D0/PI2) * (T + XAD/2D0 + (3D0*HD2/2D0 + HU2/2D0
47830      &- 8D0*G3**2) * (XAD*T + T**2)/16D0/PI2)
47831      &-(3D0*HU4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HU2 -5D0* HD2
47832      &-  16D0*G3**2) *T/16D0/PI2)
47833       XLAM2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU2*T/8D0/PI2)
47834      &+(3D0*HU4/8D0/PI2) * (T + XAU/2D0 + (3D0*HU2/2D0 + HD2/2D0
47835      &- 8D0*G3**2) * (XAU*T + T**2)/16D0/PI2)
47836      &-(3D0*HD4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HD2 -5D0* HU2
47837      &-  16D0*G3**2) *T/16D0/PI2)
47838       XLAM3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
47839      &(HU2 + HD2)*T/16D0/PI2)
47840      &+(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
47841      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
47842      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
47843      &XMS4)* (1D0+ (6D0*HU2 -2D0* HD2/2D0
47844      &-  16D0*G3**2) *T/16D0/PI2)
47845      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
47846      &XMS4)*(1D0+ (6D0*HD2 -2D0* HU2
47847      &-  16D0*G3**2) *T/16D0/PI2)
47848       XLAM4 = (- G2**2/2D0)*(1D0-3D0*(HU2 + HD2)*T/16D0/PI2)
47849      &-(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
47850      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
47851      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
47852      &XMS4)*
47853      &(1+ (6D0*HU2 -2D0* HD2
47854      &-  16D0*G3**2) *T/16D0/PI2)
47855      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
47856      &XMS4)*
47857      &(1+ (6D0*HD2 -2D0* HU2/2D0
47858      &-  16D0*G3**2) *T/16D0/PI2)
47859       XLAM5 = -(3D0*HU4* XMU2*AU2/96D0/PI2/XMS4) *
47860      &(1- (2D0*HD2 -6D0* HU2 + 16D0*G3**2) *T/16D0/PI2)
47861      &-(3D0*HD4* XMU2*AD2/96D0/PI2/XMS4) *
47862      &(1- (2D0*HU2 -6D0* HD2 + 16D0*G3**2) *T/16D0/PI2)
47863       XLAM6 = (3D0*HU4* XMU**3*AU/96D0/PI2/XMS4) *
47864      &(1- (7D0*HD2/2D0 -15D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
47865      &+(3D0*HD4* XMU *(AD**3/XMS3 - 6D0*AD/XMS )/96D0/PI2/XMS) *
47866      &(1- (HU2/2D0 -9D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
47867       XLAM7 = (3D0*HD4* XMU**3*AD/96D0/PI2/XMS4) *
47868      &(1- (7D0*HU2/2D0 -15D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
47869      &+(3D0*HU4* XMU *(AU**3/XMS3 - 6D0*AU/XMS )/96D0/PI2/XMS) *
47870      &(1- (HD2/2D0 -9D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
47871       HHH(1)=XLAM1
47872       HHH(2)=XLAM2
47873       HHH(3)=XLAM3
47874       HHH(4)=XLAM4
47875       HHH(5)=XLAM5
47876       HHH(6)=XLAM6
47877       HHH(7)=XLAM7
47878       TRM2 = XMA**2 + 2D0*V**2* (XLAM1* COSBT**2 +
47879      &2D0* XLAM6*SINBT*COSBT
47880      &+ XLAM5*SINBT**2 + XLAM2* SINBT**2 + 2D0* XLAM7*SINBT*COSBT
47881      &+ XLAM5*COSBT**2)
47882       DETM2 = 4D0*V**4*(-(SINBT*COSBT*(XLAM3 + XLAM4) +
47883      &XLAM6*COSBT**2
47884      &+ XLAM7* SINBT**2)**2 + (XLAM1* COSBT**2 +
47885      &2D0* XLAM6* COSBT*SINBT
47886      &+ XLAM5*SINBT**2)*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
47887      &+ XLAM5*COSBT**2)) + XMA**2*2D0*V**2 *
47888      &((XLAM1* COSBT**2 +2D0*
47889      &XLAM6* COSBT*SINBT + XLAM5*SINBT**2)*COSBT**2 +
47890      &(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT + XLAM5*COSBT**2)
47891      &*SINBT**2
47892      &+2D0*SINBT*COSBT* (SINBT*COSBT*(XLAM3
47893      &+ XLAM4) + XLAM6*COSBT**2
47894      &+ XLAM7* SINBT**2))
47895  
47896       XMH2 = (TRM2 - SQRT(TRM2**2 - 4D0* DETM2))/2D0
47897       XHM2 = (TRM2 + SQRT(TRM2**2 - 4D0* DETM2))/2D0
47898       XHM = SQRT(XHM2)
47899       XMH = SQRT(XMH2)
47900       XMHCH2 = XMA**2 + (XLAM5 - XLAM4)* V**2
47901       XMHCH = SQRT(XMHCH2)
47902  
47903       SINALP = SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0) -
47904      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
47905      &XLAM6* COSBT*SINBT
47906      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
47907      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
47908      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2)))/
47909      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0))/2D0**0.5D0
47910  
47911       COSALP = (2D0*(2D0*V**2*(SINBT*COSBT*(XLAM3 + XLAM4) +
47912      &XLAM6*COSBT**2 + XLAM7* SINBT**2) -
47913      &XMA**2*SINBT*COSBT))/2D0**0.5D0/
47914      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0)*
47915      &(((TRM2**2 - 4D0* DETM2)**0.5D0) -
47916      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
47917      &XLAM6* COSBT*SINBT
47918      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
47919      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
47920      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2))))
47921  
47922       SA = -SINALP
47923       CA = -COSALP
47924  
47925   100 CONTINUE
47926  
47927       RETURN
47928       END
47929  
47930 C*********************************************************************
47931  
47932 C...PYPOLE
47933 C...This subroutine computes the CP-even higgs and CP-odd pole
47934 c...Higgs masses and mixing angles.
47935  
47936 C...Program based on the work by M. Carena, M. Quiros
47937 C...and C.E.M. Wagner, "Effective potential methods and
47938 C...the Higgs mass spectrum in the MSSM", CERN-TH/95-157
47939  
47940 C...Inputs: IHIGGS(explained below),MCHI,MA,TANB,MQ,MUR,MDR,MTOP,
47941 C...AT,AB,MU
47942 C...where MCHI is the largest chargino mass, MA is the running
47943 C...CP-odd higgs mass, TANB is the value of the ratio of vacuum
47944 C...expectaion values at the scale MTOP, MQ is the third generation
47945 C...left handed squark mass parameter, MUR is the third generation
47946 C...right handed stop mass parameter, MDR is the third generation
47947 C...right handed sbottom mass parameter, MTOP is the pole top quark
47948 C...mass; AT,AB are the soft supersymmetry breaking trilinear
47949 C...couplings of the stop and sbottoms, respectively, and MU is the
47950 C...supersymmetric mass parameter
47951  
47952 C...The parameter IHIGGS=0,1,2,3 corresponds to the number of
47953 C...Higgses whose pole mass is computed. If IHIGGS=0 only running
47954 C...masses are given, what makes the running of the program
47955 c...much faster and it is quite generally a good approximation
47956 c...(for a theoretical discussion see ref. above). If IHIGGS=1,
47957 C...only the pole mass for H is computed. If IHIGGS=2, then h and H,
47958 c...and if IHIGGS=3, then h,H,A polarizations are computed
47959  
47960 C...Output: MH and MHP which are the lightest CP-even Higgs running
47961 C...and pole masses, respectively; HM and HMP are the heaviest CP-even
47962 C...Higgs running and pole masses, repectively; SA and CA are the
47963 C...SIN(ALPHA) and COS(ALPHA) where ALPHA is the Higgs mixing angle
47964 C...AMP is the CP-odd Higgs pole mass. STOP1,STOP2,SBOT1 and SBOT2
47965 C...are the stop and sbottom mass eigenvalues. Finally, TANBA is
47966 C...the value of TANB at the CP-odd Higgs mass scale
47967  
47968 C...This subroutine makes use of CERN library subroutine
47969 C...integration package, which makes the computation of the
47970 C...pole Higgs masses somewhat faster. We thank P. Janot for this
47971 C...improvement. Those who are not able to call the CERN
47972 C...libraries, please use the subroutine SUBHPOLE2.F, which
47973 C...although somewhat slower, gives identical results
47974  
47975       SUBROUTINE PYPOLE(IHIGGS,XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,XMU,
47976      &XMH,XMHP,HM,HMP,AMP,SA,CA,STOP1,STOP2,SBOT1,SBOT2,TANBA,XMG,DT,DB)
47977  
47978 C...Double precision and integer declarations.
47979       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47980       IMPLICIT INTEGER(I-N)
47981  
47982 C...Parameters.
47983       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47984       SAVE /PYDAT1/
47985       INTEGER PYK,PYCHGE,PYCOMP
47986  
47987 C...Local variables.
47988       DIMENSION DELTA(2,2),COUPT(2,2),T(2,2),SSTOP2(2),
47989      &SSBOT2(2),B(2,2),COUPB(2,2),
47990      &HCOUPT(2,2),HCOUPB(2,2),
47991      &ACOUPT(2,2),ACOUPB(2,2),PR(3), POLAR(3)
47992  
47993       DELTA(1,1) = 1D0
47994       DELTA(2,2) = 1D0
47995       DELTA(1,2) = 0D0
47996       DELTA(2,1) = 0D0
47997       V = 174.1D0
47998       XMZ=91.18D0
47999       PI=PARU(1)
48000       RXMT=PYMRUN(6,XMT**2)
48001       CALL PYRGHM(XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,
48002      &XMU,XMH,HM,XMCH,SA,CA,SAB,CAB,TANBA,XMG,DT,DB)
48003  
48004       SINB = TANB/(TANB**2+1D0)**0.5D0
48005       COSB = 1D0/(TANB**2+1D0)**0.5D0
48006       COS2B = SINB**2 - COSB**2
48007       SINBPA = SINB*CA + COSB*SA
48008       COSBPA = COSB*CA - SINB*SA
48009       RMBOT = PYMRUN(5,XMT**2)
48010       XMQ2 = XMQ**2
48011       XMUR2 = XMUR**2
48012       IF(XMUR.LT.0D0) XMUR2=-XMUR2
48013       XMDR2 = XMDR**2
48014       XMST11 = RXMT**2 + XMQ2  - 0.35D0*XMZ**2*COS2B
48015       XMST22 = RXMT**2 + XMUR2 - 0.15D0*XMZ**2*COS2B
48016       IF(XMST11.LT.0D0) GOTO 500
48017       IF(XMST22.LT.0D0) GOTO 500
48018       XMSB11 = RMBOT**2 + XMQ2  + 0.42D0*XMZ**2*COS2B
48019       XMSB22 = RMBOT**2 + XMDR2 + 0.08D0*XMZ**2*COS2B
48020       IF(XMSB11.LT.0D0) GOTO 500
48021       IF(XMSB22.LT.0D0) GOTO 500
48022 C      WMST11 = RXMT**2 + XMQ2
48023 C      WMST22 = RXMT**2 + XMUR2
48024       XMST12 = RXMT*(AT - XMU/TANB)
48025       XMSB12 = RMBOT*(AB - XMU*TANB)
48026  
48027 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48028 C...STOP EIGENVALUES CALCULATION
48029 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48030  
48031       STOP12 = 0.5D0*(XMST11+XMST22) +
48032      &0.5D0*((XMST11+XMST22)**2 -
48033      &4D0*(XMST11*XMST22 - XMST12**2))**0.5D0
48034       STOP22 = 0.5D0*(XMST11+XMST22) -
48035      &0.5D0*((XMST11+XMST22)**2 - 4D0*(XMST11*XMST22 -
48036      &XMST12**2))**0.5D0
48037  
48038       IF(STOP22.LT.0D0) GOTO 500
48039       SSTOP2(1) = STOP12
48040       SSTOP2(2) = STOP22
48041       STOP1 = STOP12**0.5D0
48042       STOP2 = STOP22**0.5D0
48043 C      STOP1W = STOP1
48044 C      STOP2W = STOP2
48045  
48046       IF(XMST12.EQ.0D0) XST11 = 1D0
48047       IF(XMST12.EQ.0D0) XST12 = 0D0
48048       IF(XMST12.EQ.0D0) XST21 = 0D0
48049       IF(XMST12.EQ.0D0) XST22 = 1D0
48050  
48051       IF(XMST12.EQ.0D0) GOTO 110
48052  
48053   100 XST11 = XMST12/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
48054       XST12 = - (XMST11-STOP12)/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
48055       XST21 = XMST12/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
48056       XST22 = - (XMST11-STOP22)/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
48057  
48058   110 T(1,1) = XST11
48059       T(2,2) = XST22
48060       T(1,2) = XST12
48061       T(2,1) = XST21
48062  
48063       SBOT12 = 0.5D0*(XMSB11+XMSB22) +
48064      &0.5D0*((XMSB11+XMSB22)**2 -
48065      &4D0*(XMSB11*XMSB22 - XMSB12**2))**0.5D0
48066       SBOT22 = 0.5D0*(XMSB11+XMSB22) -
48067      &0.5D0*((XMSB11+XMSB22)**2 - 4D0*(XMSB11*XMSB22 -
48068      &XMSB12**2))**0.5D0
48069       IF(SBOT22.LT.0D0) GOTO 500
48070       SBOT1 = SBOT12**0.5D0
48071       SBOT2 = SBOT22**0.5D0
48072  
48073       SSBOT2(1) = SBOT12
48074       SSBOT2(2) = SBOT22
48075  
48076       IF(XMSB12.EQ.0D0) XSB11 = 1D0
48077       IF(XMSB12.EQ.0D0) XSB12 = 0D0
48078       IF(XMSB12.EQ.0D0) XSB21 = 0D0
48079       IF(XMSB12.EQ.0D0) XSB22 = 1D0
48080  
48081       IF(XMSB12.EQ.0D0) GOTO 130
48082  
48083   120 XSB11 = XMSB12/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
48084       XSB12 = - (XMSB11-SBOT12)/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
48085       XSB21 = XMSB12/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
48086       XSB22 = - (XMSB11-SBOT22)/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
48087  
48088   130 B(1,1) = XSB11
48089       B(2,2) = XSB22
48090       B(1,2) = XSB12
48091       B(2,1) = XSB21
48092  
48093  
48094       SINT = 0.2320D0
48095       SQR = DSQRT(2D0)
48096       VP = 174.1D0*SQR
48097  
48098 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48099 C...STARTING OF LIGHT HIGGS
48100 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48101  
48102       IF(IHIGGS.EQ.0) GOTO 490
48103  
48104       DO 150 I = 1,2
48105         DO 140 J = 1,2
48106           COUPT(I,J) =
48107      &    SINT*XMZ**2*2D0*SQR/174.1D0/3D0*SINBPA*(DELTA(I,J) +
48108      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
48109      &    -RXMT**2/174.1D0**2*VP/SINB*CA*DELTA(I,J)
48110      &    -RXMT/VP/SINB*(AT*CA + XMU*SA)*(T(1,I)*T(2,J) +
48111      &    T(1,J)*T(2,I))
48112   140   CONTINUE
48113   150 CONTINUE
48114  
48115  
48116       DO 170 I = 1,2
48117         DO 160 J = 1,2
48118           COUPB(I,J) =
48119      &    -SINT*XMZ**2*2D0*SQR/174.1D0/6D0*SINBPA*(DELTA(I,J) +
48120      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
48121      &    +RMBOT**2/174.1D0**2*VP/COSB*SA*DELTA(I,J)
48122      &    +RMBOT/VP/COSB*(AB*SA + XMU*CA)*(B(1,I)*B(2,J) +
48123      &    B(1,J)*B(2,I))
48124   160   CONTINUE
48125   170 CONTINUE
48126  
48127       PRUN = XMH
48128       EPS = 1D-4*PRUN
48129       ITER = 0
48130   180 ITER = ITER + 1
48131       DO 230  I3 = 1,3
48132  
48133         PR(I3)=PRUN+(I3-2)*EPS/2
48134         P2=PR(I3)**2
48135         POLT = 0D0
48136         DO 200 I = 1,2
48137           DO 190 J = 1,2
48138             POLT = POLT + COUPT(I,J)**2*3D0*
48139      &      PYFINT(P2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
48140   190     CONTINUE
48141   200   CONTINUE
48142  
48143         POLB = 0D0
48144         DO 220 I = 1,2
48145           DO 210 J = 1,2
48146             POLB = POLB + COUPB(I,J)**2*3D0*
48147      &      PYFINT(P2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
48148   210     CONTINUE
48149   220   CONTINUE
48150 C        RXMT2 = RXMT**2
48151         XMT2=XMT**2
48152  
48153         POLTT =
48154      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
48155      &  CA**2/SINB**2 *
48156      &  (-2D0*XMT**2+0.5D0*P2)*
48157      &  PYFINT(P2,XMT2,XMT2)
48158  
48159         POL = POLT + POLB + POLTT
48160         POLAR(I3) = P2 - XMH**2 - POL
48161   230 CONTINUE
48162       DERIV = (POLAR(3)-POLAR(1))/EPS
48163       DRUN = - POLAR(2)/DERIV
48164       PRUN = PRUN + DRUN
48165       P2 = PRUN**2
48166       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 240
48167       GOTO 180
48168   240 CONTINUE
48169  
48170       XMHP = DSQRT(P2)
48171  
48172 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48173 C...END OF LIGHT HIGGS
48174 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48175  
48176   250 IF(IHIGGS.EQ.1) GOTO 490
48177  
48178 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48179 C... STARTING OF HEAVY HIGGS
48180 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48181  
48182       DO 270 I = 1,2
48183         DO 260 J = 1,2
48184           HCOUPT(I,J) =
48185      &    -SINT*XMZ**2*2D0*SQR/174.1D0/3D0*COSBPA*(DELTA(I,J) +
48186      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
48187      &    -RXMT**2/174.1D0**2*VP/SINB*SA*DELTA(I,J)
48188      &    -RXMT/VP/SINB*(AT*SA - XMU*CA)*(T(1,I)*T(2,J) +
48189      &    T(1,J)*T(2,I))
48190   260   CONTINUE
48191   270 CONTINUE
48192  
48193       DO 290 I = 1,2
48194         DO 280 J = 1,2
48195           HCOUPB(I,J) =
48196      &    SINT*XMZ**2*2D0*SQR/174.1D0/6D0*COSBPA*(DELTA(I,J) +
48197      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
48198      &    -RMBOT**2/174.1D0**2*VP/COSB*CA*DELTA(I,J)
48199      &    -RMBOT/VP/COSB*(AB*CA - XMU*SA)*(B(1,I)*B(2,J) +
48200      &    B(1,J)*B(2,I))
48201           HCOUPB(I,J)=0D0
48202   280   CONTINUE
48203   290 CONTINUE
48204  
48205       PRUN = HM
48206       EPS = 1D-4*PRUN
48207       ITER = 0
48208   300 ITER = ITER + 1
48209       DO 350 I3 = 1,3
48210         PR(I3)=PRUN+(I3-2)*EPS/2
48211         HP2=PR(I3)**2
48212  
48213         HPOLT = 0D0
48214         DO 320 I = 1,2
48215           DO 310 J = 1,2
48216             HPOLT = HPOLT + HCOUPT(I,J)**2*3D0*
48217      &      PYFINT(HP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
48218   310     CONTINUE
48219   320   CONTINUE
48220  
48221         HPOLB = 0D0
48222         DO 340 I = 1,2
48223           DO 330 J = 1,2
48224             HPOLB = HPOLB + HCOUPB(I,J)**2*3D0*
48225      &      PYFINT(HP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
48226   330     CONTINUE
48227   340   CONTINUE
48228  
48229 C        RXMT2 = RXMT**2
48230         XMT2  = XMT**2
48231  
48232         HPOLTT =
48233      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
48234      &  SA**2/SINB**2 *
48235      &  (-2D0*XMT**2+0.5D0*HP2)*
48236      &  PYFINT(HP2,XMT2,XMT2)
48237  
48238         HPOL = HPOLT + HPOLB + HPOLTT
48239         POLAR(I3) =HP2-HM**2-HPOL
48240   350 CONTINUE
48241       DERIV = (POLAR(3)-POLAR(1))/EPS
48242       DRUN = - POLAR(2)/DERIV
48243       PRUN = PRUN + DRUN
48244       HP2 = PRUN**2
48245       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 360
48246       GOTO 300
48247   360 CONTINUE
48248  
48249  
48250   370 CONTINUE
48251       HMP = HP2**0.5D0
48252  
48253 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48254 C... END OF HEAVY HIGGS
48255 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48256  
48257       IF(IHIGGS.EQ.2) GOTO 490
48258  
48259 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48260 C...BEGINNING OF PSEUDOSCALAR HIGGS
48261 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48262  
48263       DO 390 I = 1,2
48264         DO 380 J = 1,2
48265           ACOUPT(I,J) =
48266      &    -RXMT/VP/SINB*(AT*COSB + XMU*SINB)*
48267      &    (T(1,I)*T(2,J) -T(1,J)*T(2,I))
48268   380   CONTINUE
48269   390 CONTINUE
48270       DO 410 I = 1,2
48271         DO 400 J = 1,2
48272           ACOUPB(I,J) =
48273      &    RMBOT/VP/COSB*(AB*SINB + XMU*COSB)*
48274      &    (B(1,I)*B(2,J) -B(1,J)*B(2,I))
48275   400   CONTINUE
48276   410 CONTINUE
48277  
48278       PRUN = XMA
48279       EPS = 1D-4*PRUN
48280       ITER = 0
48281   420 ITER = ITER + 1
48282       DO 470 I3 = 1,3
48283         PR(I3)=PRUN+(I3-2)*EPS/2
48284         AP2=PR(I3)**2
48285         APOLT = 0D0
48286         DO 440 I = 1,2
48287           DO 430 J = 1,2
48288             APOLT = APOLT + ACOUPT(I,J)**2*3D0*
48289      &      PYFINT(AP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
48290   430     CONTINUE
48291   440   CONTINUE
48292         APOLB = 0D0
48293         DO 460 I = 1,2
48294           DO 450 J = 1,2
48295             APOLB = APOLB + ACOUPB(I,J)**2*3D0*
48296      &      PYFINT(AP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
48297   450     CONTINUE
48298   460   CONTINUE
48299 C        RXMT2 = RXMT**2
48300         XMT2=XMT**2
48301         APOLTT =
48302      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
48303      &  COSB**2/SINB**2 *
48304      &  (-0.5D0*AP2)*
48305      &  PYFINT(AP2,XMT2,XMT2)
48306         APOL = APOLT + APOLB + APOLTT
48307         POLAR(I3) = AP2 - XMA**2 -APOL
48308   470 CONTINUE
48309       DERIV = (POLAR(3)-POLAR(1))/EPS
48310       DRUN = - POLAR(2)/DERIV
48311       PRUN = PRUN + DRUN
48312       AP2 = PRUN**2
48313       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 480
48314       GOTO 420
48315   480 CONTINUE
48316  
48317       AMP = DSQRT(AP2)
48318  
48319 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48320 C...END OF PSEUDOSCALAR HIGGS
48321 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48322  
48323       IF(IHIGGS.EQ.3) GOTO 490
48324  
48325   490 CONTINUE
48326       RETURN
48327   500 CONTINUE
48328       WRITE(MSTU(11),*) ' EXITING IN PYPOLE '
48329       WRITE(MSTU(11),*) ' XMST11,XMST22 = ',XMST11,XMST22
48330       WRITE(MSTU(11),*) ' XMSB11,XMSB22 = ',XMSB11,XMSB22
48331       WRITE(MSTU(11),*) ' STOP22,SBOT22 = ',STOP22,SBOT22
48332       CALL PYSTOP(107)
48333       END
48334  
48335 C*********************************************************************
48336  
48337 C...PYRGHM
48338 C...Auxiliary to PYPOLE.
48339  
48340       SUBROUTINE PYRGHM(MCHI,MA,TANB,MQ,MUR,MD,MTOP,AU,AD,MU,
48341      *    MHP,HMP,MCH,SA,CA,SAB,CAB,TANBA,MGLU,DELTAMT,DELTAMB)
48342       IMPLICIT DOUBLE PRECISION(A-H,L,M,O-Z)
48343       DIMENSION VH(2,2),M2(2,2),M2P(2,2)
48344 C...Parameters.
48345       INTEGER MSTU,MSTJ
48346       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48347       SAVE /PYDAT1/
48348  
48349       MZ = 91.18D0
48350       PI = PARU(1)
48351       V  = 174.1D0
48352       ALPHA1 = 0.0101D0
48353       ALPHA2 = 0.0337D0
48354       ALPHA3Z = 0.12D0
48355       TANBA = TANB
48356       TANBT = TANB
48357 C     MBOTTOM(MTOP) = 3. GEV
48358       MB = PYMRUN(5,MTOP**2)
48359       ALPHA3 = ALPHA3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPHA3Z*
48360      *LOG(MTOP**2/MZ**2))
48361 C     RMTOP= RUNNING TOP QUARK MASS
48362       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
48363       TQ = LOG((MQ**2+MTOP**2)/MTOP**2)
48364       TU = LOG((MUR**2 + MTOP**2)/MTOP**2)
48365       TD = LOG((MD**2 + MTOP**2)/MTOP**2)
48366 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48367 C
48368 C    NEW DEFINITION, TGLU.
48369 C
48370 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48371       TGLU = LOG(MGLU**2/MTOP**2)
48372       SINB = TANB/DSQRT(1D0 + TANB**2)
48373       COSB = SINB/TANB
48374       IF(MA.GT.MTOP)
48375      *TANBA = TANB*(1D0-3D0/32D0/PI**2*
48376      *(RMTOP**2/V**2/SINB**2-MB**2/V**2/COSB**2)*
48377      *LOG(MA**2/MTOP**2))
48378       IF(MA.LT.MTOP.OR.MA.EQ.MTOP) TANBT = TANBA
48379       SINB = TANBT/SQRT(1D0 + TANBT**2)
48380       COSB = 1D0/DSQRT(1D0 + TANBT**2)
48381       G1 = SQRT(ALPHA1*4D0*PI)
48382       G2 = SQRT(ALPHA2*4D0*PI)
48383       G3 = SQRT(ALPHA3*4D0*PI)
48384       HU = RMTOP/V/SINB
48385       HD =  MB/V/COSB
48386       CALL PYGFXX(MA,TANBA,MQ,MUR,MD,MTOP,AU,AD,MU,MGLU,VH,STOP1,STOP2,
48387      *SBOT1,SBOT2,DELTAMT,DELTAMB)
48388       IF(MQ.GT.MUR) TP = TQ - TU
48389       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TP = TU - TQ
48390       IF(MQ.GT.MUR) TDP = TU
48391       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TDP = TQ
48392       IF(MQ.GT.MD) TPD = TQ - TD
48393       IF(MQ.LT.MD.OR.MQ.EQ.MD) TPD = TD - TQ
48394       IF(MQ.GT.MD) TDPD = TD
48395       IF(MQ.LT.MD.OR.MQ.EQ.MD) TDPD = TQ
48396  
48397       IF(MQ.GT.MD) DLAMBDA1 = 6D0/96D0/PI**2*G1**2*HD**2*TPD
48398       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA1 = 3D0/32D0/PI**2*
48399      * HD**2*(G1**2/3D0+G2**2)*TPD
48400  
48401       IF(MQ.GT.MUR) DLAMBDA2 =12D0/96D0/PI**2*G1**2*HU**2*TP
48402       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA2 = 3D0/32D0/PI**2*
48403      * HU**2*(-G1**2/3D0+G2**2)*TP
48404  
48405 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48406 C
48407 C  DLAMBDAP1 AND DLAMBDAP2 ARE THE NEW LOG CORRECTIONS DUE TO
48408 C  THE PRESENCE OF THE GLUINO MASS. THEY ARE IN GENERAL VERY SMALL,
48409 C  AND ONLY PRESENT IF THERE IS A HIERARCHY OF MASSES BETWEEN THE
48410 C  TWO STOPS.
48411 C
48412 C
48413 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48414  
48415       DLAMBDAP2 = 0D0
48416       IF(MGLU.LT.MUR.OR.MGLU.LT.MQ) THEN
48417        IF(MQ.GT.MUR.AND.MGLU.GT.MUR) THEN
48418         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TGLU**2)
48419        ENDIF
48420  
48421        IF(MQ.GT.MUR.AND.MGLU.LT.MUR) THEN
48422         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
48423        ENDIF
48424  
48425        IF(MQ.GT.MUR.AND.MGLU.EQ.MUR) THEN
48426         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
48427        ENDIF
48428  
48429        IF(MUR.GT.MQ.AND.MGLU.GT.MQ) THEN
48430         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TGLU**2)
48431        ENDIF
48432  
48433        IF(MUR.GT.MQ.AND.MGLU.LT.MQ) THEN
48434         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
48435        ENDIF
48436  
48437        IF(MUR.GT.MQ.AND.MGLU.EQ.MQ) THEN
48438         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
48439        ENDIF
48440       ENDIF
48441       DLAMBDA3 = 0D0
48442       DLAMBDA4 = 0D0
48443       IF(MQ.GT.MD) DLAMBDA3 = -1D0/32D0/PI**2*G1**2*HD**2*TPD
48444       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA3 = 3D0/64D0/PI**2*HD**2*
48445      *(G2**2-G1**2/3D0)*TPD
48446       IF(MQ.GT.MUR) DLAMBDA3 = DLAMBDA3 -
48447      *1D0/16D0/PI**2*G1**2*HU**2*TP
48448       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA3 = DLAMBDA3 +
48449      * 3D0/64D0/PI**2*HU**2*(G2**2+G1**2/3D0)*TP
48450       IF(MQ.LT.MUR) DLAMBDA4 = -3D0/32D0/PI**2*G2**2*HU**2*TP
48451       IF(MQ.LT.MD) DLAMBDA4 = DLAMBDA4 - 3D0/32D0/PI**2*G2**2*
48452      *HD**2*TPD
48453       LAMBDA1 = ((G1**2 + G2**2)/4D0)*
48454      * (1D0-3D0*HD**2*(TPD + TDPD)/8D0/PI**2)
48455      *+(3D0*HD**4D0/16D0/PI**2) *TPD*(1D0
48456      *+ (3D0*HD**2/2D0 + HU**2/2D0
48457      *- 8D0*G3**2) * (TPD + 2D0*TDPD)/16D0/PI**2)
48458      *+(3D0*HD**4D0/8D0/PI**2) *TDPD*(1D0  + (3D0*HD**2/2D0 + HU**2/2D0
48459      *- 8D0*G3**2) * TDPD/16D0/PI**2) + DLAMBDA1
48460       LAMBDA2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU**2*
48461      *(TP + TDP)/8D0/PI**2)
48462      *+(3D0*HU**4D0/16D0/PI**2) *TP*(1D0
48463      *+ (3D0*HU**2/2D0 + HD**2/2D0
48464      *- 8D0*G3**2) * (TP + 2D0*TDP)/16D0/PI**2)
48465      *+(3D0*HU**4D0/8D0/PI**2) *TDP*(1D0 + (3D0*HU**2/2D0 + HD**2/2D0
48466      *- 8D0*G3**2) * TDP/16D0/PI**2) + DLAMBDA2 + DLAMBDAP2
48467       LAMBDA3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
48468      *(HU**2)*(TP + TDP)/16D0/PI**2 -3D0*
48469      *(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA3
48470       LAMBDA4 = (- G2**2/2D0)*(1D0
48471      *-3D0*(HU**2)*(TP + TDP)/16D0/PI**2
48472      *-3D0*(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA4
48473  
48474       LAMBDA5 = 0D0
48475       LAMBDA6 = 0D0
48476       LAMBDA7 = 0D0
48477  
48478       M2(1,1) = 2D0*V**2*(LAMBDA1*COSB**2+2D0*LAMBDA6*
48479      *COSB*SINB + LAMBDA5*SINB**2) + MA**2*SINB**2
48480  
48481       M2(2,2) = 2D0*V**2*(LAMBDA5*COSB**2+2D0*LAMBDA7*
48482      *COSB*SINB + LAMBDA2*SINB**2) + MA**2*COSB**2
48483       M2(1,2) = 2D0*V**2*(LAMBDA6*COSB**2+(LAMBDA3+LAMBDA4)*
48484      *COSB*SINB + LAMBDA7*SINB**2) - MA**2*SINB*COSB
48485  
48486       M2(2,1) = M2(1,2)
48487 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48488 CCC  THIS IS THE CONTRIBUTION FROM LIGHT CHARGINOS/NEUTRALINOS
48489 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48490  
48491       MSSUSY=DSQRT(.5D0*(MQ**2+MUR**2)+MTOP**2)
48492  
48493       IF(MCHI.GT.MSSUSY) GOTO 100
48494       IF(MCHI.LT.MTOP) MCHI=MTOP
48495  
48496       TCHAR=LOG(MSSUSY**2/MCHI**2)
48497  
48498       DELTAL12=(9D0/64D0/PI**2*G2**4+5D0/192D0/PI**2*G1**4)*TCHAR
48499       DELTAL3P4=(3D0/64D0/PI**2*G2**4+7D0/192D0/PI**2*G1**4
48500      *+4D0/32D0/PI**2*G1**2*G2**2)*TCHAR
48501  
48502       DELTAM112=2D0*DELTAL12*V**2*COSB**2
48503       DELTAM222=2D0*DELTAL12*V**2*SINB**2
48504       DELTAM122=2D0*DELTAL3P4*V**2*SINB*COSB
48505  
48506       M2(1,1)=M2(1,1)+DELTAM112
48507       M2(2,2)=M2(2,2)+DELTAM222
48508       M2(1,2)=M2(1,2)+DELTAM122
48509       M2(2,1)=M2(2,1)+DELTAM122
48510  
48511   100 CONTINUE
48512  
48513 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48514 CCC  END OF CHARGINOS/NEUTRALINOS
48515 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48516  
48517       DO 120 I = 1,2
48518         DO 110 J = 1,2
48519           M2P(I,J) = M2(I,J) + VH(I,J)
48520   110   CONTINUE
48521   120 CONTINUE
48522       TRM2P = M2P(1,1) + M2P(2,2)
48523       DETM2P = M2P(1,1)*M2P(2,2) - M2P(1,2)*M2P(2,1)
48524       MH2P = (TRM2P - DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
48525       HM2P = (TRM2P + DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
48526       HMP = DSQRT(HM2P)
48527       MCH2=MA**2+(LAMBDA5-LAMBDA4)*V**2
48528       MCH=DSQRT(MCH2)
48529       IF(MH2P.LT.0.) GOTO 130
48530       MHP = SQRT(MH2P)
48531       SIN2ALPHA = 2D0*M2P(1,2)/SQRT(TRM2P**2-4D0*DETM2P)
48532       COS2ALPHA = (M2P(1,1)-M2P(2,2))/SQRT(TRM2P**2-4D0*DETM2P)
48533       IF(COS2ALPHA.GE.0.) THEN
48534         ALPHA = ASIN(SIN2ALPHA)/2D0
48535       ELSE
48536         ALPHA = -PI/2D0-ASIN(SIN2ALPHA)/2D0
48537       ENDIF
48538       SA = SIN(ALPHA)
48539       CA = COS(ALPHA)
48540 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48541 C
48542 C        HERE THE VALUES OF SAB AND CAB ARE DEFINED, IN ORDER
48543 C        TO DEFINE THE NEW COUPLINGS OF THE LIGHTEST AND
48544 C        HEAVY CP-EVEN HIGGS TO THE BOTTOM QUARK.
48545 C
48546 C
48547 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48548       SAB = SA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0+CA/SA/TANB))
48549       CAB = CA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0-SA/CA/TANB))
48550   130 CONTINUE
48551       RETURN
48552       END
48553  
48554 C*********************************************************************
48555  
48556 C...PYGFXX
48557 C...Auxiliary to PYRGHM.
48558  
48559       SUBROUTINE PYGFXX(MA,TANB,MQ,MUR,MD,MTOP,AT,AB,XMU,XMGL,VH,
48560      *  STOP1,STOP2,SBOT1,SBOT2,DELTAMT,DELTAMB)
48561       IMPLICIT DOUBLE PRECISION(A-H,M,O-Z)
48562       DIMENSION VH(2,2),VH3T(2,2),VH3B(2,2),AL(2,2)
48563 C...Commonblocks.
48564       INTEGER MSTU,MSTJ,KCHG
48565       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48566       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48567       SAVE /PYDAT1/,/PYDAT2/
48568  
48569       G(X,Y) = 2.D0 - (X+Y)/(X-Y)*DLOG(X/Y)
48570  
48571       T(X,Y,Z) = (X**2*Y**2*LOG(X**2/Y**2) + X**2*Z**2*LOG(Z**2/X**2)
48572      * + Y**2*Z**2*LOG(Y**2/Z**2))/((X**2-Y**2)*(Y**2-Z**2)*(X**2-Z**2))
48573  
48574       IF(DABS(XMU).LT.0.000001D0) XMU = 0.000001D0
48575       MQ2 = MQ**2
48576       MUR2 = MUR**2
48577       MD2 = MD**2
48578       TANBA = TANB
48579       SINBA = TANBA/DSQRT(TANBA**2+1D0)
48580       COSBA = SINBA/TANBA
48581  
48582       SINB = TANB/DSQRT(TANB**2+1D0)
48583       COSB = SINB/TANB
48584  
48585       PI = PARU(1)
48586       MZ = PMAS(23,1)
48587       MW = PMAS(24,1)
48588       SW = 1D0-MW**2/MZ**2
48589       V  = 174.1D0
48590  
48591       ALPHA3 = 0.12D0/(1D0+23/12D0/PI*0.12D0*LOG(MTOP**2/MZ**2))
48592       G2 = DSQRT(0.0336D0*4D0*PI)
48593       G1 = DSQRT(0.0101D0*4D0*PI)
48594  
48595       IF(MQ.GT.MUR) MST = MQ
48596       IF(MUR.GT.MQ.OR.MUR.EQ.MQ) MST = MUR
48597  
48598       MSUSYT = DSQRT(MST**2  + MTOP**2)
48599  
48600       IF(MQ.GT.MD) MSB = MQ
48601       IF(MD.GT.MQ.OR.MD.EQ.MQ) MSB = MD
48602  
48603       MB = PYMRUN(5,MSB**2)
48604       MSUSYB = DSQRT(MSB**2 + MB**2)
48605       TT = LOG(MSUSYT**2/MTOP**2)
48606       TB = LOG(MSUSYB**2/MTOP**2)
48607  
48608       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
48609       HT = RMTOP/(V*SINB)
48610       HTST = RMTOP/V
48611       HB = MB/V/COSB
48612       G32 = ALPHA3*4D0*PI
48613       BT2 = -(8D0*G32 - 9D0*HT**2/2D0 - HB**2/2D0)/(4D0*PI)**2
48614       BB2 = -(8D0*G32 - 9D0*HB**2/2D0 - HT**2/2D0)/(4D0*PI)**2
48615       AL2 = 3D0/8D0/PI**2*HT**2
48616 C      BT2ST = -(8.*G32 - 9.*HTST**2/2.)/(4.*PI)**2
48617 C      ALST = 3./8./PI**2*HTST**2
48618       AL1 = 3D0/8D0/PI**2*HB**2
48619  
48620       AL(1,1) = AL1
48621       AL(1,2) = (AL2+AL1)/2D0
48622       AL(2,1) = (AL2+AL1)/2D0
48623       AL(2,2) = AL2
48624  
48625       IF(MA.GT.MTOP) THEN
48626         VI = V*(1D0 + 3D0/32D0/PI**2*HTST**2*
48627      *        LOG(MTOP**2/MA**2))
48628         H1I = VI* COSBA
48629         H2I = VI*SINBA
48630         H1T = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYT**2))**.25D0
48631         H2T = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYT**2))**.25D0
48632         H1B = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYB**2))**.25D0
48633         H2B = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYB**2))**.25D0
48634       ELSE
48635         VI = V
48636         H1I = VI*COSB
48637         H2I = VI*SINB
48638         H1T=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYT**2))**.25D0
48639         H2T=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYT**2))**.25D0
48640         H1B=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYB**2))**.25D0
48641         H2B=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYB**2))**.25D0
48642       ENDIF
48643  
48644       TANBST = H2T/H1T
48645       SINBT = TANBST/DSQRT(1D0+TANBST**2)
48646  
48647       TANBSB = H2B/H1B
48648       SINBB = TANBSB/DSQRT(1D0+TANBSB**2)
48649       COSBB = SINBB/TANBSB
48650  
48651       DELTAMT = 0D0
48652       DELTAMB = 0D0
48653  
48654       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
48655       MTOP2 = DSQRT(MTOP4)
48656       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
48657      * /(1D0+DELTAMB)**4
48658       MBOT2 = DSQRT(MBOT4)
48659  
48660       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
48661      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
48662      *  +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
48663      *  MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
48664       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
48665      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
48666      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
48667      *  MQ2 - MUR2)**2*0.25D0
48668      *  + MTOP2*(AT-XMU/TANBST)**2)
48669       IF(STOP22.LT.0.) GOTO 120
48670       SBOT12 = (MQ2 + MD2)*.5D0
48671      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
48672      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
48673      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
48674       SBOT22 = (MQ2 + MD2)*.5D0
48675      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
48676      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
48677      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
48678       IF(SBOT22.LT.0.) SBOT22 = 10000D0
48679  
48680       STOP1 = DSQRT(STOP12)
48681       STOP2 = DSQRT(STOP22)
48682       SBOT1 = DSQRT(SBOT12)
48683       SBOT2 = DSQRT(SBOT22)
48684  
48685 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48686 C
48687 C     HERE IS THE DEFINITION OF DELTAMB AND DELTAMT, WHICH
48688 C     ARE THE VERTEX CORRECTIONS TO THE BOTTOM AND TOP QUARK
48689 C     MASS, KEEPING THE DOMINANT QCD AND TOP YUKAWA COUPLING
48690 C     INDUCED CORRECTIONS.
48691 C
48692 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48693  
48694       X=SBOT1
48695       Y=SBOT2
48696       Z=XMGL
48697       IF(X.EQ.Y) X = X - 0.00001D0
48698       IF(X.EQ.Z) X = X - 0.00002D0
48699       IF(Y.EQ.Z) Y = Y - 0.00003D0
48700  
48701       T1=T(X,Y,Z)
48702       X=STOP1
48703       Y=STOP2
48704       Z=XMU
48705       IF(X.EQ.Y) X = X - 0.00001D0
48706       IF(X.EQ.Z) X = X - 0.00002D0
48707       IF(Y.EQ.Z) Y = Y - 0.00003D0
48708       T2=T(X,Y,Z)
48709       DELTAMB = -2*ALPHA3/3D0/PI*XMGL*(AB-XMU*TANB)*T1
48710      *  + HT**2/(4D0*PI)**2*(AT-XMU/TANB)*XMU*TANB*T2
48711       X=STOP1
48712       Y=STOP2
48713       Z=XMGL
48714       IF(X.EQ.Y) X = X - 0.00001D0
48715       IF(X.EQ.Z) X = X - 0.00002D0
48716       IF(Y.EQ.Z) Y = Y - 0.00003D0
48717       T3=T(X,Y,Z)
48718       DELTAMT = -2D0*ALPHA3/3D0/PI*(AT-XMU/TANB)*XMGL*T3
48719  
48720 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48721 C
48722 C   HERE THE NEW VALUES OF THE TOP AND BOTTOM QUARK MASSES AT
48723 C   THE SCALE MS ARE DEFINED, TO BE USED IN THE EFFECTIVE
48724 C   POTENTIAL APPROXIMATION. THEY ARE JUST THE OLD ONES, BUT
48725 C   INCLUDING THE FINITE CORRECTIONS DELTAMT AND DELTAMB.
48726 C   THE DELTAMB CORRECTIONS CAN BECOME LARGE AND ARE RESUMMED
48727 C   TO ALL ORDERS, AS SUGGESTED IN THE TWO RECENT WORKS BY M. CARENA,
48728 C   S. MRENNA AND C.E.M. WAGNER, AS WELL AS IN THE WORK BY M. CARENA,
48729 C   D. GARCIA, U. NIERSTE AND C.E.M. WAGNER, TO APPEAR. THE TOP
48730 C   QUARK MASS CORRECTIONS ARE SMALL AND ARE KEPT IN THE PERTURBATIVE
48731 C   FORMULATION.  THE FUNCTION T(X,Y,Z) IS NECESSARY FOR THE
48732 C   CALCULATION. THE ENTRIES ARE MASSES AND NOT THEIR SQUARES !
48733 C
48734 C
48735 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48736  
48737       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
48738       MTOP2 = DSQRT(MTOP4)
48739       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
48740      * /(1D0+DELTAMB)**4
48741       MBOT2 = DSQRT(MBOT4)
48742  
48743       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
48744      *   +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
48745      *   +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
48746      *   MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
48747       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
48748      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
48749      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
48750      *  MQ2 - MUR2)**2*0.25D0
48751      *  + MTOP2*(AT-XMU/TANBST)**2)
48752  
48753       IF(STOP22.LT.0.) GOTO 120
48754       SBOT12 = (MQ2 + MD2)*.5D0
48755      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
48756      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
48757      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
48758       SBOT22 = (MQ2 + MD2)*.5D0
48759      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
48760      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
48761      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
48762       IF(SBOT22.LT.0.) GOTO 120
48763  
48764  
48765       STOP1 = DSQRT(STOP12)
48766       STOP2 = DSQRT(STOP22)
48767       SBOT1 = DSQRT(SBOT12)
48768       SBOT2 = DSQRT(SBOT22)
48769  
48770 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48771 CCC   D-TERMS
48772 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48773       STW=SW
48774  
48775       F1T=(MQ2-MUR2)/(STOP12-STOP22)*(.5D0-4D0/3D0*STW)*
48776      *         LOG(STOP1/STOP2)
48777      *        +(.5D0-2D0/3D0*STW)*LOG(STOP1*STOP2/(MQ2+MTOP2))
48778      *        + 2D0/3D0*STW*LOG(STOP1*STOP2/(MUR2+MTOP2))
48779  
48780       F1B=(MQ2-MD2)/(SBOT12-SBOT22)*(-.5D0+2D0/3D0*STW)*
48781      *        LOG(SBOT1/SBOT2)
48782      *        +(-.5D0+1D0/3D0*STW)*LOG(SBOT1*SBOT2/(MQ2+MBOT2))
48783      *        - 1D0/3D0*STW*LOG(SBOT1*SBOT2/(MD2+MBOT2))
48784  
48785       F2T=DSQRT(MTOP2)*(AT-XMU/TANBST)/(STOP12-STOP22)*
48786      *         (-.5D0*LOG(STOP12/STOP22)
48787      *        +(4D0/3D0*STW-.5D0)*(MQ2-MUR2)/(STOP12-STOP22)*
48788      *         G(STOP12,STOP22))
48789  
48790       F2B=DSQRT(MBOT2)*(AB-XMU*TANBSB)/(SBOT12-SBOT22)*
48791      *         (.5D0*LOG(SBOT12/SBOT22)
48792      *        +(-2D0/3D0*STW+.5D0)*(MQ2-MD2)/(SBOT12-SBOT22)*
48793      *        G(SBOT12,SBOT22))
48794  
48795       VH3B(1,1) = MBOT4/(COSBB**2)*(LOG(SBOT1**2*SBOT2**2/
48796      *  (MQ2+MBOT2)/(MD2+MBOT2))
48797      *  + 2D0*(AB*(AB-XMU*TANBSB)/(SBOT1**2-SBOT2**2))*
48798      *  LOG(SBOT1**2/SBOT2**2)) +
48799      *  MBOT4/(COSBB**2)*(AB*(AB-XMU*TANBSB)/
48800      *  (SBOT1**2-SBOT2**2))**2*G(SBOT12,SBOT22)
48801  
48802       VH3T(1,1) =
48803      *  MTOP4/(SINBT**2)*(XMU*(-AT+XMU/TANBST)/(STOP1**2
48804      * -STOP2**2))**2*G(STOP12,STOP22)
48805  
48806       VH3B(1,1)=VH3B(1,1)+
48807      *    MZ**2*(2*MBOT2*F1B-DSQRT(MBOT2)*AB*F2B)
48808  
48809       VH3T(1,1) = VH3T(1,1) +
48810      *  MZ**2*(DSQRT(MTOP2)*XMU/TANBST*F2T)
48811  
48812       VH3T(2,2) = MTOP4/(SINBT**2)*(LOG(STOP1**2*STOP2**2/
48813      *  (MQ2+MTOP2)/(MUR2+MTOP2))
48814      *  + 2D0*(AT*(AT-XMU/TANBST)/(STOP1**2-STOP2**2))*
48815      *  LOG(STOP1**2/STOP2**2)) +
48816      *  MTOP4/(SINBT**2)*(AT*(AT-XMU/TANBST)/
48817      *  (STOP1**2-STOP2**2))**2*G(STOP12,STOP22)
48818  
48819       VH3B(2,2) =
48820      *  MBOT4/(COSBB**2)*(XMU*(-AB+XMU*TANBSB)/(SBOT1**2
48821      * -SBOT2**2))**2*G(SBOT12,SBOT22)
48822  
48823       VH3T(2,2)=VH3T(2,2)+
48824      *    MZ**2*(-2*MTOP2*F1T+DSQRT(MTOP2)*AT*F2T)
48825       VH3B(2,2) = VH3B(2,2) -MZ**2*DSQRT(MBOT2)*XMU*TANBSB*F2B
48826       VH3T(1,2) = -
48827      *   MTOP4/(SINBT**2)*XMU*(AT-XMU/TANBST)/
48828      * (STOP1**2-STOP2**2)*(LOG(STOP1**2/STOP2**2) + AT*
48829      * (AT - XMU/TANBST)/(STOP1**2-STOP2**2)*G(STOP12,STOP22))
48830  
48831       VH3B(1,2) =
48832      * - MBOT4/(COSBB**2)*XMU*(AB-XMU*TANBSB)/
48833      * (SBOT1**2-SBOT2**2)*(LOG(SBOT1**2/SBOT2**2) + AB*
48834      * (AB - XMU*TANBSB)/(SBOT1**2-SBOT2**2)*G(SBOT12,SBOT22))
48835  
48836  
48837       VH3T(1,2)=VH3T(1,2) +
48838      *MZ**2*(MTOP2/TANBST*F1T-DSQRT(MTOP2)*(AT/TANBST+XMU)/2D0*F2T)
48839  
48840       VH3B(1,2)=VH3B(1,2) +
48841      *MZ**2*(-MBOT2*TANBSB*F1B+DSQRT(MBOT2)*(AB*TANBSB+XMU)/2D0*F2B)
48842  
48843       VH3T(2,1) = VH3T(1,2)
48844       VH3B(2,1) = VH3B(1,2)
48845  
48846 C      TQ = LOG((MQ2 + MTOP2)/MTOP2)
48847 C      TU = LOG((MUR2+MTOP2)/MTOP2)
48848 C      TQD = LOG((MQ2 + MB**2)/MB**2)
48849 C      TD = LOG((MD2+MB**2)/MB**2)
48850  
48851       DO 110 I = 1,2
48852         DO 100 J = 1,2
48853           VH(I,J) =
48854      *   6D0/(8D0*PI**2*(H1T**2+H2T**2))
48855      *   *VH3T(I,J)*0.5D0*(1D0-AL(I,J)*TT/2D0) +
48856      *   6D0/(8D0*PI**2*(H1B**2+H2B**2))
48857      *   *VH3B(I,J)*0.5D0*(1D0-AL(I,J)*TB/2D0)
48858   100   CONTINUE
48859   110 CONTINUE
48860  
48861       GOTO 150
48862   120 DO 140 I =1,2
48863         DO 130 J = 1,2
48864           VH(I,J) = -1D15
48865   130   CONTINUE
48866   140 CONTINUE
48867  
48868  
48869   150 RETURN
48870       END
48871  
48872  
48873  
48874  
48875  
48876 C*********************************************************************
48877  
48878 C...PYFINT
48879 C...Auxiliary routine to PYPOLE for SUSY Higgs calculations.
48880  
48881       FUNCTION PYFINT(A,B,C)
48882  
48883 C...Double precision and integer declarations.
48884       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48885       IMPLICIT INTEGER(I-N)
48886       INTEGER PYK,PYCHGE,PYCOMP
48887 C...Commonblock.
48888       COMMON/PYINTS/XXM(20)
48889       SAVE/PYINTS/
48890  
48891 C...Local variables.
48892       EXTERNAL PYFISB
48893       DOUBLE PRECISION PYFISB
48894  
48895       XXM(1)=A
48896       XXM(2)=B
48897       XXM(3)=C
48898       XLO=0D0
48899       XHI=1D0
48900       PYFINT  = PYGAUS(PYFISB,XLO,XHI,1D-3)
48901  
48902       RETURN
48903       END
48904  
48905 C*********************************************************************
48906  
48907 C...PYFISB
48908 C...Auxiliary routine to PYFINT for SUSY Higgs calculations.
48909  
48910       FUNCTION PYFISB(X)
48911  
48912 C...Double precision and integer declarations.
48913       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48914       IMPLICIT INTEGER(I-N)
48915       INTEGER PYK,PYCHGE,PYCOMP
48916 C...Commonblock.
48917       COMMON/PYINTS/XXM(20)
48918       SAVE/PYINTS/
48919  
48920       PYFISB = LOG(ABS(X*XXM(2)+(1-X)*XXM(3)-X*(1-X)*XXM(1))/
48921      &(X*(XXM(2)-XXM(3))+XXM(3)))
48922  
48923       RETURN
48924       END
48925  
48926 C*********************************************************************
48927  
48928 C...PYSFDC
48929 C...Calculates decays of sfermions.
48930  
48931       SUBROUTINE PYSFDC(KFIN,XLAM,IDLAM,IKNT)
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...Parameter statement to help give large particle numbers.
48938       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
48939      &KEXCIT=4000000,KDIMEN=5000000)
48940 C...Commonblocks.
48941       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48942       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48943       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
48944       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
48945      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
48946       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
48947  
48948 C...Local variables.
48949       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2)
48950       COMPLEX*16 CAL,CAR,CBL,CBR,CALP,CARP,CBLP,CBRP,CA,CB
48951       INTEGER KFIN,KCIN
48952       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,XMZ,AXMJ
48953       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
48954       DOUBLE PRECISION PYLAMF,XL
48955       DOUBLE PRECISION TANW,XW,AEM,C1,AS
48956       DOUBLE PRECISION AL,AR,BL,BR
48957       DOUBLE PRECISION CH1,CH2,CH3,CH4
48958       DOUBLE PRECISION XMBOT,XMTOP
48959       DOUBLE PRECISION XLAM(0:400)
48960       INTEGER IDLAM(400,3)
48961       INTEGER LKNT,IX,ILR,IDU,J,I,IKNT,IFL,II
48962       DOUBLE PRECISION SR2
48963       DOUBLE PRECISION CBETA,SBETA
48964       DOUBLE PRECISION CW
48965       DOUBLE PRECISION BETA,ALFA,XMU,AT,AB,ATRIT,ATRIB,ATRIL
48966       DOUBLE PRECISION COSA,SINA,TANB
48967       DOUBLE PRECISION PYALEM,PI,PYALPS,EI
48968       DOUBLE PRECISION GHRR,GHLL,GHLR,XMB,BLR
48969       INTEGER IG,KF1,KF2
48970       INTEGER IGG(4),KFNCHI(4),KFCCHI(2)
48971       DATA IGG/23,25,35,36/
48972       DATA PI/3.141592654D0/
48973       DATA SR2/1.4142136D0/
48974       DATA KFNCHI/1000022,1000023,1000025,1000035/
48975       DATA KFCCHI/1000024,1000037/
48976  
48977 C...COUNT THE NUMBER OF DECAY MODES
48978       LKNT=0
48979  
48980 C...NO NU_R DECAYS
48981       IF(KFIN.EQ.KSUSY2+12.OR.KFIN.EQ.KSUSY2+14.OR.
48982      &KFIN.EQ.KSUSY2+16) RETURN
48983  
48984       XMW=PMAS(24,1)
48985       XMW2=XMW**2
48986       XMZ=PMAS(23,1)
48987       XW=PARU(102)
48988       TANW = SQRT(XW/(1D0-XW))
48989       CW=SQRT(1D0-XW)
48990  
48991       DO 110 I=1,4
48992         DO 100 J=1,4
48993           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
48994   100   CONTINUE
48995   110 CONTINUE
48996       DO 130 I=1,2
48997         DO 120 J=1,2
48998            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
48999            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
49000   120   CONTINUE
49001   130 CONTINUE
49002  
49003 C...KCIN
49004       KCIN=PYCOMP(KFIN)
49005 C...ILR is 1 for left and 2 for right.
49006       ILR=KFIN/KSUSY1
49007 C...IFL is matching non-SUSY flavour.
49008       IFL=MOD(KFIN,KSUSY1)
49009 C...IDU is weak isospin, 1 for down and 2 for up.
49010       IDU=2-MOD(IFL,2)
49011  
49012       XMI=PMAS(KCIN,1)
49013       XMI2=XMI**2
49014       AEM=PYALEM(XMI2)
49015       AS =PYALPS(XMI2)
49016       C1=AEM/XW
49017       XMI3=XMI**3
49018       EI=KCHG(IFL,1)/3D0
49019  
49020       XMBOT=PYMRUN(5,XMI2)
49021       XMTOP=PYMRUN(6,XMI2)
49022  
49023       TANB=RMSS(5)
49024       BETA=ATAN(TANB)
49025       ALFA=RMSS(18)
49026       CBETA=COS(BETA)
49027       SBETA=TANB*CBETA
49028       SINA=SIN(ALFA)
49029       COSA=COS(ALFA)
49030       XMU=-RMSS(4)
49031       ATRIT=RMSS(16)
49032       ATRIB=RMSS(15)
49033       ATRIL=RMSS(17)
49034  
49035 C...2-BODY DECAYS OF SFERMION -> GRAVITINO + FERMION
49036  
49037       IF(IMSS(11).EQ.1) THEN
49038         XMP=RMSS(29)
49039         IDG=39+KSUSY1
49040         XMGR=PMAS(PYCOMP(IDG),1)
49041         XFAC=(XMI2/(XMP*XMGR))**2*XMI/48D0/PI
49042         IF(IFL.EQ.5) THEN
49043           XMF=XMBOT
49044         ELSEIF(IFL.EQ.6) THEN
49045           XMF=XMTOP
49046         ELSE
49047           XMF=PMAS(IFL,1)
49048         ENDIF
49049         IF(XMI.GT.XMGR+XMF) THEN
49050           LKNT=LKNT+1
49051           IDLAM(LKNT,1)=IDG
49052           IDLAM(LKNT,2)=IFL
49053           IDLAM(LKNT,3)=0
49054           XLAM(LKNT)=XFAC*(1D0-XMF**2/XMI2)**4
49055         ENDIF
49056       ENDIF
49057  
49058 C...2-BODY DECAYS OF SFERMION -> FERMION + GAUGE/GAUGINO
49059  
49060 C...CHARGED DECAYS:
49061       DO 140 IX=1,2
49062 C...DI -> U CHI1-,CHI2-
49063         IF(IDU.EQ.1) THEN
49064           XMFP=PMAS(IFL+1,1)
49065           XMF =PMAS(IFL,1)
49066 C...UI -> D CHI1+,CHI2+
49067         ELSE
49068           XMFP=PMAS(IFL-1,1)
49069           XMF =PMAS(IFL,1)
49070         ENDIF
49071         XMJ=SMW(IX)
49072         AXMJ=ABS(XMJ)
49073         IF(XMI.GE.AXMJ+XMFP) THEN
49074           XMA2=XMJ**2
49075           XMB2=XMFP**2
49076           IF(IDU.EQ.2) THEN
49077             IF(IFL.EQ.6) THEN
49078               XMFP=XMBOT
49079               XMF =XMTOP
49080             ELSEIF(IFL.LT.6) THEN
49081               XMF=0D0
49082               XMFP=0D0
49083             ENDIF
49084             CBL=VMIXC(IX,1)
49085             CAL=-XMFP*UMIXC(IX,2)/SR2/XMW/CBETA
49086             CBR=-XMF*VMIXC(IX,2)/SR2/XMW/SBETA
49087             CAR=0D0
49088           ELSE
49089             IF(IFL.EQ.5) THEN
49090               XMF =XMBOT
49091               XMFP=XMTOP
49092             ELSEIF(IFL.LT.5) THEN
49093               XMF=0D0
49094               XMFP=0D0
49095             ENDIF
49096             CBL=UMIXC(IX,1)
49097             CAL=-XMFP*VMIXC(IX,2)/SR2/XMW/SBETA
49098             CBR=-XMF*UMIXC(IX,2)/SR2/XMW/CBETA
49099             CAR=0D0
49100           ENDIF
49101  
49102           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
49103           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
49104           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
49105           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
49106           CAL=CALP
49107           CBL=CBLP
49108           CAR=CARP
49109           CBR=CBRP
49110  
49111 C...F1 -> F` CHI
49112           IF(ILR.EQ.1) THEN
49113             CA=CAL
49114             CB=CBL
49115 C...F2 -> F` CHI
49116           ELSE
49117             CA=CAR
49118             CB=CBR
49119           ENDIF
49120           LKNT=LKNT+1
49121           XL=PYLAMF(XMI2,XMA2,XMB2)
49122 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
49123           XLAM(LKNT)=2D0*C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
49124      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMFP)
49125           IDLAM(LKNT,3)=0
49126           IF(IDU.EQ.1) THEN
49127             IDLAM(LKNT,1)=-KFCCHI(IX)
49128             IDLAM(LKNT,2)=IFL+1
49129           ELSE
49130             IDLAM(LKNT,1)=KFCCHI(IX)
49131             IDLAM(LKNT,2)=IFL-1
49132           ENDIF
49133         ENDIF
49134   140 CONTINUE
49135  
49136 C...NEUTRAL DECAYS
49137       DO 150 IX=1,4
49138 C...DI -> D CHI10
49139         XMF=PMAS(IFL,1)
49140         XMJ=SMZ(IX)
49141         AXMJ=ABS(XMJ)
49142         IF(XMI.GE.AXMJ+XMF) THEN
49143           XMA2=XMJ**2
49144           XMB2=XMF**2
49145           IF(IDU.EQ.1) THEN
49146             IF(IFL.EQ.5) THEN
49147               XMF=XMBOT
49148             ELSEIF(IFL.LT.5) THEN
49149               XMF=0D0
49150             ENDIF
49151             CBL=-ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI+1)
49152             CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
49153             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
49154             CBR=CAL
49155           ELSE
49156             IF(IFL.EQ.6) THEN
49157               XMF=XMTOP
49158             ELSEIF(IFL.LT.5) THEN
49159               XMF=0D0
49160             ENDIF
49161             CBL=ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-1)
49162             CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
49163             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
49164             CBR=CAL
49165           ENDIF
49166  
49167           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
49168           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
49169           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
49170           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
49171           CAL=CALP
49172           CBL=CBLP
49173           CAR=CARP
49174           CBR=CBRP
49175  
49176 C...F1 -> F CHI
49177           IF(ILR.EQ.1) THEN
49178             CA=CAL
49179             CB=CBL
49180 C...F2 -> F CHI
49181           ELSE
49182             CA=CAR
49183             CB=CBR
49184           ENDIF
49185           LKNT=LKNT+1
49186           XL=PYLAMF(XMI2,XMA2,XMB2)
49187 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
49188           XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
49189      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMF)
49190           IDLAM(LKNT,1)=KFNCHI(IX)
49191           IDLAM(LKNT,2)=IFL
49192           IDLAM(LKNT,3)=0
49193         ENDIF
49194   150 CONTINUE
49195  
49196 C...2-BODY DECAYS TO SM GAUGE AND HIGGS BOSONS
49197 C...IG=23,25,35,36
49198       DO 160 II=1,4
49199         IG=IGG(II)
49200         IF(ILR.EQ.1) GOTO 160
49201         XMB=PMAS(IG,1)
49202         XMSF1=PMAS(PYCOMP(KFIN-KSUSY1),1)
49203         IF(XMI.LT.XMSF1+XMB) GOTO 160
49204         IF(IG.EQ.23) THEN
49205           BL=-SIGN(.5D0,EI)/CW+EI*XW/CW
49206           BR=EI*XW/CW
49207           BLR=0D0
49208         ELSEIF(IG.EQ.25) THEN
49209           IF(IFL.EQ.5) THEN
49210             XMF=XMBOT
49211           ELSEIF(IFL.EQ.6) THEN
49212             XMF=XMTOP
49213           ELSEIF(IFL.LT.5) THEN
49214             XMF=0D0
49215           ELSE
49216             XMF=PMAS(IFL,1)
49217           ENDIF
49218           IF(IDU.EQ.2) THEN
49219             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
49220      &      XMF**2/XMW*COSA/SBETA
49221             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
49222      &      XMF**2/XMW*COSA/SBETA
49223           ELSE
49224             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
49225      &      XMF**2/XMW*(-SINA)/CBETA
49226             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
49227      &      XMF**2/XMW*(-SINA)/CBETA
49228           ENDIF
49229           IF(IFL.EQ.5) THEN
49230             AT=ATRIB
49231           ELSEIF(IFL.EQ.6) THEN
49232             AT=ATRIT
49233           ELSEIF(IFL.EQ.15) THEN
49234             AT=ATRIL
49235           ELSE
49236             AT=0D0
49237           ENDIF
49238 C.........need to complexify
49239           IF(IDU.EQ.2) THEN
49240             GHLR=XMF/2D0/XMW/SBETA*(-XMU*SINA+
49241      &      AT*COSA)
49242           ELSE
49243             GHLR=XMF/2D0/XMW/CBETA*(XMU*COSA-
49244      &      AT*SINA)
49245           ENDIF
49246           BL=GHLL
49247           BR=GHRR
49248           BLR=-GHLR
49249         ELSEIF(IG.EQ.35) THEN
49250           IF(IFL.EQ.5) THEN
49251             XMF=XMBOT
49252           ELSEIF(IFL.EQ.6) THEN
49253             XMF=XMTOP
49254           ELSEIF(IFL.LT.5) THEN
49255             XMF=0D0
49256           ELSE
49257             XMF=PMAS(IFL,1)
49258           ENDIF
49259           IF(IDU.EQ.2) THEN
49260             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
49261      &      XMF**2/XMW*SINA/SBETA
49262             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
49263      &      XMF**2/XMW*SINA/SBETA
49264           ELSE
49265             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
49266      &      XMF**2/XMW*COSA/CBETA
49267             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
49268      &      XMF**2/XMW*COSA/CBETA
49269           ENDIF
49270           IF(IFL.EQ.5) THEN
49271             AT=ATRIB
49272           ELSEIF(IFL.EQ.6) THEN
49273             AT=ATRIT
49274           ELSEIF(IFL.EQ.15) THEN
49275             AT=ATRIL
49276           ELSE
49277             AT=0D0
49278           ENDIF
49279 C.........Need to complexify
49280           IF(IDU.EQ.2) THEN
49281             GHLR=XMF/2D0/XMW/SBETA*(XMU*COSA+
49282      &      AT*SINA)
49283           ELSE
49284             GHLR=XMF/2D0/XMW/CBETA*(XMU*SINA+
49285      &      AT*COSA)
49286           ENDIF
49287           BL=GHLL
49288           BR=GHRR
49289           BLR=GHLR
49290         ELSEIF(IG.EQ.36) THEN
49291           GHLL=0D0
49292           GHRR=0D0
49293           IF(IFL.EQ.5) THEN
49294             XMF=XMBOT
49295           ELSEIF(IFL.EQ.6) THEN
49296             XMF=XMTOP
49297           ELSEIF(IFL.LT.5) THEN
49298             XMF=0D0
49299           ELSE
49300             XMF=PMAS(IFL,1)
49301           ENDIF
49302           IF(IFL.EQ.5) THEN
49303             AT=ATRIB
49304           ELSEIF(IFL.EQ.6) THEN
49305             AT=ATRIT
49306           ELSEIF(IFL.EQ.15) THEN
49307             AT=ATRIL
49308           ELSE
49309             AT=0D0
49310           ENDIF
49311 C.........Need to complexify
49312           IF(IDU.EQ.2) THEN
49313             GHLR=XMF/2D0/XMW*(-XMU+AT/TANB)
49314           ELSE
49315             GHLR=XMF/2D0/XMW/(-XMU+AT*TANB)
49316           ENDIF
49317           BL=GHLL
49318           BR=GHRR
49319           BLR=GHLR
49320         ENDIF
49321         AL=SFMIX(IFL,1)*SFMIX(IFL,3)*BL+
49322      &  SFMIX(IFL,2)*SFMIX(IFL,4)*BR+
49323      &  (SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,3)*SFMIX(IFL,2))*BLR
49324         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
49325         LKNT=LKNT+1
49326         IF(IG.EQ.23) THEN
49327           XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
49328         ELSE
49329           XLAM(LKNT)=C1/4D0/XMI3*SQRT(XL)*AL**2
49330         ENDIF
49331         IDLAM(LKNT,3)=0
49332         IDLAM(LKNT,1)=KFIN-KSUSY1
49333         IDLAM(LKNT,2)=IG
49334   160 CONTINUE
49335  
49336 C...SF -> SF' + W
49337       XMB=PMAS(24,1)
49338       IF(MOD(IFL,2).EQ.0) THEN
49339         KF1=KSUSY1+IFL-1
49340       ELSE
49341         KF1=KSUSY1+IFL+1
49342       ENDIF
49343       KF2=KF1+KSUSY1
49344       XMSF1=PMAS(PYCOMP(KF1),1)
49345       XMSF2=PMAS(PYCOMP(KF2),1)
49346       IF(XMI.GT.XMB+XMSF1) THEN
49347         IF(MOD(IFL,2).EQ.0) THEN
49348           IF(ILR.EQ.1) THEN
49349             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,1)
49350           ELSE
49351             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,1)
49352           ENDIF
49353         ELSE
49354           IF(ILR.EQ.1) THEN
49355             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,1)
49356           ELSE
49357             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,1)
49358           ENDIF
49359         ENDIF
49360         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
49361         LKNT=LKNT+1
49362         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
49363         IDLAM(LKNT,3)=0
49364         IDLAM(LKNT,1)=KF1
49365         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
49366       ENDIF
49367       IF(XMI.GT.XMB+XMSF2) 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,3)
49371           ELSE
49372             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,3)
49373           ENDIF
49374         ELSE
49375           IF(ILR.EQ.1) THEN
49376             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,3)
49377           ELSE
49378             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,3)
49379           ENDIF
49380         ENDIF
49381         XL=PYLAMF(XMI2,XMSF2**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)=KF2
49386         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
49387       ENDIF
49388  
49389 C...SF -> SF' + HC
49390       XMB=PMAS(37,1)
49391       IF(MOD(IFL,2).EQ.0) THEN
49392         KF1=KSUSY1+IFL-1
49393       ELSE
49394         KF1=KSUSY1+IFL+1
49395       ENDIF
49396       KF2=KF1+KSUSY1
49397       XMSF1=PMAS(PYCOMP(KF1),1)
49398       XMSF2=PMAS(PYCOMP(KF2),1)
49399       IF(XMI.GT.XMB+XMSF1) THEN
49400         XMF=0D0
49401         XMFP=0D0
49402         AT=0D0
49403         AB=0D0
49404         IF(MOD(IFL,2).EQ.0) THEN
49405 C...T1-> B1 HC
49406           IF(ILR.EQ.1) THEN
49407             CH1=-SFMIX(IFL,1)*SFMIX(IFL-1,1)
49408             CH2= SFMIX(IFL,2)*SFMIX(IFL-1,2)
49409             CH3=-SFMIX(IFL,1)*SFMIX(IFL-1,2)
49410             CH4=-SFMIX(IFL,2)*SFMIX(IFL-1,1)
49411 C...T2-> B1 HC
49412           ELSE
49413             CH1= SFMIX(IFL,3)*SFMIX(IFL-1,1)
49414             CH2=-SFMIX(IFL,4)*SFMIX(IFL-1,2)
49415             CH3= SFMIX(IFL,3)*SFMIX(IFL-1,2)
49416             CH4= SFMIX(IFL,4)*SFMIX(IFL-1,1)
49417           ENDIF
49418           IF(IFL.EQ.6) THEN
49419             XMF=XMTOP
49420             XMFP=XMBOT
49421             AT=ATRIT
49422             AB=ATRIB
49423           ENDIF
49424         ELSE
49425 C...B1 -> T1 HC
49426           IF(ILR.EQ.1) THEN
49427             CH1=-SFMIX(IFL+1,1)*SFMIX(IFL,1)
49428             CH2= SFMIX(IFL+1,2)*SFMIX(IFL,2)
49429             CH3=-SFMIX(IFL+1,1)*SFMIX(IFL,2)
49430             CH4=-SFMIX(IFL+1,2)*SFMIX(IFL,1)
49431 C...B2-> T1 HC
49432           ELSE
49433             CH1= SFMIX(IFL,3)*SFMIX(IFL+1,1)
49434             CH2=-SFMIX(IFL,4)*SFMIX(IFL+1,2)
49435             CH3= SFMIX(IFL,4)*SFMIX(IFL+1,1)
49436             CH4= SFMIX(IFL,3)*SFMIX(IFL+1,2)
49437           ENDIF
49438           IF(IFL.EQ.5) THEN
49439             XMF=XMTOP
49440             XMFP=XMBOT
49441             AT=ATRIT
49442             AB=ATRIB
49443           ENDIF
49444         ENDIF
49445         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
49446         LKNT=LKNT+1
49447 C.......Need to complexify
49448         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
49449      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
49450      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
49451         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
49452         IDLAM(LKNT,3)=0
49453         IDLAM(LKNT,1)=KF1
49454         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
49455       ENDIF
49456       IF(XMI.GT.XMB+XMSF2) THEN
49457         XMF=0D0
49458         XMFP=0D0
49459         AT=0D0
49460         AB=0D0
49461         IF(MOD(IFL,2).EQ.0) THEN
49462 C...T1-> B2 HC
49463           IF(ILR.EQ.1) THEN
49464             CH1= SFMIX(IFL-1,3)*SFMIX(IFL,1)
49465             CH2=-SFMIX(IFL-1,4)*SFMIX(IFL,2)
49466             CH3= SFMIX(IFL-1,4)*SFMIX(IFL,1)
49467             CH4= SFMIX(IFL-1,3)*SFMIX(IFL,2)
49468 C...T2-> B2 HC
49469           ELSE
49470             CH1= -SFMIX(IFL,3)*SFMIX(IFL-1,3)
49471             CH2= SFMIX(IFL,4)*SFMIX(IFL-1,4)
49472             CH3= -SFMIX(IFL,3)*SFMIX(IFL-1,4)
49473             CH4= -SFMIX(IFL,4)*SFMIX(IFL-1,3)
49474           ENDIF
49475           IF(IFL.EQ.6) THEN
49476             XMF=XMTOP
49477             XMFP=XMBOT
49478             AT=ATRIT
49479             AB=ATRIB
49480           ENDIF
49481         ELSE
49482 C...B1 -> T2 HC
49483           IF(ILR.EQ.1) THEN
49484             CH1= SFMIX(IFL+1,3)*SFMIX(IFL,1)
49485             CH2=-SFMIX(IFL+1,4)*SFMIX(IFL,2)
49486             CH3= SFMIX(IFL+1,3)*SFMIX(IFL,2)
49487             CH4= SFMIX(IFL+1,4)*SFMIX(IFL,1)
49488 C...B2-> T2 HC
49489           ELSE
49490             CH1= -SFMIX(IFL+1,3)*SFMIX(IFL,3)
49491             CH2= SFMIX(IFL+1,4)*SFMIX(IFL,4)
49492             CH3= -SFMIX(IFL+1,3)*SFMIX(IFL,4)
49493             CH4= -SFMIX(IFL+1,4)*SFMIX(IFL,3)
49494           ENDIF
49495           IF(IFL.EQ.5) THEN
49496             XMF=XMTOP
49497             XMFP=XMBOT
49498             AT=ATRIT
49499             AB=ATRIB
49500           ENDIF
49501         ENDIF
49502         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
49503         LKNT=LKNT+1
49504 C.......Need to complexify
49505         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
49506      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
49507      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
49508         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
49509         IDLAM(LKNT,3)=0
49510         IDLAM(LKNT,1)=KF2
49511         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
49512       ENDIF
49513  
49514 C...2-BODY DECAYS OF SQUARK -> QUARK GLUINO
49515  
49516       IF(IFL.LE.6) THEN
49517         XMFP=0D0
49518         XMF=0D0
49519         IF(IFL.EQ.6) XMF=PMAS(6,1)
49520         IF(IFL.EQ.5) XMF=PMAS(5,1)
49521         XMJ=PMAS(PYCOMP(KSUSY1+21),1)
49522         AXMJ=ABS(XMJ)
49523         IF(XMI.GE.AXMJ+XMF) THEN
49524           AL=-SFMIX(IFL,3)
49525           BL=SFMIX(IFL,1)
49526           AR=-SFMIX(IFL,4)
49527           BR=SFMIX(IFL,2)
49528 C...F1 -> F CHI
49529           IF(ILR.EQ.1) THEN
49530             XCA=AL
49531             XCB=BL
49532 C...F2 -> F CHI
49533           ELSE
49534             XCA=AR
49535             XCB=BR
49536           ENDIF
49537           LKNT=LKNT+1
49538           XMA2=XMJ**2
49539           XMB2=XMF**2
49540           XL=PYLAMF(XMI2,XMA2,XMB2)
49541           XLAM(LKNT)=4D0/3D0*AS/2D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
49542      &    (XCA**2+XCB**2)+4D0*XCA*XCB*XMJ*XMF)
49543           IDLAM(LKNT,1)=KSUSY1+21
49544           IDLAM(LKNT,2)=IFL
49545           IDLAM(LKNT,3)=0
49546         ENDIF
49547       ENDIF
49548  
49549 C...IF NOTHING ELSE FOR T1, THEN T1* -> C+CHI0
49550       IF(KFIN.EQ.KSUSY1+6.AND.PMAS(KCIN,1).GT.
49551      &PMAS(PYCOMP(KSUSY1+22),1)+PMAS(4,1)) THEN
49552 C...THIS IS A BACK-OF-THE-ENVELOPE ESTIMATE
49553 C...M = 1/(16PI**2)G**3 = G*2/(4PI) G/(4PI) = C1 * G/(4PI)
49554 C...M*M = C1**2 * G**2/(16PI**2)
49555 C...G = 1/(8PI)P/MI**2 * M*M = C1**3/(32PI**2)*LAM/(2*MI**3)
49556         LKNT=LKNT+1
49557         XL=PYLAMF(XMI2,0D0,PMAS(PYCOMP(KSUSY1+22),1)**2)
49558         XLAM(LKNT)=C1**3/64D0/PI**2/XMI3*SQRT(XL)
49559         IF(XLAM(LKNT).EQ.0) XLAM(LKNT)=1D-3
49560         IDLAM(LKNT,1)=KSUSY1+22
49561         IDLAM(LKNT,2)=4
49562         IDLAM(LKNT,3)=0
49563       ENDIF
49564  
49565 C...R-violating sfermion decays (SKANDS).
49566       CALL PYRVSF(KFIN,XLAM,IDLAM,LKNT)
49567  
49568       IKNT=LKNT
49569       XLAM(0)=0D0
49570       DO 170 I=1,IKNT
49571         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
49572         XLAM(0)=XLAM(0)+XLAM(I)
49573   170 CONTINUE
49574       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-3
49575  
49576       RETURN
49577       END
49578  
49579 C*********************************************************************
49580  
49581 C...PYGLUI
49582 C...Calculates gluino decay modes.
49583  
49584       SUBROUTINE PYGLUI(KFIN,XLAM,IDLAM,IKNT)
49585  
49586 C...Double precision and integer declarations.
49587       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49588       IMPLICIT INTEGER(I-N)
49589       INTEGER PYK,PYCHGE,PYCOMP
49590 C...Parameter statement to help give large particle numbers.
49591       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
49592      &KEXCIT=4000000,KDIMEN=5000000)
49593 C...Commonblocks.
49594       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49595       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49596       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
49597       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
49598      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
49599 CC     &SFMIX(16,4),
49600 C      COMMON/PYINTS/XXM(20)
49601       COMPLEX*16 CXC
49602       COMMON/PYINTC/XXC(10),CXC(8)
49603       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
49604  
49605 C...Local variables
49606       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
49607       DOUBLE PRECISION XMI,XMJ,XMF,AXMJ,AXMI
49608       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
49609       DOUBLE PRECISION PYLAMF,XL
49610       DOUBLE PRECISION TANW,XW,AEM,C1,AS,S12MAX,S12MIN
49611       DOUBLE PRECISION CA,CB,AL,AR,BL,BR
49612       DOUBLE PRECISION XLAM(0:400)
49613       INTEGER IDLAM(400,3)
49614       INTEGER LKNT,IX,ILR,I,IKNT,IFL
49615       DOUBLE PRECISION SR2
49616       DOUBLE PRECISION GAM
49617       DOUBLE PRECISION PYALEM,PI,PYALPS,EI,T3I
49618       EXTERNAL PYGAUS,PYXXZ6
49619       DOUBLE PRECISION PYGAUS,PYXXZ6
49620       DOUBLE PRECISION PREC
49621       INTEGER KFNCHI(4),KFCCHI(2)
49622       DATA PI/3.141592654D0/
49623       DATA SR2/1.4142136D0/
49624       DATA PREC/1D-2/
49625       DATA KFNCHI/1000022,1000023,1000025,1000035/
49626       DATA KFCCHI/1000024,1000037/
49627  
49628 C...COUNT THE NUMBER OF DECAY MODES
49629       LKNT=0
49630       IF(KFIN.NE.KSUSY1+21) RETURN
49631       KCIN=PYCOMP(KFIN)
49632  
49633       XW=PARU(102)
49634       TANW = SQRT(XW/(1D0-XW))
49635  
49636       XMI=PMAS(KCIN,1)
49637       AXMI=ABS(XMI)
49638       XMI2=XMI**2
49639       AEM=PYALEM(XMI2)
49640       AS =PYALPS(XMI2)
49641       C1=AEM/XW
49642       XMI3=AXMI**3
49643  
49644       XMI=SIGN(XMI,RMSS(3))
49645  
49646 C...2-BODY DECAYS OF GLUINO -> GRAVITINO GLUON
49647  
49648       IF(IMSS(11).EQ.1) THEN
49649         XMP=RMSS(29)
49650         IDG=39+KSUSY1
49651         XMGR=PMAS(PYCOMP(IDG),1)
49652         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
49653         IF(AXMI.GT.XMGR) THEN
49654           LKNT=LKNT+1
49655           IDLAM(LKNT,1)=IDG
49656           IDLAM(LKNT,2)=21
49657           IDLAM(LKNT,3)=0
49658           XLAM(LKNT)=XFAC
49659         ENDIF
49660       ENDIF
49661  
49662 C...2-BODY DECAYS OF GLUINO -> QUARK SQUARK
49663  
49664       DO 110 IFL=1,6
49665         DO 100 ILR=1,2
49666           XMJ=PMAS(PYCOMP(ILR*KSUSY1+IFL),1)
49667           AXMJ=ABS(XMJ)
49668           XMF=PMAS(IFL,1)
49669           IF(AXMI.GE.AXMJ+XMF) THEN
49670 C...Minus sign difference from gluino-quark-squark feynman rules
49671             AL=SFMIX(IFL,1)
49672             BL=-SFMIX(IFL,3)
49673             AR=SFMIX(IFL,2)
49674             BR=-SFMIX(IFL,4)
49675 C...F1 -> F CHI
49676             IF(ILR.EQ.1) THEN
49677               CA=AL
49678               CB=BL
49679 C...F2 -> F CHI
49680             ELSE
49681               CA=AR
49682               CB=BR
49683             ENDIF
49684             LKNT=LKNT+1
49685             XMA2=XMJ**2
49686             XMB2=XMF**2
49687             XL=PYLAMF(XMI2,XMA2,XMB2)
49688             XLAM(LKNT)=4D0/8D0*AS/4D0/XMI3*SQRT(XL)*((XMI2+XMB2-XMA2)*
49689      &      (CA**2+CB**2)-4D0*CA*CB*XMI*XMF)
49690             IDLAM(LKNT,1)=ILR*KSUSY1+IFL
49691             IDLAM(LKNT,2)=-IFL
49692             IDLAM(LKNT,3)=0
49693             LKNT=LKNT+1
49694             XLAM(LKNT)=XLAM(LKNT-1)
49695             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
49696             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
49697             IDLAM(LKNT,3)=0
49698           ENDIF
49699   100   CONTINUE
49700   110 CONTINUE
49701  
49702 C...3-BODY DECAYS TO GAUGINO FERMION-FERMION
49703 C...GLUINO -> NI Q QBAR
49704       DO 170 IX=1,4
49705         XMJ=SMZ(IX)
49706         AXMJ=ABS(XMJ)
49707         IF(AXMI.GE.AXMJ) THEN
49708           DO 120 I=1,4
49709             ZMIXC(IX,I)=DCMPLX(ZMIX(IX,I),ZMIXI(IX,I))
49710   120     CONTINUE
49711           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))/SR2
49712           ORPP=DCONJG(OLPP)
49713           XXC(1)=0D0
49714           XXC(2)=XMJ
49715           XXC(3)=0D0
49716           XXC(4)=XMI
49717           IA=1
49718           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
49719           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
49720           XXC(7)=XXC(5)
49721           XXC(8)=XXC(6)
49722           XXC(9)=1D6
49723           XXC(10)=0D0
49724           EI=KCHG(IA,1)/3D0
49725           T3I=SIGN(1D0,EI+1D-6)/2D0
49726           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
49727           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
49728           CXC(1)=0D0
49729           CXC(2)=-GLIJ
49730           CXC(3)=0D0
49731           CXC(4)=DCONJG(GLIJ)
49732           CXC(5)=0D0
49733           CXC(6)=GRIJ
49734           CXC(7)=0D0
49735           CXC(8)=-DCONJG(GRIJ)
49736           S12MIN=0D0
49737           S12MAX=(AXMI-AXMJ)**2
49738           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 130
49739           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
49740             LKNT=LKNT+1
49741             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
49742      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
49743             IDLAM(LKNT,1)=KFNCHI(IX)
49744             IDLAM(LKNT,2)=1
49745             IDLAM(LKNT,3)=-1
49746           ENDIF
49747           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
49748             LKNT=LKNT+1
49749             XLAM(LKNT)=XLAM(LKNT-1)
49750             IDLAM(LKNT,1)=KFNCHI(IX)
49751             IDLAM(LKNT,2)=3
49752             IDLAM(LKNT,3)=-3
49753           ENDIF
49754   130     CONTINUE
49755           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
49756             PMOLD=PMAS(PYCOMP(KSUSY1+5),1)
49757             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+5),1)+PMAS(5,1)) THEN
49758               GOTO 140
49759             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+5),1)+PMAS(5,1)) THEN
49760               PMAS(PYCOMP(KSUSY1+5),1)=100D0*XMI
49761             ENDIF
49762             CALL PYTBBN(IX,100,-1D0/3D0,XMI,GAM)
49763             LKNT=LKNT+1
49764             XLAM(LKNT)=GAM
49765             IDLAM(LKNT,1)=KFNCHI(IX)
49766             IDLAM(LKNT,2)=5
49767             IDLAM(LKNT,3)=-5
49768             PMAS(PYCOMP(KSUSY1+5),1)=PMOLD
49769           ENDIF
49770 C...U-TYPE QUARKS
49771   140     CONTINUE
49772           IA=2
49773           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
49774           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
49775 C        IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 290
49776           XXC(7)=XXC(5)
49777           XXC(8)=XXC(6)
49778           EI=KCHG(IA,1)/3D0
49779           T3I=SIGN(1D0,EI+1D-6)/2D0
49780           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
49781           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
49782           CXC(2)=-GLIJ
49783           CXC(4)=DCONJG(GLIJ)
49784           CXC(6)=GRIJ
49785           CXC(8)=-DCONJG(GRIJ)
49786           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 150
49787           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
49788             LKNT=LKNT+1
49789             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
49790      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
49791             IDLAM(LKNT,1)=KFNCHI(IX)
49792             IDLAM(LKNT,2)=2
49793             IDLAM(LKNT,3)=-2
49794           ENDIF
49795           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
49796             LKNT=LKNT+1
49797             XLAM(LKNT)=XLAM(LKNT-1)
49798             IDLAM(LKNT,1)=KFNCHI(IX)
49799             IDLAM(LKNT,2)=4
49800             IDLAM(LKNT,3)=-4
49801           ENDIF
49802   150     CONTINUE
49803 C...INCLUDE THE DECAY GLUINO -> NJ + T + T~
49804 C...IF THE DECAY GLUINO -> ST + T CANNOT OCCUR
49805           XMF=PMAS(6,1)
49806           IF(AXMI.GE.AXMJ+2D0*XMF) THEN
49807             PMOLD=PMAS(PYCOMP(KSUSY1+6),1)
49808             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+6),1)+XMF) THEN
49809               GOTO 160
49810             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+6),1)+XMF) THEN
49811               PMAS(PYCOMP(KSUSY1+6),1)=100D0*XMI
49812             ENDIF
49813             CALL PYTBBN(IX,100,2D0/3D0,XMI,GAM)
49814             LKNT=LKNT+1
49815             XLAM(LKNT)=GAM
49816             IDLAM(LKNT,1)=KFNCHI(IX)
49817             IDLAM(LKNT,2)=6
49818             IDLAM(LKNT,3)=-6
49819             PMAS(PYCOMP(KSUSY1+6),1)=PMOLD
49820           ENDIF
49821   160     CONTINUE
49822         ENDIF
49823   170 CONTINUE
49824  
49825 C...GLUINO -> CI Q QBAR'
49826       DO 210 IX=1,2
49827         XMJ=SMW(IX)
49828         AXMJ=ABS(XMJ)
49829         IF(AXMI.GE.AXMJ) THEN
49830           DO 180 I=1,2
49831             VMIXC(IX,I)=DCMPLX(VMIX(IX,I),VMIXI(IX,I))
49832             UMIXC(IX,I)=DCMPLX(UMIX(IX,I),UMIXI(IX,I))
49833   180     CONTINUE
49834           S12MIN=0D0
49835           S12MAX=(AXMI-AXMJ)**2
49836           XXC(1)=0D0
49837           XXC(2)=XMJ
49838           XXC(3)=0D0
49839           XXC(4)=XMI
49840           XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
49841           XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
49842           XXC(9)=1D6
49843           XXC(10)=0D0
49844           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
49845           ORPP=DCONJG(OLPP)
49846           CXC(1)=DCMPLX(0D0,0D0)
49847           CXC(3)=DCMPLX(0D0,0D0)
49848           CXC(5)=DCMPLX(0D0,0D0)
49849           CXC(7)=DCMPLX(0D0,0D0)
49850           CXC(2)=UMIXC(IX,1)*OLPP/SR2
49851           CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
49852           CXC(6)=DCMPLX(0D0,0D0)
49853           CXC(8)=DCMPLX(0D0,0D0)
49854           IF(XXC(5).LT.AXMI) THEN
49855             XXC(5)=1D6
49856           ELSEIF(XXC(6).LT.AXMI) THEN
49857             XXC(6)=1D6
49858           ENDIF
49859           XXC(7)=XXC(6)
49860           XXC(8)=XXC(5)
49861           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 190
49862           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
49863             LKNT=LKNT+1
49864             XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
49865      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
49866             IDLAM(LKNT,1)=KFCCHI(IX)
49867             IDLAM(LKNT,2)=1
49868             IDLAM(LKNT,3)=-2
49869             LKNT=LKNT+1
49870             XLAM(LKNT)=XLAM(LKNT-1)
49871             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
49872             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
49873             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
49874           ENDIF
49875           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
49876             LKNT=LKNT+1
49877             XLAM(LKNT)=XLAM(LKNT-1)
49878             IDLAM(LKNT,1)=KFCCHI(IX)
49879             IDLAM(LKNT,2)=3
49880             IDLAM(LKNT,3)=-4
49881             LKNT=LKNT+1
49882             XLAM(LKNT)=XLAM(LKNT-1)
49883             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
49884             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
49885             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
49886           ENDIF
49887   190     CONTINUE
49888  
49889           XMF=PMAS(6,1)
49890           XMFP=PMAS(5,1)
49891           IF(AXMI.GE.AXMJ+XMF+XMFP) THEN
49892             IF(XMI.GT.MIN(PMAS(PYCOMP(KSUSY1+5),1)+XMFP,
49893      $      PMAS(PYCOMP(KSUSY2+6),1)+XMF)) GOTO 200
49894             PMOLT2=PMAS(PYCOMP(KSUSY2+6),1)
49895             PMOLB2=PMAS(PYCOMP(KSUSY2+5),1)
49896             PMOLT1=PMAS(PYCOMP(KSUSY1+6),1)
49897             PMOLB1=PMAS(PYCOMP(KSUSY1+5),1)
49898             IF(XMI.GT.PMOLT2+XMF) PMAS(PYCOMP(KSUSY2+6),1)=100D0*AXMI
49899             IF(XMI.GT.PMOLT1+XMF) PMAS(PYCOMP(KSUSY1+6),1)=100D0*AXMI
49900             IF(XMI.GT.PMOLB2+XMFP) PMAS(PYCOMP(KSUSY2+5),1)=100D0*AXMI
49901             IF(XMI.GT.PMOLB1+XMFP) PMAS(PYCOMP(KSUSY1+5),1)=100D0*AXMI
49902             CALL PYTBBC(IX,100,XMI,GAM)
49903             LKNT=LKNT+1
49904             XLAM(LKNT)=GAM
49905             IDLAM(LKNT,1)=KFCCHI(IX)
49906             IDLAM(LKNT,2)=5
49907             IDLAM(LKNT,3)=-6
49908             LKNT=LKNT+1
49909             XLAM(LKNT)=XLAM(LKNT-1)
49910             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
49911             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
49912             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
49913             PMAS(PYCOMP(KSUSY2+6),1)=PMOLT2
49914             PMAS(PYCOMP(KSUSY2+5),1)=PMOLB2
49915             PMAS(PYCOMP(KSUSY1+6),1)=PMOLT1
49916             PMAS(PYCOMP(KSUSY1+5),1)=PMOLB1
49917           ENDIF
49918   200     CONTINUE
49919         ENDIF
49920   210 CONTINUE
49921  
49922 C...R-parity violating (3-body) decays.
49923       CALL PYRVGL(KFIN,XLAM,IDLAM,LKNT)
49924  
49925       IKNT=LKNT
49926       XLAM(0)=0D0
49927       DO 220 I=1,IKNT
49928         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
49929         XLAM(0)=XLAM(0)+XLAM(I)
49930   220 CONTINUE
49931       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
49932  
49933       RETURN
49934       END
49935  
49936  
49937 C*********************************************************************
49938  
49939 C...PYTBBN
49940 C...Calculates the three-body decay of gluinos into
49941 C...neutralinos and third generation fermions.
49942  
49943       SUBROUTINE PYTBBN(I,NN,E,XMGLU,GAM)
49944  
49945 C...Double precision and integer declarations.
49946       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49947       IMPLICIT INTEGER(I-N)
49948       INTEGER PYK,PYCHGE,PYCOMP
49949 C...Parameter statement to help give large particle numbers.
49950       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
49951      &KEXCIT=4000000,KDIMEN=5000000)
49952 C...Commonblocks.
49953       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49954       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49955       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
49956       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
49957      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
49958       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
49959  
49960 C...Local variables.
49961       EXTERNAL PYSIMP,PYLAMF
49962       DOUBLE PRECISION PYSIMP,PYLAMF
49963       INTEGER LIN,NN
49964       DOUBLE PRECISION COSD,SIND,COSD2,SIND2,COS2D,SIN2D
49965       DOUBLE PRECISION HL,HR,FL,FR,HL2,HR2,FL2,FR2
49966       DOUBLE PRECISION XMS2(2),XM,XM2,XMG,XMG2,XMR,XMR2
49967       DOUBLE PRECISION SBAR,SMIN,SMAX,XMQA,W,GRS,G(0:6),SUMME(0:100)
49968       DOUBLE PRECISION FF,HH,HFL,HFR,HRFL,HLFR,XMQ4,XM24
49969       DOUBLE PRECISION XLN1,XLN2,B1,B2
49970       DOUBLE PRECISION E,XMGLU,GAM
49971       DOUBLE PRECISION HRB(4),HLB(4),FLB(4),FRB(4)
49972       SAVE HRB,HLB,FLB,FRB
49973       DOUBLE PRECISION ALPHAW,ALPHAS
49974       DOUBLE PRECISION HLT(4),HRT(4),FLT(4),FRT(4)
49975       SAVE HLT,HRT,FLT,FRT
49976       DOUBLE PRECISION AMN(4),AN(4,4),ZN(3)
49977       SAVE AMN,AN,ZN
49978       DOUBLE PRECISION AMBOT,SINC,COSC
49979       DOUBLE PRECISION AMTOP,SINA,COSA
49980       DOUBLE PRECISION SINW,COSW,TANW
49981       DOUBLE PRECISION ROT1(4,4)
49982       LOGICAL IFIRST
49983       SAVE IFIRST
49984       DATA IFIRST/.TRUE./
49985  
49986       TANB=RMSS(5)
49987       SINB=TANB/SQRT(1D0+TANB**2)
49988       COSB=SINB/TANB
49989       XW=PARU(102)
49990       SINW=SQRT(XW)
49991       COSW=SQRT(1D0-XW)
49992       TANW=SINW/COSW
49993       AMW=PMAS(24,1)
49994       COSC=SFMIX(5,1)
49995       SINC=SFMIX(5,3)
49996       COSA=SFMIX(6,1)
49997       SINA=SFMIX(6,3)
49998       AMBOT=PYMRUN(5,XMGLU**2)
49999       AMTOP=PYMRUN(6,XMGLU**2)
50000       W2=SQRT(2D0)
50001       FAKT1=AMBOT/W2/AMW/COSB
50002       FAKT2=AMTOP/W2/AMW/SINB
50003       IF(IFIRST) THEN
50004         DO 110 II=1,4
50005           AMN(II)=SMZ(II)
50006           DO 100 J=1,4
50007             ROT1(II,J)=0D0
50008             AN(II,J)=0D0
50009   100     CONTINUE
50010   110   CONTINUE
50011         ROT1(1,1)=COSW
50012         ROT1(1,2)=-SINW
50013         ROT1(2,1)=-ROT1(1,2)
50014         ROT1(2,2)=ROT1(1,1)
50015         ROT1(3,3)=COSB
50016         ROT1(3,4)=SINB
50017         ROT1(4,3)=-ROT1(3,4)
50018         ROT1(4,4)=ROT1(3,3)
50019         DO 140 II=1,4
50020           DO 130 J=1,4
50021             DO 120 JJ=1,4
50022               AN(II,J)=AN(II,J)+ZMIX(II,JJ)*ROT1(JJ,J)
50023   120       CONTINUE
50024   130     CONTINUE
50025   140   CONTINUE
50026         DO 150 J=1,4
50027           ZN(1)=-FAKT2*(-SINB*AN(J,3)+COSB*AN(J,4))
50028           ZN(2)=-2D0*W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
50029           ZN(3)=-2*W2/3D0*SINW*AN(J,1)-W2*(0.5D0-2D0/3D0*
50030      &    XW)*AN(J,2)/COSW
50031           HRT(J)=ZN(1)*COSA-ZN(3)*SINA
50032           HLT(J)=ZN(1)*COSA+ZN(2)*SINA
50033           FLT(J)=ZN(3)*COSA+ZN(1)*SINA
50034           FRT(J)=ZN(2)*COSA-ZN(1)*SINA
50035 C          FLU(J)=ZN(3)
50036 C          FRU(J)=ZN(2)
50037           ZN(1)=-FAKT1*(COSB*AN(J,3)+SINB*AN(J,4))
50038           ZN(2)=W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
50039           ZN(3)=W2/3D0*SINW*AN(J,1)+W2*(0.5D0-XW/3D0)*AN(J,2)/COSW
50040           HRB(J)=ZN(1)*COSC-ZN(3)*SINC
50041           HLB(J)=ZN(1)*COSC+ZN(2)*SINC
50042           FLB(J)=ZN(3)*COSC+ZN(1)*SINC
50043           FRB(J)=ZN(2)*COSC-ZN(1)*SINC
50044 C          FLD(J)=ZN(3)
50045 C          FRD(J)=ZN(2)
50046   150   CONTINUE
50047 C        AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
50048 C        AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
50049 C        AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
50050 C        AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
50051         IFIRST=.FALSE.
50052       ENDIF
50053  
50054       IF(NINT(3D0*E).EQ.2) THEN
50055         HL=HLT(I)
50056         HR=HRT(I)
50057         FL=FLT(I)
50058         FR=FRT(I)
50059         COSD=SFMIX(6,1)
50060         SIND=SFMIX(6,3)
50061         XMS2(1)=PMAS(PYCOMP(KSUSY1+6),1)**2
50062         XMS2(2)=PMAS(PYCOMP(KSUSY2+6),1)**2
50063         XM=PMAS(6,1)
50064       ELSE
50065         HL=HLB(I)
50066         HR=HRB(I)
50067         FL=FLB(I)
50068         FR=FRB(I)
50069         COSD=SFMIX(5,1)
50070         SIND=SFMIX(5,3)
50071         XMS2(1)=PMAS(PYCOMP(KSUSY1+5),1)**2
50072         XMS2(2)=PMAS(PYCOMP(KSUSY2+5),1)**2
50073         XM=PMAS(5,1)
50074       ENDIF
50075       COSD2=COSD*COSD
50076       SIND2=SIND*SIND
50077       COS2D=COSD2-SIND2
50078       SIN2D=SIND*COSD*2D0
50079       HL2=HL*HL
50080       HR2=HR*HR
50081       FL2=FL*FL
50082       FR2=FR*FR
50083       FF=FL*FR
50084       HH=HL*HR
50085       HFL=HL*FL
50086       HFR=HR*FR
50087       HRFL=HR*FL
50088       HLFR=HL*FR
50089       XM2=XM*XM
50090       XMG=XMGLU
50091       XMG2=XMG*XMG
50092       ALPHAW=PYALEM(XMG2)
50093       ALPHAS=PYALPS(XMG2)
50094       XMR=AMN(I)
50095       XMR2=XMR*XMR
50096       XMQ4=XMG*XM2*XMR
50097       XM24=(XMG2+XM2)*(XM2+XMR2)
50098       SMIN=4D0*XM2
50099       SMAX=(XMG-ABS(XMR))**2
50100       XMQA=XMG2+2D0*XM2+XMR2
50101       DO 170 LIN=1,NN-1
50102         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
50103         GRS=SBAR-XMQA
50104         W=PYLAMF(XMG2,XMR2,SBAR)*(0.25D0-XM2/SBAR)
50105         W=DSQRT(W)
50106         XLN1=LOG(ABS((GRS/2D0+XMS2(1)-W)/(GRS/2D0+XMS2(1)+W)))
50107         XLN2=LOG(ABS((GRS/2D0+XMS2(2)-W)/(GRS/2D0+XMS2(2)+W)))
50108         B1=1D0/(GRS/2D0+XMS2(1)-W)-1D0/(GRS/2D0+XMS2(1)+W)
50109         B2=1D0/(GRS/2D0+XMS2(2)-W)-1D0/(GRS/2D0+XMS2(2)+W)
50110         G(0)=-2D0*(HL2+FL2+HR2+FR2+(HFR-HFL)*SIN2D
50111      &  +2D0*(FF*SIND2-HH*COSD2))*W
50112         G(1)=((HL2+FL2)*(XMQA-2D0*XMS2(1)-2D0*XM*XMG*SIN2D)
50113      &  +4D0*HFL*XM*XMR)*XLN1
50114      &  +((HL2+FL2)*((XMQA-XMS2(1))*XMS2(1)-XM24
50115      &  +2D0*XM*XMG*(XM2+XMR2-XMS2(1))*SIN2D)
50116      &  -4D0*HFL*XMR*XM*(XMG2+XM2-XMS2(1))
50117      &  +8D0*HFL*XMQ4*SIN2D)*B1
50118         G(2)=((HR2+FR2)*(XMQA-2D0*XMS2(2)+2D0*XM*XMG*SIN2D)
50119      &  +4D0*HFR*XMR*XM)*XLN2
50120      &  +((HR2+FR2)*((XMQA-XMS2(2))*XMS2(2)-XM24
50121      &  +2D0*XMG*XM*SIN2D*(XMS2(2)-XM2-XMR2))
50122      &  +4D0*HFR*XM*XMR*(XMS2(2)-XMG2-XM2)
50123      &  -8D0*HFR*XMQ4*SIN2D)*B2
50124         G(3)=(2D0*HFL*SIN2D*(XMS2(1)*(GRS+XMS2(1))+XM2*(SBAR-XMG2-XMR2)
50125      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HL2*SIND2+FL2*COSD2)*SBAR
50126      &  -2D0*XMG*XM*HFL*(SBAR+XMR2-XMG2)
50127      &  +XMR*XM*(HL2+FL2)*SIN2D*(SBAR+XMG2-XMR2)
50128      &  -4D0*XMQ4*(HL2-FL2)*COS2D)/(GRS+2D0*XMS2(1))*XLN1
50129         G(4)=4D0*COS2D*XM*XMG/(XMS2(1)-XMS2(2))*
50130      &  (((HLFR+HRFL)*(XM2+XMR2)+2D0*XM*XMR*(HH+FF))*(XLN1-XLN2)
50131      &  +(HLFR+HRFL)*(XMS2(2)*XLN2-XMS2(1)*XLN1))
50132         G(5)=(2D0*(HH*COSD2-FF*SIND2)
50133      &  *((XMS2(2)*(XMS2(2)+GRS)+XM2*XM2+XMG2*XMR2)*XLN2
50134      &  +(XMS2(1)*(XMS2(1)+GRS)+XM2*XM2+XMG2*XMR2)*XLN1)
50135      &  +XM*((HH-FF)*SIN2D*XMG-(HRFL-HLFR)*XMR)
50136      &  *((GRS+XMS2(1)*2D0)*XLN1-(GRS+XMS2(2)*2D0)*XLN2)
50137      &  +((HRFL-HLFR)*XMR*(SIN2D*XMG*(SBAR-4D0*XM2)
50138      &  +COS2D*XM*(SBAR+XMG2-XMR2))
50139      &  +2D0*(FF*COSD2-HH*SIND2)*XM2*(SBAR-XMG2-XMR2))
50140      &  *(XLN1+XLN2))/(GRS+XMS2(1)+XMS2(2))
50141         G(6)=(-2D0*HFR*SIN2D*(XMS2(2)*(GRS+XMS2(2))+XM2*(SBAR-XMG2-XMR2)
50142      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HR2*SIND2+FR2*COSD2)*SBAR
50143      &  -2D0*XMG*XM*HFR*(SBAR+XMR2-XMG2)
50144      &  -XMR*XM*(HR2+FR2)*SIN2D*(SBAR+XMG2-XMR2)
50145      &  -4D0*XMQ4*(HR2-FR2)*COS2D)/(GRS+2D0*XMS2(2))*XLN2
50146         SUMME(LIN)=0D0
50147         DO 160 J=0,6
50148           SUMME(LIN)=SUMME(LIN)+G(J)
50149   160   CONTINUE
50150   170 CONTINUE
50151       SUMME(0)=0D0
50152       SUMME(NN)=0D0
50153       GAM = ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
50154      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
50155  
50156       RETURN
50157       END
50158  
50159 C*********************************************************************
50160  
50161 C...PYTBBC
50162 C...Calculates the three-body decay of gluinos into
50163 C...charginos and third generation fermions.
50164  
50165       SUBROUTINE PYTBBC(I,NN,XMGLU,GAM)
50166  
50167 C...Double precision and integer declarations.
50168       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50169       IMPLICIT INTEGER(I-N)
50170       INTEGER PYK,PYCHGE,PYCOMP
50171 C...Parameter statement to help give large particle numbers.
50172       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50173      &KEXCIT=4000000,KDIMEN=5000000)
50174 C...Commonblocks.
50175       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50176       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50177       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
50178       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50179      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
50180       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
50181  
50182 C...Local variables.
50183       EXTERNAL PYSIMP,PYLAMF
50184       DOUBLE PRECISION PYSIMP,PYLAMF
50185       INTEGER I,NN,LIN
50186       DOUBLE PRECISION XMG,XMG2,XMB,XMB2,XMR,XMR2
50187       DOUBLE PRECISION XMT,XMT2,XMST(4),XMSB(4)
50188       DOUBLE PRECISION ULR(2),VLR(2),XMQ2,XMQ4,AM,W,SBAR,SMIN,SMAX
50189       DOUBLE PRECISION SUMME(0:100),A(4,8)
50190       DOUBLE PRECISION COS2A,SIN2A,COS2C,SIN2C
50191       DOUBLE PRECISION GRS,XMQ3,XMGBTR,XMGTBR,ANT1,ANT2,ANB1,ANB2
50192       DOUBLE PRECISION XMGLU,GAM
50193       DOUBLE PRECISION XX1(2),XX2(2),AAA(2),BBB(2),CCC(2),
50194      &DDD(2),EEE(2),FFF(2)
50195       SAVE XX1,XX2,AAA,BBB,CCC,DDD,EEE,FFF
50196       DOUBLE PRECISION ALPHAW,ALPHAS
50197       DOUBLE PRECISION AMC(2)
50198       SAVE AMC
50199       DOUBLE PRECISION AMBOT,AMSB(2),SINC,COSC
50200       DOUBLE PRECISION AMTOP,AMST(2),SINA,COSA
50201       SAVE AMSB,AMST
50202       LOGICAL IFIRST
50203       SAVE IFIRST
50204       DATA IFIRST/.TRUE./
50205  
50206       TANB=RMSS(5)
50207       SINB=TANB/SQRT(1D0+TANB**2)
50208       COSB=SINB/TANB
50209       XW=PARU(102)
50210       AMW=PMAS(24,1)
50211       COSC=SFMIX(5,1)
50212       SINC=SFMIX(5,3)
50213       COSA=SFMIX(6,1)
50214       SINA=SFMIX(6,3)
50215       AMBOT=PYMRUN(5,XMGLU**2)
50216       AMTOP=PYMRUN(6,XMGLU**2)
50217       W2=SQRT(2D0)
50218       AMW=PMAS(24,1)
50219       FAKT1=AMBOT/W2/AMW/COSB
50220       FAKT2=AMTOP/W2/AMW/SINB
50221       IF(IFIRST) THEN
50222         AMC(1)=SMW(1)
50223         AMC(2)=SMW(2)
50224         DO 100 JJ=1,2
50225           CCC(JJ)=FAKT1*UMIX(JJ,2)*SINC-UMIX(JJ,1)*COSC
50226           EEE(JJ)=FAKT2*VMIX(JJ,2)*COSC
50227           DDD(JJ)=FAKT1*UMIX(JJ,2)*COSC+UMIX(JJ,1)*SINC
50228           FFF(JJ)=FAKT2*VMIX(JJ,2)*SINC
50229           XX1(JJ)=FAKT2*VMIX(JJ,2)*SINA-VMIX(JJ,1)*COSA
50230           AAA(JJ)=FAKT1*UMIX(JJ,2)*COSA
50231           XX2(JJ)=FAKT2*VMIX(JJ,2)*COSA+VMIX(JJ,1)*SINA
50232           BBB(JJ)=FAKT1*UMIX(JJ,2)*SINA
50233   100   CONTINUE
50234         AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
50235         AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
50236         AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
50237         AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
50238         IFIRST=.FALSE.
50239       ENDIF
50240  
50241       ULR(1)=XX1(I)*XX1(I)+AAA(I)*AAA(I)
50242       ULR(2)=XX2(I)*XX2(I)+BBB(I)*BBB(I)
50243       VLR(1)=CCC(I)*CCC(I)+EEE(I)*EEE(I)
50244       VLR(2)=DDD(I)*DDD(I)+FFF(I)*FFF(I)
50245  
50246       COS2A=COSA**2-SINA**2
50247       SIN2A=SINA*COSA*2D0
50248       COS2C=COSC**2-SINC**2
50249       SIN2C=SINC*COSC*2D0
50250  
50251       XMG=XMGLU
50252       XMT=PMAS(6,1)
50253       XMB=PMAS(5,1)
50254       XMR=AMC(I)
50255       XMG2=XMG*XMG
50256       ALPHAW=PYALEM(XMG2)
50257       ALPHAS=PYALPS(XMG2)
50258       XMT2=XMT*XMT
50259       XMB2=XMB*XMB
50260       XMR2=XMR*XMR
50261       XMQ2=XMG2+XMT2+XMB2+XMR2
50262       XMQ4=XMG*XMT*XMB*XMR
50263       XMQ3=XMG2*XMR2+XMT2*XMB2
50264       XMGBTR=(XMG2+XMB2)*(XMT2+XMR2)
50265       XMGTBR=(XMG2+XMT2)*(XMB2+XMR2)
50266  
50267       XMST(1)=AMST(1)*AMST(1)
50268       XMST(2)=AMST(1)*AMST(1)
50269       XMST(3)=AMST(2)*AMST(2)
50270       XMST(4)=AMST(2)*AMST(2)
50271       XMSB(1)=AMSB(1)*AMSB(1)
50272       XMSB(2)=AMSB(2)*AMSB(2)
50273       XMSB(3)=AMSB(1)*AMSB(1)
50274       XMSB(4)=AMSB(2)*AMSB(2)
50275  
50276       A(1,1)=-COSA*SINC*CCC(I)*AAA(I)-SINA*COSC*EEE(I)*XX1(I)
50277       A(1,2)=XMG*XMB*(COSA*COSC*CCC(I)*AAA(I)+SINA*SINC*EEE(I)*XX1(I))
50278       A(1,3)=-XMG*XMR*(COSA*COSC*CCC(I)*XX1(I)+SINA*SINC*EEE(I)*AAA(I))
50279       A(1,4)=XMB*XMR*(COSA*SINC*CCC(I)*XX1(I)+SINA*COSC*EEE(I)*AAA(I))
50280       A(1,5)=XMG*XMT*(COSA*COSC*EEE(I)*XX1(I)+SINA*SINC*CCC(I)*AAA(I))
50281       A(1,6)=-XMT*XMB*(COSA*SINC*EEE(I)*XX1(I)+SINA*COSC*CCC(I)*AAA(I))
50282       A(1,7)=XMT*XMR*(COSA*SINC*EEE(I)*AAA(I)+SINA*COSC*CCC(I)*XX1(I))
50283       A(1,8)=-XMQ4*(COSA*COSC*EEE(I)*AAA(I)+SINA*SINC*CCC(I)*XX1(I))
50284  
50285       A(2,1)=-COSA*COSC*DDD(I)*AAA(I)-SINA*SINC*FFF(I)*XX1(I)
50286       A(2,2)=-XMG*XMB*(COSA*SINC*DDD(I)*AAA(I)+SINA*COSC*FFF(I)*XX1(I))
50287       A(2,3)=XMG*XMR*(COSA*SINC*DDD(I)*XX1(I)+SINA*COSC*FFF(I)*AAA(I))
50288       A(2,4)=XMB*XMR*(COSA*COSC*DDD(I)*XX1(I)+SINA*SINC*FFF(I)*AAA(I))
50289       A(2,5)=XMG*XMT*(COSA*SINC*FFF(I)*XX1(I)+SINA*COSC*DDD(I)*AAA(I))
50290       A(2,6)=XMT*XMB*(COSA*COSC*FFF(I)*XX1(I)+SINA*SINC*DDD(I)*AAA(I))
50291       A(2,7)=-XMT*XMR*(COSA*COSC*FFF(I)*AAA(I)+SINA*SINC*DDD(I)*XX1(I))
50292       A(2,8)=-XMQ4*(COSA*SINC*FFF(I)*AAA(I)+SINA*COSC*DDD(I)*XX1(I))
50293  
50294       A(3,1)=-COSA*COSC*EEE(I)*XX2(I)-SINA*SINC*CCC(I)*BBB(I)
50295       A(3,2)=XMG*XMB*(COSA*SINC*EEE(I)*XX2(I)+SINA*COSC*CCC(I)*BBB(I))
50296       A(3,3)=XMG*XMR*(COSA*SINC*EEE(I)*BBB(I)+SINA*COSC*CCC(I)*XX2(I))
50297       A(3,4)=-XMB*XMR*(COSA*COSC*EEE(I)*BBB(I)+SINA*SINC*CCC(I)*XX2(I))
50298       A(3,5)=-XMG*XMT*(COSA*SINC*CCC(I)*BBB(I)+SINA*COSC*EEE(I)*XX2(I))
50299       A(3,6)=XMT*XMB*(COSA*COSC*CCC(I)*BBB(I)+SINA*SINC*EEE(I)*XX2(I))
50300       A(3,7)=XMT*XMR*(COSA*COSC*CCC(I)*XX2(I)+SINA*SINC*EEE(I)*BBB(I))
50301       A(3,8)=-XMQ4*(COSA*SINC*CCC(I)*XX2(I)+SINA*COSC*EEE(I)*BBB(I))
50302  
50303       A(4,1)=-COSA*SINC*FFF(I)*XX2(I)-SINA*COSC*DDD(I)*BBB(I)
50304       A(4,2)=-XMG*XMB*(COSA*COSC*FFF(I)*XX2(I)+SINA*SINC*DDD(I)*BBB(I))
50305       A(4,3)=-XMG*XMR*(COSA*COSC*FFF(I)*BBB(I)+SINA*SINC*DDD(I)*XX2(I))
50306       A(4,4)=-XMB*XMR*(COSA*SINC*FFF(I)*BBB(I)+SINA*COSC*DDD(I)*XX2(I))
50307       A(4,5)=-XMG*XMT*(COSA*COSC*DDD(I)*BBB(I)+SINA*SINC*FFF(I)*XX2(I))
50308       A(4,6)=-XMT*XMB*(COSA*SINC*DDD(I)*BBB(I)+SINA*COSC*FFF(I)*XX2(I))
50309       A(4,7)=-XMT*XMR*(COSA*SINC*DDD(I)*XX2(I)+SINA*COSC*FFF(I)*BBB(I))
50310       A(4,8)=-XMQ4*(COSA*COSC*DDD(I)*XX2(I)+SINA*SINC*FFF(I)*BBB(I))
50311  
50312       SMAX=(XMG-ABS(XMR))**2
50313       SMIN=(XMB+XMT)**2+0.1D0
50314  
50315       DO 120 LIN=0,NN-1
50316         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
50317         AM=(XMG2-XMR2)*(XMT2-XMB2)/2D0/SBAR
50318         GRS=SBAR-XMQ2
50319         W=PYLAMF(SBAR,XMB2,XMT2)*PYLAMF(SBAR,XMG2,XMR2)
50320         W=DSQRT(W)/2D0/SBAR
50321         ANT1=LOG(ABS((GRS/2D0+AM+XMST(1)-W)/(GRS/2D0+AM+XMST(1)+W)))
50322         ANT2=LOG(ABS((GRS/2D0+AM+XMST(3)-W)/(GRS/2D0+AM+XMST(3)+W)))
50323         ANB1=LOG(ABS((GRS/2D0-AM+XMSB(1)-W)/(GRS/2D0-AM+XMSB(1)+W)))
50324         ANB2=LOG(ABS((GRS/2D0-AM+XMSB(2)-W)/(GRS/2D0-AM+XMSB(2)+W)))
50325         SUMME(LIN)=-ULR(1)*W+(ULR(1)*(XMQ2/2D0-XMST(1)-XMG*XMT*SIN2A)
50326      &  +2D0*XX1(I)*AAA(I)*XMR*XMB)*ANT1
50327      &  +(ULR(1)/2D0*(XMST(1)*(XMQ2-XMST(1))-XMGTBR
50328      &  -2D0*XMG*XMT*SIN2A*(XMST(1)-XMB2-XMR2))
50329      &  +2D0*XX1(I)*AAA(I)*XMR*XMB*(XMST(1)-XMG2-XMT2)
50330      &  +4D0*SIN2A*XX1(I)*AAA(I)*XMQ4)
50331      &  *(1D0/(GRS/2D0+AM+XMST(1)-W)-1D0/(GRS/2D0+AM+XMST(1)+W))
50332         SUMME(LIN)=SUMME(LIN)-ULR(2)*W
50333      &  +(ULR(2)*(XMQ2/2D0-XMST(3)+XMG*XMT*SIN2A)
50334      &  -2D0*XX2(I)*BBB(I)*XMR*XMB)*ANT2
50335      &  +(ULR(2)/2D0*(XMST(3)*(XMQ2-XMST(3))-XMGTBR
50336      &  +2D0*XMG*XMT*SIN2A*(XMST(3)-XMB2-XMR2))
50337      &  -2D0*XX2(I)*BBB(I)*XMR*XMB*(XMST(3)-XMG2-XMT2)
50338      &  +4D0*SIN2A*XX2(I)*BBB(I)*XMQ4)
50339      &  *(1D0/(GRS/2D0+AM+XMST(3)-W)-1D0/(GRS/2D0+AM+XMST(3)+W))
50340         SUMME(LIN)=SUMME(LIN)-VLR(1)*W
50341      &  +(VLR(1)*(XMQ2/2D0-XMSB(1)-XMG*XMB*SIN2C)
50342      &  +2D0*CCC(I)*EEE(I)*XMR*XMT)*ANB1
50343      &  +(VLR(1)/2D0*(XMSB(1)*(XMQ2-XMSB(1))-XMGBTR
50344      &  -2D0*XMG*XMB*SIN2C*(XMSB(1)-XMT2-XMR2))
50345      &  +2D0*CCC(I)*EEE(I)*XMR*XMT*(XMSB(1)-XMG2-XMB2)
50346      &  +4D0*SIN2C*CCC(I)*EEE(I)*XMQ4)
50347      &  *(1D0/(GRS/2D0-AM+XMSB(1)-W)-1D0/(GRS/2D0-AM+XMSB(1)+W))
50348         SUMME(LIN)=SUMME(LIN)-VLR(2)*W
50349      &  +(VLR(2)*(XMQ2/2D0-XMSB(2)+XMG*XMB*SIN2C)
50350      &  -2D0*DDD(I)*FFF(I)*XMR*XMT)*ANB2
50351      &  +(VLR(2)/2D0*(XMSB(2)*(XMQ2-XMSB(2))-XMGBTR
50352      &  +2D0*XMG*XMB*SIN2C*(XMSB(2)-XMT2-XMR2))
50353      &  -2D0*DDD(I)*FFF(I)*XMR*XMT*(XMSB(2)-XMG2-XMB2)
50354      &  +4D0*SIN2C*DDD(I)*FFF(I)*XMQ4)
50355      &  *(1D0/(GRS/2D0-AM+XMSB(2)-W)-1D0/(GRS/2D0-AM+XMSB(2)+W))
50356         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMT*COS2A/(XMST(3)-XMST(1))
50357      &  *((AAA(I)*BBB(I)-XX1(I)*XX2(I))
50358      &  *((XMST(3)-XMB2-XMR2)*ANT2-(XMST(1)-XMB2-XMR2)*ANT1)
50359      &  +2D0*(AAA(I)*XX2(I)-XX1(I)*BBB(I))*XMB*XMR*(ANT2-ANT1))
50360         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMB*COS2C/(XMSB(2)-XMSB(1))
50361      &  *((EEE(I)*FFF(I)-CCC(I)*DDD(I))
50362      &  *((XMSB(2)-XMT2-XMR2)*ANB2-(XMSB(1)-XMT2-XMR2)*ANB1)
50363      &  +2D0*(EEE(I)*DDD(I)-CCC(I)*FFF(I))*XMT*XMR*(ANB2-ANB1))
50364         DO 110 J=1,4
50365           SUMME(LIN)=SUMME(LIN)-2D0*A(J,1)*W
50366      &    +((-A(J,1)*(XMSB(J)*(GRS+XMSB(J))+XMQ3)
50367      &    +A(J,2)*(XMSB(J)-XMT2-XMR2)+A(J,3)*(SBAR-XMB2-XMT2)
50368      &    +A(J,4)*(XMSB(J)+SBAR-XMB2-XMR2)
50369      &    -A(J,5)*(XMSB(J)+SBAR-XMG2-XMT2)+A(J,6)*(XMG2+XMR2-SBAR)
50370      &    -A(J,7)*(XMSB(J)-XMG2-XMB2)+2D0*A(J,8))
50371      &    *LOG(ABS((GRS/2D0+XMSB(J)-AM-W)/(GRS/2D0+XMSB(J)-AM+W)))
50372      &    -(A(J,1)*(XMST(J)*(GRS+XMST(J))+XMQ3)
50373      &    +A(J,2)*(XMST(J)+SBAR-XMG2-XMB2)-A(J,3)*(SBAR-XMB2-XMT2)
50374      &    +A(J,4)*(XMST(J)-XMG2-XMT2)-A(J,5)*(XMST(J)-XMR2-XMB2)
50375      &    -A(J,6)*(XMG2+XMR2-SBAR)
50376      &    -A(J,7)*(XMST(J)+SBAR-XMT2-XMR2)-2D0*A(J,8))
50377      &    *LOG(ABS((GRS/2D0+XMST(J)+AM-W)/(GRS/2D0+XMST(J)+AM+W))))
50378      &    /(GRS+XMSB(J)+XMST(J))
50379   110   CONTINUE
50380   120 CONTINUE
50381       SUMME(NN)=0D0
50382       GAM= ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
50383      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
50384  
50385       RETURN
50386       END
50387  
50388 C*********************************************************************
50389  
50390 C...PYNJDC
50391 C...Calculates decay widths for the neutralinos (admixtures of
50392 C...Bino, W3-ino, Higgs1-ino, Higgs2-ino)
50393  
50394 C...Input:  KCIN = KF code for particle
50395 C...Output: XLAM = widths
50396 C...        IDLAM = KF codes for decay particles
50397 C...        IKNT = number of decay channels defined
50398 C...AUTHOR: STEPHEN MRENNA
50399 C...Last change:
50400 C...10-15-95:  force decay chi^0_2 -> chi^0_1 + gamma
50401 C...when CHIGAMMA .NE. 0
50402 C...10 FEB 96:  Calculate this decay for small tan(beta)
50403  
50404       SUBROUTINE PYNJDC(KFIN,XLAM,IDLAM,IKNT)
50405  
50406 C...Double precision and integer declarations.
50407       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50408       IMPLICIT INTEGER(I-N)
50409       INTEGER PYK,PYCHGE,PYCOMP
50410 C...Parameter statement to help give large particle numbers.
50411       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50412      &KEXCIT=4000000,KDIMEN=5000000)
50413 C...Commonblocks.
50414       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50415       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50416       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
50417 c      COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50418 c     &SFMIX(16,4)
50419       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50420      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
50421 C      COMMON/PYINTS/XXM(20)
50422       COMPLEX*16 CXC
50423       COMMON/PYINTC/XXC(10),CXC(8)
50424       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
50425  
50426 C...Local variables.
50427       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
50428       COMPLEX*16 QIJ,RIJ,F21K,F12K,CAL,CAR,CBL,CBR,CA,CB
50429       INTEGER KFIN
50430       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
50431      &XMZ,XMZ2,AXMJ,AXMI
50432       DOUBLE PRECISION S12MIN,S12MAX
50433       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2
50434       DOUBLE PRECISION PYLAMF,XL
50435       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I
50436       DOUBLE PRECISION PYX2XH,PYX2XG
50437       DOUBLE PRECISION XLAM(0:400)
50438       INTEGER IDLAM(400,3)
50439       INTEGER LKNT,IX,IH,J,IJ,I,IKNT,FID
50440       INTEGER ITH(3),KF1,KF2
50441       INTEGER ITHC
50442       DOUBLE PRECISION DH(3),EH(3)
50443       DOUBLE PRECISION SR2
50444       DOUBLE PRECISION CBETA,SBETA
50445       DOUBLE PRECISION GAMCON,XMT1,XMT2
50446       DOUBLE PRECISION PYALEM,PI,PYALPS
50447       DOUBLE PRECISION RAT1,RAT2
50448       DOUBLE PRECISION T3T,FCOL
50449       DOUBLE PRECISION ALFA,BETA,TANB
50450       DOUBLE PRECISION PYXXGA
50451       EXTERNAL PYGAUS,PYXXZ6
50452       DOUBLE PRECISION PYGAUS,PYXXZ6
50453       DOUBLE PRECISION PREC
50454       INTEGER KFNCHI(4),KFCCHI(2)
50455       DATA ITH/25,35,36/
50456       DATA ITHC/37/
50457       DATA PREC/1D-2/
50458       DATA PI/3.141592654D0/
50459       DATA SR2/1.4142136D0/
50460       DATA KFNCHI/1000022,1000023,1000025,1000035/
50461       DATA KFCCHI/1000024,1000037/
50462  
50463 C...COUNT THE NUMBER OF DECAY MODES
50464       LKNT=0
50465  
50466       XMW=PMAS(24,1)
50467       XMW2=XMW**2
50468       XMZ=PMAS(23,1)
50469       XMZ2=XMZ**2
50470       XW=1D0-XMW2/XMZ2
50471       XW1=1D0-XW
50472       TANW = SQRT(XW/XW1)
50473  
50474 C...IX IS 1 - 4 DEPENDING ON SEQUENCE NUMBER
50475       IX=1
50476       IF(KFIN.EQ.KFNCHI(2)) IX=2
50477       IF(KFIN.EQ.KFNCHI(3)) IX=3
50478       IF(KFIN.EQ.KFNCHI(4)) IX=4
50479  
50480       XMI=SMZ(IX)
50481       XMI2=XMI**2
50482       AXMI=ABS(XMI)
50483       AEM=PYALEM(XMI2)
50484       AS =PYALPS(XMI2)
50485       C1=AEM/XW
50486       XMI3=ABS(XMI**3)
50487  
50488       TANB=RMSS(5)
50489       BETA=ATAN(TANB)
50490       ALFA=RMSS(18)
50491       CBETA=COS(BETA)
50492       SBETA=TANB*CBETA
50493       CALFA=COS(ALFA)
50494       SALFA=SIN(ALFA)
50495  
50496       DO 110 I=1,4
50497         DO 100 J=1,4
50498           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
50499   100   CONTINUE
50500   110 CONTINUE
50501       DO 130 I=1,2
50502         DO 120 J=1,2
50503            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
50504            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
50505   120   CONTINUE
50506   130 CONTINUE
50507  
50508 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
50509       IF(IX.EQ.1.AND.IMSS(11).EQ.0) GOTO 300
50510  
50511 C...FORCE CHI0_2 -> CHI0_1 + GAMMA
50512       IF(IX.EQ.2 .AND. IMSS(10).NE.0 ) THEN
50513         XMJ=SMZ(1)
50514         AXMJ=ABS(XMJ)
50515         LKNT=LKNT+1
50516         GAMCON=AEM**3/8D0/PI/XMW2/XW
50517         XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
50518         XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
50519         XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
50520         IDLAM(LKNT,1)=KSUSY1+22
50521         IDLAM(LKNT,2)=22
50522         IDLAM(LKNT,3)=0
50523         WRITE(MSTU(11),*) 'FORCED N2 -> N1 + GAMMA ',XLAM(LKNT)
50524         GOTO 340
50525       ENDIF
50526  
50527 C...GRAVITINO DECAY MODES
50528  
50529       IF(IMSS(11).EQ.1) THEN
50530         XMP=RMSS(29)
50531         IDG=39+KSUSY1
50532         XMGR=PMAS(PYCOMP(IDG),1)
50533         SINW=SQRT(XW)
50534         COSW=SQRT(1D0-XW)
50535         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
50536         IF(AXMI.GT.XMGR+PMAS(22,1)) THEN
50537           LKNT=LKNT+1
50538           IDLAM(LKNT,1)=IDG
50539           IDLAM(LKNT,2)=22
50540           IDLAM(LKNT,3)=0
50541           XLAM(LKNT)=XFAC*ABS(ZMIXC(IX,1)*COSW+ZMIXC(IX,2)*SINW)**2
50542         ENDIF
50543         IF(AXMI.GT.XMGR+XMZ) THEN
50544           LKNT=LKNT+1
50545           IDLAM(LKNT,1)=IDG
50546           IDLAM(LKNT,2)=23
50547           IDLAM(LKNT,3)=0
50548           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,1)*SINW-ZMIXC(IX,2)*COSW)**2 +
50549      $  .5D0*ABS(ZMIXC(IX,3)*CBETA-ZMIXC(IX,4)*SBETA)**2)*
50550      &  (1D0-XMZ2/XMI2)**4
50551         ENDIF
50552         IF(AXMI.GT.XMGR+PMAS(25,1)) THEN
50553           LKNT=LKNT+1
50554           IDLAM(LKNT,1)=IDG
50555           IDLAM(LKNT,2)=25
50556           IDLAM(LKNT,3)=0
50557           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SALFA-ZMIXC(IX,4)*CALFA)**2)*
50558      $  .5D0*(1D0-PMAS(25,1)**2/XMI2)**4
50559         ENDIF
50560         IF(AXMI.GT.XMGR+PMAS(35,1)) THEN
50561           LKNT=LKNT+1
50562           IDLAM(LKNT,1)=IDG
50563           IDLAM(LKNT,2)=35
50564           IDLAM(LKNT,3)=0
50565           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*CALFA+ZMIXC(IX,4)*SALFA)**2)*
50566      $  .5D0*(1D0-PMAS(35,1)**2/XMI2)**4
50567         ENDIF
50568         IF(AXMI.GT.XMGR+PMAS(36,1)) THEN
50569           LKNT=LKNT+1
50570           IDLAM(LKNT,1)=IDG
50571           IDLAM(LKNT,2)=36
50572           IDLAM(LKNT,3)=0
50573           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SBETA+ZMIXC(IX,4)*CBETA)**2)*
50574      $  .5D0*(1D0-PMAS(36,1)**2/XMI2)**4
50575         ENDIF
50576         IF(IX.EQ.1) GOTO 300
50577       ENDIF
50578  
50579       DO 220 IJ=1,IX-1
50580         XMJ=SMZ(IJ)
50581         AXMJ=ABS(XMJ)
50582         XMJ2=XMJ**2
50583  
50584 C...CHI0_I -> CHI0_J + GAMMA
50585         IF(AXMI.GE.AXMJ.AND.SBETA/CBETA.LE.2D0) THEN
50586           RAT1=ABS(ZMIXC(IJ,1))**2+ABS(ZMIXC(IJ,2))**2
50587           RAT1=RAT1/( 1D-6+ABS(ZMIXC(IX,3))**2+ABS(ZMIXC(IX,4))**2 )
50588           RAT2=ABS(ZMIXC(IX,1))**2+ABS(ZMIXC(IX,2))**2
50589           RAT2=RAT2/( 1D-6+ABS(ZMIXC(IJ,3))**2+ABS(ZMIXC(IJ,4))**2 )
50590           IF((RAT1.GT. 0.90D0 .AND. RAT1.LT. 1.10D0) .OR.
50591      &    (RAT2.GT. 0.90D0 .AND. RAT2.LT. 1.10D0)) THEN
50592             LKNT=LKNT+1
50593             IDLAM(LKNT,1)=KFNCHI(IJ)
50594             IDLAM(LKNT,2)=22
50595             IDLAM(LKNT,3)=0
50596             GAMCON=AEM**3/8D0/PI/XMW2/XW
50597             XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
50598             XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
50599             XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
50600           ENDIF
50601         ENDIF
50602  
50603 C...CHI0_I -> CHI0_J + Z0
50604         IF(AXMI.GE.AXMJ+XMZ) THEN
50605           LKNT=LKNT+1
50606           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
50607      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
50608           ORPP=-DCONJG(OLPP)
50609           GX2=ABS(OLPP)**2+ABS(ORPP)**2
50610           GLR=DBLE(OLPP*DCONJG(ORPP))
50611           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
50612           IDLAM(LKNT,1)=KFNCHI(IJ)
50613           IDLAM(LKNT,2)=23
50614           IDLAM(LKNT,3)=0
50615         ELSEIF(AXMI.GE.AXMJ) THEN
50616           XXC(1)=0D0
50617           XXC(2)=XMJ
50618           XXC(3)=0D0
50619           XXC(4)=XMI
50620           XXC(9)=XMZ
50621           XXC(10)=PMAS(23,2)
50622           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
50623      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
50624           ORPP=DCONJG(OLPP)
50625 C...CHARGED LEPTONS
50626           FID=11
50627           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
50628           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
50629           EI=KCHG(FID,1)/3D0
50630           T3I=SIGN(1D0,EI+1D-6)/2D0
50631           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
50632      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
50633           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
50634           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
50635           CXC(2)=-GLIJ
50636           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
50637           CXC(4)=DCONJG(GLIJ)
50638           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
50639           CXC(6)=GRIJ
50640           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
50641           CXC(8)=-DCONJG(GRIJ)
50642           S12MIN=0D0
50643           S12MAX=(AXMI-AXMJ)**2
50644           IF( XXC(5).LT.AXMI ) THEN
50645             XXC(5)=1D6
50646           ENDIF
50647           IF(XXC(6).LT.AXMI ) THEN
50648             XXC(6)=1D6
50649           ENDIF
50650           XXC(7)=XXC(5)
50651           XXC(8)=XXC(6)
50652  
50653           IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
50654             LKNT=LKNT+1
50655             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50656      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
50657             IDLAM(LKNT,1)=KFNCHI(IJ)
50658             IDLAM(LKNT,2)=FID
50659             IDLAM(LKNT,3)=-FID
50660             IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
50661               LKNT=LKNT+1
50662               XLAM(LKNT)=XLAM(LKNT-1)
50663               IDLAM(LKNT,1)=KFNCHI(IJ)
50664               IDLAM(LKNT,2)=13
50665               IDLAM(LKNT,3)=-13
50666             ENDIF
50667           ENDIF
50668   140     CONTINUE
50669           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
50670             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
50671             XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
50672           ELSE
50673             XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
50674             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
50675           ENDIF
50676           IF( XXC(5).LT.AXMI ) THEN
50677             XXC(5)=1D6
50678           ENDIF
50679           IF(XXC(6).LT.AXMI ) THEN
50680             XXC(6)=1D6
50681           ENDIF
50682           XXC(7)=XXC(5)
50683           XXC(8)=XXC(6)
50684  
50685           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
50686             LKNT=LKNT+1
50687             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50688      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
50689             IDLAM(LKNT,1)=KFNCHI(IJ)
50690             IDLAM(LKNT,2)=15
50691             IDLAM(LKNT,3)=-15
50692           ENDIF
50693  
50694 C...NEUTRINOS
50695   150     CONTINUE
50696           FID=12
50697           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
50698           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
50699           EI=KCHG(FID,1)/3D0
50700           T3I=SIGN(1D0,EI+1D-6)/2D0
50701           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
50702      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
50703           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
50704           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
50705           CXC(2)=-GLIJ
50706           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
50707           CXC(4)=DCONJG(GLIJ)
50708           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
50709           CXC(6)=GRIJ
50710           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
50711           CXC(8)=-DCONJG(GRIJ)
50712           S12MIN=0D0
50713           S12MAX=(AXMI-AXMJ)**2
50714           IF( XXC(5).LT.AXMI ) THEN
50715             XXC(5)=1D6
50716           ENDIF
50717           IF( XXC(6).LT.AXMI ) THEN
50718             XXC(6)=1D6
50719           ENDIF
50720           XXC(7)=XXC(5)
50721           XXC(8)=XXC(6)
50722  
50723           LKNT=LKNT+1
50724           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50725      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
50726           IDLAM(LKNT,1)=KFNCHI(IJ)
50727           IDLAM(LKNT,2)=12
50728           IDLAM(LKNT,3)=-12
50729           LKNT=LKNT+1
50730           XLAM(LKNT)=XLAM(LKNT-1)
50731           IDLAM(LKNT,1)=KFNCHI(IJ)
50732           IDLAM(LKNT,2)=14
50733           IDLAM(LKNT,3)=-14
50734   160     CONTINUE
50735  
50736           IF(PMAS(PYCOMP(KSUSY1+16),1).NE.PMAS(PYCOMP(KSUSY1+12),1))
50737      &    THEN
50738             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
50739             IF( XXC(5).LT.AXMI ) THEN
50740               XXC(5)=1D6
50741             ENDIF
50742             XXC(7)=XXC(5)
50743             LKNT=LKNT+1
50744             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50745      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
50746           ELSE
50747             LKNT=LKNT+1
50748             XLAM(LKNT)=XLAM(LKNT-1)
50749           ENDIF
50750           IDLAM(LKNT,1)=KFNCHI(IJ)
50751           IDLAM(LKNT,2)=16
50752           IDLAM(LKNT,3)=-16
50753 C...D-TYPE QUARKS
50754   170     CONTINUE
50755           FID=1
50756           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
50757           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
50758           EI=KCHG(FID,1)/3D0
50759           T3I=SIGN(1D0,EI+1D-6)/2D0
50760           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
50761      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
50762           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
50763           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
50764           CXC(2)=-GLIJ
50765           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
50766           CXC(4)=DCONJG(GLIJ)
50767           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
50768           CXC(6)=GRIJ
50769           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
50770           CXC(8)=-DCONJG(GRIJ)
50771           S12MIN=0D0
50772           S12MAX=(AXMI-AXMJ)**2
50773           IF( XXC(5).LT.AXMI ) THEN
50774             XXC(5)=1D6
50775           ENDIF
50776           IF( XXC(6).LT.AXMI ) THEN
50777             XXC(6)=1D6
50778           ENDIF
50779           XXC(7)=XXC(5)
50780           XXC(8)=XXC(6)
50781  
50782           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
50783             LKNT=LKNT+1
50784             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50785      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
50786             IDLAM(LKNT,1)=KFNCHI(IJ)
50787             IDLAM(LKNT,2)=1
50788             IDLAM(LKNT,3)=-1
50789             IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
50790               LKNT=LKNT+1
50791               XLAM(LKNT)=XLAM(LKNT-1)
50792               IDLAM(LKNT,1)=KFNCHI(IJ)
50793               IDLAM(LKNT,2)=3
50794               IDLAM(LKNT,3)=-3
50795             ENDIF
50796           ENDIF
50797   180     CONTINUE
50798           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
50799             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
50800             XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
50801           ELSE
50802             XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
50803             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
50804           ENDIF
50805           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
50806           IF(XXC(5).LT.AXMI) THEN
50807             XXC(5)=1D6
50808           ELSEIF(XXC(6).LT.AXMI) THEN
50809             XXC(6)=1D6
50810           ENDIF
50811           XXC(7)=XXC(5)
50812           XXC(8)=XXC(6)
50813           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
50814             LKNT=LKNT+1
50815             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50816      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
50817             IDLAM(LKNT,1)=KFNCHI(IJ)
50818             IDLAM(LKNT,2)=5
50819             IDLAM(LKNT,3)=-5
50820           ENDIF
50821  
50822 C...U-TYPE QUARKS
50823   190     CONTINUE
50824           FID=2
50825           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
50826           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
50827           EI=KCHG(FID,1)/3D0
50828           T3I=SIGN(1D0,EI+1D-6)/2D0
50829           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
50830      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
50831           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
50832           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
50833           CXC(2)=-GLIJ
50834           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
50835           CXC(4)=DCONJG(GLIJ)
50836           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
50837           CXC(6)=GRIJ
50838           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
50839           CXC(8)=-DCONJG(GRIJ)
50840  
50841           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 200
50842           IF(XXC(5).LT.AXMI) THEN
50843             XXC(5)=1D6
50844           ELSEIF(XXC(6).LT.AXMI) THEN
50845             XXC(6)=1D6
50846           ENDIF
50847           XXC(7)=XXC(5)
50848           XXC(8)=XXC(6)
50849  
50850           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
50851             LKNT=LKNT+1
50852             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50853      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
50854             IDLAM(LKNT,1)=KFNCHI(IJ)
50855             IDLAM(LKNT,2)=2
50856             IDLAM(LKNT,3)=-2
50857             IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
50858               LKNT=LKNT+1
50859               XLAM(LKNT)=XLAM(LKNT-1)
50860               IDLAM(LKNT,1)=KFNCHI(IJ)
50861               IDLAM(LKNT,2)=4
50862               IDLAM(LKNT,3)=-4
50863             ENDIF
50864           ENDIF
50865   200     CONTINUE
50866         ENDIF
50867  
50868 C...CHI0_I -> CHI0_J + H0_K
50869         EH(1)=SIN(ALFA)
50870         EH(2)=COS(ALFA)
50871         EH(3)=-SIN(BETA)
50872         DH(1)=COS(ALFA)
50873         DH(2)=-SIN(ALFA)
50874         DH(3)=COS(BETA)
50875         QIJ=ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,2))+
50876      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,2)-
50877      &  TANW*(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,1))+
50878      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,1))
50879         RIJ=DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,2)+
50880      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,2))-
50881      &  TANW*(DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,1)+
50882      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,1)))
50883         DO 210 IH=1,3
50884           XMH=PMAS(ITH(IH),1)
50885           XMH2=XMH**2
50886           IF(AXMI.GE.AXMJ+XMH) THEN
50887             LKNT=LKNT+1
50888             XL=PYLAMF(XMI2,XMJ2,XMH2)
50889             F21K=0.5D0*(QIJ*EH(IH)+RIJ*DH(IH))
50890             F12K=F21K
50891 C...SIGN OF MASSES I,J
50892             XMK=XMJ
50893             IF(IH.EQ.3) XMK=-XMK
50894             GX2=ABS(F21K)**2+ABS(F12K)**2
50895             GLR=DBLE(F21K*DCONJG(F12K))
50896             XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
50897             IDLAM(LKNT,1)=KFNCHI(IJ)
50898             IDLAM(LKNT,2)=ITH(IH)
50899             IDLAM(LKNT,3)=0
50900           ENDIF
50901   210   CONTINUE
50902   220 CONTINUE
50903  
50904 C...CHI0_I -> CHI+_J + W-
50905       DO 260 IJ=1,2
50906         XMJ=SMW(IJ)
50907         AXMJ=ABS(XMJ)
50908         XMJ2=XMJ**2
50909         IF(AXMI.GE.AXMJ+XMW) THEN
50910           LKNT=LKNT+1
50911           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
50912      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)/SR2)
50913           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
50914      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))/SR2)
50915           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
50916           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
50917           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
50918           IDLAM(LKNT,1)=KFCCHI(IJ)
50919           IDLAM(LKNT,2)=-24
50920           IDLAM(LKNT,3)=0
50921           LKNT=LKNT+1
50922           XLAM(LKNT)=XLAM(LKNT-1)
50923           IDLAM(LKNT,1)=-KFCCHI(IJ)
50924           IDLAM(LKNT,2)=24
50925           IDLAM(LKNT,3)=0
50926         ELSEIF(AXMI.GE.AXMJ) THEN
50927           S12MIN=0D0
50928           S12MAX=(AXMI-AXMJ)**2
50929           RT2I = 1D0/SQRT(2D0)
50930           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
50931      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)*RT2I)*RT2I
50932           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
50933      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))*RT2I)*RT2I
50934           CXC(5)=DCMPLX(0D0,0D0)
50935           CXC(7)=DCMPLX(0D0,0D0)
50936           IA=11
50937           JA=12
50938           EI=KCHG(IA,1)/3D0
50939           T3I=SIGN(1D0,EI+1D-6)/2D0
50940           EJ=KCHG(JA,1)/3D0
50941           T3J=SIGN(1D0,EJ+1D-6)/2D0
50942           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
50943      &    TANW+ZMIXC(IX,2)*T3J)*RT2I
50944           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
50945      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)*RT2I
50946           CXC(6)=DCMPLX(0D0,0D0)
50947           CXC(8)=DCMPLX(0D0,0D0)
50948           XXC(1)=0D0
50949           XXC(2)=XMJ
50950           XXC(3)=0D0
50951           XXC(4)=XMI
50952           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
50953           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
50954           XXC(9)=PMAS(24,1)
50955           XXC(10)=PMAS(24,2)
50956           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 230
50957           IF(XXC(5).LT.AXMI) THEN
50958             XXC(5)=1D6
50959           ELSEIF(XXC(6).LT.AXMI) THEN
50960             XXC(6)=1D6
50961           ENDIF
50962           XXC(7)=XXC(6)
50963           XXC(8)=XXC(5)
50964           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
50965             LKNT=LKNT+1
50966             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50967      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
50968             IDLAM(LKNT,1)=KFCCHI(IJ)
50969             IDLAM(LKNT,2)=11
50970             IDLAM(LKNT,3)=-12
50971             LKNT=LKNT+1
50972             XLAM(LKNT)=XLAM(LKNT-1)
50973             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
50974             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
50975             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
50976             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
50977               LKNT=LKNT+1
50978               XLAM(LKNT)=XLAM(LKNT-1)
50979               IDLAM(LKNT,1)=KFCCHI(IJ)
50980               IDLAM(LKNT,2)=13
50981               IDLAM(LKNT,3)=-14
50982               LKNT=LKNT+1
50983               XLAM(LKNT)=XLAM(LKNT-1)
50984               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
50985               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
50986               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
50987             ENDIF
50988           ENDIF
50989   230     CONTINUE
50990           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
50991             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
50992             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
50993           ELSE
50994             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
50995             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
50996           ENDIF
50997           IF(XXC(5).LT.AXMI) THEN
50998             XXC(5)=1D6
50999           ENDIF
51000           IF(XXC(6).LT.AXMI) THEN
51001             XXC(6)=1D6
51002           ENDIF
51003           XXC(7)=XXC(6)
51004           XXC(8)=XXC(5)
51005           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
51006             LKNT=LKNT+1
51007             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51008      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51009             XLAM(LKNT)=XLAM(LKNT-1)
51010             IDLAM(LKNT,1)=KFCCHI(IJ)
51011             IDLAM(LKNT,2)=15
51012             IDLAM(LKNT,3)=-16
51013             LKNT=LKNT+1
51014             XLAM(LKNT)=XLAM(LKNT-1)
51015             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51016             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51017             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51018           ENDIF
51019  
51020 C...NOW, DO THE QUARKS
51021   240     CONTINUE
51022           IA=1
51023           JA=2
51024           EI=KCHG(IA,1)/3D0
51025           T3I=SIGN(1D0,EI+1D-6)/2D0
51026           EJ=KCHG(JA,1)/3D0
51027           T3J=SIGN(1D0,EJ+1D-6)/2D0
51028           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
51029      &    TANW+ZMIXC(IX,2)*T3J)
51030           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
51031      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)
51032           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
51033           XXC(6)=PMAS(PYCOMP(KSUSY1+JA),1)
51034           IF(XXC(5).LT.AXMI) THEN
51035             XXC(5)=1D6
51036           ENDIF
51037           IF(XXC(6).LT.AXMI) THEN
51038             XXC(6)=1D6
51039           ENDIF
51040           XXC(7)=XXC(6)
51041           XXC(8)=XXC(5)
51042           IF(AXMI.GE.AXMJ+PMAS(2,1)+PMAS(1,1)) THEN
51043             LKNT=LKNT+1
51044             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51045      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51046             IDLAM(LKNT,1)=KFCCHI(IJ)
51047             IDLAM(LKNT,2)=1
51048             IDLAM(LKNT,3)=-2
51049             LKNT=LKNT+1
51050             XLAM(LKNT)=XLAM(LKNT-1)
51051             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51052             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51053             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51054             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
51055               LKNT=LKNT+1
51056               XLAM(LKNT)=XLAM(LKNT-1)
51057               IDLAM(LKNT,1)=KFCCHI(IJ)
51058               IDLAM(LKNT,2)=3
51059               IDLAM(LKNT,3)=-4
51060               LKNT=LKNT+1
51061               XLAM(LKNT)=XLAM(LKNT-1)
51062               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51063               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51064               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51065             ENDIF
51066           ENDIF
51067   250     CONTINUE
51068         ENDIF
51069   260 CONTINUE
51070   270 CONTINUE
51071  
51072 C...CHI0_I -> CHI+_I + H-
51073       DO 280 IJ=1,2
51074         XMJ=SMW(IJ)
51075         AXMJ=ABS(XMJ)
51076         XMJ2=XMJ**2
51077         XMHP=PMAS(ITHC,1)
51078         IF(AXMI.GE.AXMJ+XMHP) THEN
51079           LKNT=LKNT+1
51080           OLPP=CBETA*(ZMIXC(IX,4)*DCONJG(VMIXC(IJ,1))+(ZMIXC(IX,2)+
51081      &    ZMIXC(IX,1)*TANW)*DCONJG(VMIXC(IJ,2))/SR2)
51082           ORPP=SBETA*(DCONJG(ZMIXC(IX,3))*UMIXC(IJ,1)-
51083      &    (DCONJG(ZMIXC(IX,2))+DCONJG(ZMIXC(IX,1))*TANW)*
51084      &    UMIXC(IJ,2)/SR2)
51085           GX2=ABS(OLPP)**2+ABS(ORPP)**2
51086           GLR=DBLE(OLPP*DCONJG(ORPP))
51087           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
51088           IDLAM(LKNT,1)=KFCCHI(IJ)
51089           IDLAM(LKNT,2)=-ITHC
51090           IDLAM(LKNT,3)=0
51091           LKNT=LKNT+1
51092           XLAM(LKNT)=XLAM(LKNT-1)
51093           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51094           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51095           IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51096         ELSE
51097  
51098         ENDIF
51099   280 CONTINUE
51100  
51101 C...2-BODY DECAYS TO FERMION SFERMION
51102       DO 290 J=1,16
51103         IF(J.GE.7.AND.J.LE.10) GOTO 290
51104         KF1=KSUSY1+J
51105         KF2=KSUSY2+J
51106         XMSF1=PMAS(PYCOMP(KF1),1)
51107         XMSF2=PMAS(PYCOMP(KF2),1)
51108         XMF=PMAS(J,1)
51109         IF(J.LE.6) THEN
51110           FCOL=3D0
51111         ELSE
51112           FCOL=1D0
51113         ENDIF
51114  
51115         EI=KCHG(J,1)/3D0
51116         T3T=SIGN(1D0,EI)
51117         IF(J.EQ.12.OR.J.EQ.14.OR.J.EQ.16) T3T=1D0
51118         IF(MOD(J,2).EQ.0) THEN
51119           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
51120           CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
51121           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
51122           CBR=CAL
51123         ELSE
51124           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
51125           CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
51126           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
51127           CBR=CAL
51128         ENDIF
51129  
51130 C...D~ D_L
51131         IF(AXMI.GE.XMF+XMSF1) THEN
51132           LKNT=LKNT+1
51133           XMA2=XMSF1**2
51134           XMB2=XMF**2
51135           XL=PYLAMF(XMI2,XMA2,XMB2)
51136           CA=CAL*SFMIX(J,1)+CAR*SFMIX(J,2)
51137           CB=CBL*SFMIX(J,1)+CBR*SFMIX(J,2)
51138           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
51139      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
51140           IDLAM(LKNT,1)=KF1
51141           IDLAM(LKNT,2)=-J
51142           IDLAM(LKNT,3)=0
51143           LKNT=LKNT+1
51144           XLAM(LKNT)=XLAM(LKNT-1)
51145           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51146           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51147           IDLAM(LKNT,3)=0
51148         ENDIF
51149  
51150 C...D~ D_R
51151         IF(AXMI.GE.XMF+XMSF2) THEN
51152           LKNT=LKNT+1
51153           XMA2=XMSF2**2
51154           XMB2=XMF**2
51155           CA=CAL*SFMIX(J,3)+CAR*SFMIX(J,4)
51156           CB=CBL*SFMIX(J,3)+CBR*SFMIX(J,4)
51157           XL=PYLAMF(XMI2,XMA2,XMB2)
51158           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
51159      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
51160           IDLAM(LKNT,1)=KF2
51161           IDLAM(LKNT,2)=-J
51162           IDLAM(LKNT,3)=0
51163           LKNT=LKNT+1
51164           XLAM(LKNT)=XLAM(LKNT-1)
51165           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51166           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51167           IDLAM(LKNT,3)=0
51168         ENDIF
51169   290 CONTINUE
51170   300 CONTINUE
51171 C...3-BODY DECAY TO Q Q~ GLUINO
51172       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
51173       IF(AXMI.GE.XMJ) THEN
51174         RT2I = 1D0/SQRT(2D0)
51175         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))*RT2I
51176         ORPP=DCONJG(OLPP)
51177         AXMJ=ABS(XMJ)
51178         XXC(1)=0D0
51179         XXC(2)=XMJ
51180         XXC(3)=0D0
51181         XXC(4)=XMI
51182         FID=1
51183         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
51184         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
51185         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 310
51186         XXC(7)=XXC(5)
51187         XXC(8)=XXC(6)
51188         XXC(9)=1D6
51189         XXC(10)=0D0
51190         EI=KCHG(FID,1)/3D0
51191         T3I=SIGN(1D0,EI+1D-6)/2D0
51192         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
51193         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
51194         CXC(1)=0D0
51195         CXC(2)=-GLIJ
51196         CXC(3)=0D0
51197         CXC(4)=DCONJG(GLIJ)
51198         CXC(5)=0D0
51199         CXC(6)=GRIJ
51200         CXC(7)=0D0
51201         CXC(8)=-DCONJG(GRIJ)
51202         S12MIN=0D0
51203         S12MAX=(AXMI-AXMJ)**2
51204 C...ALL QUARKS BUT T
51205         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
51206           LKNT=LKNT+1
51207           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
51208      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51209           IDLAM(LKNT,1)=KSUSY1+21
51210           IDLAM(LKNT,2)=1
51211           IDLAM(LKNT,3)=-1
51212           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
51213             LKNT=LKNT+1
51214             XLAM(LKNT)=XLAM(LKNT-1)
51215             IDLAM(LKNT,1)=KSUSY1+21
51216             IDLAM(LKNT,2)=3
51217             IDLAM(LKNT,3)=-3
51218           ENDIF
51219         ENDIF
51220   310   CONTINUE
51221         IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
51222           XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
51223           XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
51224         ELSE
51225           XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
51226           XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
51227         ENDIF
51228         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 320
51229         XXC(7)=XXC(5)
51230         XXC(8)=XXC(6)
51231         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
51232           LKNT=LKNT+1
51233           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
51234      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51235           IDLAM(LKNT,1)=KSUSY1+21
51236           IDLAM(LKNT,2)=5
51237           IDLAM(LKNT,3)=-5
51238         ENDIF
51239 C...U-TYPE QUARKS
51240   320   CONTINUE
51241         FID=2
51242         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
51243         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
51244         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 330
51245         XXC(7)=XXC(5)
51246         XXC(8)=XXC(6)
51247         EI=KCHG(FID,1)/3D0
51248         T3I=SIGN(1D0,EI+1D-6)/2D0
51249         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
51250         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
51251         CXC(2)=-GLIJ
51252         CXC(4)=DCONJG(GLIJ)
51253         CXC(6)=GRIJ
51254         CXC(8)=-DCONJG(GRIJ)
51255         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
51256           LKNT=LKNT+1
51257           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
51258      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51259           IDLAM(LKNT,1)=KSUSY1+21
51260           IDLAM(LKNT,2)=2
51261           IDLAM(LKNT,3)=-2
51262           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
51263             LKNT=LKNT+1
51264             XLAM(LKNT)=XLAM(LKNT-1)
51265             IDLAM(LKNT,1)=KSUSY1+21
51266             IDLAM(LKNT,2)=4
51267             IDLAM(LKNT,3)=-4
51268           ENDIF
51269         ENDIF
51270   330   CONTINUE
51271       ENDIF
51272  
51273 C...R-violating decay modes (SKANDS).
51274       CALL PYRVNE(KFIN,XLAM,IDLAM,LKNT)
51275  
51276   340 IKNT=LKNT
51277       XLAM(0)=0D0
51278       DO 350 I=1,IKNT
51279         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
51280         XLAM(0)=XLAM(0)+XLAM(I)
51281   350 CONTINUE
51282       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
51283  
51284       RETURN
51285       END
51286  
51287 C*********************************************************************
51288  
51289 C...PYCJDC
51290 C...Calculate decay widths for the charginos (admixtures of
51291 C...charged Wino and charged Higgsino.
51292  
51293 C...Input:  KCIN = KF code for particle
51294 C...Output: XLAM = widths
51295 C...        IDLAM = KF codes for decay particles
51296 C...        IKNT = number of decay channels defined
51297 C...AUTHOR: STEPHEN MRENNA
51298 C...Last change:
51299 C...10-16-95:  force decay chi^+_1 -> chi^0_1 e+ nu_e
51300 C...when CHIENU .NE. 0
51301  
51302       SUBROUTINE PYCJDC(KFIN,XLAM,IDLAM,IKNT)
51303  
51304 C...Double precision and integer declarations.
51305       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
51306       IMPLICIT INTEGER(I-N)
51307       INTEGER PYK,PYCHGE,PYCOMP
51308 C...Parameter statement to help give large particle numbers.
51309       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
51310      &KEXCIT=4000000,KDIMEN=5000000)
51311 C...Commonblocks.
51312       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
51313       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
51314       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
51315       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
51316      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
51317 CC     &SFMIX(16,4),
51318 C      COMMON/PYINTS/XXM(20)
51319       COMPLEX*16 CXC
51320       COMMON/PYINTC/XXC(10),CXC(8)
51321       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
51322  
51323 C...Local variables
51324       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
51325       COMPLEX*16 CAL,CBL,CAR,CBR,CA,CB
51326       INTEGER KFIN,KCIN
51327       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
51328      &XMZ,XMZ2,AXMJ,AXMI
51329       DOUBLE PRECISION S12MIN,S12MAX
51330       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2,XMK
51331       DOUBLE PRECISION PYLAMF,XL
51332       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I,BETA,ALFA
51333       DOUBLE PRECISION PYX2XH,PYX2XG
51334       DOUBLE PRECISION XLAM(0:400)
51335       INTEGER IDLAM(400,3)
51336       INTEGER LKNT,IX,IH,J,IJ,I,IKNT
51337       INTEGER ITH(3)
51338       INTEGER ITHC
51339       DOUBLE PRECISION ETAH(3),DH(3),EH(3)
51340       DOUBLE PRECISION SR2
51341       DOUBLE PRECISION CBETA,SBETA,TANB
51342  
51343       DOUBLE PRECISION PYALEM,PI,PYALPS
51344       DOUBLE PRECISION FCOL
51345       INTEGER KF1,KF2,ISF
51346       INTEGER KFNCHI(4),KFCCHI(2)
51347  
51348       DOUBLE PRECISION TEMP
51349       EXTERNAL PYGAUS,PYXXZ6
51350       DOUBLE PRECISION PYGAUS,PYXXZ6
51351       DOUBLE PRECISION PREC
51352       DATA ITH/25,35,36/
51353       DATA ITHC/37/
51354       DATA ETAH/1D0,1D0,-1D0/
51355       DATA SR2/1.4142136D0/
51356       DATA PI/3.141592654D0/
51357       DATA PREC/1D-2/
51358       DATA KFNCHI/1000022,1000023,1000025,1000035/
51359       DATA KFCCHI/1000024,1000037/
51360  
51361 C...COUNT THE NUMBER OF DECAY MODES
51362       LKNT=0
51363       XMW=PMAS(24,1)
51364       XMW2=XMW**2
51365       XMZ=PMAS(23,1)
51366       XMZ2=XMZ**2
51367       XW=1D0-XMW2/XMZ2
51368       XW1=1D0-XW
51369       TANW = SQRT(XW/XW1)
51370  
51371 C...1 OR 2 DEPENDING ON CHARGINO TYPE
51372       IX=1
51373       IF(KFIN.EQ.KFCCHI(2)) IX=2
51374       KCIN=PYCOMP(KFIN)
51375  
51376       XMI=SMW(IX)
51377       XMI2=XMI**2
51378       AXMI=ABS(XMI)
51379       AEM=PYALEM(XMI2)
51380       AS =PYALPS(XMI2)
51381       C1=AEM/XW
51382       XMI3=ABS(XMI**3)
51383       TANB=RMSS(5)
51384       BETA=ATAN(TANB)
51385       CBETA=COS(BETA)
51386       SBETA=TANB*CBETA
51387       ALFA=RMSS(18)
51388  
51389       DO 110 I=1,2
51390         DO 100 J=1,2
51391           VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
51392           UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
51393   100   CONTINUE
51394   110 CONTINUE
51395  
51396 C...GRAVITINO DECAY MODES
51397  
51398       IF(IMSS(11).EQ.1) THEN
51399         XMP=RMSS(29)
51400         IDG=39+KSUSY1
51401         XMGR=PMAS(PYCOMP(IDG),1)
51402 C        SINW=SQRT(XW)
51403 C        COSW=SQRT(1D0-XW)
51404         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
51405         IF(AXMI.GT.XMGR+XMW) THEN
51406           LKNT=LKNT+1
51407           IDLAM(LKNT,1)=IDG
51408           IDLAM(LKNT,2)=24
51409           IDLAM(LKNT,3)=0
51410           XLAM(LKNT)=XFAC*(
51411      &  .5D0*(ABS(VMIXC(IX,1))**2+ABS(UMIXC(IX,1))**2)+
51412      &  .5D0*((ABS(VMIXC(IX,2))*SBETA)**2+(ABS(UMIXC(IX,2))*CBETA)**2))*
51413      &  (1D0-XMW2/XMI2)**4
51414         ENDIF
51415         IF(AXMI.GT.XMGR+PMAS(37,1)) THEN
51416           LKNT=LKNT+1
51417           IDLAM(LKNT,1)=IDG
51418           IDLAM(LKNT,2)=37
51419           IDLAM(LKNT,3)=0
51420           XLAM(LKNT)=XFAC*(.5D0*((ABS(VMIXC(IX,2))*CBETA)**2+
51421      &   (ABS(UMIXC(IX,2))*SBETA)**2))
51422      &   *(1D0-PMAS(37,1)**2/XMI2)**4
51423        ENDIF
51424       ENDIF
51425  
51426 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
51427       IF(IX.EQ.1) GOTO 170
51428       XMJ=SMW(1)
51429       AXMJ=ABS(XMJ)
51430       XMJ2=XMJ**2
51431  
51432 C...CHI_2+ -> CHI_1+ + Z0
51433       IF(AXMI.GE.AXMJ+XMZ) THEN
51434         LKNT=LKNT+1
51435         IJ=1
51436         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
51437      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
51438         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
51439      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
51440         GX2=ABS(OLPP)**2+ABS(ORPP)**2
51441         GLR=DBLE(OLPP*DCONJG(ORPP))
51442         XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
51443         IDLAM(LKNT,1)=KFCCHI(1)
51444         IDLAM(LKNT,2)=23
51445         IDLAM(LKNT,3)=0
51446  
51447 C...CHARGED LEPTONS
51448       ELSEIF(AXMI.GE.AXMJ) THEN
51449         S12MIN=0D0
51450         S12MAX=(AXMI-AXMJ)**2
51451         IA=11
51452         JA=12
51453         EI=KCHG(IABS(IA),1)/3D0
51454         T3I=SIGN(1D0,EI+1D-6)/2D0
51455         XXC(1)=0D0
51456         XXC(2)=XMJ
51457         XXC(3)=0D0
51458         XXC(4)=XMI
51459         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51460         XXC(6)=1D6
51461         XXC(9)=PMAS(23,1)
51462         XXC(10)=PMAS(23,2)
51463         IJ=1
51464         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
51465      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
51466         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
51467      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
51468         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
51469         CXC(2)=DCMPLX(0D0,0D0)
51470         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
51471         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
51472         CXC(5)=-DCMPLX(EI/XW1)*ORPP
51473         CXC(6)=DCMPLX(0D0,0D0)
51474         CXC(7)=-DCMPLX(EI/XW1)*OLPP
51475         CXC(8)=DCMPLX(0D0,0D0)
51476         IF( XXC(5).LT.AXMI ) THEN
51477           XXC(5)=1D6
51478         ENDIF
51479         XXC(7)=XXC(5)
51480         XXC(8)=XXC(6)
51481         IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
51482           LKNT=LKNT+1
51483           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51484      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51485           IDLAM(LKNT,1)=KFCCHI(1)
51486           IDLAM(LKNT,2)=11
51487           IDLAM(LKNT,3)=-11
51488           IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
51489             LKNT=LKNT+1
51490             XLAM(LKNT)=XLAM(LKNT-1)
51491             IDLAM(LKNT,1)=KFCCHI(1)
51492             IDLAM(LKNT,2)=13
51493             IDLAM(LKNT,3)=-13
51494           ENDIF
51495           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
51496             LKNT=LKNT+1
51497             XLAM(LKNT)=XLAM(LKNT-1)
51498             IDLAM(LKNT,1)=KFCCHI(1)
51499             IDLAM(LKNT,2)=15
51500             IDLAM(LKNT,3)=-15
51501           ENDIF
51502         ENDIF
51503  
51504 C...NEUTRINOS
51505   120   CONTINUE
51506         IA=12
51507         JA=11
51508         EI=KCHG(IABS(IA),1)/3D0
51509         T3I=SIGN(1D0,EI+1D-6)/2D0
51510         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51511         XXC(6)=1D6
51512         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
51513         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
51514         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
51515         CXC(5)=-DCMPLX(EI/XW1)*ORPP
51516         CXC(7)=-DCMPLX(EI/XW1)*OLPP
51517         IF( XXC(5).LT.AXMI ) THEN
51518           XXC(5)=1D6
51519         ENDIF
51520         XXC(7)=XXC(5)
51521         XXC(8)=XXC(6)
51522         IF(AXMI.GE.AXMJ+2D0*PMAS(12,1)) THEN
51523           LKNT=LKNT+1
51524           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51525      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51526           IDLAM(LKNT,1)=KFCCHI(1)
51527           IDLAM(LKNT,2)=12
51528           IDLAM(LKNT,3)=-12
51529           LKNT=LKNT+1
51530           XLAM(LKNT)=XLAM(LKNT-1)
51531           IDLAM(LKNT,1)=KFCCHI(1)
51532           IDLAM(LKNT,2)=14
51533           IDLAM(LKNT,3)=-14
51534         ENDIF
51535         IF(AXMI.GE.AXMJ+2D0*PMAS(16,1)) THEN
51536           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
51537             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
51538           ELSE
51539             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
51540           ENDIF
51541           IF( XXC(5).LT.AXMI ) THEN
51542             XXC(5)=1D6
51543           ENDIF
51544           XXC(7)=XXC(5)
51545           LKNT=LKNT+1
51546           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51547      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51548           IDLAM(LKNT,1)=KFCCHI(1)
51549           IDLAM(LKNT,2)=16
51550           IDLAM(LKNT,3)=-16
51551         ENDIF
51552  
51553 C...D-TYPE QUARKS
51554   130   CONTINUE
51555         IA=1
51556         JA=2
51557         EI=KCHG(IABS(IA),1)/3D0
51558         T3I=SIGN(1D0,EI+1D-6)/2D0
51559         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51560         XXC(6)=1D6
51561         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
51562         CXC(2)=DCMPLX(0D0,0D0)
51563         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
51564         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
51565         CXC(5)=-DCMPLX(EI/XW1)*ORPP
51566         CXC(6)=DCMPLX(0D0,0D0)
51567         CXC(7)=-DCMPLX(EI/XW1)*OLPP
51568         CXC(8)=DCMPLX(0D0,0D0)
51569         IF( XXC(5).LT.AXMI ) THEN
51570           XXC(5)=1D6
51571         ENDIF
51572         XXC(7)=XXC(5)
51573         XXC(8)=XXC(6)
51574         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
51575           LKNT=LKNT+1
51576           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51577      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51578           IDLAM(LKNT,1)=KFCCHI(1)
51579           IDLAM(LKNT,2)=1
51580           IDLAM(LKNT,3)=-1
51581           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
51582             LKNT=LKNT+1
51583             XLAM(LKNT)=XLAM(LKNT-1)
51584             IDLAM(LKNT,1)=KFCCHI(1)
51585             IDLAM(LKNT,2)=3
51586             IDLAM(LKNT,3)=-3
51587           ENDIF
51588         ENDIF
51589         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
51590           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
51591             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
51592           ELSE
51593             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
51594           ENDIF
51595           IF( XXC(5).LT.AXMI ) THEN
51596             XXC(5)=1D6
51597           ENDIF
51598           XXC(7)=XXC(5)
51599           LKNT=LKNT+1
51600           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51601      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51602           IDLAM(LKNT,1)=KFCCHI(1)
51603           IDLAM(LKNT,2)=5
51604           IDLAM(LKNT,3)=-5
51605         ENDIF
51606  
51607 C...U-TYPE QUARKS
51608   140   CONTINUE
51609         IA=2
51610         JA=1
51611         EI=KCHG(IABS(IA),1)/3D0
51612         T3I=SIGN(1D0,EI+1D-6)/2D0
51613         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51614         XXC(6)=1D6
51615         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
51616         CXC(2)=DCMPLX(0D0,0D0)
51617         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
51618         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
51619         CXC(5)=-DCMPLX(EI/XW1)*ORPP
51620         CXC(6)=DCMPLX(0D0,0D0)
51621         CXC(7)=-DCMPLX(EI/XW1)*OLPP
51622         CXC(8)=DCMPLX(0D0,0D0)
51623         IF( XXC(5).LT.AXMI ) THEN
51624           XXC(5)=1D6
51625         ENDIF
51626         XXC(7)=XXC(5)
51627         XXC(8)=XXC(6)
51628         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
51629           LKNT=LKNT+1
51630           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51631      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51632           IDLAM(LKNT,1)=KFCCHI(1)
51633           IDLAM(LKNT,2)=2
51634           IDLAM(LKNT,3)=-2
51635           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
51636             LKNT=LKNT+1
51637             XLAM(LKNT)=XLAM(LKNT-1)
51638             IDLAM(LKNT,1)=KFCCHI(1)
51639             IDLAM(LKNT,2)=4
51640             IDLAM(LKNT,3)=-4
51641           ENDIF
51642         ENDIF
51643   150   CONTINUE
51644       ENDIF
51645  
51646 C...CHI_2+ -> CHI_1+ + H0_K
51647       EH(2)=COS(ALFA)
51648       EH(1)=SIN(ALFA)
51649       EH(3)=-SBETA
51650       DH(2)=-SIN(ALFA)
51651       DH(1)=COS(ALFA)
51652       DH(3)=COS(BETA)
51653       DO 160 IH=1,3
51654         XMH=PMAS(ITH(IH),1)
51655         XMH2=XMH**2
51656 C...NO 3-BODY OPTION
51657         IF(AXMI.GE.AXMJ+XMH) THEN
51658           LKNT=LKNT+1
51659           XL=PYLAMF(XMI2,XMJ2,XMH2)
51660           OLPP=(VMIXC(2,1)*DCONJG(UMIXC(1,2))*EH(IH) -
51661      &    VMIXC(2,2)*DCONJG(UMIXC(1,1))*DH(IH))/SR2
51662           ORPP=(DCONJG(VMIXC(1,1))*UMIXC(2,2)*EH(IH) -
51663      &    DCONJG(VMIXC(1,2))*UMIXC(2,1)*DH(IH))/SR2
51664           XMK=XMJ*ETAH(IH)
51665           GX2=ABS(OLPP)**2+ABS(ORPP)**2
51666           GLR=DBLE(OLPP*DCONJG(ORPP))
51667           XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
51668           IDLAM(LKNT,1)=KFCCHI(1)
51669           IDLAM(LKNT,2)=ITH(IH)
51670           IDLAM(LKNT,3)=0
51671         ENDIF
51672   160 CONTINUE
51673  
51674 C...CHI1 JUMPS TO HERE
51675   170 CONTINUE
51676  
51677 C...CHI+_I -> CHI0_J + W+
51678       DO 220 IJ=1,4
51679         XMJ=SMZ(IJ)
51680         AXMJ=ABS(XMJ)
51681         XMJ2=XMJ**2
51682         IF(AXMI.GE.AXMJ+XMW) THEN
51683           LKNT=LKNT+1
51684           DO 180 I=1,4
51685             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
51686   180     CONTINUE
51687           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
51688      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)
51689           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
51690      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)
51691           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
51692           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
51693           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
51694           IDLAM(LKNT,1)=KFNCHI(IJ)
51695           IDLAM(LKNT,2)=24
51696           IDLAM(LKNT,3)=0
51697 C...LEPTONS
51698         ELSEIF(AXMI.GE.AXMJ) THEN
51699           S12MIN=0D0
51700           S12MAX=(AXMI-AXMJ)**2
51701           DO 190 I=1,4
51702             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
51703   190     CONTINUE
51704           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
51705      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)/SR2
51706           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
51707      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)/SR2
51708           CXC(5)=DCMPLX(0D0,0D0)
51709           CXC(7)=DCMPLX(0D0,0D0)
51710           IA=11
51711           JA=12
51712           EI=KCHG(IA,1)/3D0
51713           T3I=SIGN(1D0,EI+1D-6)/2D0
51714           EJ=KCHG(JA,1)/3D0
51715           T3J=SIGN(1D0,EJ+1D-6)/2D0
51716           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
51717      &    TANW+ZMIXC(IJ,2)*T3J)/SR2
51718           CXC(4)=-DCONJG(UMIXC(IX,1))*(
51719      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)/SR2
51720           CXC(6)=DCMPLX(0D0,0D0)
51721           CXC(8)=DCMPLX(0D0,0D0)
51722           XXC(1)=0D0
51723           XXC(2)=XMJ
51724           XXC(3)=0D0
51725           XXC(4)=XMI
51726           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51727           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
51728           XXC(9)=PMAS(24,1)
51729           XXC(10)=PMAS(24,2)
51730 CCC          IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
51731           IF(XXC(5).LT.AXMI) THEN
51732             XXC(5)=1D6
51733           ELSEIF(XXC(6).LT.AXMI) THEN
51734             XXC(6)=1D6
51735           ENDIF
51736           XXC(7)=XXC(6)
51737           XXC(8)=XXC(5)
51738 C...1/(2PI)**3*/(32*M**3)*G^4, G^2/(4*PI)= AEM/XW,
51739 C...--> 1/(16PI)/M**3*(AEM/XW)**2
51740           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
51741             LKNT=LKNT+1
51742             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51743             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
51744             IDLAM(LKNT,1)=KFNCHI(IJ)
51745             IDLAM(LKNT,2)=-11
51746             IDLAM(LKNT,3)=12
51747 C...ONLY DECAY CHI+1 -> E+ NU_E
51748             IF( IMSS(12).NE. 0 ) GOTO 260
51749             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
51750               LKNT=LKNT+1
51751               XLAM(LKNT)=XLAM(LKNT-1)
51752               IDLAM(LKNT,1)=KFNCHI(IJ)
51753               IDLAM(LKNT,2)=-13
51754               IDLAM(LKNT,3)=14
51755             ENDIF
51756           ENDIF
51757           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
51758             LKNT=LKNT+1
51759             IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
51760               XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
51761             ELSE
51762               XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
51763             ENDIF
51764             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
51765             IF(XXC(5).LT.AXMI) THEN
51766               XXC(5)=1D6
51767             ELSEIF(XXC(6).LT.AXMI) THEN
51768               XXC(6)=1D6
51769             ENDIF
51770             XXC(7)=XXC(6)
51771             XXC(8)=XXC(5)
51772             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51773             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
51774             IDLAM(LKNT,1)=KFNCHI(IJ)
51775             IDLAM(LKNT,2)=-15
51776             IDLAM(LKNT,3)=16
51777           ENDIF
51778  
51779 C...NOW, DO THE QUARKS
51780   200     CONTINUE
51781           IA=1
51782           JA=2
51783           EI=KCHG(IA,1)/3D0
51784           T3I=SIGN(1D0,EI+1D-6)/2D0
51785           EJ=KCHG(JA,1)/3D0
51786           T3J=SIGN(1D0,EJ+1D-6)/2D0
51787           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
51788      &    TANW+ZMIXC(IJ,2)*T3J)
51789           CXC(4)=-DCONJG(UMIXC(IX,1))*(
51790      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)
51791           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51792           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
51793           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 210
51794           IF(XXC(5).LT.AXMI) THEN
51795             XXC(5)=1D6
51796           ENDIF
51797           IF(XXC(6).LT.AXMI) THEN
51798             XXC(6)=1D6
51799           ENDIF
51800           XXC(7)=XXC(6)
51801           XXC(8)=XXC(5)
51802           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
51803             LKNT=LKNT+1
51804             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51805      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51806             IDLAM(LKNT,1)=KFNCHI(IJ)
51807             IDLAM(LKNT,2)=-1
51808             IDLAM(LKNT,3)=2
51809             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
51810               LKNT=LKNT+1
51811               XLAM(LKNT)=XLAM(LKNT-1)
51812               IDLAM(LKNT,1)=KFNCHI(IJ)
51813               IDLAM(LKNT,2)=-3
51814               IDLAM(LKNT,3)=4
51815             ENDIF
51816           ENDIF
51817   210     CONTINUE
51818         ENDIF
51819   220 CONTINUE
51820  
51821 C...CHI+_I -> CHI0_J + H+
51822       DO 230 IJ=1,4
51823         XMJ=SMZ(IJ)
51824         AXMJ=ABS(XMJ)
51825         XMJ2=XMJ**2
51826         XMHP=PMAS(ITHC,1)
51827         IF(AXMI.GE.AXMJ+XMHP) THEN
51828           LKNT=LKNT+1
51829           OLPP=CBETA*(ZMIXC(IJ,4)*DCONJG(VMIXC(IX,1))+(ZMIXC(IJ,2)+
51830      &    ZMIXC(IJ,1)*TANW)*DCONJG(VMIXC(IX,2))/SR2)
51831           ORPP=SBETA*(DCONJG(ZMIXC(IJ,3))*UMIXC(IX,1)-
51832      &    (DCONJG(ZMIXC(IJ,2))+DCONJG(ZMIXC(IJ,1))*TANW)*
51833      &    UMIXC(IX,2)/SR2)
51834           GX2=ABS(OLPP)**2+ABS(ORPP)**2
51835           GLR=DBLE(OLPP*DCONJG(ORPP))
51836           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
51837           IDLAM(LKNT,1)=KFNCHI(IJ)
51838           IDLAM(LKNT,2)=ITHC
51839           IDLAM(LKNT,3)=0
51840         ELSE
51841  
51842         ENDIF
51843   230 CONTINUE
51844  
51845 C...2-BODY DECAYS TO FERMION SFERMION
51846       DO 240 J=1,16
51847         IF(J.GE.7.AND.J.LE.10) GOTO 240
51848         IF(MOD(J,2).EQ.0) THEN
51849           KF1=KSUSY1+J-1
51850         ELSE
51851           KF1=KSUSY1+J+1
51852         ENDIF
51853         KF2=KF1+KSUSY1
51854         XMSF1=PMAS(PYCOMP(KF1),1)
51855         XMSF2=PMAS(PYCOMP(KF2),1)
51856         XMF=PMAS(J,1)
51857         IF(J.LE.6) THEN
51858           FCOL=3D0
51859         ELSE
51860           FCOL=1D0
51861         ENDIF
51862  
51863 C...U~ D_L
51864         IF(MOD(J,2).EQ.0) THEN
51865           XMFP=PMAS(J-1,1)
51866           CAL=UMIXC(IX,1)
51867           CBL=-XMF*VMIXC(IX,2)/XMW/SBETA/SR2
51868           CAR=-XMFP*UMIXC(IX,2)/XMW/CBETA/SR2
51869           CBR=0D0
51870           ISF=J-1
51871         ELSE
51872           XMFP=PMAS(J+1,1)
51873           CAL=VMIXC(IX,1)
51874           CBL=-XMF*UMIXC(IX,2)/XMW/CBETA/SR2
51875           CBR=0D0
51876           CAR=-XMFP*VMIXC(IX,2)/XMW/SBETA/SR2
51877           ISF=J+1
51878         ENDIF
51879  
51880 C...~U_L D
51881         IF(AXMI.GE.XMF+XMSF1) THEN
51882           LKNT=LKNT+1
51883           XMA2=XMSF1**2
51884           XMB2=XMF**2
51885           XL=PYLAMF(XMI2,XMA2,XMB2)
51886           CA=CAL*SFMIX(ISF,1)+CAR*SFMIX(ISF,2)
51887           CB=CBL*SFMIX(ISF,1)+CBR*SFMIX(ISF,2)
51888           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
51889      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
51890           IDLAM(LKNT,3)=0
51891           IF(MOD(J,2).EQ.0) THEN
51892             IDLAM(LKNT,1)=-KF1
51893             IDLAM(LKNT,2)=J
51894           ELSE
51895             IDLAM(LKNT,1)=KF1
51896             IDLAM(LKNT,2)=-J
51897           ENDIF
51898         ENDIF
51899  
51900 C...U~ D_R
51901         IF(AXMI.GE.XMF+XMSF2) THEN
51902           LKNT=LKNT+1
51903           XMA2=XMSF2**2
51904           XMB2=XMF**2
51905           CA=CAL*SFMIX(ISF,3)+CAR*SFMIX(ISF,4)
51906           CB=CBL*SFMIX(ISF,3)+CBR*SFMIX(ISF,4)
51907           XL=PYLAMF(XMI2,XMA2,XMB2)
51908           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
51909      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
51910           IDLAM(LKNT,3)=0
51911           IF(MOD(J,2).EQ.0) THEN
51912             IDLAM(LKNT,1)=-KF2
51913             IDLAM(LKNT,2)=J
51914           ELSE
51915             IDLAM(LKNT,1)=KF2
51916             IDLAM(LKNT,2)=-J
51917           ENDIF
51918         ENDIF
51919   240 CONTINUE
51920  
51921 C...3-BODY DECAY TO Q Q~' GLUINO, ONLY IF IT CANNOT PROCEED THROUGH
51922 C...A 2-BODY -- 2-BODY CHAIN
51923       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
51924       IF(AXMI.GE.XMJ) THEN
51925         AXMJ=ABS(XMJ)
51926         S12MIN=0D0
51927         S12MAX=(AXMI-AXMJ)**2
51928         XXC(1)=0D0
51929         XXC(2)=XMJ
51930         XXC(3)=0D0
51931         XXC(4)=XMI
51932         XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
51933         XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
51934         XXC(9)=1D6
51935         XXC(10)=0D0
51936         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
51937         ORPP=DCONJG(OLPP)
51938         CXC(1)=DCMPLX(0D0,0D0)
51939         CXC(3)=DCMPLX(0D0,0D0)
51940         CXC(5)=DCMPLX(0D0,0D0)
51941         CXC(7)=DCMPLX(0D0,0D0)
51942         CXC(2)=UMIXC(IX,1)*OLPP/SR2
51943         CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
51944         CXC(6)=DCMPLX(0D0,0D0)
51945         CXC(8)=DCMPLX(0D0,0D0)
51946         IF(XXC(5).LT.AXMI) THEN
51947           XXC(5)=1D6
51948         ELSEIF(XXC(6).LT.AXMI) THEN
51949           XXC(6)=1D6
51950         ENDIF
51951         XXC(7)=XXC(6)
51952         XXC(8)=XXC(5)
51953         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 250
51954         IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
51955           LKNT=LKNT+1
51956           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
51957      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51958           IDLAM(LKNT,1)=KSUSY1+21
51959           IDLAM(LKNT,2)=-1
51960           IDLAM(LKNT,3)=2
51961           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
51962             LKNT=LKNT+1
51963             XLAM(LKNT)=XLAM(LKNT-1)
51964             IDLAM(LKNT,1)=KSUSY1+21
51965             IDLAM(LKNT,2)=-3
51966             IDLAM(LKNT,3)=4
51967           ENDIF
51968         ENDIF
51969   250   CONTINUE
51970       ENDIF
51971  
51972 C...R-violating decay modes (SKANDS).
51973       CALL PYRVCH(KFIN,XLAM,IDLAM,LKNT)
51974  
51975   260 IKNT=LKNT
51976       XLAM(0)=0D0
51977       DO 270 I=1,IKNT
51978         XLAM(0)=XLAM(0)+XLAM(I)
51979         IF(XLAM(I).LT.0D0) THEN
51980           WRITE(MSTU(11),*) ' XLAM(I) = ',XLAM(I),KCIN,
51981      &    (IDLAM(I,J),J=1,3)
51982           XLAM(I)=0D0
51983         ENDIF
51984   270 CONTINUE
51985       IF(XLAM(0).EQ.0D0) THEN
51986         XLAM(0)=1D-6
51987         WRITE(MSTU(11),*) ' XLAM(0) = ',XLAM(0)
51988         WRITE(MSTU(11),*) LKNT
51989         WRITE(MSTU(11),*) (XLAM(J),J=1,LKNT)
51990       ENDIF
51991  
51992       RETURN
51993       END
51994  
51995 C*********************************************************************
51996  
51997 C...PYXXZ6
51998 C...Used in the calculation of  inoi -> inoj + f + ~f.
51999  
52000       FUNCTION PYXXZ6(X)
52001  
52002 C...Double precision and integer declarations.
52003       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52004       IMPLICIT INTEGER(I-N)
52005       INTEGER PYK,PYCHGE,PYCOMP
52006 C...Parameter statement to help give large particle numbers.
52007       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52008      &KEXCIT=4000000,KDIMEN=5000000)
52009 C...Commonblocks.
52010       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52011 C      COMMON/PYINTS/XXM(20)
52012       COMPLEX*16 CXC
52013       COMMON/PYINTC/XXC(10),CXC(8)
52014       SAVE /PYDAT1/,/PYINTC/
52015  
52016 C...Local variables.
52017       COMPLEX*16 QLLS,QRRS,QRLS,QLRS,QLLU,QRRU,QLRT,QRLT
52018       DOUBLE PRECISION PYXXZ6,X
52019       DOUBLE PRECISION XM12,XM22,XM32,S,S13,WPROP2
52020       DOUBLE PRECISION WW,WF1,WF2,WFL1,WFL2
52021       DOUBLE PRECISION SIJ
52022       DOUBLE PRECISION XMV,XMG,XMSU1,XMSU2,XMSD1,XMSD2
52023       DOUBLE PRECISION OL2
52024       DOUBLE PRECISION S23MIN,S23MAX,S23AVE,S23DEL
52025       INTEGER I
52026  
52027 C...Statement functions.
52028 C...Integral from x to y of (t-a)(b-t) dt.
52029       TINT(X,Y,A,B)=(X-Y)*(-(X**2+X*Y+Y**2)/3D0+(B+A)*(X+Y)/2D0-A*B)
52030 C...Integral from x to y of (t-a)(b-t)/(t-c) dt.
52031       TINT2(X,Y,A,B,C)=(X-Y)*(-0.5D0*(X+Y)+(B+A-C))-
52032      &LOG(ABS((X-C)/(Y-C)))*(C-B)*(C-A)
52033 C...Integral from x to y of (t-a)(b-t)/(t-c)**2 dt.
52034       TINT3(X,Y,A,B,C)=-(X-Y)+(C-A)*(C-B)*(Y-X)/(X-C)/(Y-C)+
52035      &(B+A-2D0*C)*LOG(ABS((X-C)/(Y-C)))
52036 C...Integral from x to y of (t-a)/(b-t) dt.
52037       UTINT(X,Y,A,B)=LOG(ABS((X-A)/(B-X)*(B-Y)/(Y-A)))/(B-A)
52038 C...Integral from x to y of 1/(t-a) dt.
52039       TPROP(X,Y,A)=LOG(ABS((X-A)/(Y-A)))
52040  
52041       XM12=XXC(1)**2
52042       XM22=XXC(2)**2
52043       XM32=XXC(3)**2
52044       S=XXC(4)**2
52045       S13=X
52046  
52047       S23AVE=XM22+XM32-0.5D0/X*(X+XM32-XM12)*(X+XM22-S)
52048       S23DEL=0.5D0/X*SQRT( ( (X-XM12-XM32)**2-4D0*XM12*XM32)*
52049      &( (X-XM22-S)**2  -4D0*XM22*S  ) )
52050  
52051       S23MIN=(S23AVE-S23DEL)
52052       S23MAX=(S23AVE+S23DEL)
52053  
52054       XMSD1=XXC(5)**2
52055       XMSD2=XXC(7)**2
52056       XMSU1=XXC(6)**2
52057       XMSU2=XXC(8)**2
52058  
52059       XMV=XXC(9)
52060       XMG=XXC(10)
52061       QLLS=CXC(1)
52062       QLLU=CXC(2)
52063       QLRS=CXC(3)
52064       QLRT=CXC(4)
52065       QRLS=CXC(5)
52066       QRLT=CXC(6)
52067       QRRS=CXC(7)
52068       QRRU=CXC(8)
52069       WPROP2=(S13-XMV**2)**2+(XMV*XMG)**2
52070       SIJ=2D0*XXC(2)*XXC(4)*S13
52071       IF(XMV.LE.1000D0) THEN
52072         OL2=ABS(QLLS)**2+ABS(QRRS)**2+ABS(QLRS)**2+ABS(QRLS)**2
52073         OLR=-2D0*DBLE(QLRS*DCONJG(QLLS)+QRLS*DCONJG(QRRS))
52074         WW=(OL2*2D0*TINT(S23MAX,S23MIN,XM22,S)
52075      &  +OLR*SIJ*(S23MAX-S23MIN))/WPROP2
52076         IF(XXC(5).LE.10000D0) THEN
52077           WFL1=4D0*(DBLE(QLLS*DCONJG(QLLU))*
52078      &    TINT2(S23MAX,S23MIN,XM22,S,XMSD1)-
52079      &    .5D0*DBLE(QLLS*DCONJG(QLRT))*SIJ*TPROP(S23MAX,S23MIN,XMSD2)+
52080      &    DBLE(QLRS*DCONJG(QLRT))*TINT2(S23MAX,S23MIN,XM22,S,XMSD2)-
52081      &    .5D0*DBLE(QLRS*DCONJG(QLLU))*SIJ*TPROP(S23MAX,S23MIN,XMSD1))
52082      &    *(S13-XMV**2)/WPROP2
52083         ELSE
52084           WFL1=0D0
52085         ENDIF
52086  
52087         IF(XXC(6).LE.10000D0) THEN
52088           WFL2=4D0*(DBLE(QRRS*DCONJG(QRRU))*
52089      &    TINT2(S23MAX,S23MIN,XM22,S,XMSU1)-
52090      &    .5D0*DBLE(QRRS*DCONJG(QRLT))*SIJ*TPROP(S23MAX,S23MIN,XMSU2)+
52091      &    DBLE(QRLS*DCONJG(QRLT))*TINT2(S23MAX,S23MIN,XM22,S,XMSU2)-
52092      &    .5D0*DBLE(QRLS*DCONJG(QRRU))*SIJ*TPROP(S23MAX,S23MIN,XMSU1))
52093      &    *(S13-XMV**2)/WPROP2
52094         ELSE
52095           WFL2=0D0
52096         ENDIF
52097       ELSE
52098         WW=0D0
52099         WFL1=0D0
52100         WFL2=0D0
52101       ENDIF
52102       IF(XXC(5).LE.10000D0) THEN
52103         WF1=2D0*ABS(QLLU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD1)
52104      &  +2D0*ABS(QLRT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD2)
52105      &  - 2D0*DBLE(QLRT*DCONJG(QLLU))*
52106      &  SIJ*UTINT(S23MAX,S23MIN,XMSD1,XM22+S-S13-XMSD2)
52107       ELSE
52108         WF1=0D0
52109       ENDIF
52110       IF(XXC(6).LE.10000D0) THEN
52111         WF2=2D0*ABS(QRRU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU1)
52112      &  +2D0*ABS(QRLT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU2)
52113      &  - 2D0*DBLE(QRLT*DCONJG(QRRU))*
52114      &  SIJ*UTINT(S23MAX,S23MIN,XMSU1,XM22+S-S13-XMSU2)
52115       ELSE
52116         WF2=0D0
52117       ENDIF
52118  
52119       PYXXZ6=(WW+WF1+WF2+WFL1+WFL2)
52120  
52121       IF(PYXXZ6.LT.0D0) THEN
52122         WRITE(MSTU(11),*) ' NEGATIVE WT IN PYXXZ6 '
52123         WRITE(MSTU(11),*) (XXC(I),I=1,5)
52124         WRITE(MSTU(11),*) (XXC(I),I=6,10)
52125         WRITE(MSTU(11),*) WW,WF1,WF2,WFL1,WFL2
52126         WRITE(MSTU(11),*) S23MIN,S23MAX
52127         PYXXZ6=0D0
52128       ENDIF
52129  
52130       RETURN
52131       END
52132  
52133  
52134 C*********************************************************************
52135  
52136 C...PYXXGA
52137 C...Calculates chi0_i -> chi0_j + gamma.
52138  
52139       FUNCTION PYXXGA(C0,XM1,XM2,XMTR,XMTL)
52140  
52141 C...Double precision and integer declarations.
52142       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52143       IMPLICIT INTEGER(I-N)
52144       INTEGER PYK,PYCHGE,PYCOMP
52145  
52146 C...Local variables.
52147       DOUBLE PRECISION PYXXGA,C0,XM1,XM2,XMTR,XMTL
52148       DOUBLE PRECISION F1,F2
52149  
52150       F1=(1D0+XMTR/(1D0-XMTR)*LOG(XMTR))/(1D0-XMTR)
52151       F2=(1D0+XMTL/(1D0-XMTL)*LOG(XMTL))/(1D0-XMTL)
52152       PYXXGA=C0*((XM1**2-XM2**2)/XM1)**3
52153       PYXXGA=PYXXGA*(2D0/3D0*(F1+F2)-13D0/12D0)**2
52154  
52155       RETURN
52156       END
52157  
52158 C*********************************************************************
52159  
52160 C...PYX2XG
52161 C...Calculates the decay rate for ino -> ino + gauge boson.
52162  
52163       FUNCTION PYX2XG(C1,XM1,XM2,XM3,GX2,GLR)
52164  
52165 C...Double precision and integer declarations.
52166       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52167       IMPLICIT INTEGER(I-N)
52168       INTEGER PYK,PYCHGE,PYCOMP
52169  
52170 C...Local variables.
52171       DOUBLE PRECISION PYX2XG,XM1,XM2,XM3,GX2,GLR
52172       DOUBLE PRECISION XL,PYLAMF,C1
52173       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
52174  
52175       XMI2=XM1**2
52176       XMI3=ABS(XM1**3)
52177       XMJ2=XM2**2
52178       XMV2=XM3**2
52179       XL=PYLAMF(XMI2,XMJ2,XMV2)
52180       PYX2XG=C1/8D0/XMI3*SQRT(XL)
52181      &*(GX2*(XL+3D0*XMV2*(XMI2+XMJ2-XMV2))-
52182      &12D0*GLR*XM1*XM2*XMV2)
52183  
52184       RETURN
52185       END
52186  
52187 C*********************************************************************
52188  
52189 C...PYX2XH
52190 C...Calculates the decay rate for ino -> ino + H.
52191  
52192       FUNCTION PYX2XH(C1,XM1,XM2,XM3,GX2,GLR)
52193  
52194 C...Double precision and integer declarations.
52195       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52196       IMPLICIT INTEGER(I-N)
52197       INTEGER PYK,PYCHGE,PYCOMP
52198  
52199 C...Local variables.
52200       DOUBLE PRECISION PYX2XH,XM1,XM2,XM3
52201       DOUBLE PRECISION XL,PYLAMF,C1
52202       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
52203  
52204       XMI2=XM1**2
52205       XMI3=ABS(XM1**3)
52206       XMJ2=XM2**2
52207       XMV2=XM3**2
52208       XL=PYLAMF(XMI2,XMJ2,XMV2)
52209       PYX2XH=C1/8D0/XMI3*SQRT(XL)
52210      &*(GX2*(XMI2+XMJ2-XMV2)+
52211      &4D0*GLR*XM1*XM2)
52212  
52213       RETURN
52214       END
52215  
52216 C*********************************************************************
52217  
52218 C...PYHEXT
52219 C...Calculates the non-standard decay modes of the Higgs boson.
52220 C...
52221 C...Author:  Stephen Mrenna
52222 C...Last Update:  April 2001
52223 C......Allow complex values for Z,U, and V
52224  
52225       SUBROUTINE PYHEXT(KFIN,XLAM,IDLAM,IKNT)
52226  
52227 C...Double precision and integer declarations.
52228       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52229       IMPLICIT INTEGER(I-N)
52230       INTEGER PYK,PYCHGE,PYCOMP
52231 C...Parameter statement to help give large particle numbers.
52232       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52233      &KEXCIT=4000000,KDIMEN=5000000)
52234 C...Commonblocks.
52235       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52236       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
52237       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
52238       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
52239       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
52240      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
52241       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/,/PYSSMT/
52242  
52243 C...Local variables.
52244       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
52245       COMPLEX*16 QIJ,RIJ,F21K,F12K
52246       INTEGER KFIN
52247       DOUBLE PRECISION XMI,XMJ,XMF,XMW,XMW2,XMZ,AXMJ,AXMI
52248       DOUBLE PRECISION XMI2,XMI3,XMJ2
52249       DOUBLE PRECISION PYLAMF,XL,CF,EI
52250       INTEGER IDU,IFL
52251       DOUBLE PRECISION TANW,XW,AEM,C1,AS
52252       DOUBLE PRECISION PYH2XX,GHLL,GHRR,GHLR
52253       DOUBLE PRECISION XLAM(0:400)
52254       INTEGER IDLAM(400,3)
52255       INTEGER LKNT,IH,J,IJ,I,IKNT,IK
52256       INTEGER ITH(4)
52257       INTEGER KFNCHI(4),KFCCHI(2)
52258       DOUBLE PRECISION ETAH(3),CH(3),DH(3),EH(3)
52259       DOUBLE PRECISION SR2
52260       DOUBLE PRECISION BETA,ALFA
52261       DOUBLE PRECISION CBETA,SBETA,GR,GL,TANB
52262       DOUBLE PRECISION PYALEM
52263       DOUBLE PRECISION AL,AR,ALR
52264       DOUBLE PRECISION XMK,AXMK,COSA,SINA,CW,XML
52265       DOUBLE PRECISION XMUZ,ATRIT,ATRIB,ATRIL
52266       DOUBLE PRECISION XMJL,XMJR,XM1,XM2
52267       DATA ITH/25,35,36,37/
52268       DATA ETAH/1D0,1D0,-1D0/
52269       DATA SR2/1.4142136D0/
52270       DATA KFNCHI/1000022,1000023,1000025,1000035/
52271       DATA KFCCHI/1000024,1000037/
52272  
52273 C...COUNT THE NUMBER OF DECAY MODES
52274       LKNT=IKNT
52275  
52276       XMW=PMAS(24,1)
52277       XMW2=XMW**2
52278       XMZ=PMAS(23,1)
52279       XW=PARU(102)
52280       TANW = SQRT(XW/(1D0-XW))
52281       CW=SQRT(1D0-XW)
52282  
52283 C...1 - 4 DEPENDING ON Higgs species.
52284       IH=1
52285       IF(KFIN.EQ.ITH(2)) IH=2
52286       IF(KFIN.EQ.ITH(3)) IH=3
52287       IF(KFIN.EQ.ITH(4)) IH=4
52288  
52289       XMI=PMAS(KFIN,1)
52290       XMI2=XMI**2
52291       AXMI=ABS(XMI)
52292       AEM=PYALEM(XMI2)
52293       C1=AEM/XW
52294       XMI3=ABS(XMI**3)
52295  
52296       TANB=RMSS(5)
52297       BETA=ATAN(TANB)
52298       CBETA=COS(BETA)
52299       SBETA=TANB*CBETA
52300       ALFA=RMSS(18)
52301       COSA=COS(ALFA)
52302       SINA=SIN(ALFA)
52303       ATRIT=RMSS(16)
52304       ATRIB=RMSS(15)
52305       ATRIL=RMSS(17)
52306       XMUZ=-RMSS(4)
52307  
52308       DO 110 I=1,4
52309         DO 100 J=1,4
52310           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
52311   100   CONTINUE
52312   110 CONTINUE
52313       DO 130 I=1,2
52314         DO 120 J=1,2
52315            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
52316            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
52317   120   CONTINUE
52318   130 CONTINUE
52319  
52320  
52321       IF(IH.EQ.4) GOTO 220
52322  
52323 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
52324 C...H0_K -> CHI0_I + CHI0_J
52325       EH(2)=SINA
52326       EH(1)=COSA
52327       EH(3)=CBETA
52328       DH(2)=COSA
52329       DH(1)=-SINA
52330       DH(3)=SBETA
52331       DO 150 IJ=1,4
52332         XMJ=SMZ(IJ)
52333         AXMJ=ABS(XMJ)
52334         DO 140 IK=1,IJ
52335           XMK=SMZ(IK)
52336           AXMK=ABS(XMK)
52337           IF(AXMI.GE.AXMJ+AXMK) THEN
52338             LKNT=LKNT+1
52339             QIJ=ZMIXC(IK,3)*ZMIXC(IJ,2)+
52340      &      ZMIXC(IJ,3)*ZMIXC(IK,2)-
52341      &      TANW*(ZMIXC(IK,3)*ZMIXC(IJ,1)+
52342      &      ZMIXC(IJ,3)*ZMIXC(IK,1))
52343             RIJ=ZMIXC(IK,4)*ZMIXC(IJ,2)+
52344      &      ZMIXC(IJ,4)*ZMIXC(IK,2)-
52345      &      TANW*(ZMIXC(IK,4)*ZMIXC(IJ,1)+
52346      &      ZMIXC(IJ,4)*ZMIXC(IK,1))
52347             F21K=0.5D0*DCONJG(QIJ*DH(IH)-RIJ*EH(IH))
52348             F12K=0.5D0*(QIJ*DH(IH)-RIJ*EH(IH))
52349 C...SIGN OF MASSES I,J
52350             XML=XMK*ETAH(IH)
52351             GX2=ABS(F12K)**2+ABS(F21K)**2
52352             GLR=DBLE(F12K*DCONJG(F21K))
52353             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
52354             IF(IJ.EQ.IK) XLAM(LKNT)=XLAM(LKNT)*0.5D0
52355             IDLAM(LKNT,1)=KFNCHI(IJ)
52356             IDLAM(LKNT,2)=KFNCHI(IK)
52357             IDLAM(LKNT,3)=0
52358           ENDIF
52359   140   CONTINUE
52360   150 CONTINUE
52361  
52362 C...H0_K -> CHI+_I CHI-_J
52363       DO 170 IJ=1,2
52364         XMJ=SMW(IJ)
52365         AXMJ=ABS(XMJ)
52366         DO 160 IK=1,2
52367           XMK=SMW(IK)
52368           AXMK=ABS(XMK)
52369           IF(AXMI.GE.AXMJ+AXMK) THEN
52370             LKNT=LKNT+1
52371             OLPP=DCONJG(VMIXC(IJ,1)*UMIXC(IK,2)*DH(IH) +
52372      &      VMIXC(IJ,2)*UMIXC(IK,1)*EH(IH))/SR2
52373             ORPP=(VMIXC(IK,1)*UMIXC(IJ,2)*DH(IH) +
52374      &      VMIXC(IK,2)*UMIXC(IJ,1)*EH(IH))/SR2
52375             GX2=ABS(OLPP)**2+ABS(ORPP)**2
52376             GLR=DBLE(OLPP*DCONJG(ORPP))
52377             XML=XMK*ETAH(IH)
52378             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
52379             IDLAM(LKNT,1)=KFCCHI(IJ)
52380             IDLAM(LKNT,2)=-KFCCHI(IK)
52381             IDLAM(LKNT,3)=0
52382           ENDIF
52383   160   CONTINUE
52384   170 CONTINUE
52385  
52386 C...HIGGS TO SFERMION SFERMION
52387       DO 200 IFL=1,16
52388         IF(IFL.GE.7.AND.IFL.LE.10) GOTO 200
52389         IJ=KSUSY1+IFL
52390         XMJL=PMAS(PYCOMP(IJ),1)
52391         XMJR=PMAS(PYCOMP(IJ+KSUSY1),1)
52392         IF(AXMI.GE.2D0*MIN(XMJL,XMJR)) THEN
52393           XMJ=XMJL
52394           XMJ2=XMJ**2
52395           XL=PYLAMF(XMI2,XMJ2,XMJ2)
52396           XMF=PMAS(IFL,1)
52397           EI=KCHG(IFL,1)/3D0
52398           IDU=2-MOD(IFL,2)
52399  
52400           IF(IH.EQ.1) THEN
52401             IF(IDU.EQ.1) THEN
52402               GHLL=-XMZ/CW*(0.5D0+EI*XW)*SIN(ALFA+BETA)+
52403      &        XMF**2/XMW*SINA/CBETA
52404               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)+
52405      &        XMF**2/XMW*SINA/CBETA
52406               IF(IFL.EQ.5) THEN
52407                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
52408      &          ATRIB*SINA)
52409               ELSEIF(IFL.EQ.15) THEN
52410                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
52411      &          ATRIL*SINA)
52412               ELSE
52413                 GHLR=0D0
52414               ENDIF
52415             ELSE
52416               GHLL=XMZ/CW*(0.5D0-EI*XW)*SIN(ALFA+BETA)-
52417      &        XMF**2/XMW*COSA/SBETA
52418               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)-
52419      &        XMF**2/XMW*COSA/SBETA
52420               IF(IFL.EQ.6) THEN
52421                 GHLR=XMF/2D0/XMW/SBETA*(XMUZ*SINA-
52422      &          ATRIT*COSA)
52423               ELSE
52424                 GHLR=0D0
52425               ENDIF
52426             ENDIF
52427  
52428           ELSEIF(IH.EQ.2) THEN
52429             IF(IDU.EQ.1) THEN
52430               GHLL=XMZ/CW*(0.5D0+EI*XW)*COS(ALFA+BETA)-
52431      &        XMF**2/XMW*COSA/CBETA
52432               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
52433      &        XMF**2/XMW*COSA/CBETA
52434               IF(IFL.EQ.5) THEN
52435                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
52436      &          ATRIB*COSA)
52437               ELSEIF(IFL.EQ.15) THEN
52438                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
52439      &          ATRIL*COSA)
52440               ELSE
52441                 GHLR=0D0
52442               ENDIF
52443             ELSE
52444               GHLL=-XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)-
52445      &        XMF**2/XMW*SINA/SBETA
52446               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
52447      &        XMF**2/XMW*SINA/SBETA
52448               IF(IFL.EQ.6) THEN
52449                 GHLR=-XMF/2D0/XMW/SBETA*(XMUZ*COSA+
52450      &          ATRIT*SINA)
52451               ELSE
52452                 GHLR=0D0
52453               ENDIF
52454             ENDIF
52455  
52456           ELSEIF(IH.EQ.3) THEN
52457             GHLL=0D0
52458             GHRR=0D0
52459             GHLR=0D0
52460             IF(IDU.EQ.1) THEN
52461               IF(IFL.EQ.5) THEN
52462                 GHLR=XMF/2D0/XMW*(ATRIB*TANB-XMUZ)
52463               ELSEIF(IFL.EQ.15) THEN
52464                 GHLR=XMF/2D0/XMW*(ATRIL*TANB-XMUZ)
52465               ENDIF
52466             ELSE
52467               IF(IFL.EQ.6) THEN
52468                 GHLR=XMF/2D0/XMW*(ATRIT/TANB-XMUZ)
52469               ENDIF
52470             ENDIF
52471           ENDIF
52472           IF(IH.EQ.3) GOTO 180
52473  
52474           AL=SFMIX(IFL,1)**2
52475           AR=SFMIX(IFL,2)**2
52476           ALR=SFMIX(IFL,1)*SFMIX(IFL,2)
52477           IF(IFL.LE.6) THEN
52478             CF=3D0
52479           ELSE
52480             CF=1D0
52481           ENDIF
52482  
52483           IF(AXMI.GE.2D0*XMJ) THEN
52484             LKNT=LKNT+1
52485             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52486      &      (GHLL*AL+GHRR*AR
52487      &      +2D0*GHLR*ALR)**2
52488             IDLAM(LKNT,1)=IJ
52489             IDLAM(LKNT,2)=-IJ
52490             IDLAM(LKNT,3)=0
52491           ENDIF
52492  
52493           IF(AXMI.GE.2D0*XMJR) THEN
52494             LKNT=LKNT+1
52495             AL=SFMIX(IFL,3)**2
52496             AR=SFMIX(IFL,4)**2
52497             ALR=SFMIX(IFL,3)*SFMIX(IFL,4)
52498             XMJ=XMJR
52499             XMJ2=XMJ**2
52500             XL=PYLAMF(XMI2,XMJ2,XMJ2)
52501             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52502      &      (GHLL*AL+GHRR*AR
52503      &      +2D0*GHLR*ALR)**2
52504             IDLAM(LKNT,1)=IJ+KSUSY1
52505             IDLAM(LKNT,2)=-(IJ+KSUSY1)
52506             IDLAM(LKNT,3)=0
52507           ENDIF
52508   180     CONTINUE
52509  
52510           IF(AXMI.GE.XMJL+XMJR) THEN
52511             LKNT=LKNT+1
52512             AL=SFMIX(IFL,1)*SFMIX(IFL,3)
52513             AR=SFMIX(IFL,2)*SFMIX(IFL,4)
52514             ALR=SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,2)*SFMIX(IFL,3)
52515             XMJ=XMJR
52516             XMJ2=XMJ**2
52517             XL=PYLAMF(XMI2,XMJ2,XMJL**2)
52518             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52519      &      (GHLL*AL+GHRR*AR)**2
52520             IDLAM(LKNT,1)=IJ
52521             IDLAM(LKNT,2)=-(IJ+KSUSY1)
52522             IDLAM(LKNT,3)=0
52523             LKNT=LKNT+1
52524             IDLAM(LKNT,1)=-IJ
52525             IDLAM(LKNT,2)=IJ+KSUSY1
52526             IDLAM(LKNT,3)=0
52527             XLAM(LKNT)=XLAM(LKNT-1)
52528           ENDIF
52529         ENDIF
52530   190   CONTINUE
52531   200 CONTINUE
52532   210 CONTINUE
52533  
52534       GOTO 270
52535   220 CONTINUE
52536  
52537 C...H+ -> CHI+_I + CHI0_J
52538       DO 240 IJ=1,4
52539         XMJ=SMZ(IJ)
52540         AXMJ=ABS(XMJ)
52541         XMJ2=XMJ**2
52542         DO 230 IK=1,2
52543           XMK=SMW(IK)
52544           AXMK=ABS(XMK)
52545           IF(AXMI.GE.AXMJ+AXMK) THEN
52546             LKNT=LKNT+1
52547             OLPP=CBETA*DCONJG(ZMIXC(IJ,4)*VMIXC(IK,1)+(ZMIXC(IJ,2)+
52548      &      ZMIXC(IJ,1)*TANW)*VMIXC(IK,2)/SR2)
52549             ORPP=SBETA*(ZMIXC(IJ,3)*UMIXC(IK,1)-
52550      &      (ZMIXC(IJ,2)+ZMIXC(IJ,1)*TANW)*UMIXC(IK,2)/SR2)
52551             GX2=ABS(OLPP)**2+ABS(ORPP)**2
52552             GLR=DBLE(OLPP*DCONJG(ORPP))
52553             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,-XMK,GX2,GLR)
52554             IDLAM(LKNT,1)=KFNCHI(IJ)
52555             IDLAM(LKNT,2)=KFCCHI(IK)
52556             IDLAM(LKNT,3)=0
52557           ENDIF
52558   230   CONTINUE
52559   240 CONTINUE
52560  
52561       GL=-XMW/SR2*(SIN(2D0*BETA)-PMAS(6,1)**2/TANB/XMW2)
52562       GR=-PMAS(6,1)/SR2/XMW*(XMUZ-ATRIT/TANB)
52563       AL=0D0
52564       AR=0D0
52565       CF=3D0
52566  
52567 C...H+ -> T_1 B_1~
52568       XM1=PMAS(PYCOMP(KSUSY1+6),1)
52569       XM2=PMAS(PYCOMP(KSUSY1+5),1)
52570       IF(XMI.GE.XM1+XM2) THEN
52571         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52572         LKNT=LKNT+1
52573         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52574      &  (GL*SFMIX(6,1)*SFMIX(5,1)+GR*SFMIX(6,2)*SFMIX(5,1))**2
52575         IDLAM(LKNT,1)=KSUSY1+6
52576         IDLAM(LKNT,2)=-(KSUSY1+5)
52577         IDLAM(LKNT,3)=0
52578       ENDIF
52579  
52580 C...H+ -> T_2 B_1~
52581       XM1=PMAS(PYCOMP(KSUSY2+6),1)
52582       XM2=PMAS(PYCOMP(KSUSY1+5),1)
52583       IF(XMI.GE.XM1+XM2) THEN
52584         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52585         LKNT=LKNT+1
52586         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52587      &  (GL*SFMIX(6,3)*SFMIX(5,1)+GR*SFMIX(6,4)*SFMIX(5,1))**2
52588         IDLAM(LKNT,1)=KSUSY2+6
52589         IDLAM(LKNT,2)=-(KSUSY1+5)
52590         IDLAM(LKNT,3)=0
52591       ENDIF
52592  
52593 C...H+ -> T_1 B_2~
52594       XM1=PMAS(PYCOMP(KSUSY1+6),1)
52595       XM2=PMAS(PYCOMP(KSUSY2+5),1)
52596       IF(XMI.GE.XM1+XM2) THEN
52597         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52598         LKNT=LKNT+1
52599         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52600      &  (GL*SFMIX(6,1)*SFMIX(5,3)+GR*SFMIX(6,2)*SFMIX(5,3))**2
52601         IDLAM(LKNT,1)=KSUSY1+6
52602         IDLAM(LKNT,2)=-(KSUSY2+5)
52603         IDLAM(LKNT,3)=0
52604       ENDIF
52605  
52606 C...H+ -> T_2 B_2~
52607       XM1=PMAS(PYCOMP(KSUSY2+6),1)
52608       XM2=PMAS(PYCOMP(KSUSY2+5),1)
52609       IF(XMI.GE.XM1+XM2) THEN
52610         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52611         LKNT=LKNT+1
52612         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52613      &  (GL*SFMIX(6,3)*SFMIX(5,3)+GR*SFMIX(6,4)*SFMIX(5,3))**2
52614         IDLAM(LKNT,1)=KSUSY2+6
52615         IDLAM(LKNT,2)=-(KSUSY2+5)
52616         IDLAM(LKNT,3)=0
52617       ENDIF
52618  
52619 C...H+ -> UL DL~
52620       GL=-XMW/SR2*SIN(2D0*BETA)
52621       DO 250 IJ=1,3,2
52622         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
52623         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
52624         IF(XMI.GE.XM1+XM2) THEN
52625           XL=PYLAMF(XMI2,XM1**2,XM2**2)
52626           LKNT=LKNT+1
52627           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
52628           IDLAM(LKNT,1)=-(KSUSY1+IJ)
52629           IDLAM(LKNT,2)=KSUSY1+IJ+1
52630           IDLAM(LKNT,3)=0
52631         ENDIF
52632   250 CONTINUE
52633  
52634 C...H+ -> EL~ NUL
52635       CF=1D0
52636       DO 260 IJ=11,13,2
52637         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
52638         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
52639         IF(XMI.GE.XM1+XM2) THEN
52640           XL=PYLAMF(XMI2,XM1**2,XM2**2)
52641           LKNT=LKNT+1
52642           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
52643           IDLAM(LKNT,1)=-(KSUSY1+IJ)
52644           IDLAM(LKNT,2)=KSUSY1+IJ+1
52645           IDLAM(LKNT,3)=0
52646         ENDIF
52647   260 CONTINUE
52648  
52649 C...H+ -> TAU1 NUTAUL
52650       XM1=PMAS(PYCOMP(KSUSY1+15),1)
52651       XM2=PMAS(PYCOMP(KSUSY1+16),1)
52652       IF(XMI.GE.XM1+XM2) THEN
52653         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52654         LKNT=LKNT+1
52655         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,1)**2
52656         IDLAM(LKNT,1)=-(KSUSY1+15)
52657         IDLAM(LKNT,2)= KSUSY1+16
52658         IDLAM(LKNT,3)=0
52659       ENDIF
52660  
52661 C...H+ -> TAU2 NUTAUL
52662       XM1=PMAS(PYCOMP(KSUSY2+15),1)
52663       XM2=PMAS(PYCOMP(KSUSY1+16),1)
52664       IF(XMI.GE.XM1+XM2) THEN
52665         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52666         LKNT=LKNT+1
52667         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,3)**2
52668         IDLAM(LKNT,1)=-(KSUSY2+15)
52669         IDLAM(LKNT,2)= KSUSY1+16
52670         IDLAM(LKNT,3)=0
52671       ENDIF
52672  
52673   270 CONTINUE
52674       IKNT=LKNT
52675       XLAM(0)=0D0
52676       DO 280 I=1,IKNT
52677         IF(XLAM(I).LE.0D0) XLAM(I)=0D0
52678         XLAM(0)=XLAM(0)+XLAM(I)
52679   280 CONTINUE
52680       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
52681  
52682       RETURN
52683       END
52684  
52685 C*********************************************************************
52686  
52687 C...PYH2XX
52688 C...Calculates the decay rate for a Higgs to an ino pair.
52689  
52690       FUNCTION PYH2XX(C1,XM1,XM2,XM3,GX2,GLR)
52691  
52692 C...Double precision and integer declarations.
52693       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52694       IMPLICIT INTEGER(I-N)
52695       INTEGER PYK,PYCHGE,PYCOMP
52696 C...Commonblocks.
52697       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52698       SAVE /PYDAT1/
52699  
52700 C...Local variables.
52701       DOUBLE PRECISION PYH2XX,XM1,XM2,XM3,GL,GR
52702       DOUBLE PRECISION XL,PYLAMF,C1
52703       DOUBLE PRECISION XMI2,XMJ2,XMK2,XMI3
52704  
52705       XMI2=XM1**2
52706       XMI3=ABS(XM1**3)
52707       XMJ2=XM2**2
52708       XMK2=XM3**2
52709       XL=PYLAMF(XMI2,XMJ2,XMK2)
52710       PYH2XX=C1/4D0/XMI3*SQRT(XL)
52711      &*(GX2*(XMI2-XMJ2-XMK2)-
52712      &4D0*GLR*XM3*XM2)
52713       IF(PYH2XX.LT.0D0) PYH2XX=0D0
52714  
52715       RETURN
52716       END
52717  
52718 C*********************************************************************
52719  
52720 C...PYGAUS
52721 C...Integration by adaptive Gaussian quadrature.
52722 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
52723  
52724       FUNCTION PYGAUS(F, A, B, EPS)
52725  
52726 C...Double precision and integer declarations.
52727       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52728       IMPLICIT INTEGER(I-N)
52729       INTEGER PYK,PYCHGE,PYCOMP
52730  
52731 C...Local declarations.
52732       EXTERNAL F
52733       DOUBLE PRECISION F,W(12), X(12)
52734       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
52735       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
52736       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
52737       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
52738       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
52739       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
52740       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
52741       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
52742       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
52743       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
52744       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
52745       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
52746  
52747 C...The Gaussian quadrature algorithm.
52748       H = 0D0
52749       IF(B .EQ. A) GOTO 140
52750       CONST = 5D-3 / ABS(B-A)
52751       BB = A
52752   100 CONTINUE
52753       AA = BB
52754       BB = B
52755   110 CONTINUE
52756       C1 = 0.5D0*(BB+AA)
52757       C2 = 0.5D0*(BB-AA)
52758       S8 = 0D0
52759       DO 120 I = 1, 4
52760         U = C2*X(I)
52761         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
52762   120 CONTINUE
52763       S16 = 0D0
52764       DO 130 I = 5, 12
52765         U = C2*X(I)
52766         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
52767   130 CONTINUE
52768       S16 = C2*S16
52769       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
52770         H = H + S16
52771         IF(BB .NE. B) GOTO 100
52772       ELSE
52773         BB = C1
52774         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
52775         H = 0D0
52776         CALL PYERRM(18,'(PYGAUS:) too high accuracy required')
52777         GOTO 140
52778       ENDIF
52779   140 CONTINUE
52780       PYGAUS = H
52781  
52782       RETURN
52783       END
52784  
52785 C*********************************************************************
52786  
52787 C...PYGAU2
52788 C...Integration by adaptive Gaussian quadrature.
52789 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
52790 C...Carbon copy of PYGAUS, but avoids having to use it recursively.
52791  
52792       FUNCTION PYGAU2(F, A, B, EPS)
52793  
52794 C...Double precision and integer declarations.
52795       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52796       IMPLICIT INTEGER(I-N)
52797       INTEGER PYK,PYCHGE,PYCOMP
52798  
52799 C...Local declarations.
52800       EXTERNAL F
52801       DOUBLE PRECISION F,W(12), X(12)
52802       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
52803       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
52804       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
52805       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
52806       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
52807       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
52808       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
52809       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
52810       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
52811       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
52812       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
52813       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
52814  
52815 C...The Gaussian quadrature algorithm.
52816       H = 0D0
52817       IF(B .EQ. A) GOTO 140
52818       CONST = 5D-3 / ABS(B-A)
52819       BB = A
52820   100 CONTINUE
52821       AA = BB
52822       BB = B
52823   110 CONTINUE
52824       C1 = 0.5D0*(BB+AA)
52825       C2 = 0.5D0*(BB-AA)
52826       S8 = 0D0
52827       DO 120 I = 1, 4
52828         U = C2*X(I)
52829         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
52830   120 CONTINUE
52831       S16 = 0D0
52832       DO 130 I = 5, 12
52833         U = C2*X(I)
52834         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
52835   130 CONTINUE
52836       S16 = C2*S16
52837       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
52838         H = H + S16
52839         IF(BB .NE. B) GOTO 100
52840       ELSE
52841         BB = C1
52842         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
52843         H = 0D0
52844         CALL PYERRM(18,'(PYGAU2:) too high accuracy required')
52845         GOTO 140
52846       ENDIF
52847   140 CONTINUE
52848       PYGAU2 = H
52849  
52850       RETURN
52851       END
52852  
52853 C*********************************************************************
52854  
52855 C...PYSIMP
52856 C...Simpson formula for an integral.
52857  
52858       FUNCTION PYSIMP(Y,X0,X1,N)
52859  
52860 C...Double precision and integer declarations.
52861       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52862       IMPLICIT INTEGER(I-N)
52863       INTEGER PYK,PYCHGE,PYCOMP
52864  
52865 C...Local variables.
52866       DOUBLE PRECISION Y,X0,X1,H,S
52867       DIMENSION Y(0:N)
52868  
52869       S=0D0
52870       H=(X1-X0)/N
52871       DO 100 I=0,N-2,2
52872         S=S+Y(I)+4D0*Y(I+1)+Y(I+2)
52873   100 CONTINUE
52874       PYSIMP=S*H/3D0
52875  
52876       RETURN
52877       END
52878  
52879 C*********************************************************************
52880  
52881 C...PYLAMF
52882 C...The standard lambda function.
52883  
52884       FUNCTION PYLAMF(X,Y,Z)
52885  
52886 C...Double precision and integer declarations.
52887       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52888       IMPLICIT INTEGER(I-N)
52889       INTEGER PYK,PYCHGE,PYCOMP
52890  
52891 C...Local variables.
52892       DOUBLE PRECISION PYLAMF,X,Y,Z
52893  
52894       PYLAMF=(X-(Y+Z))**2-4D0*Y*Z
52895       IF(PYLAMF.LT.0D0) PYLAMF=0D0
52896  
52897       RETURN
52898       END
52899  
52900 C*********************************************************************
52901  
52902 C...PYTBDY
52903 C...Generates 3-body decays of gauginos.
52904  
52905       SUBROUTINE PYTBDY(IDIN)
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 C...Parameter statement to help give large particle numbers.
52912       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52913      &KEXCIT=4000000,KDIMEN=5000000)
52914 C...Commonblocks.
52915       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
52916       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52917       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
52918 C     COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
52919 C     COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
52920       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
52921      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
52922 C     SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYSSMT/
52923       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSSMT/
52924  
52925 C...Local variables.
52926       DOUBLE PRECISION XM(5)
52927       COMPLEX*16 OLPP,ORPP,QLL,QLR,QRR,QRL,GLIJ,GRIJ,PROPZ
52928       COMPLEX*16 QLLS,QRRS,QLRS,QRLS,QLLU,QRRU,QLRT,QRLT
52929       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
52930       DOUBLE PRECISION S12MIN,S12MAX,YJACO1,S23AVE,S23DF1,S23DF2
52931       DOUBLE PRECISION D1,D2,D3,P1,P2,P3,CTHE1,STHE1,CTHE3,STHE3
52932       DOUBLE PRECISION CPHI1,SPHI1
52933       DOUBLE PRECISION S23DEL,EPS
52934       DOUBLE PRECISION GOLDEN,AX,BX,CX,TOL,XMIN,R,C
52935       PARAMETER (R=0.61803399D0,C=1D0-R,TOL=1D-3)
52936       DOUBLE PRECISION F1,F2,X0,X1,X2,X3
52937       INTEGER INOID(4)
52938       DATA INOID/22,23,25,35/
52939       DATA EPS/1D-6/
52940  
52941       ID=IDIN
52942       ISKIP=1
52943       XM(1)=P(N+1,5)
52944       XM(2)=P(N+2,5)
52945       XM(3)=P(N+3,5)
52946       XM(5)=P(ID,5)
52947  
52948 C...GENERATE S12
52949       S12MIN=(XM(1)+XM(2))**2
52950       S12MAX=(XM(5)-XM(3))**2
52951       YJACO1=S12MAX-S12MIN
52952  
52953 C...Initialize some parameters
52954       XW=PARU(102)
52955       XW1=1D0-XW
52956       TANW=SQRT(XW/XW1)
52957       IZID1=0
52958       IWID1=0
52959       IZID2=0
52960       IWID2=0
52961
52962       IA=K(N+2,2)
52963       JA=K(N+3,2)
52964
52965 C...Mrenna: check that we are indeed decaying a SUSY particle
52966       IF(IABS(K(ID,2)).LT.KSUSY1.OR.IABS(K(ID,2)).GE.3000000) THEN
52967       
52968       ELSE
52969         DO 100 I1=1,4
52970           IF(MOD(K(N+1,2),KSUSY1).EQ.INOID(I1)) IZID1=I1
52971           IF(MOD(K(ID,2),KSUSY1).EQ.INOID(I1)) IZID2=I1
52972  100    CONTINUE
52973         IF(MOD(K(N+1,2),KSUSY1).EQ.24) IWID1=1
52974         IF(MOD(K(N+1,2),KSUSY1).EQ.37) IWID1=2
52975         IF(MOD(K(ID,2),KSUSY1).EQ.24) IWID2=1
52976         IF(MOD(K(ID,2),KSUSY1).EQ.37) IWID2=2
52977         ZM12=XM(5)**2
52978         ZM22=XM(1)**2
52979         EI=KCHG(PYCOMP(IABS(IA)),1)/3D0
52980         T3I=SIGN(1D0,EI+1D-6)/2D0
52981       ENDIF
52982
52983       IF(MAX(ABS(IA),ABS(JA)).EQ.6) THEN
52984         ISKIP=0
52985       ELSEIF(IZID1*IZID2.NE.0) THEN
52986         SQMZ=PMAS(23,1)**2
52987         GMMZ=PMAS(23,1)*PMAS(23,2)
52988         DO 110 I=1,4
52989           ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
52990           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
52991   110   CONTINUE
52992         OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
52993      &  ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
52994         ORPP=DCONJG(OLPP)
52995         XLL2=PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
52996         XLR2=XLL2
52997         XRR2=PMAS(PYCOMP(KSUSY2+IABS(IA)),1)**2
52998         XRL2=XRR2
52999         GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
53000      &  DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
53001         GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
53002         XM1M2=SMZ(IZID1)*SMZ(IZID2)
53003         QLLS=DCMPLX((T3I-EI*XW)/XW1)*OLPP
53004         QLLU=-GLIJ
53005         QLRS=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
53006         QLRT=DCONJG(GLIJ)
53007         QRLS=-DCMPLX((EI*XW)/XW1)*OLPP
53008         QRLT=GRIJ
53009         QRRS=DCMPLX((EI*XW)/XW1)*ORPP
53010         QRRU=-DCONJG(GRIJ)
53011       ELSEIF(IZID1*IWID2.NE.0.OR.IZID2*IWID1.NE.0) THEN
53012         IF(IZID1.NE.0) THEN
53013           XM1M2=SMZ(IZID1)*SMW(IWID2)
53014           IZID1=IWID2
53015           IZID2=IZID1
53016         ELSE
53017           XM1M2=SMZ(IZID2)*SMW(IWID1)
53018           IZID1=IWID1
53019         ENDIF
53020         RT2I = 1D0/SQRT(2D0)
53021         SQMZ=PMAS(24,1)**2
53022         GMMZ=PMAS(24,1)*PMAS(24,2)
53023         DO 120 I=1,2
53024           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
53025           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
53026   120   CONTINUE
53027         DO 130 I=1,4
53028           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
53029   130   CONTINUE
53030         QLLS=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
53031      &  DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)
53032         QLRS=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
53033      &  ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)
53034         EJ=KCHG(IABS(JA),1)/3D0
53035         T3J=SIGN(1D0,EJ+1D-6)/2D0
53036         QRLS=DCMPLX(0D0,0D0)
53037         QRLT=QRLS
53038         QRRS=QRLS
53039         QRRU=QRLS
53040         XRR2=1D6**2
53041         XRL2=XRR2
53042         XLR2  = PMAS(PYCOMP(KSUSY1+IABS(JA)),1)**2
53043         XLL2  = PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
53044         IF(MOD(IA,2).EQ.0) THEN
53045           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
53046      &    TANW+ZMIXC(IZID2,2)*T3I)
53047           QLRT=-DCONJG(UMIXC(IZID1,1))*(
53048      &    ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
53049         ELSE
53050           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
53051      &    TANW+ZMIXC(IZID2,2)*T3J)
53052           QLRT=-DCONJG(UMIXC(IZID1,1))*(
53053      &    ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
53054         ENDIF
53055       ELSEIF(IWID1*IWID2.NE.0) THEN
53056         IZID1=IWID1
53057         IZID2=IWID2
53058         XM1M2=SMW(IWID1)*SMW(IWID2)
53059         SQMZ=PMAS(23,1)**2
53060         GMMZ=PMAS(23,1)*PMAS(23,2)
53061         DO 140 I=1,2
53062           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
53063           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
53064           VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
53065           UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
53066   140   CONTINUE
53067         OLPP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
53068      &  VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0
53069         ORPP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
53070      &  UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0
53071         QRLS=-DCMPLX(EI/XW1)*ORPP
53072         QLLS=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
53073         QRRS=-DCMPLX(EI/XW1)*OLPP
53074         QLRS=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
53075         IF(MOD(IA,2).EQ.0) THEN
53076           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)-1),1)**2
53077           QLRT=-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*DCMPLX(T3I/XW)
53078         ELSE
53079           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)+1),1)**2
53080           QLRT=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*DCMPLX(T3I/XW)
53081         ENDIF
53082       ELSEIF(MOD(K(N+1,2),KSUSY1).EQ.21.OR.MOD(K(ID,2),KSUSY1).EQ.21)
53083      &THEN
53084         ISKIP=0
53085       ELSE
53086         ISKIP=0
53087       ENDIF
53088  
53089       IF(ISKIP.NE.0) THEN
53090         WTMAX=0D0
53091         DO 160 KT=1,100
53092           S12=S12MIN+YJACO1*(KT-1)/99
53093           S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
53094      &    *(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
53095           S23DF1=(S12-XM(2)**2-XM(1)**2)**2
53096      &    -(2D0*XM(1)*XM(2))**2
53097           S23DF2=(S12-XM(3)**2-XM(5)**2)**2
53098      &    -(2D0*XM(3)*XM(5))**2
53099           S23DF1=S23DF1*EPS
53100           S23DF2=S23DF2*EPS
53101           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
53102           S23DEL=S23DEL/EPS
53103           S23MIN=S23AVE-S23DEL
53104           S23MAX=S23AVE+S23DEL
53105           YJACO2=S23MAX-S23MIN
53106           TH=S12
53107           DO 150 KS=1,100
53108             S23=S23MIN+YJACO2*(KS-1)/99
53109             SH=S23
53110             UH=ZM12+ZM22-SH-TH
53111             WU2 = (UH-ZM12)*(UH-ZM22)
53112             WT2 = (TH-ZM12)*(TH-ZM22)
53113             WS2 = XM1M2*SH
53114             PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
53115             PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
53116             QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
53117             QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
53118             QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
53119             QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
53120             WT0=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
53121      &      (ABS(QRL)**2+ABS(QLR)**2)*WT2+
53122      &      2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
53123             IF(WT0.GT.WTMAX) WTMAX=WT0
53124   150     CONTINUE
53125   160   CONTINUE
53126  
53127         WTMAX=WTMAX*1.05D0
53128       ENDIF
53129  
53130 C...FIND S12*
53131       AX=S12MIN
53132       CX=S12MAX
53133       BX=S12MIN+0.5D0*YJACO1
53134       X0=AX
53135       X3=CX
53136       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
53137         X1=BX
53138         X2=BX+C*(CX-BX)
53139       ELSE
53140         X2=BX
53141         X1=BX-C*(BX-AX)
53142       ENDIF
53143  
53144 C...SOLVE FOR F1 AND F2
53145       S23DF1=(X1-XM(2)**2-XM(1)**2)**2
53146      &-(2D0*XM(1)*XM(2))**2
53147       S23DF2=(X1-XM(3)**2-XM(5)**2)**2
53148      &-(2D0*XM(3)*XM(5))**2
53149       S23DF1=S23DF1*EPS
53150       S23DF2=S23DF2*EPS
53151       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
53152       F1=-2D0*S23DEL/EPS
53153       S23DF1=(X2-XM(2)**2-XM(1)**2)**2
53154      &-(2D0*XM(1)*XM(2))**2
53155       S23DF2=(X2-XM(3)**2-XM(5)**2)**2
53156      &-(2D0*XM(3)*XM(5))**2
53157       S23DF1=S23DF1*EPS
53158       S23DF2=S23DF2*EPS
53159       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
53160       F2=-2D0*S23DEL/EPS
53161  
53162   170 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2)))THEN
53163 C...Possibility of infinite loop with .LT.; changed to .LE. (SKANDS)
53164         IF(F2.LE.F1)THEN
53165           X0=X1
53166           X1=X2
53167           X2=R*X1+C*X3
53168           F1=F2
53169           S23DF1=(X2-XM(2)**2-XM(1)**2)**2
53170      &    -(2D0*XM(1)*XM(2))**2
53171           S23DF2=(X2-XM(3)**2-XM(5)**2)**2
53172      &    -(2D0*XM(3)*XM(5))**2
53173           S23DF1=S23DF1*EPS
53174           S23DF2=S23DF2*EPS
53175           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
53176           F2=-2D0*S23DEL/EPS
53177         ELSE
53178           X3=X2
53179           X2=X1
53180           X1=R*X2+C*X0
53181           F2=F1
53182           S23DF1=(X1-XM(2)**2-XM(1)**2)**2
53183      &    -(2D0*XM(1)*XM(2))**2
53184           S23DF2=(X1-XM(3)**2-XM(5)**2)**2
53185      &    -(2D0*XM(3)*XM(5))**2
53186           S23DF1=S23DF1*EPS
53187           S23DF2=S23DF2*EPS
53188           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
53189           F1=-2D0*S23DEL/EPS
53190         ENDIF
53191         GOTO 170
53192       ENDIF
53193 C...WE WANT THE MAXIMUM, NOT THE MINIMUM
53194       IF(F1.LT.F2)THEN
53195         GOLDEN=-F1
53196         XMIN=X1
53197       ELSE
53198         GOLDEN=-F2
53199         XMIN=X2
53200       ENDIF
53201  
53202       IKNT=0
53203   180 S12=S12MIN+PYR(0)*YJACO1
53204       IKNT=IKNT+1
53205 C...GENERATE S23
53206       S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
53207      &*(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
53208       S23DF1=(S12-XM(2)**2-XM(1)**2)**2
53209      &-(2D0*XM(1)*XM(2))**2
53210       S23DF2=(S12-XM(3)**2-XM(5)**2)**2
53211      &-(2D0*XM(3)*XM(5))**2
53212       S23DF1=S23DF1*EPS
53213       S23DF2=S23DF2*EPS
53214       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
53215       S23DEL=S23DEL/EPS
53216       S23MIN=S23AVE-S23DEL
53217       S23MAX=S23AVE+S23DEL
53218       YJACO2=S23MAX-S23MIN
53219       S23=S23MIN+PYR(0)*YJACO2
53220  
53221 C...CHECK THE SAMPLING
53222       IF(IKNT.GT.100) THEN
53223         WRITE(MSTU(11),*) ' IKNT > 100 IN PYTBDY '
53224         GOTO 190
53225       ENDIF
53226       IF(YJACO2.LT.PYR(0)*GOLDEN) GOTO 180
53227  
53228       IF(ISKIP.EQ.0) GOTO 190
53229  
53230       SH=S23
53231       TH=S12
53232       UH=ZM12+ZM22-SH-TH
53233  
53234       WU2 = (UH-ZM12)*(UH-ZM22)
53235       WT2 = (TH-ZM12)*(TH-ZM22)
53236       WS2 = XM1M2*SH
53237       PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
53238       PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
53239  
53240       QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
53241       QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
53242       QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
53243       QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
53244 c      QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
53245 c      QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
53246 c     &/DCMPLX(TH-XML2)
53247 c      QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
53248 c      QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
53249 c     &-DCONJG(GRIJ)/DCMPLX(UH-XMR2)
53250       WT=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
53251      &(ABS(QRL)**2+ABS(QLR)**2)*WT2+
53252      &2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
53253  
53254       IF(WT.LT.PYR(0)*WTMAX) GOTO 180
53255       IF(WT.GT.WTMAX) PRINT*,' WT > WTMAX ',WT,WTMAX
53256  
53257   190 D3=(XM(5)**2+XM(3)**2-S12)/(2D0*XM(5))
53258       D1=(XM(5)**2+XM(1)**2-S23)/(2D0*XM(5))
53259       D2=XM(5)-D1-D3
53260       P1=SQRT(D1*D1-XM(1)**2)
53261       P2=SQRT(D2*D2-XM(2)**2)
53262       P3=SQRT(D3*D3-XM(3)**2)
53263       CTHE1=2D0*PYR(0)-1D0
53264       ANG1=2D0*PYR(0)*PARU(1)
53265       CPHI1=COS(ANG1)
53266       SPHI1=SIN(ANG1)
53267       ARG=1D0-CTHE1**2
53268       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
53269       STHE1=SQRT(ARG)
53270       P(N+1,1)=P1*STHE1*CPHI1
53271       P(N+1,2)=P1*STHE1*SPHI1
53272       P(N+1,3)=P1*CTHE1
53273       P(N+1,4)=D1
53274  
53275 C...GET CPHI3
53276       ANG3=2D0*PYR(0)*PARU(1)
53277       CPHI3=COS(ANG3)
53278       SPHI3=SIN(ANG3)
53279       CTHE3=(P2**2-P1**2-P3**2)/2D0/P1/P3
53280       ARG=1D0-CTHE3**2
53281       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
53282       STHE3=SQRT(ARG)
53283       P(N+3,1)=-P3*STHE3*CPHI3*CTHE1*CPHI1
53284      &+P3*STHE3*SPHI3*SPHI1
53285      &+P3*CTHE3*STHE1*CPHI1
53286       P(N+3,2)=-P3*STHE3*CPHI3*CTHE1*SPHI1
53287      &-P3*STHE3*SPHI3*CPHI1
53288      &+P3*CTHE3*STHE1*SPHI1
53289       P(N+3,3)=P3*STHE3*CPHI3*STHE1
53290      &+P3*CTHE3*CTHE1
53291       P(N+3,4)=D3
53292  
53293       DO 200 I=1,3
53294         P(N+2,I)=-P(N+1,I)-P(N+3,I)
53295   200 CONTINUE
53296       P(N+2,4)=D2
53297  
53298       RETURN
53299       END
53300  
53301  
53302 C*********************************************************************
53303  
53304 C...PYTECM
53305 C...Finds the s-hat dependent eigenvalues of the inverse propagator
53306 C...matrix for gamma, Z, techni-rho, and techni-omega to optimize the
53307 C...phase space generation.  Extended to include techni-a meson, and
53308 C...to return the width.
53309  
53310       SUBROUTINE PYTECM(SMIN,SMOU,WIDO,IOPT)
53311  
53312 C...Double precision and integer declarations.
53313       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53314       IMPLICIT INTEGER(I-N)
53315       INTEGER PYK,PYCHGE,PYCOMP
53316 C...Parameter statement to help give large particle numbers.
53317       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53318      &KEXCIT=4000000,KDIMEN=5000000)
53319 C...Commonblocks.
53320       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53321       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53322       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
53323       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
53324       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYTCSM/
53325  
53326 C...Local variables.
53327       DOUBLE PRECISION AR(5,5),WR(5),ZR(5,5),ZI(5,5),WORK(12,12),
53328      &AT(5,5),WI(5),FV1(5),FV2(5),FV3(5),SH,AEM,TANW,CT2W,QUPD,ALPRHT,
53329      &FAR,FAO,FZR,FZO,SHR,R1,R2,S1,S2,WDTP(0:400),WDTE(0:400,0:5),WX(5)
53330       INTEGER i,j,ierr
53331
53332       SH=SMIN
53333       SHR=SQRT(SH)
53334       AEM=PYALEM(SH)
53335  
53336       SINW=MIN(SQRT(PARU(102)),1D0)
53337       COSW=SQRT(1D0-SINW**2)
53338       TANW=SINW/COSW
53339       CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
53340       QUPD=2D0*RTCM(2)-1D0
53341
53342       ALPRHT=2.16D0*(3D0/DBLE(ITCM(1)))
53343       FAR=SQRT(AEM/ALPRHT)
53344       FAO=FAR*QUPD
53345       FZR=FAR*CT2W
53346       FZO=-FAO*TANW
53347       FZX=-FAR/RTCM(47)/(2D0*SINW*COSW)
53348       FWR=FAR/(2D0*SINW)
53349       FWX=-FWR/RTCM(47)
53350
53351       DO 110 I=1,5
53352         DO 100 J=1,5
53353           AT(I,J)=0D0
53354   100   CONTINUE
53355   110 CONTINUE
53356
53357 C...NC
53358       IF(IOPT.EQ.1) THEN
53359         AR(1,1) = SH
53360         AR(2,2) = SH-PMAS(23,1)**2
53361         AR(3,3) = SH-PMAS(PYCOMP(KTECHN+113),1)**2
53362         AR(4,4) = SH-PMAS(PYCOMP(KTECHN+223),1)**2
53363         AR(5,5) = SH-PMAS(PYCOMP(KTECHN+115),1)**2
53364         AR(1,2) = 0D0
53365         AR(2,1) = 0D0
53366         AR(1,3) = SH*FAR
53367         AR(3,1) = AR(1,3)
53368         AR(1,4) = SH*FAO
53369         AR(4,1) = AR(1,4)
53370         AR(2,3) = SH*FZR
53371         AR(3,2) = AR(2,3)
53372         AR(2,4) = SH*FZO
53373         AR(4,2) = AR(2,4)
53374         AR(3,4) = 0D0
53375         AR(4,3) = 0D0
53376         AR(2,5) = SH*FZX
53377         AR(5,2) = AR(2,5)
53378         AR(1,5) = 0D0
53379         AR(5,1) = AR(1,5)
53380         AR(3,5) = 0D0
53381         AR(5,3) = AR(3,5)
53382         AR(4,5) = 0D0
53383         AR(5,4) = AR(4,5)
53384         CALL PYWIDT(23,SH,WDTP,WDTE)
53385         AT(2,2) = WDTP(0)*SHR
53386         CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
53387         AT(3,3) = WDTP(0)*SHR
53388         CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
53389         AT(4,4) = WDTP(0)*SHR
53390         CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
53391         AT(5,5) = WDTP(0)*SHR
53392         IDIM=5
53393 C...CC
53394       ELSE
53395         AR(1,1) = SH-PMAS(24,1)**2
53396         AR(2,2) = SH-PMAS(PYCOMP(KTECHN+213),1)**2
53397         AR(3,3) = SH-PMAS(PYCOMP(KTECHN+215),1)**2
53398         AR(1,2) = SH*FWR
53399         AR(2,1) = AR(1,2)
53400         AR(1,3) = SH*FWX
53401         AR(3,1) = AR(1,3)
53402         AR(2,3) = 0D0
53403         AR(3,2) = 0D0
53404         CALL PYWIDT(24,SH,WDTP,WDTE)
53405         AT(1,1) = WDTP(0)*SHR
53406         CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
53407         AT(2,2) = WDTP(0)*SHR
53408         CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
53409         AT(3,3) = WDTP(0)*SHR
53410         IDIM=3
53411       ENDIF
53412       CALL PYEICG(IDIM,IDIM,AR,AT,WR,WI,0,ZR,ZI,FV1,FV2,FV3,IERR)
53413
53414       IMIN=1
53415       SXMN=1D20
53416       DO 120 I=1,IDIM
53417         WX(I)=SQRT(ABS(SH-WR(I)))
53418         WR(I)=ABS(WR(I))
53419         IF(WR(I).LT.SXMN) THEN
53420           SXMN=WR(I)
53421           IMIN=I
53422         ENDIF
53423   120 CONTINUE
53424       SMOU=WX(IMIN)**2
53425       WIDO=WI(IMIN)/SHR
53426
53427       RETURN
53428       END
53429  
53430 C*********************************************************************
53431  
53432 C...PYEIGC
53433 C...Finds eigenvalues of a general complex matrix
53434 C
53435 C     THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF
53436 C     SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK)
53437 C     TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED)
53438 C     OF A COMPLEX GENERAL MATRIX.
53439 C
53440 C     ON INPUT
53441 C
53442 C        NM  MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL
53443 C        ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
53444 C        DIMENSION STATEMENT.
53445 C
53446 C        N  IS THE ORDER OF THE MATRIX  A=(AR,AI).
53447 C
53448 C        AR  AND  AI  CONTAIN THE REAL AND IMAGINARY PARTS,
53449 C        RESPECTIVELY, OF THE COMPLEX GENERAL MATRIX.
53450 C
53451 C        MATZ  IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF
53452 C        ONLY EIGENVALUES ARE DESIRED.  OTHERWISE IT IS SET TO
53453 C        ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS.
53454 C
53455 C     ON OUTPUT
53456 C
53457 C        WR  AND  WI  CONTAIN THE REAL AND IMAGINARY PARTS,
53458 C        RESPECTIVELY, OF THE EIGENVALUES.
53459 C
53460 C        ZR  AND  ZI  CONTAIN THE REAL AND IMAGINARY PARTS,
53461 C        RESPECTIVELY, OF THE EIGENVECTORS IF MATZ IS NOT ZERO.
53462 C
53463 C        IERR  IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN ERROR
53464 C           COMPLETION CODE DESCRIBED IN THE DOCUMENTATION FOR COMQR
53465 C           AND COMQR2.  THE NORMAL COMPLETION CODE IS ZERO.
53466 C
53467 C        FV1, FV2, AND  FV3  ARE TEMPORARY STORAGE ARRAYS.
53468 C
53469 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
53470 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
53471 C
53472 C     THIS VERSION DATED AUGUST 1983.
53473 C
53474  
53475       SUBROUTINE PYEICG(NM,N,AR,AI,WR,WI,MATZ,ZR,ZI,FV1,FV2,FV3,IERR)
53476  
53477       INTEGER N,NM,IS1,IS2,IERR,MATZ
53478       DOUBLE PRECISION AR(5,5),AI(5,5),WR(5),WI(5),ZR(5,5),ZI(5,5),
53479      X       FV1(5),FV2(5),FV3(5)
53480       IF (N .LE. NM) GOTO 100
53481       IERR = 10 * N
53482       GOTO 120
53483 C
53484   100 CALL  PYCBAL(NM,N,AR,AI,IS1,IS2,FV1)
53485       CALL  PYCRTH(NM,N,IS1,IS2,AR,AI,FV2,FV3)
53486       IF (MATZ .NE. 0) GOTO 110
53487 C     .......... FIND EIGENVALUES ONLY ..........
53488       CALL  PYCMQR(NM,N,IS1,IS2,AR,AI,WR,WI,IERR)
53489       GOTO 120
53490 C     .......... FIND BOTH EIGENVALUES AND EIGENVECTORS ..........
53491   110 CALL  PYCMQ2(NM,N,IS1,IS2,FV2,FV3,AR,AI,WR,WI,ZR,ZI,IERR)
53492       IF (IERR .NE. 0) GOTO 120
53493       CALL  PYCBA2(NM,N,IS1,IS2,FV1,N,ZR,ZI)
53494   120 RETURN
53495       END
53496  
53497 C*********************************************************************
53498  
53499 C...PYCMQR
53500 C...Auxiliary to PYEICG.
53501 C
53502 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
53503 C     ALGOL PROCEDURE  COMLR, NUM. MATH. 12, 369-376(1968) BY MARTIN
53504 C     AND WILKINSON.
53505 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 396-403(1971).
53506 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
53507 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
53508 C
53509 C     THIS SUBROUTINE FINDS THE EIGENVALUES OF A COMPLEX
53510 C     UPPER HESSENBERG MATRIX BY THE QR METHOD.
53511 C
53512 C     ON INPUT
53513 C
53514 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
53515 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
53516 C          DIMENSION STATEMENT.
53517 C
53518 C        N IS THE ORDER OF THE MATRIX.
53519 C
53520 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
53521 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
53522 C          SET LOW=1, IGH=N.
53523 C
53524 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
53525 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
53526 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN
53527 C          INFORMATION ABOUT THE UNITARY TRANSFORMATIONS USED IN
53528 C          THE REDUCTION BY  CORTH, IF PERFORMED.
53529 C
53530 C     ON OUTPUT
53531 C
53532 C        THE UPPER HESSENBERG PORTIONS OF HR AND HI HAVE BEEN
53533 C          DESTROYED.  THEREFORE, THEY MUST BE SAVED BEFORE
53534 C          CALLING  COMQR  IF SUBSEQUENT CALCULATION OF
53535 C          EIGENVECTORS IS TO BE PERFORMED.
53536 C
53537 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
53538 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
53539 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
53540 C          FOR INDICES IERR+1,...,N.
53541 C
53542 C        IERR IS SET TO
53543 C          ZERO       FOR NORMAL RETURN,
53544 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
53545 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
53546 C
53547 C     CALLS PYCDIV FOR COMPLEX DIVISION.
53548 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
53549 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
53550 C
53551 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
53552 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
53553 C
53554 C     THIS VERSION DATED AUGUST 1983.
53555 C
53556  
53557       SUBROUTINE PYCMQR(NM,N,LOW,IGH,HR,HI,WR,WI,IERR)
53558  
53559       INTEGER I,J,L,N,EN,LL,NM,IGH,ITN,ITS,LOW,LP1,ENM1,IERR
53560       DOUBLE PRECISION HR(5,5),HI(5,5),WR(5),WI(5)
53561       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
53562      X       PYTHAG
53563  
53564       IERR = 0
53565       IF (LOW .EQ. IGH) GOTO 130
53566 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
53567       L = LOW + 1
53568 C
53569       DO 120 I = L, IGH
53570          LL = MIN0(I+1,IGH)
53571          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 120
53572          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
53573          YR = HR(I,I-1) / NORM
53574          YI = HI(I,I-1) / NORM
53575          HR(I,I-1) = NORM
53576          HI(I,I-1) = 0.0D0
53577 C
53578          DO 100 J = I, IGH
53579             SI = YR * HI(I,J) - YI * HR(I,J)
53580             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
53581             HI(I,J) = SI
53582   100    CONTINUE
53583 C
53584          DO 110 J = LOW, LL
53585             SI = YR * HI(J,I) + YI * HR(J,I)
53586             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
53587             HI(J,I) = SI
53588   110    CONTINUE
53589 C
53590   120 CONTINUE
53591 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
53592   130 DO 140 I = 1, N
53593          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
53594          WR(I) = HR(I,I)
53595          WI(I) = HI(I,I)
53596   140 CONTINUE
53597 C
53598       EN = IGH
53599       TR = 0.0D0
53600       TI = 0.0D0
53601       ITN = 30*N
53602 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
53603   150 IF (EN .LT. LOW) GOTO 320
53604       ITS = 0
53605       ENM1 = EN - 1
53606 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
53607 C                FOR L=EN STEP -1 UNTIL LOW D0 -- ..........
53608   160 DO 170 LL = LOW, EN
53609          L = EN + LOW - LL
53610          IF (L .EQ. LOW) GOTO 180
53611          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
53612      X            + DABS(HR(L,L)) + DABS(HI(L,L))
53613          TST2 = TST1 + DABS(HR(L,L-1))
53614          IF (TST2 .EQ. TST1) GOTO 180
53615   170 CONTINUE
53616 C     .......... FORM SHIFT ..........
53617   180 IF (L .EQ. EN) GOTO 300
53618       IF (ITN .EQ. 0) GOTO 310
53619       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 200
53620       SR = HR(EN,EN)
53621       SI = HI(EN,EN)
53622       XR = HR(ENM1,EN) * HR(EN,ENM1)
53623       XI = HI(ENM1,EN) * HR(EN,ENM1)
53624       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 210
53625       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
53626       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
53627       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
53628       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 190
53629       ZZR = -ZZR
53630       ZZI = -ZZI
53631   190 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
53632       SR = SR - XR
53633       SI = SI - XI
53634       GOTO 210
53635 C     .......... FORM EXCEPTIONAL SHIFT ..........
53636   200 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
53637       SI = 0.0D0
53638 C
53639   210 DO 220 I = LOW, EN
53640          HR(I,I) = HR(I,I) - SR
53641          HI(I,I) = HI(I,I) - SI
53642   220 CONTINUE
53643 C
53644       TR = TR + SR
53645       TI = TI + SI
53646       ITS = ITS + 1
53647       ITN = ITN - 1
53648 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
53649       LP1 = L + 1
53650 C
53651       DO 240 I = LP1, EN
53652          SR = HR(I,I-1)
53653          HR(I,I-1) = 0.0D0
53654          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
53655          XR = HR(I-1,I-1) / NORM
53656          WR(I-1) = XR
53657          XI = HI(I-1,I-1) / NORM
53658          WI(I-1) = XI
53659          HR(I-1,I-1) = NORM
53660          HI(I-1,I-1) = 0.0D0
53661          HI(I,I-1) = SR / NORM
53662 C
53663          DO 230 J = I, EN
53664             YR = HR(I-1,J)
53665             YI = HI(I-1,J)
53666             ZZR = HR(I,J)
53667             ZZI = HI(I,J)
53668             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
53669             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
53670             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
53671             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
53672   230    CONTINUE
53673 C
53674   240 CONTINUE
53675 C
53676       SI = HI(EN,EN)
53677       IF (SI .EQ. 0.0D0) GOTO 250
53678       NORM = PYTHAG(HR(EN,EN),SI)
53679       SR = HR(EN,EN) / NORM
53680       SI = SI / NORM
53681       HR(EN,EN) = NORM
53682       HI(EN,EN) = 0.0D0
53683 C     .......... INVERSE OPERATION (COLUMNS) ..........
53684   250 DO 280 J = LP1, EN
53685          XR = WR(J-1)
53686          XI = WI(J-1)
53687 C
53688          DO 270 I = L, J
53689             YR = HR(I,J-1)
53690             YI = 0.0D0
53691             ZZR = HR(I,J)
53692             ZZI = HI(I,J)
53693             IF (I .EQ. J) GOTO 260
53694             YI = HI(I,J-1)
53695             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
53696   260       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
53697             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
53698             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
53699   270    CONTINUE
53700 C
53701   280 CONTINUE
53702 C
53703       IF (SI .EQ. 0.0D0) GOTO 160
53704 C
53705       DO 290 I = L, EN
53706          YR = HR(I,EN)
53707          YI = HI(I,EN)
53708          HR(I,EN) = SR * YR - SI * YI
53709          HI(I,EN) = SR * YI + SI * YR
53710   290 CONTINUE
53711 C
53712       GOTO 160
53713 C     .......... A ROOT FOUND ..........
53714   300 WR(EN) = HR(EN,EN) + TR
53715       WI(EN) = HI(EN,EN) + TI
53716       EN = ENM1
53717       GOTO 150
53718 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
53719 C                CONVERGED AFTER 30*N ITERATIONS ..........
53720   310 IERR = EN
53721   320 RETURN
53722       END
53723  
53724 C*********************************************************************
53725  
53726 C...PYCMQ2
53727 C...Auxiliary to PYEICG.
53728 C
53729 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
53730 C     ALGOL PROCEDURE  COMLR2, NUM. MATH. 16, 181-204(1970) BY PETERS
53731 C     AND WILKINSON.
53732 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 372-395(1971).
53733 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
53734 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
53735 C
53736 C     THIS SUBROUTINE FINDS THE EIGENVALUES AND EIGENVECTORS
53737 C     OF A COMPLEX UPPER HESSENBERG MATRIX BY THE QR
53738 C     METHOD.  THE EIGENVECTORS OF A COMPLEX GENERAL MATRIX
53739 C     CAN ALSO BE FOUND IF  CORTH  HAS BEEN USED TO REDUCE
53740 C     THIS GENERAL MATRIX TO HESSENBERG FORM.
53741 C
53742 C     ON INPUT
53743 C
53744 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
53745 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
53746 C          DIMENSION STATEMENT.
53747 C
53748 C        N IS THE ORDER OF THE MATRIX.
53749 C
53750 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
53751 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
53752 C          SET LOW=1, IGH=N.
53753 C
53754 C        ORTR AND ORTI CONTAIN INFORMATION ABOUT THE UNITARY TRANS-
53755 C          FORMATIONS USED IN THE REDUCTION BY  CORTH, IF PERFORMED.
53756 C          ONLY ELEMENTS LOW THROUGH IGH ARE USED.  IF THE EIGENVECTORS
53757 C          OF THE HESSENBERG MATRIX ARE DESIRED, SET ORTR(J) AND
53758 C          ORTI(J) TO 0.0D0 FOR THESE ELEMENTS.
53759 C
53760 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
53761 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
53762 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN FURTHER
53763 C          INFORMATION ABOUT THE TRANSFORMATIONS WHICH WERE USED IN THE
53764 C          REDUCTION BY  CORTH, IF PERFORMED.  IF THE EIGENVECTORS OF
53765 C          THE HESSENBERG MATRIX ARE DESIRED, THESE ELEMENTS MAY BE
53766 C          ARBITRARY.
53767 C
53768 C     ON OUTPUT
53769 C
53770 C        ORTR, ORTI, AND THE UPPER HESSENBERG PORTIONS OF HR AND HI
53771 C          HAVE BEEN DESTROYED.
53772 C
53773 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
53774 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
53775 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
53776 C          FOR INDICES IERR+1,...,N.
53777 C
53778 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
53779 C          RESPECTIVELY, OF THE EIGENVECTORS.  THE EIGENVECTORS
53780 C          ARE UNNORMALIZED.  IF AN ERROR EXIT IS MADE, NONE OF
53781 C          THE EIGENVECTORS HAS BEEN FOUND.
53782 C
53783 C        IERR IS SET TO
53784 C          ZERO       FOR NORMAL RETURN,
53785 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
53786 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
53787 C
53788 C     CALLS PYCDIV FOR COMPLEX DIVISION.
53789 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
53790 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
53791 C
53792 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
53793 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
53794 C
53795 C     THIS VERSION DATED OCTOBER 1989.
53796 C
53797 C  MESHED OVERFLOW CONTROL WITH VECTORS OF ISOLATED ROOTS (10/19/89 BSG)
53798 C  MESHED OVERFLOW CONTROL WITH TRIANGULAR MULTIPLY (10/30/89 BSG)
53799 C
53800  
53801       SUBROUTINE PYCMQ2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)
53802  
53803       INTEGER I,J,K,L,M,N,EN,II,JJ,LL,NM,NN,IGH,IP1,
53804      X        ITN,ITS,LOW,LP1,ENM1,IEND,IERR
53805       DOUBLE PRECISION HR(5,5),HI(5,5),WR(5),WI(5),ZR(5,5),ZI(5,5),
53806      X       ORTR(5),ORTI(5)
53807       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
53808      X       PYTHAG
53809  
53810       IERR = 0
53811 C     .......... INITIALIZE EIGENVECTOR MATRIX ..........
53812       DO 110 J = 1, N
53813 C
53814          DO 100 I = 1, N
53815             ZR(I,J) = 0.0D0
53816             ZI(I,J) = 0.0D0
53817   100    CONTINUE
53818          ZR(J,J) = 1.0D0
53819   110 CONTINUE
53820 C     .......... FORM THE MATRIX OF ACCUMULATED TRANSFORMATIONS
53821 C                FROM THE INFORMATION LEFT BY CORTH ..........
53822       IEND = IGH - LOW - 1
53823       IF (IEND.LT.0) GOTO 220
53824       IF (IEND.EQ.0) GOTO 170
53825 C     .......... FOR I=IGH-1 STEP -1 UNTIL LOW+1 DO -- ..........
53826       DO 160 II = 1, IEND
53827          I = IGH - II
53828          IF (ORTR(I) .EQ. 0.0D0 .AND. ORTI(I) .EQ. 0.0D0) GOTO 160
53829          IF (HR(I,I-1) .EQ. 0.0D0 .AND. HI(I,I-1) .EQ. 0.0D0) GOTO 160
53830 C     .......... NORM BELOW IS NEGATIVE OF H FORMED IN CORTH ..........
53831          NORM = HR(I,I-1) * ORTR(I) + HI(I,I-1) * ORTI(I)
53832          IP1 = I + 1
53833 C
53834          DO 120 K = IP1, IGH
53835             ORTR(K) = HR(K,I-1)
53836             ORTI(K) = HI(K,I-1)
53837   120    CONTINUE
53838 C
53839          DO 150 J = I, IGH
53840             SR = 0.0D0
53841             SI = 0.0D0
53842 C
53843             DO 130 K = I, IGH
53844                SR = SR + ORTR(K) * ZR(K,J) + ORTI(K) * ZI(K,J)
53845                SI = SI + ORTR(K) * ZI(K,J) - ORTI(K) * ZR(K,J)
53846   130       CONTINUE
53847 C
53848             SR = SR / NORM
53849             SI = SI / NORM
53850 C
53851             DO 140 K = I, IGH
53852                ZR(K,J) = ZR(K,J) + SR * ORTR(K) - SI * ORTI(K)
53853                ZI(K,J) = ZI(K,J) + SR * ORTI(K) + SI * ORTR(K)
53854   140       CONTINUE
53855 C
53856   150    CONTINUE
53857 C
53858   160 CONTINUE
53859 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
53860   170 L = LOW + 1
53861 C
53862       DO 210 I = L, IGH
53863          LL = MIN0(I+1,IGH)
53864          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 210
53865          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
53866          YR = HR(I,I-1) / NORM
53867          YI = HI(I,I-1) / NORM
53868          HR(I,I-1) = NORM
53869          HI(I,I-1) = 0.0D0
53870 C
53871          DO 180 J = I, N
53872             SI = YR * HI(I,J) - YI * HR(I,J)
53873             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
53874             HI(I,J) = SI
53875   180    CONTINUE
53876 C
53877          DO 190 J = 1, LL
53878             SI = YR * HI(J,I) + YI * HR(J,I)
53879             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
53880             HI(J,I) = SI
53881   190    CONTINUE
53882 C
53883          DO 200 J = LOW, IGH
53884             SI = YR * ZI(J,I) + YI * ZR(J,I)
53885             ZR(J,I) = YR * ZR(J,I) - YI * ZI(J,I)
53886             ZI(J,I) = SI
53887   200    CONTINUE
53888 C
53889   210 CONTINUE
53890 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
53891   220 DO 230 I = 1, N
53892          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 230
53893          WR(I) = HR(I,I)
53894          WI(I) = HI(I,I)
53895   230 CONTINUE
53896 C
53897       EN = IGH
53898       TR = 0.0D0
53899       TI = 0.0D0
53900       ITN = 30*N
53901 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
53902   240 IF (EN .LT. LOW) GOTO 430
53903       ITS = 0
53904       ENM1 = EN - 1
53905 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
53906 C                FOR L=EN STEP -1 UNTIL LOW DO -- ..........
53907   250 DO 260 LL = LOW, EN
53908          L = EN + LOW - LL
53909          IF (L .EQ. LOW) GOTO 270
53910          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
53911      X            + DABS(HR(L,L)) + DABS(HI(L,L))
53912          TST2 = TST1 + DABS(HR(L,L-1))
53913          IF (TST2 .EQ. TST1) GOTO 270
53914   260 CONTINUE
53915 C     .......... FORM SHIFT ..........
53916   270 IF (L .EQ. EN) GOTO 420
53917       IF (ITN .EQ. 0) GOTO 550
53918       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 290
53919       SR = HR(EN,EN)
53920       SI = HI(EN,EN)
53921       XR = HR(ENM1,EN) * HR(EN,ENM1)
53922       XI = HI(ENM1,EN) * HR(EN,ENM1)
53923       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 300
53924       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
53925       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
53926       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
53927       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 280
53928       ZZR = -ZZR
53929       ZZI = -ZZI
53930   280 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
53931       SR = SR - XR
53932       SI = SI - XI
53933       GOTO 300
53934 C     .......... FORM EXCEPTIONAL SHIFT ..........
53935   290 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
53936       SI = 0.0D0
53937 C
53938   300 DO 310 I = LOW, EN
53939          HR(I,I) = HR(I,I) - SR
53940          HI(I,I) = HI(I,I) - SI
53941   310 CONTINUE
53942 C
53943       TR = TR + SR
53944       TI = TI + SI
53945       ITS = ITS + 1
53946       ITN = ITN - 1
53947 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
53948       LP1 = L + 1
53949 C
53950       DO 330 I = LP1, EN
53951          SR = HR(I,I-1)
53952          HR(I,I-1) = 0.0D0
53953          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
53954          XR = HR(I-1,I-1) / NORM
53955          WR(I-1) = XR
53956          XI = HI(I-1,I-1) / NORM
53957          WI(I-1) = XI
53958          HR(I-1,I-1) = NORM
53959          HI(I-1,I-1) = 0.0D0
53960          HI(I,I-1) = SR / NORM
53961 C
53962          DO 320 J = I, N
53963             YR = HR(I-1,J)
53964             YI = HI(I-1,J)
53965             ZZR = HR(I,J)
53966             ZZI = HI(I,J)
53967             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
53968             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
53969             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
53970             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
53971   320    CONTINUE
53972 C
53973   330 CONTINUE
53974 C
53975       SI = HI(EN,EN)
53976       IF (SI .EQ. 0.0D0) GOTO 350
53977       NORM = PYTHAG(HR(EN,EN),SI)
53978       SR = HR(EN,EN) / NORM
53979       SI = SI / NORM
53980       HR(EN,EN) = NORM
53981       HI(EN,EN) = 0.0D0
53982       IF (EN .EQ. N) GOTO 350
53983       IP1 = EN + 1
53984 C
53985       DO 340 J = IP1, N
53986          YR = HR(EN,J)
53987          YI = HI(EN,J)
53988          HR(EN,J) = SR * YR + SI * YI
53989          HI(EN,J) = SR * YI - SI * YR
53990   340 CONTINUE
53991 C     .......... INVERSE OPERATION (COLUMNS) ..........
53992   350 DO 390 J = LP1, EN
53993          XR = WR(J-1)
53994          XI = WI(J-1)
53995 C
53996          DO 370 I = 1, J
53997             YR = HR(I,J-1)
53998             YI = 0.0D0
53999             ZZR = HR(I,J)
54000             ZZI = HI(I,J)
54001             IF (I .EQ. J) GOTO 360
54002             YI = HI(I,J-1)
54003             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
54004   360       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
54005             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
54006             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
54007   370    CONTINUE
54008 C
54009          DO 380 I = LOW, IGH
54010             YR = ZR(I,J-1)
54011             YI = ZI(I,J-1)
54012             ZZR = ZR(I,J)
54013             ZZI = ZI(I,J)
54014             ZR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
54015             ZI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
54016             ZR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
54017             ZI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
54018   380    CONTINUE
54019 C
54020   390 CONTINUE
54021 C
54022       IF (SI .EQ. 0.0D0) GOTO 250
54023 C
54024       DO 400 I = 1, EN
54025          YR = HR(I,EN)
54026          YI = HI(I,EN)
54027          HR(I,EN) = SR * YR - SI * YI
54028          HI(I,EN) = SR * YI + SI * YR
54029   400 CONTINUE
54030 C
54031       DO 410 I = LOW, IGH
54032          YR = ZR(I,EN)
54033          YI = ZI(I,EN)
54034          ZR(I,EN) = SR * YR - SI * YI
54035          ZI(I,EN) = SR * YI + SI * YR
54036   410 CONTINUE
54037 C
54038       GOTO 250
54039 C     .......... A ROOT FOUND ..........
54040   420 HR(EN,EN) = HR(EN,EN) + TR
54041       WR(EN) = HR(EN,EN)
54042       HI(EN,EN) = HI(EN,EN) + TI
54043       WI(EN) = HI(EN,EN)
54044       EN = ENM1
54045       GOTO 240
54046 C     .......... ALL ROOTS FOUND.  BACKSUBSTITUTE TO FIND
54047 C                VECTORS OF UPPER TRIANGULAR FORM ..........
54048   430 NORM = 0.0D0
54049 C
54050       DO 440 I = 1, N
54051 C
54052          DO 440 J = I, N
54053             TR = DABS(HR(I,J)) + DABS(HI(I,J))
54054             IF (TR .GT. NORM) NORM = TR
54055   440 CONTINUE
54056 C
54057       IF (N .EQ. 1 .OR. NORM .EQ. 0.0D0) GOTO 560
54058 C     .......... FOR EN=N STEP -1 UNTIL 2 DO -- ..........
54059       DO 500 NN = 2, N
54060          EN = N + 2 - NN
54061          XR = WR(EN)
54062          XI = WI(EN)
54063          HR(EN,EN) = 1.0D0
54064          HI(EN,EN) = 0.0D0
54065          ENM1 = EN - 1
54066 C     .......... FOR I=EN-1 STEP -1 UNTIL 1 DO -- ..........
54067          DO 490 II = 1, ENM1
54068             I = EN - II
54069             ZZR = 0.0D0
54070             ZZI = 0.0D0
54071             IP1 = I + 1
54072 C
54073             DO 450 J = IP1, EN
54074                ZZR = ZZR + HR(I,J) * HR(J,EN) - HI(I,J) * HI(J,EN)
54075                ZZI = ZZI + HR(I,J) * HI(J,EN) + HI(I,J) * HR(J,EN)
54076   450       CONTINUE
54077 C
54078             YR = XR - WR(I)
54079             YI = XI - WI(I)
54080             IF (YR .NE. 0.0D0 .OR. YI .NE. 0.0D0) GOTO 470
54081                TST1 = NORM
54082                YR = TST1
54083   460          YR = 0.01D0 * YR
54084                TST2 = NORM + YR
54085                IF (TST2 .GT. TST1) GOTO 460
54086   470       CONTINUE
54087             CALL PYCDIV(ZZR,ZZI,YR,YI,HR(I,EN),HI(I,EN))
54088 C     .......... OVERFLOW CONTROL ..........
54089             TR = DABS(HR(I,EN)) + DABS(HI(I,EN))
54090             IF (TR .EQ. 0.0D0) GOTO 490
54091             TST1 = TR
54092             TST2 = TST1 + 1.0D0/TST1
54093             IF (TST2 .GT. TST1) GOTO 490
54094             DO 480 J = I, EN
54095                HR(J,EN) = HR(J,EN)/TR
54096                HI(J,EN) = HI(J,EN)/TR
54097   480       CONTINUE
54098 C
54099   490    CONTINUE
54100 C
54101   500 CONTINUE
54102 C     .......... END BACKSUBSTITUTION ..........
54103 C     .......... VECTORS OF ISOLATED ROOTS ..........
54104       DO 520 I = 1, N
54105          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 520
54106 C
54107          DO 510 J = I, N
54108             ZR(I,J) = HR(I,J)
54109             ZI(I,J) = HI(I,J)
54110   510    CONTINUE
54111 C
54112   520 CONTINUE
54113 C     .......... MULTIPLY BY TRANSFORMATION MATRIX TO GIVE
54114 C                VECTORS OF ORIGINAL FULL MATRIX.
54115 C                FOR J=N STEP -1 UNTIL LOW DO -- ..........
54116       DO 540 JJ = LOW, N
54117          J = N + LOW - JJ
54118          M = MIN0(J,IGH)
54119 C
54120          DO 540 I = LOW, IGH
54121             ZZR = 0.0D0
54122             ZZI = 0.0D0
54123 C
54124             DO 530 K = LOW, M
54125                ZZR = ZZR + ZR(I,K) * HR(K,J) - ZI(I,K) * HI(K,J)
54126                ZZI = ZZI + ZR(I,K) * HI(K,J) + ZI(I,K) * HR(K,J)
54127   530       CONTINUE
54128 C
54129             ZR(I,J) = ZZR
54130             ZI(I,J) = ZZI
54131   540 CONTINUE
54132 C
54133       GOTO 560
54134 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
54135 C                CONVERGED AFTER 30*N ITERATIONS ..........
54136   550 IERR = EN
54137   560 RETURN
54138       END
54139  
54140 C*********************************************************************
54141  
54142 C...PYCDIV
54143 C...Auxiliary to PYCMQR
54144 C
54145 C     COMPLEX DIVISION, (CR,CI) = (AR,AI)/(BR,BI)
54146 C
54147  
54148       SUBROUTINE PYCDIV(AR,AI,BR,BI,CR,CI)
54149  
54150       DOUBLE PRECISION AR,AI,BR,BI,CR,CI
54151       DOUBLE PRECISION S,ARS,AIS,BRS,BIS
54152  
54153       S = DABS(BR) + DABS(BI)
54154       ARS = AR/S
54155       AIS = AI/S
54156       BRS = BR/S
54157       BIS = BI/S
54158       S = BRS**2 + BIS**2
54159       CR = (ARS*BRS + AIS*BIS)/S
54160       CI = (AIS*BRS - ARS*BIS)/S
54161       RETURN
54162       END
54163  
54164 C*********************************************************************
54165  
54166 C...PYCSRT
54167 C...Auxiliary to PYCMQR
54168 C
54169 C     (YR,YI) = COMPLEX DSQRT(XR,XI)
54170 C     BRANCH CHOSEN SO THAT YR .GE. 0.0 AND SIGN(YI) .EQ. SIGN(XI)
54171 C
54172  
54173       SUBROUTINE PYCSRT(XR,XI,YR,YI)
54174  
54175       DOUBLE PRECISION XR,XI,YR,YI
54176       DOUBLE PRECISION S,TR,TI,PYTHAG
54177  
54178       TR = XR
54179       TI = XI
54180       S = DSQRT(0.5D0*(PYTHAG(TR,TI) + DABS(TR)))
54181       IF (TR .GE. 0.0D0) YR = S
54182       IF (TI .LT. 0.0D0) S = -S
54183       IF (TR .LE. 0.0D0) YI = S
54184       IF (TR .LT. 0.0D0) YR = 0.5D0*(TI/YI)
54185       IF (TR .GT. 0.0D0) YI = 0.5D0*(TI/YR)
54186       RETURN
54187       END
54188  
54189       DOUBLE PRECISION FUNCTION PYTHAG(A,B)
54190       DOUBLE PRECISION A,B
54191 C
54192 C     FINDS DSQRT(A**2+B**2) WITHOUT OVERFLOW OR DESTRUCTIVE UNDERFLOW
54193 C
54194       DOUBLE PRECISION P,R,S,T,U
54195       P = DMAX1(DABS(A),DABS(B))
54196       IF (P .EQ. 0.0D0) GOTO 110
54197       R = (DMIN1(DABS(A),DABS(B))/P)**2
54198   100 CONTINUE
54199          T = 4.0D0 + R
54200          IF (T .EQ. 4.0D0) GOTO 110
54201          S = R/T
54202          U = 1.0D0 + 2.0D0*S
54203          P = U*P
54204          R = (S/U)**2 * R
54205       GOTO 100
54206   110 PYTHAG = P
54207       RETURN
54208       END
54209  
54210 C*********************************************************************
54211  
54212 C...PYCBAL
54213 C...Auxiliary to PYEICG
54214 C
54215 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
54216 C     CBALANCE, WHICH IS A COMPLEX VERSION OF BALANCE,
54217 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
54218 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
54219 C
54220 C     THIS SUBROUTINE BALANCES A COMPLEX MATRIX AND ISOLATES
54221 C     EIGENVALUES WHENEVER POSSIBLE.
54222 C
54223 C     ON INPUT
54224 C
54225 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
54226 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
54227 C          DIMENSION STATEMENT.
54228 C
54229 C        N IS THE ORDER OF THE MATRIX.
54230 C
54231 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
54232 C          RESPECTIVELY, OF THE COMPLEX MATRIX TO BE BALANCED.
54233 C
54234 C     ON OUTPUT
54235 C
54236 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
54237 C          RESPECTIVELY, OF THE BALANCED MATRIX.
54238 C
54239 C        LOW AND IGH ARE TWO INTEGERS SUCH THAT AR(I,J) AND AI(I,J)
54240 C          ARE EQUAL TO ZERO IF
54241 C           (1) I IS GREATER THAN J AND
54242 C           (2) J=1,...,LOW-1 OR I=IGH+1,...,N.
54243 C
54244 C        SCALE CONTAINS INFORMATION DETERMINING THE
54245 C           PERMUTATIONS AND SCALING FACTORS USED.
54246 C
54247 C     SUPPOSE THAT THE PRINCIPAL SUBMATRIX IN ROWS LOW THROUGH IGH
54248 C     HAS BEEN BALANCED, THAT P(J) DENOTES THE INDEX INTERCHANGED
54249 C     WITH J DURING THE PERMUTATION STEP, AND THAT THE ELEMENTS
54250 C     OF THE DIAGONAL MATRIX USED ARE DENOTED BY D(I,J).  THEN
54251 C        SCALE(J) = P(J),    FOR J = 1,...,LOW-1
54252 C                 = D(J,J)       J = LOW,...,IGH
54253 C                 = P(J)         J = IGH+1,...,N.
54254 C     THE ORDER IN WHICH THE INTERCHANGES ARE MADE IS N TO IGH+1,
54255 C     THEN 1 TO LOW-1.
54256 C
54257 C     NOTE THAT 1 IS RETURNED FOR IGH IF IGH IS ZERO FORMALLY.
54258 C
54259 C     THE ALGOL PROCEDURE EXC CONTAINED IN CBALANCE APPEARS IN
54260 C     CBAL  IN LINE.  (NOTE THAT THE ALGOL ROLES OF IDENTIFIERS
54261 C     K,L HAVE BEEN REVERSED.)
54262 C
54263 C     ARITHMETIC IS REAL THROUGHOUT.
54264 C
54265 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
54266 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
54267 C
54268 C     THIS VERSION DATED AUGUST 1983.
54269 C
54270  
54271       SUBROUTINE PYCBAL(NM,N,AR,AI,LOW,IGH,SCALE)
54272  
54273       INTEGER I,J,K,L,M,N,JJ,NM,IGH,LOW,IEXC
54274       DOUBLE PRECISION AR(5,5),AI(5,5),SCALE(5)
54275       DOUBLE PRECISION C,F,G,R,S,B2,RADIX
54276       LOGICAL NOCONV
54277  
54278       RADIX = 16.0D0
54279 C
54280       B2 = RADIX * RADIX
54281       K = 1
54282       L = N
54283       GOTO 150
54284 C     .......... IN-LINE PROCEDURE FOR ROW AND
54285 C                COLUMN EXCHANGE ..........
54286   100 SCALE(M) = J
54287       IF (J .EQ. M) GOTO 130
54288 C
54289       DO 110 I = 1, L
54290          F = AR(I,J)
54291          AR(I,J) = AR(I,M)
54292          AR(I,M) = F
54293          F = AI(I,J)
54294          AI(I,J) = AI(I,M)
54295          AI(I,M) = F
54296   110 CONTINUE
54297 C
54298       DO 120 I = K, N
54299          F = AR(J,I)
54300          AR(J,I) = AR(M,I)
54301          AR(M,I) = F
54302          F = AI(J,I)
54303          AI(J,I) = AI(M,I)
54304          AI(M,I) = F
54305   120 CONTINUE
54306 C
54307   130 IF(IEXC.EQ.1) GOTO 140
54308       IF(IEXC.EQ.2) GOTO 180
54309 C     .......... SEARCH FOR ROWS ISOLATING AN EIGENVALUE
54310 C                AND PUSH THEM DOWN ..........
54311   140 IF (L .EQ. 1) GOTO 320
54312       L = L - 1
54313 C     .......... FOR J=L STEP -1 UNTIL 1 DO -- ..........
54314   150 DO 170 JJ = 1, L
54315          J = L + 1 - JJ
54316 C
54317          DO 160 I = 1, L
54318             IF (I .EQ. J) GOTO 160
54319             IF (AR(J,I) .NE. 0.0D0 .OR. AI(J,I) .NE. 0.0D0) GOTO 170
54320   160    CONTINUE
54321 C
54322          M = L
54323          IEXC = 1
54324          GOTO 100
54325   170 CONTINUE
54326 C
54327       GOTO 190
54328 C     .......... SEARCH FOR COLUMNS ISOLATING AN EIGENVALUE
54329 C                AND PUSH THEM LEFT ..........
54330   180 K = K + 1
54331 C
54332   190 DO 210 J = K, L
54333 C
54334          DO 200 I = K, L
54335             IF (I .EQ. J) GOTO 200
54336             IF (AR(I,J) .NE. 0.0D0 .OR. AI(I,J) .NE. 0.0D0) GOTO 210
54337   200    CONTINUE
54338 C
54339          M = K
54340          IEXC = 2
54341          GOTO 100
54342   210 CONTINUE
54343 C     .......... NOW BALANCE THE SUBMATRIX IN ROWS K TO L ..........
54344       DO 220 I = K, L
54345   220 SCALE(I) = 1.0D0
54346 C     .......... ITERATIVE LOOP FOR NORM REDUCTION ..........
54347   230 NOCONV = .FALSE.
54348 C
54349       DO 310 I = K, L
54350          C = 0.0D0
54351          R = 0.0D0
54352 C
54353          DO 240 J = K, L
54354             IF (J .EQ. I) GOTO 240
54355             C = C + DABS(AR(J,I)) + DABS(AI(J,I))
54356             R = R + DABS(AR(I,J)) + DABS(AI(I,J))
54357   240    CONTINUE
54358 C     .......... GUARD AGAINST ZERO C OR R DUE TO UNDERFLOW ..........
54359          IF (C .EQ. 0.0D0 .OR. R .EQ. 0.0D0) GOTO 310
54360          G = R / RADIX
54361          F = 1.0D0
54362          S = C + R
54363   250    IF (C .GE. G) GOTO 260
54364          F = F * RADIX
54365          C = C * B2
54366          GOTO 250
54367   260    G = R * RADIX
54368   270    IF (C .LT. G) GOTO 280
54369          F = F / RADIX
54370          C = C / B2
54371          GOTO 270
54372 C     .......... NOW BALANCE ..........
54373   280    IF ((C + R) / F .GE. 0.95D0 * S) GOTO 310
54374          G = 1.0D0 / F
54375          SCALE(I) = SCALE(I) * F
54376          NOCONV = .TRUE.
54377 C
54378          DO 290 J = K, N
54379             AR(I,J) = AR(I,J) * G
54380             AI(I,J) = AI(I,J) * G
54381   290    CONTINUE
54382 C
54383          DO 300 J = 1, L
54384             AR(J,I) = AR(J,I) * F
54385             AI(J,I) = AI(J,I) * F
54386   300    CONTINUE
54387 C
54388   310 CONTINUE
54389 C
54390       IF (NOCONV) GOTO 230
54391 C
54392   320 LOW = K
54393       IGH = L
54394       RETURN
54395       END
54396  
54397 C*********************************************************************
54398  
54399 C...PYCBA2
54400 C...Auxiliary to PYEICG.
54401 C
54402 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
54403 C     CBABK2, WHICH IS A COMPLEX VERSION OF BALBAK,
54404 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
54405 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
54406 C
54407 C     THIS SUBROUTINE FORMS THE EIGENVECTORS OF A COMPLEX GENERAL
54408 C     MATRIX BY BACK TRANSFORMING THOSE OF THE CORRESPONDING
54409 C     BALANCED MATRIX DETERMINED BY  CBAL.
54410 C
54411 C     ON INPUT
54412 C
54413 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
54414 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
54415 C          DIMENSION STATEMENT.
54416 C
54417 C        N IS THE ORDER OF THE MATRIX.
54418 C
54419 C        LOW AND IGH ARE INTEGERS DETERMINED BY  CBAL.
54420 C
54421 C        SCALE CONTAINS INFORMATION DETERMINING THE PERMUTATIONS
54422 C          AND SCALING FACTORS USED BY  CBAL.
54423 C
54424 C        M IS THE NUMBER OF EIGENVECTORS TO BE BACK TRANSFORMED.
54425 C
54426 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
54427 C          RESPECTIVELY, OF THE EIGENVECTORS TO BE
54428 C          BACK TRANSFORMED IN THEIR FIRST M COLUMNS.
54429 C
54430 C     ON OUTPUT
54431 C
54432 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
54433 C          RESPECTIVELY, OF THE TRANSFORMED EIGENVECTORS
54434 C          IN THEIR FIRST M COLUMNS.
54435 C
54436 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
54437 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
54438 C
54439 C     THIS VERSION DATED AUGUST 1983.
54440 C
54441  
54442       SUBROUTINE PYCBA2(NM,N,LOW,IGH,SCALE,M,ZR,ZI)
54443  
54444       INTEGER I,J,K,M,N,II,NM,IGH,LOW
54445       DOUBLE PRECISION SCALE(5),ZR(5,5),ZI(5,5)
54446       DOUBLE PRECISION S
54447  
54448       IF (M .EQ. 0) GOTO 150
54449       IF (IGH .EQ. LOW) GOTO 120
54450 C
54451       DO 110 I = LOW, IGH
54452          S = SCALE(I)
54453 C     .......... LEFT HAND EIGENVECTORS ARE BACK TRANSFORMED
54454 C                IF THE FOREGOING STATEMENT IS REPLACED BY
54455 C                S=1.0D0/SCALE(I). ..........
54456          DO 100 J = 1, M
54457             ZR(I,J) = ZR(I,J) * S
54458             ZI(I,J) = ZI(I,J) * S
54459   100    CONTINUE
54460 C
54461   110 CONTINUE
54462 C     .......... FOR I=LOW-1 STEP -1 UNTIL 1,
54463 C                IGH+1 STEP 1 UNTIL N DO -- ..........
54464   120 DO 140 II = 1, N
54465          I = II
54466          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
54467          IF (I .LT. LOW) I = LOW - II
54468          K = SCALE(I)
54469          IF (K .EQ. I) GOTO 140
54470 C
54471          DO 130 J = 1, M
54472             S = ZR(I,J)
54473             ZR(I,J) = ZR(K,J)
54474             ZR(K,J) = S
54475             S = ZI(I,J)
54476             ZI(I,J) = ZI(K,J)
54477             ZI(K,J) = S
54478   130    CONTINUE
54479 C
54480   140 CONTINUE
54481 C
54482   150 RETURN
54483       END
54484  
54485 C*********************************************************************
54486  
54487 C...PYCRTH
54488 C...Auxiliary to PYEICG.
54489 C
54490 C     THIS SUBROUTINE IS A TRANSLATION OF A COMPLEX ANALOGUE OF
54491 C     THE ALGOL PROCEDURE ORTHES, NUM. MATH. 12, 349-368(1968)
54492 C     BY MARTIN AND WILKINSON.
54493 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 339-358(1971).
54494 C
54495 C     GIVEN A COMPLEX GENERAL MATRIX, THIS SUBROUTINE
54496 C     REDUCES A SUBMATRIX SITUATED IN ROWS AND COLUMNS
54497 C     LOW THROUGH IGH TO UPPER HESSENBERG FORM BY
54498 C     UNITARY SIMILARITY TRANSFORMATIONS.
54499 C
54500 C     ON INPUT
54501 C
54502 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
54503 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
54504 C          DIMENSION STATEMENT.
54505 C
54506 C        N IS THE ORDER OF THE MATRIX.
54507 C
54508 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
54509 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
54510 C          SET LOW=1, IGH=N.
54511 C
54512 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
54513 C          RESPECTIVELY, OF THE COMPLEX INPUT MATRIX.
54514 C
54515 C     ON OUTPUT
54516 C
54517 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
54518 C          RESPECTIVELY, OF THE HESSENBERG MATRIX.  INFORMATION
54519 C          ABOUT THE UNITARY TRANSFORMATIONS USED IN THE REDUCTION
54520 C          IS STORED IN THE REMAINING TRIANGLES UNDER THE
54521 C          HESSENBERG MATRIX.
54522 C
54523 C        ORTR AND ORTI CONTAIN FURTHER INFORMATION ABOUT THE
54524 C          TRANSFORMATIONS.  ONLY ELEMENTS LOW THROUGH IGH ARE USED.
54525 C
54526 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
54527 C
54528 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
54529 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
54530 C
54531 C     THIS VERSION DATED AUGUST 1983.
54532 C
54533  
54534       SUBROUTINE PYCRTH(NM,N,LOW,IGH,AR,AI,ORTR,ORTI)
54535  
54536       INTEGER I,J,M,N,II,JJ,LA,MP,NM,IGH,KP1,LOW
54537       DOUBLE PRECISION AR(5,5),AI(5,5),ORTR(5),ORTI(5)
54538       DOUBLE PRECISION F,G,H,FI,FR,SCALE,PYTHAG
54539  
54540       LA = IGH - 1
54541       KP1 = LOW + 1
54542       IF (LA .LT. KP1) GOTO 210
54543 C
54544       DO 200 M = KP1, LA
54545          H = 0.0D0
54546          ORTR(M) = 0.0D0
54547          ORTI(M) = 0.0D0
54548          SCALE = 0.0D0
54549 C     .......... SCALE COLUMN (ALGOL TOL THEN NOT NEEDED) ..........
54550          DO 100 I = M, IGH
54551   100    SCALE = SCALE + DABS(AR(I,M-1)) + DABS(AI(I,M-1))
54552 C
54553          IF (SCALE .EQ. 0.0D0) GOTO 200
54554          MP = M + IGH
54555 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
54556          DO 110 II = M, IGH
54557             I = MP - II
54558             ORTR(I) = AR(I,M-1) / SCALE
54559             ORTI(I) = AI(I,M-1) / SCALE
54560             H = H + ORTR(I) * ORTR(I) + ORTI(I) * ORTI(I)
54561   110    CONTINUE
54562 C
54563          G = DSQRT(H)
54564          F = PYTHAG(ORTR(M),ORTI(M))
54565          IF (F .EQ. 0.0D0) GOTO 120
54566          H = H + F * G
54567          G = G / F
54568          ORTR(M) = (1.0D0 + G) * ORTR(M)
54569          ORTI(M) = (1.0D0 + G) * ORTI(M)
54570          GOTO 130
54571 C
54572   120    ORTR(M) = G
54573          AR(M,M-1) = SCALE
54574 C     .......... FORM (I-(U*UT)/H) * A ..........
54575   130    DO 160 J = M, N
54576             FR = 0.0D0
54577             FI = 0.0D0
54578 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
54579             DO 140 II = M, IGH
54580                I = MP - II
54581                FR = FR + ORTR(I) * AR(I,J) + ORTI(I) * AI(I,J)
54582                FI = FI + ORTR(I) * AI(I,J) - ORTI(I) * AR(I,J)
54583   140       CONTINUE
54584 C
54585             FR = FR / H
54586             FI = FI / H
54587 C
54588             DO 150 I = M, IGH
54589                AR(I,J) = AR(I,J) - FR * ORTR(I) + FI * ORTI(I)
54590                AI(I,J) = AI(I,J) - FR * ORTI(I) - FI * ORTR(I)
54591   150       CONTINUE
54592 C
54593   160    CONTINUE
54594 C     .......... FORM (I-(U*UT)/H)*A*(I-(U*UT)/H) ..........
54595          DO 190 I = 1, IGH
54596             FR = 0.0D0
54597             FI = 0.0D0
54598 C     .......... FOR J=IGH STEP -1 UNTIL M DO -- ..........
54599             DO 170 JJ = M, IGH
54600                J = MP - JJ
54601                FR = FR + ORTR(J) * AR(I,J) - ORTI(J) * AI(I,J)
54602                FI = FI + ORTR(J) * AI(I,J) + ORTI(J) * AR(I,J)
54603   170       CONTINUE
54604 C
54605             FR = FR / H
54606             FI = FI / H
54607 C
54608             DO 180 J = M, IGH
54609                AR(I,J) = AR(I,J) - FR * ORTR(J) - FI * ORTI(J)
54610                AI(I,J) = AI(I,J) + FR * ORTI(J) - FI * ORTR(J)
54611   180       CONTINUE
54612 C
54613   190    CONTINUE
54614 C
54615          ORTR(M) = SCALE * ORTR(M)
54616          ORTI(M) = SCALE * ORTI(M)
54617          AR(M,M-1) = -G * AR(M,M-1)
54618          AI(M,M-1) = -G * AI(M,M-1)
54619   200 CONTINUE
54620 C
54621   210 RETURN
54622       END
54623  
54624 C*********************************************************************
54625  
54626 C...PYLDCM
54627 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
54628 C...processes.
54629  
54630       SUBROUTINE PYLDCM(A,N,NP,INDX,D)
54631       IMPLICIT NONE
54632       INTEGER N,NP,INDX(N)
54633       REAL*8 D,TINY
54634       COMPLEX*16 A(NP,NP)
54635       PARAMETER (TINY=1.0D-20)
54636       INTEGER I,IMAX,J,K
54637       REAL*8 AAMAX,VV(6),DUM
54638       COMPLEX*16 SUM,DUMC
54639  
54640       D=1D0
54641       DO 110 I=1,N
54642         AAMAX=0D0
54643         DO 100 J=1,N
54644           IF (ABS(A(I,J)).GT.AAMAX) AAMAX=ABS(A(I,J))
54645   100   CONTINUE
54646         IF (AAMAX.EQ.0D0) CALL PYERRM(28,'(PYLDCM:) singular matrix')
54647         VV(I)=1D0/AAMAX
54648   110 CONTINUE
54649       DO 180 J=1,N
54650         DO 130 I=1,J-1
54651           SUM=A(I,J)
54652           DO 120 K=1,I-1
54653             SUM=SUM-A(I,K)*A(K,J)
54654   120     CONTINUE
54655           A(I,J)=SUM
54656   130   CONTINUE
54657         AAMAX=0D0
54658         DO 150 I=J,N
54659           SUM=A(I,J)
54660           DO 140 K=1,J-1
54661             SUM=SUM-A(I,K)*A(K,J)
54662   140     CONTINUE
54663           A(I,J)=SUM
54664           DUM=VV(I)*ABS(SUM)
54665           IF (DUM.GE.AAMAX) THEN
54666             IMAX=I
54667             AAMAX=DUM
54668           ENDIF
54669   150   CONTINUE
54670         IF (J.NE.IMAX)THEN
54671           DO 160 K=1,N
54672             DUMC=A(IMAX,K)
54673             A(IMAX,K)=A(J,K)
54674             A(J,K)=DUMC
54675   160     CONTINUE
54676           D=-D
54677           VV(IMAX)=VV(J)
54678         ENDIF
54679         INDX(J)=IMAX
54680         IF(ABS(A(J,J)).EQ.0D0) A(J,J)=DCMPLX(TINY,0D0)
54681         IF(J.NE.N)THEN
54682           DO 170 I=J+1,N
54683             A(I,J)=A(I,J)/A(J,J)
54684   170     CONTINUE
54685         ENDIF
54686   180 CONTINUE
54687  
54688       RETURN
54689       END
54690  
54691 C*********************************************************************
54692  
54693 C...PYBKSB
54694 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
54695 C...processes.
54696  
54697       SUBROUTINE PYBKSB(A,N,NP,INDX,B)
54698       IMPLICIT NONE
54699       INTEGER N,NP,INDX(N)
54700       COMPLEX*16 A(NP,NP),B(N)
54701       INTEGER I,II,J,LL
54702       COMPLEX*16 SUM
54703  
54704       II=0
54705       DO 110 I=1,N
54706         LL=INDX(I)
54707         SUM=B(LL)
54708         B(LL)=B(I)
54709         IF (II.NE.0)THEN
54710           DO 100 J=II,I-1
54711             SUM=SUM-A(I,J)*B(J)
54712   100     CONTINUE
54713         ELSE IF (ABS(SUM).NE.0D0) THEN
54714           II=I
54715         ENDIF
54716         B(I)=SUM
54717   110 CONTINUE
54718       DO 130 I=N,1,-1
54719         SUM=B(I)
54720         DO 120 J=I+1,N
54721           SUM=SUM-A(I,J)*B(J)
54722   120   CONTINUE
54723         B(I)=SUM/A(I,I)
54724   130 CONTINUE
54725       RETURN
54726       END
54727  
54728 C***********************************************************************
54729  
54730 C...PYWIDX
54731 C...Calculates full and partial widths of resonances.
54732 C....copy of PYWIDT, used for techniparticle widths
54733  
54734       SUBROUTINE PYWIDX(KFLR,SH,WDTP,WDTE)
54735  
54736 C...Double precision and integer declarations.
54737       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54738       IMPLICIT INTEGER(I-N)
54739       INTEGER PYK,PYCHGE,PYCOMP
54740 C...Parameter statement to help give large particle numbers.
54741       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
54742      &KEXCIT=4000000,KDIMEN=5000000)
54743 C...Commonblocks.
54744       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54745       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54746       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54747       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
54748       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
54749       COMMON/PYINT1/MINT(400),VINT(400)
54750       COMMON/PYINT4/MWID(500),WIDS(500,5)
54751       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
54752       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
54753       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
54754      &/PYINT4/,/PYMSSM/,/PYTCSM/
54755 C...Local arrays and saved variables.
54756       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
54757      &WID2SV(3,2)
54758       SAVE MOFSV,WIDWSV,WID2SV
54759       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
54760  
54761 C...Compressed code and sign; mass.
54762       KFLA=IABS(KFLR)
54763       KFLS=ISIGN(1,KFLR)
54764       KC=PYCOMP(KFLA)
54765       SHR=SQRT(SH)
54766       PMR=PMAS(KC,1)
54767  
54768 C...Reset width information.
54769       DO I=0,400
54770         WDTP(I)=0D0
54771       ENDDO
54772  
54773 C...Common electroweak and strong constants.
54774       XW=PARU(102)
54775       XWV=XW
54776       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
54777       XW1=1D0-XW
54778       AEM=PYALEM(SH)
54779       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
54780       AS=PYALPS(SH)
54781       RADC=1D0+AS/PARU(1)
54782  
54783       IF(KFLA.EQ.23) THEN
54784 C...Z0:
54785         XWC=1D0/(16D0*XW*XW1)
54786         FAC=(AEM*XWC/3D0)*SHR
54787   120   CONTINUE
54788         DO 130 I=1,MDCY(KC,3)
54789           IDC=I+MDCY(KC,2)-1
54790           IF(MDME(IDC,1).LT.0) GOTO 130
54791           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
54792           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
54793           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 130
54794           IF(I.LE.8) THEN
54795 C...Z0 -> q + qbar
54796             EF=KCHG(I,1)/3D0
54797             AF=SIGN(1D0,EF+0.1D0)
54798             VF=AF-4D0*EF*XWV
54799             FCOF=3D0*RADC
54800             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
54801           ELSEIF(I.LE.16) THEN
54802 C...Z0 -> l+ + l-, nu + nubar
54803             EF=KCHG(I+2,1)/3D0
54804             AF=SIGN(1D0,EF+0.1D0)
54805             VF=AF-4D0*EF*XWV
54806             FCOF=1D0
54807           ENDIF
54808           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
54809           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
54810      &    BE34
54811           WDTP(0)=WDTP(0)+WDTP(I)
54812   130   CONTINUE
54813  
54814  
54815       ELSEIF(KFLA.EQ.24) THEN
54816 C...W+/-:
54817         FAC=(AEM/(24D0*XW))*SHR
54818         DO 140 I=1,MDCY(KC,3)
54819           IDC=I+MDCY(KC,2)-1
54820           IF(MDME(IDC,1).LT.0) GOTO 140
54821           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
54822           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
54823           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
54824           WID2=1D0
54825           IF(I.LE.16) THEN
54826 C...W+/- -> q + qbar'
54827             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
54828           ELSEIF(I.LE.20) THEN
54829 C...W+/- -> l+/- + nu
54830             FCOF=1D0
54831           ENDIF
54832           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
54833      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
54834           WDTP(0)=WDTP(0)+WDTP(I)
54835   140   CONTINUE
54836  
54837 C.....V8 -> quark anti-quark
54838       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
54839         FAC=AS/6D0*SHR
54840         TANT3=RTCM(21)
54841         IF(ITCM(2).EQ.0) THEN
54842           IMDL=1
54843         ELSEIF(ITCM(2).EQ.1) THEN
54844           IMDL=2
54845         ENDIF
54846         DO 150 I=1,MDCY(KC,3)
54847           IDC=I+MDCY(KC,2)-1
54848           IF(MDME(IDC,1).LT.0) GOTO 150
54849           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
54850           RM1=PM1**2/SH
54851           IF(RM1.GT.0.25D0) GOTO 150
54852           WID2=1D0
54853           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
54854             FMIX=1D0/TANT3**2
54855           ELSE
54856             FMIX=TANT3**2
54857           ENDIF
54858           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
54859           IF(I.EQ.6) WID2=WIDS(6,1)
54860           WDTP(0)=WDTP(0)+WDTP(I)
54861   150   CONTINUE
54862       ENDIF
54863  
54864       RETURN
54865       END
54866  
54867 C*********************************************************************
54868  
54869 C...PYRVSF
54870 C...Calculates R-violating decays of sfermions.
54871 C...P. Z. Skands
54872  
54873       SUBROUTINE PYRVSF(KFIN,XLAM,IDLAM,LKNT)
54874  
54875 C...Double precision and integer declarations.
54876       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54877       IMPLICIT INTEGER(I-N)
54878 C...Parameter statement to help give large particle numbers.
54879       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
54880      &KEXCIT=4000000,KDIMEN=5000000)
54881 C...Commonblocks.
54882       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54883       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
54884       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
54885      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
54886       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
54887 C...Local variables.
54888       DOUBLE PRECISION XLAM(0:400)
54889       INTEGER IDLAM(400,3), PYCOMP
54890       SAVE /PYMSRV/,/PYSSMT/,/PYMSSM/,/PYDAT2/
54891  
54892 C...IS R-VIOLATION ON ?
54893       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
54894 C...Mass eigenstate counter
54895         ICNT=INT(KFIN/KSUSY1)
54896 C...SM KF code of SUSY particle
54897         KFSM=KFIN-ICNT*KSUSY1
54898 C...Squared Sparticle Mass
54899         SM=PMAS(PYCOMP(KFIN),1)**2
54900 C... Squared mass of top quark
54901         SMT=PMAS(PYCOMP(6),1)**2
54902 C...IS L-VIOLATION ON ?
54903         IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1)) THEN
54904 C...SLEPTON -> NU(BAR) + LEPTON and UBAR + D
54905           IF(ICNT.NE.0.AND.(KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15))
54906      &         THEN
54907             K=INT((KFSM-9)/2)
54908             DO 110 I=1,3
54909               DO 100 J=1,3
54910                 IF(I.NE.J) THEN
54911 C...~e,~mu,~tau -> nu_I + lepton-_J
54912                   LKNT = LKNT+1
54913                   IDLAM(LKNT,1)= 12 +2*(I-1)
54914                   IDLAM(LKNT,2)= 11 +2*(J-1)
54915                   IDLAM(LKNT,3)= 0
54916                   XLAM(LKNT)=0D0
54917                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
54918                   IF (IMSS(51).NE.0) XLAM(LKNT) =
54919      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
54920 C...KINEMATICS CHECK
54921                   IF (XLAM(LKNT).EQ.0D0) THEN
54922                     LKNT=LKNT-1
54923                   ENDIF
54924                 ENDIF
54925   100         CONTINUE
54926   110       CONTINUE
54927 C...~e,~mu,~tau -> nu_Ibar + lepton-_K
54928             J=INT((KFSM-9)/2)
54929             DO 130 I=1,3
54930               IF(I.NE.J) THEN
54931                 DO 120 K=1,3
54932                   LKNT = LKNT+1
54933                   IDLAM(LKNT,1)=-12 -2*(I-1)
54934                   IDLAM(LKNT,2)= 11 +2*(K-1)
54935                   IDLAM(LKNT,3)= 0
54936                   XLAM(LKNT)=0D0
54937                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
54938                   IF (IMSS(51).NE.0) XLAM(LKNT) =
54939      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
54940 C...KINEMATICS CHECK
54941                   IF (XLAM(LKNT).EQ.0D0) THEN
54942                     LKNT=LKNT-1
54943                   ENDIF
54944   120           CONTINUE
54945               ENDIF
54946   130       CONTINUE
54947 C...~e,~mu,~tau -> u_Jbar + d_K
54948             I=INT((KFSM-9)/2)
54949             DO 150 J=1,3
54950               DO 140 K=1,3
54951                 LKNT = LKNT+1
54952                 IDLAM(LKNT,1)=-2 -2*(J-1)
54953                 IDLAM(LKNT,2)= 1 +2*(K-1)
54954                 IDLAM(LKNT,3)= 0
54955                 XLAM(LKNT)=0
54956                 IF (IMSS(52).NE.0) THEN
54957 C...Use massive top quark
54958                   IF (IDLAM(LKNT,1).EQ.-6) THEN
54959                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2
54960      &                   * (SM-SMT)
54961                     XLAM(LKNT) =
54962      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
54963 C...If no top quark, all decay products massless
54964                   ELSE
54965                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
54966                     XLAM(LKNT) =
54967      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
54968                   ENDIF
54969 C...KINEMATICS CHECK
54970                   IF (XLAM(LKNT).EQ.0D0) THEN
54971                     LKNT=LKNT-1
54972                   ENDIF
54973                 ENDIF
54974   140         CONTINUE
54975   150       CONTINUE
54976           ENDIF
54977 C * SNEUTRINO -> LEPTON+ + LEPTON- and DBAR + D
54978 C...No right-handed neutrinos
54979           IF(ICNT.EQ.1) THEN
54980             IF(KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16) THEN
54981               J=INT((KFSM-10)/2)
54982               DO 170 I=1,3
54983                 DO 160 K=1,3
54984                   IF (I.NE.J) THEN
54985 C...~nu_J -> lepton+_I + lepton-_K
54986                     LKNT = LKNT+1
54987                     IDLAM(LKNT,1)=-11 -2*(I-1)
54988                     IDLAM(LKNT,2)= 11 +2*(K-1)
54989                     IDLAM(LKNT,3)=  0
54990                     XLAM(LKNT)=0D0
54991                     RM2=RVLAM(I,J,K)**2 * SM
54992                     IF (IMSS(51).NE.0) XLAM(LKNT) =
54993      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
54994 C...KINEMATICS CHECK
54995                     IF (XLAM(LKNT).EQ.0D0) THEN
54996                       LKNT=LKNT-1
54997                     ENDIF
54998                   ENDIF
54999   160           CONTINUE
55000   170         CONTINUE
55001 C...~nu_I -> dbar_J + d_K
55002               I=INT((KFSM-10)/2)
55003               DO 190 J=1,3
55004                 DO 180 K=1,3
55005                   LKNT = LKNT+1
55006                   IDLAM(LKNT,1)=-1 -2*(J-1)
55007                   IDLAM(LKNT,2)= 1 +2*(K-1)
55008                   IDLAM(LKNT,3)= 0
55009                   XLAM(LKNT)=0D0
55010                   RM2=3*RVLAMP(I,J,K)**2 * SM
55011                   IF (IMSS(52).NE.0) XLAM(LKNT) =
55012      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55013 C...KINEMATICS CHECK
55014                   IF (XLAM(LKNT).EQ.0D0) THEN
55015                     LKNT=LKNT-1
55016                   ENDIF
55017   180           CONTINUE
55018   190         CONTINUE
55019             ENDIF
55020           ENDIF
55021 C * SDOWN -> NU(BAR) + D and LEPTON- + U
55022           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
55023             J=INT((KFSM+1)/2)
55024             DO 210 I=1,3
55025               DO 200 K=1,3
55026 C...~d_J -> nu_Ibar + d_K
55027                 LKNT = LKNT+1
55028                 IDLAM(LKNT,1)=-12 -2*(I-1)
55029                 IDLAM(LKNT,2)=  1 +2*(K-1)
55030                 IDLAM(LKNT,3)=  0
55031                 XLAM(LKNT)=0D0
55032                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
55033                 IF (IMSS(52).NE.0) XLAM(LKNT) =
55034      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55035 C...KINEMATICS CHECK
55036                 IF (XLAM(LKNT).EQ.0D0) THEN
55037                   LKNT=LKNT-1
55038                 ENDIF
55039   200         CONTINUE
55040   210       CONTINUE
55041             K=INT((KFSM+1)/2)
55042             DO 240 I=1,3
55043               DO 230 J=1,3
55044 C...~d_K -> nu_I + d_J
55045                 LKNT = LKNT+1
55046                 IDLAM(LKNT,1)= 12 +2*(I-1)
55047                 IDLAM(LKNT,2)=  1 +2*(J-1)
55048                 IDLAM(LKNT,3)=  0
55049                 XLAM(LKNT)=0D0
55050                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
55051                 IF (IMSS(52).NE.0) XLAM(LKNT) =
55052      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55053 C...KINEMATICS CHECK
55054                 IF (XLAM(LKNT).EQ.0D0) THEN
55055                   LKNT=LKNT-1
55056                 ENDIF
55057 C...~d_K -> lepton_I- + u_J
55058   220           LKNT = LKNT+1
55059                 IDLAM(LKNT,1)= 11 +2*(I-1)
55060                 IDLAM(LKNT,2)=  2 +2*(J-1)
55061                 IDLAM(LKNT,3)=  0
55062                 XLAM(LKNT)=0D0
55063                 IF (IMSS(52).NE.0) THEN
55064 C...Use massive top quark
55065                   IF (IDLAM(LKNT,2).EQ.6) THEN
55066                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT)
55067                     XLAM(LKNT) =
55068      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,2)
55069 C...If no top quark, all decay products massless
55070                   ELSE
55071                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
55072                     XLAM(LKNT) =
55073      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55074                   ENDIF
55075 C...KINEMATICS CHECK
55076                   IF (XLAM(LKNT).EQ.0D0) THEN
55077                     LKNT=LKNT-1
55078                   ENDIF
55079                 ENDIF
55080   230         CONTINUE
55081   240       CONTINUE
55082           ENDIF
55083 C * SUP -> LEPTON+ + D
55084           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
55085             J=NINT(KFSM/2.)
55086             DO 260 I=1,3
55087               DO 250 K=1,3
55088 C...~u_J -> lepton_I+ + d_K
55089                 LKNT = LKNT+1
55090                 IDLAM(LKNT,1)=-11 -2*(I-1)
55091                 IDLAM(LKNT,2)=  1 +2*(K-1)
55092                 IDLAM(LKNT,3)=  0
55093                 XLAM(LKNT)=0D0
55094                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
55095                 IF (IMSS(52).NE.0) XLAM(LKNT) =
55096      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55097 C...KINEMATICS CHECK
55098                 IF (XLAM(LKNT).EQ.0D0) THEN
55099                   LKNT=LKNT-1
55100                 ENDIF
55101   250         CONTINUE
55102   260       CONTINUE
55103           ENDIF
55104         ENDIF
55105 C...BARYON NUMBER VIOLATING DECAYS
55106         IF (IMSS(53).GE.1) THEN
55107 C * SUP -> DBAR + DBAR
55108           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
55109             I = KFSM/2
55110             DO 280 J=1,3
55111               DO 270 K=1,3
55112 C...~u_I -> dbar_J + dbar_K
55113                 IF (J.LT.K) THEN
55114 C...(anti-) symmetry J <-> K.
55115                   LKNT = LKNT + 1
55116                   IDLAM(LKNT,1) = -1 -2*(J-1)
55117                   IDLAM(LKNT,2) = -1 -2*(K-1)
55118                   IDLAM(LKNT,3) =  0
55119                   XLAM(LKNT)    =  0D0
55120                   RM2 = 2.*(RVLAMB(I,J,K)**2)
55121      &                 * SFMIX(KFSM,2*ICNT)**2 * SM
55122                   XLAM(LKNT)    =
55123      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55124 C...KINEMATICS CHECK
55125                   IF (XLAM(LKNT).EQ.0D0) THEN
55126                     LKNT = LKNT-1
55127                   ENDIF
55128                 ENDIF
55129   270         CONTINUE
55130   280       CONTINUE
55131           ENDIF
55132 C * SDOWN -> UBAR + DBAR
55133           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
55134             K=(KFSM+1)/2
55135             DO 300 I=1,3
55136               DO 290 J=1,3
55137 C...LAMB coupling antisymmetric in J and K.
55138                 IF (J.NE.K) THEN
55139 C...~d_K -> ubar_I + dbar_K
55140                   LKNT = LKNT + 1
55141                   IDLAM(LKNT,1)= -2 -2*(I-1)
55142                   IDLAM(LKNT,2)= -1 -2*(J-1)
55143                   IDLAM(LKNT,3)=  0
55144                   XLAM(LKNT)=0D0
55145 C...Use massive top quark
55146                   IF (IDLAM(LKNT,1).EQ.-6) THEN
55147                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT
55148      &                   )
55149                     XLAM(LKNT) =
55150      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
55151 C...If no top quark, all decay products massless
55152                   ELSE
55153                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
55154                     XLAM(LKNT) =
55155      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55156                   ENDIF
55157 C...KINEMATICS CHECK
55158                   IF (XLAM(LKNT).EQ.0D0) THEN
55159                     LKNT=LKNT-1
55160                   ENDIF
55161                 ENDIF
55162   290         CONTINUE
55163   300       CONTINUE
55164           ENDIF
55165         ENDIF
55166       ENDIF
55167  
55168       RETURN
55169       END
55170  
55171 C*********************************************************************
55172  
55173 C...PYRVNE
55174 C...Calculates R-violating neutralino decay widths (pure 1->3 parts).
55175 C...P. Z. Skands
55176  
55177       SUBROUTINE PYRVNE(KFIN,XLAM,IDLAM,LKNT)
55178  
55179 C...Double precision and integer declarations.
55180       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55181       IMPLICIT INTEGER(I-N)
55182 C...Parameter statement to help give large particle numbers.
55183       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
55184      &KEXCIT=4000000,KDIMEN=5000000)
55185 C...Commonblocks.
55186       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55187       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55188       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
55189       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
55190      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
55191       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
55192 C...Local variables.
55193       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
55194      &     ,DCMASS,KFR(3)
55195       DOUBLE PRECISION XLAM(0:400)
55196       DOUBLE PRECISION ZPMIX(4,4), NMIX(4,4), RMQ(6)
55197       INTEGER IDLAM(400,3), PYCOMP
55198       LOGICAL DCMASS
55199       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/
55200  
55201 C...R-VIOLATING DECAYS
55202       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
55203         KFSM=KFIN-KSUSY1
55204         IF(KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
55205 C...WHICH NEUTRALINO ?
55206           NCHI=1
55207           IF (KFSM.EQ.23) NCHI=2
55208           IF (KFSM.EQ.25) NCHI=3
55209           IF (KFSM.EQ.35) NCHI=4
55210 C...SIGN OF MASS (Opposite convention as HERWIG)
55211           ISM = 1
55212           IF (SMZ(NCHI).LT.0D0) ISM = -ISM
55213  
55214 C...Useful parameters for the calculation of the A and B constants.
55215           WMASS = PMAS(PYCOMP(24),1)
55216           ECHG = 2*SQRT(PARU(103)*PARU(1))
55217           COSB=1/(SQRT(1+RMSS(5)**2))
55218           SINB=RMSS(5)/SQRT(1+RMSS(5)**2)
55219           COSW=SQRT(1-PARU(102))
55220           SINW=SQRT(PARU(102))
55221           GW=2D0*SQRT(PARU(103)*PARU(1))/SINW
55222 C...Run quark masses to neutralino mass squared (for Higgs-type
55223 C...couplings)
55224           SQMCHI=PMAS(PYCOMP(KFIN),1)**2
55225           DO 100 I=1,6
55226             RMQ(I)=PYMRUN(I,SQMCHI)
55227   100     CONTINUE
55228 C...EXPRESS NEUTRALINO MIXING IN (photino,Zino,~H_u,~H_d) BASIS
55229             DO 110 NCHJ=1,4
55230               ZPMIX(NCHJ,1)= ZMIX(NCHJ,1)*COSW+ZMIX(NCHJ,2)*SINW
55231               ZPMIX(NCHJ,2)=-ZMIX(NCHJ,1)*SINW+ZMIX(NCHJ,2)*COSW
55232               ZPMIX(NCHJ,3)= ZMIX(NCHJ,3)
55233               ZPMIX(NCHJ,4)= ZMIX(NCHJ,4)
55234   110       CONTINUE
55235             C1=GW*ZPMIX(NCHI,3)/(2D0*COSB*WMASS)
55236             C1U=GW*ZPMIX(NCHI,4)/(2D0*SINB*WMASS)
55237             C2=ECHG*ZPMIX(NCHI,1)
55238             C3=GW*ZPMIX(NCHI,2)/COSW
55239             EU=2D0/3D0
55240             ED=-1D0/3D0
55241 C... AB(x,y,z):
55242 C       x=1-2  : Select A or B constant     (1:A ; 2:B)
55243 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
55244 C                                    11-16:e,nu_e,mu,...)
55245 C       z=1-2  : Mass eigenstate number
55246 C...CALCULATE COUPLINGS
55247           DO 120 I = 11,15,2
55248             CMS=PMAS(PYCOMP(I),1)
55249 C...Intermediate sleptons
55250             AB(1,I,1)=ISM*(CMS*C1*SFMIX(I,1) + SFMIX(I,2)
55251      &           *(C2-C3*SINW**2))
55252             AB(1,I,2)=ISM*(CMS*C1*SFMIX(I,3) + SFMIX(I,4)
55253      &           *(C2-C3*SINW**2))
55254             AB(2,I,1)= CMS*C1*SFMIX(I,2) - SFMIX(I,1)*(C2+C3*(5D-1-SINW
55255      &           **2))
55256             AB(2,I,2)=CMS*C1*SFMIX(I,4) - SFMIX(I,3)*(C2+C3*(5D-1-SINW
55257      &           **2))
55258 C...Inermediate sneutrinos
55259             AB(1,I+1,1)=0D0
55260             AB(2,I+1,1)=5D-1*C3
55261             AB(1,I+1,2)=0D0
55262             AB(2,I+1,2)=0D0
55263 C...Inermediate sdown
55264             J=I-10
55265             CMS=RMQ(J)
55266             AB(1,J,1)=ISM*(CMS*C1*SFMIX(J,1) - SFMIX(J,2)
55267      &           *ED*(C2-C3*SINW**2))
55268             AB(1,J,2)=ISM*(CMS*C1*SFMIX(J,3) - SFMIX(J,4)
55269      &           *ED*(C2-C3*SINW**2))
55270             AB(2,J,1)=CMS*C1*SFMIX(J,2) + SFMIX(J,1)
55271      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
55272             AB(2,J,2)=CMS*C1*SFMIX(J,4) + SFMIX(J,3)
55273      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
55274 C...Inermediate sup
55275             J=J+1
55276             CMS=RMQ(J)
55277             AB(1,J,1)=ISM*(CMS*C1U*SFMIX(J,1) - SFMIX(J,2)
55278      &           *EU*(C2-C3*SINW**2))
55279             AB(1,J,2)=ISM*(CMS*C1U*SFMIX(J,3) - SFMIX(J,4)
55280      &           *EU*(C2-C3*SINW**2))
55281             AB(2,J,1)=CMS*C1U*SFMIX(J,2) + SFMIX(J,1)
55282      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
55283             AB(2,J,2)=CMS*C1U*SFMIX(J,4) + SFMIX(J,3)
55284      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
55285   120     CONTINUE
55286  
55287           IF (IMSS(51).GE.1) THEN
55288 C...LAMBDA COUPLINGS (LLE TYPE R-VIOLATION)
55289 C * CHI0_I -> NUBAR_I + LEPTON+_J + lEPTON-_K.
55290 C...STEP IN I,J,K USING SINGLE COUNTER
55291             DO 130 ISC=0,26
55292 C...LAMBDA COUPLING ASYM IN I,J
55293               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
55294                 LKNT = LKNT+1
55295                 IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
55296                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
55297                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
55298                 XLAM(LKNT)    = 0D0
55299 C...Set coupling, and decay product masses on/off
55300                 RVLAMC        = RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
55301      &               ,MOD(ISC,3)+1)**2
55302                 DCMASS=.FALSE.
55303                 IF (IDLAM(LKNT,2).EQ.-15.OR.IDLAM(LKNT,3).EQ.15)
55304      &               DCMASS = .TRUE.
55305 C...Resonance KF codes (1=I,2=J,3=K)
55306                 KFR(1)=-IDLAM(LKNT,1)
55307                 KFR(2)=-IDLAM(LKNT,2)
55308                 KFR(3)=-IDLAM(LKNT,3)
55309 C...Calculate width.
55310                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55311      &               IDLAM(LKNT,3),XLAM(LKNT))
55312                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55313 C...Charge conjugate mode.
55314                 LKNT=LKNT+1
55315                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
55316                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
55317                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
55318                 XLAM(LKNT)=XLAM(LKNT-1)
55319 C...KINEMATICS CHECK
55320                 IF (XLAM(LKNT).EQ.0D0) THEN
55321                   LKNT=LKNT-2
55322                 ENDIF
55323               ENDIF
55324   130       CONTINUE
55325           ENDIF
55326  
55327           IF (IMSS(52).GE.1) THEN
55328 C...LAMBDA' COUPLINGS. (LQD TYPE R-VIOLATION)
55329 C * CHI0 -> NUBAR_I + DBAR_J + D_K
55330             DO 140 ISC=0,26
55331               LKNT = LKNT+1
55332               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
55333               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55334               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55335               XLAM(LKNT)    =  0D0
55336 C...Set coupling, and decay product masses on/off
55337               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
55338      &             ,MOD(ISC,3)+1)**2
55339               DCMASS=.FALSE.
55340               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5)
55341      &             DCMASS = .TRUE.
55342 C...Resonance KF codes (1=I,2=J,3=K)
55343               KFR(1)=-IDLAM(LKNT,1)
55344               KFR(2)=-IDLAM(LKNT,2)
55345               KFR(3)=-IDLAM(LKNT,3)
55346 C...Calculate width.
55347               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55348      &             ,XLAM(LKNT))
55349               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55350 C...Charge conjugate mode.
55351               LKNT=LKNT+1
55352               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
55353               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
55354               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
55355               XLAM(LKNT)=XLAM(LKNT-1)
55356 C...KINEMATICS CHECK
55357               IF (XLAM(LKNT).EQ.0D0) THEN
55358                 LKNT=LKNT-2
55359               ENDIF
55360  
55361 C * CHI0 -> LEPTON_I+ + UBAR_J + D_K
55362               LKNT = LKNT+1
55363               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
55364               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
55365               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55366               XLAM(LKNT)    =  0D0
55367 C...Set coupling, and decay product masses on/off
55368               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
55369      &             ,MOD(ISC,3)+1)**2
55370               DCMASS=.FALSE.
55371               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
55372      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
55373 C...Resonance KF codes (1=I,2=J,3=K)
55374               KFR(1)=-IDLAM(LKNT,1)
55375               KFR(2)=-IDLAM(LKNT,2)
55376               KFR(3)=-IDLAM(LKNT,3)
55377 C...Calculate width.
55378               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55379      &             ,XLAM(LKNT))
55380               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55381 C...Charge conjugate mode.
55382               LKNT=LKNT+1
55383               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
55384               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
55385               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
55386               XLAM(LKNT)=XLAM(LKNT-1)
55387 C...KINEMATICS CHECK
55388               IF (XLAM(LKNT).EQ.0D0) THEN
55389                 LKNT=LKNT-2
55390               ENDIF
55391   140       CONTINUE
55392           ENDIF
55393  
55394           IF (IMSS(53).GE.1) THEN
55395 C...LAMBDA'' COUPLINGS. (UDD TYPE R-VIOLATION)
55396 C * CHI0 -> UBAR_I + DBAR_J + DBAR_K
55397             DO 150 ISC=0,26
55398 C...Symmetry J<->K. Also, LAMB antisymmetric in J and K, so no J=K.
55399               IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
55400                 LKNT = LKNT+1
55401                 IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
55402                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55403                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
55404                 XLAM(LKNT)    =  0D0
55405 C...Set coupling, and decay product masses on/off
55406                 RVLAMC        = 6. * RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)
55407      &               +1,MOD(ISC,3)+1)**2
55408                 DCMASS=.FALSE.
55409                 IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
55410      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
55411 C...Resonance KF codes (1=I,2=J,3=K)
55412                 KFR(1) = IDLAM(LKNT,1)
55413                 KFR(2) = IDLAM(LKNT,2)
55414                 KFR(3) = IDLAM(LKNT,3)
55415 C...Calculate width.
55416                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55417      &               IDLAM(LKNT,3),XLAM(LKNT))
55418                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55419 C...Charge conjugate mode.
55420                 LKNT=LKNT+1
55421                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
55422                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
55423                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
55424                 XLAM(LKNT)=XLAM(LKNT-1)
55425 C...KINEMATICS CHECK
55426                 IF (XLAM(LKNT).EQ.0D0) THEN
55427                   LKNT=LKNT-2
55428                 ENDIF
55429               ENDIF
55430   150       CONTINUE
55431           ENDIF
55432         ENDIF
55433       ENDIF
55434  
55435       RETURN
55436       END
55437  
55438 C*********************************************************************
55439  
55440 C...PYRVCH
55441 C...Calculates R-violating chargino decay widths.
55442 C...P. Z. Skands
55443  
55444       SUBROUTINE PYRVCH(KFIN,XLAM,IDLAM,LKNT)
55445  
55446 C...Double precision and integer declarations.
55447       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55448       IMPLICIT INTEGER(I-N)
55449 C...Parameter statement to help give large particle numbers.
55450       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
55451      &KEXCIT=4000000,KDIMEN=5000000)
55452 C...Commonblocks.
55453       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55454       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55455       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
55456       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
55457      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
55458       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
55459 C...Local variables.
55460       DOUBLE PRECISION XLAM(0:400)
55461       INTEGER IDLAM(400,3), PYCOMP
55462 C...Information from main routine to PYRVGW
55463       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
55464      &     ,DCMASS,KFR(3)
55465 C...Auxiliary variables needed for BV (RV Gauge STOre)
55466       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
55467      &     ,RVLJKI,RVLJIK
55468 C...Running quark masses
55469       DOUBLE PRECISION RMQ(6)
55470 C...Decay product masses on/off
55471       LOGICAL DCMASS
55472       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
55473      &     /RVGSTO/
55474  
55475  
55476 C...IF R-VIOLATION ON.
55477       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
55478         KFSM=KFIN-KSUSY1
55479         IF(KFSM.EQ.24.OR.KFSM.EQ.37) THEN
55480 C...WHICH CHARGINO ?
55481           NCHI = 1
55482           IF (KFSM.EQ.37) NCHI = 2
55483  
55484 C...Useful parameters for calculating the A and B constants.
55485 C...SIGN OF MASS (Opposite convention as HERWIG)
55486           ISM  = 1
55487           IF (SMW(NCHI).LT.0D0) ISM = -1
55488           WMASS   = PMAS(PYCOMP(24),1)
55489           COSB    = 1/(SQRT(1+RMSS(5)**2))
55490           SINB    = RMSS(5)/SQRT(1+RMSS(5)**2)
55491           GW2     = 4*PARU(103)*PARU(1)/PARU(102)
55492           C1U     = UMIX(NCHI,2)/(SQRT(2D0)*COSB*WMASS)
55493           C1V     = VMIX(NCHI,2)/(SQRT(2D0)*SINB*WMASS)
55494           C2      = UMIX(NCHI,1)
55495           C3      = VMIX(NCHI,1)
55496 C...Running masses at Q^2=MCHI^2.
55497           SQMCHI  = PMAS(PYCOMP(KFSM),1)**2
55498           DO 100 I=1,6
55499             RMQ(I)=PYMRUN(I,SQMCHI)
55500   100     CONTINUE
55501  
55502 C... AB(x,y,z) coefficients:
55503 C       x=1-2  : A or B coefficient  (1:A ; 2:B)
55504 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
55505 C                                    11-16:e,nu_e,mu,...)
55506 C       z=1-2  : Mass eigenstate number
55507           DO 110 I = 11,15,2
55508 C...Intermediate sleptons
55509             AB(1,I,1)   = 0D0
55510             AB(1,I,2)   = 0D0
55511             AB(2,I,1)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,2) +
55512      &           SFMIX(I,1)*C2
55513             AB(2,I,2)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,4) +
55514      &           SFMIX(I,3)*C2
55515 C...Intermediate sneutrinos
55516             AB(1,I+1,1) = -PMAS(PYCOMP(I),1)*C1U
55517             AB(1,I+1,2) = 0D0
55518             AB(2,I+1,1) = ISM*C3
55519             AB(2,I+1,2) = 0D0
55520 C...Intermediate sdown
55521             J=I-10
55522             AB(1,J,1)   = -RMQ(J+1)*C1V*SFMIX(J,1)
55523             AB(1,J,2)   = -RMQ(J+1)*C1V*SFMIX(J,3)
55524             AB(2,J,1)   = -ISM*(RMQ(J)*C1U*SFMIX(J,2) - SFMIX(J,1)*C2)
55525             AB(2,J,2)   = -ISM*(RMQ(J)*C1U*SFMIX(J,4) - SFMIX(J,3)*C2)
55526 C...Intermediate sup
55527             J=J+1
55528             AB(1,J,1)   = -RMQ(J-1)*C1U*SFMIX(J,1)
55529             AB(1,J,2)   = -RMQ(J-1)*C1U*SFMIX(J,3)
55530             AB(2,J,1)   = -ISM*(RMQ(J)*C1V*SFMIX(J,2) - SFMIX(J,1)*C3)
55531             AB(2,J,2)   = -ISM*(RMQ(J)*C1V*SFMIX(J,4) - SFMIX(J,3)*C3)
55532   110     CONTINUE
55533  
55534 C...LLE TYPE R-VIOLATION
55535           IF (IMSS(51).GE.1) THEN
55536 C...LOOP OVER DECAY MODES
55537             DO 140 ISC=0,26
55538  
55539 C...CHI+ -> NUBAR_I + LEPTON+_J + NU_K.
55540               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
55541                 LKNT = LKNT+1
55542                 IDLAM(LKNT,1) = -12 -2*MOD(ISC/9,3)
55543                 IDLAM(LKNT,2) = -11 -2*MOD(ISC/3,3)
55544                 IDLAM(LKNT,3) =  12 +2*MOD(ISC,3)
55545                 XLAM(LKNT)    =  0D0
55546 C...Set coupling, and decay product masses on/off
55547                 RVLAMC        = GW2 * 5D-1 *
55548      &               RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
55549      &               **2
55550                 DCMASS=.FALSE.
55551                 IF (IDLAM(LKNT,2).EQ.-15) DCMASS = .TRUE.
55552 C...Resonance KF codes (1=I,2=J,3=K).
55553                 KFR(1) = 0
55554                 KFR(2) = 0
55555                 KFR(3) = -IDLAM(LKNT,3)+1
55556 C...Calculate width.
55557                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55558      &               IDLAM(LKNT,3),XLAM(LKNT))
55559                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55560 C...KINEMATICS CHECK
55561                 IF (XLAM(LKNT).EQ.0D0) THEN
55562                   LKNT=LKNT-1
55563                 ENDIF
55564  
55565 C * CHI+ -> NU_I + NU_J + LEPTON+_K. (NOTE: SYMM. IN I AND J)
55566   120           IF (MOD(ISC/9,3).LT.MOD(ISC/3,3)) THEN
55567                   LKNT = LKNT+1
55568                   IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
55569                   IDLAM(LKNT,2) = 12 +2*MOD(ISC/3,3)
55570                   IDLAM(LKNT,3) =-11 -2*MOD(ISC,3)
55571                   XLAM(LKNT)    = 0D0
55572 C...Set coupling, and decay product masses on/off
55573                   RVLAMC = GW2 * 5D-1 *
55574      &              RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55575 C...I,J SYMMETRY => FACTOR 2
55576                   RVLAMC=2*RVLAMC
55577                   DCMASS=.FALSE.
55578                   IF (IDLAM(LKNT,3).EQ.-15) DCMASS = .TRUE.
55579 C...Resonance KF codes (1=I,2=J,3=K)
55580                   KFR(1)=IDLAM(LKNT,1)-1
55581                   KFR(2)=IDLAM(LKNT,2)-1
55582                   KFR(3)=0
55583 C...Calculate width.
55584                   CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55585      &                 IDLAM(LKNT,3),XLAM(LKNT))
55586                  XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55587 C...KINEMATICS CHECK
55588                   IF (XLAM(LKNT).EQ.0D0) THEN
55589                     LKNT=LKNT-1
55590                   ENDIF
55591   130           ENDIF
55592  
55593 C * CHI+ -> LEPTON+_I + LEPTON+_J + LEPTON-_K
55594                 LKNT = LKNT+1
55595                 IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
55596                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
55597                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
55598                 XLAM(LKNT)    = 0D0
55599 C...Set coupling, and decay product masses on/off
55600                 RVLAMC = GW2 * 5D-1 *
55601      &             RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55602 C...I,J SYMMETRY => FACTOR 2
55603                 RVLAMC=2*RVLAMC
55604                 DCMASS=.FALSE.
55605                 IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-15
55606      &               .OR.IDLAM(LKNT,3).EQ.15) DCMASS = .TRUE.
55607 C...Resonance KF codes (1=I,2=J,3=K)
55608                 KFR(1) =-IDLAM(LKNT,1)+1
55609                 KFR(2) =-IDLAM(LKNT,2)+1
55610                 KFR(3) = 0
55611 C...Calculate width.
55612                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55613      &               IDLAM(LKNT,3),XLAM(LKNT))
55614                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55615 C...KINEMATICS CHECK
55616                 IF (XLAM(LKNT).EQ.0D0) THEN
55617                   LKNT=LKNT-1
55618                 ENDIF
55619               ENDIF
55620   140       CONTINUE
55621           ENDIF
55622  
55623 C...LQD TYPE R-VIOLATION
55624           IF (IMSS(52).GE.1) THEN
55625 C...LOOP OVER DECAY MODES
55626             DO 180 ISC=0,26
55627  
55628 C...CHI+ -> NUBAR_I + DBAR_J + U_K
55629               LKNT = LKNT+1
55630               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
55631               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55632               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
55633               XLAM(LKNT)    =  0D0
55634 C...Set coupling, and decay product masses on/off
55635               RVLAMC = 3. * GW2 * 5D-1 *
55636      &           RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55637               DCMASS=.FALSE.
55638               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.6)
55639      &             DCMASS = .TRUE.
55640 C...Resonance KF codes (1=I,2=J,3=K)
55641               KFR(1)=0
55642               KFR(2)=0
55643               KFR(3)=-IDLAM(LKNT,3)+1
55644 C...Calculate width.
55645               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55646      &             ,XLAM(LKNT))
55647               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55648 C...KINEMATICS CHECK
55649               IF (XLAM(LKNT).EQ.0D0) THEN
55650                 LKNT=LKNT-1
55651               ENDIF
55652  
55653 C * CHI+ -> LEPTON+_I + UBAR_J + U_K.
55654   150         LKNT = LKNT+1
55655               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
55656               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
55657               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
55658               XLAM(LKNT)    =  0D0
55659 C...Set coupling, and decay product masses on/off
55660               RVLAMC = 3. * GW2 * 5D-1 *
55661      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55662               DCMASS=.FALSE.
55663               IF (IDLAM(LKNT,1).EQ.-11.OR.IDLAM(LKNT,2).EQ.-6
55664      &             .OR.IDLAM(LKNT,3).EQ.6) DCMASS = .TRUE.
55665 C...Resonance KF codes (1=I,2=J,3=K)
55666               KFR(1)=0
55667               KFR(2)=0
55668               KFR(3)=-IDLAM(LKNT,3)+1
55669 C...Calculate width.
55670               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55671      &             ,XLAM(LKNT))
55672               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55673 C...KINEMATICS CHECK
55674               IF (XLAM(LKNT).EQ.0D0) THEN
55675                 LKNT=LKNT-1
55676               ENDIF
55677  
55678 C * CHI+ -> LEPTON+_I + DBAR_J + D_K.
55679   160         LKNT = LKNT+1
55680               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
55681               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55682               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55683               XLAM(LKNT)    =  0D0
55684 C...Set coupling, and decay product masses on/off
55685               RVLAMC = 3. * GW2 * 5D-1 *
55686      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55687               DCMASS = .FALSE.
55688               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-5
55689      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
55690 C...Resonance KF codes (1=I,2=J,3=K)
55691               KFR(1)=-IDLAM(LKNT,1)+1
55692               KFR(2)=-IDLAM(LKNT,2)+1
55693               KFR(3)=0
55694 C...Calculate width.
55695               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55696      &             ,XLAM(LKNT))
55697               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55698 C...KINEMATICS CHECK
55699               IF (XLAM(LKNT).EQ.0D0) THEN
55700                 LKNT=LKNT-1
55701               ENDIF
55702  
55703 C * CHI+ -> NU_I + U_J + DBAR_K.
55704   170         LKNT = LKNT+1
55705               IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
55706               IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
55707               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
55708               XLAM(LKNT)    =  0D0
55709 C...Set coupling, and decay product masses on/off
55710               DCMASS = .FALSE.
55711               RVLAMC = 3. * GW2 * 5D-1 *
55712      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55713               IF (IDLAM(LKNT,2).EQ.6.OR.IDLAM(LKNT,3).EQ.-5)
55714      &             DCMASS = .TRUE.
55715 C...Resonance KF codes (1=I,2=J,3=K)
55716               KFR(1)=IDLAM(LKNT,1)-1
55717               KFR(2)=IDLAM(LKNT,2)-1
55718               KFR(3)=0
55719 C...Calculate width.
55720               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55721      &             ,XLAM(LKNT))
55722               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55723 C...KINEMATICS CHECK
55724               IF (XLAM(LKNT).EQ.0D0) THEN
55725                 LKNT=LKNT-1
55726               ENDIF
55727  
55728   180       CONTINUE
55729           ENDIF
55730  
55731 C...UDD TYPE R-VIOLATION
55732 C...These decays need special treatment since more than one BV coupling
55733 C...contributes (with interference). Consider e.g. (symbolically)
55734 C      |M|^2 = |l''_{ijk}|^2*(PYRVI1(RES_I) + PYRVI2(RES_I))
55735 C             +|l''_{jik}|^2*(PYRVI1(RES_J) + PYRVI2(RES_J))
55736 C             +l''_{ijk}*l''_{jik}*PYRVI3(PYRVI4(RES_I,RES_J))
55737 C...The problem is that a single call to PYRVGW would evaluate all
55738 C...these terms and sum them, but without the different couplings. The
55739 C...way out is to call PYRVGW three times, once for the first line, once
55740 C...for the second line, and then once for all the lines (it is
55741 C...impossible to get just the last line out) without multiplying by
55742 C...couplings. The last line is then obtained as the result of the third
55743 C...call minus the results of the two first calls. Each term is then
55744 C...multiplied by its respective coupling before the whole thing is
55745 C...summed up in XLAM.
55746 C...Note that with three interfering resonances, this procedure becomes
55747 C...more complicated, as can be seen in the CHI+ -> 3*DBAR mode.
55748  
55749           IF (IMSS(53).GE.1) THEN
55750 C...LOOP OVER DECAY MODES
55751             DO 190 ISC=1,25
55752  
55753 C...CHI+ -> U_I + U_J + D_K
55754 C...Decay mode I<->J symmetric.
55755               IF (MOD(ISC/9,3).LE.MOD(ISC/3,3).AND.ISC.NE.13) THEN
55756                 LKNT = LKNT+1
55757                 IDLAM(LKNT,1) =  2 +2*MOD(ISC/9,3)
55758                 IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
55759                 IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55760                 XLAM(LKNT)    =  0D0
55761 C...Set coupling, and decay product masses on/off
55762                 RVLAMC= 6. * GW2 * 5D-1
55763                 RVLJIK= RVLAMB(MOD(ISC/3,3)+1,MOD(ISC/9,3)+1,MOD(ISC,3)
55764      &               +1)
55765                 RVLIJK= RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
55766      &               +1)
55767                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3)) RVLAMC = 5D-1
55768      &               * RVLAMC
55769                 DCMASS=.FALSE.
55770                 IF (IDLAM(LKNT,1).EQ.6.OR.IDLAM(LKNT,2).EQ.6
55771      &               .OR.IDLAM(LKNT,3).EQ.5) DCMASS =.TRUE.
55772 C...Resonance KF codes (1=I,2=J,3=K)
55773                 KFR(1) = -IDLAM(LKNT,1)+1
55774                 KFR(2) = 0
55775                 KFR(3) = 0
55776 C...Calculate width.
55777                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55778      &               IDLAM(LKNT,3),XRESI)
55779 C...Resonance KF codes (1=I,2=J,3=K)
55780                 KFR(1) = 0
55781                 KFR(2) = -IDLAM(LKNT,2)+1
55782                 KFR(3) = 0
55783 C...Calculate width.
55784                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55785      &               IDLAM(LKNT,3),XRESJ)
55786 C...Resonance KF codes (1=I,2=J,3=K)
55787                 KFR(1) = -IDLAM(LKNT,1)+1
55788                 KFR(2) = -IDLAM(LKNT,2)+1
55789                 KFR(3) = 0
55790 C...Calculate width.
55791                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55792      &               IDLAM(LKNT,3),XRESIJ)
55793                 IF (ABS((XRESI+XRESJ)/XRESIJ-1.).GT.1D-4) THEN
55794                   XRESIJ = XRESIJ-XRESI-XRESJ
55795                 ELSE
55796                   XRESIJ = 0D0
55797                 ENDIF
55798 C...CALCULATE TOTAL WIDTH
55799                 XLAM(LKNT) = RVLJIK**2 * XRESI + RVLIJK**2 * XRESJ
55800      &               + RVLJIK*RVLIJK * XRESIJ
55801                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55802 C...KINEMATICS CHECK
55803                 IF (XLAM(LKNT).EQ.0D0) THEN
55804                   LKNT=LKNT-1
55805                 ENDIF
55806               ENDIF
55807 C...CHI+ -> DBAR_I + DBAR_J + DBAR_K
55808 C...Symmetry I<->J<->K.
55809               IF ((MOD(ISC/9,3).LE.MOD(ISC/3,3)).AND.(MOD(ISC/3,3).LE
55810      &             .MOD(ISC,3)).AND.ISC.NE.13) THEN
55811                 LKNT = LKNT+1
55812                 IDLAM(LKNT,1) = -1 -2*MOD(ISC/9,3)
55813                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55814                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
55815                 XLAM(LKNT)    =  0D0
55816 C...Set coupling, and decay product masses on/off
55817                 RVLAMC = 6. * GW2 * 5D-1
55818                 RVLIJK = RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
55819      &               +1)
55820                 RVLKIJ = RVLAMB(MOD(ISC,3)+1,MOD(ISC/9,3)+1,MOD(ISC/3,3)
55821      &               +1)
55822                 RVLJKI = RVLAMB(MOD(ISC/3,3)+1,MOD(ISC,3)+1,MOD(ISC/9,3)
55823      &               +1)
55824                 DCMASS = .FALSE.
55825                 IF (IDLAM(LKNT,1).EQ.-5.OR.IDLAM(LKNT,2).EQ.-5
55826      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS = .TRUE.
55827 C...Collect symmetry factors
55828                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3).OR.MOD(ISC/3,3).EQ
55829      &               .MOD(ISC,3).OR.MOD(ISC/9,3).EQ.MOD(ISC,3))
55830      &               RVLAMC = 5D-1 * RVLAMC
55831 C...Resonance KF codes (1=I,2=J,3=K)
55832                 KFR(1) = IDLAM(LKNT,1)-1
55833                 KFR(2) = 0
55834                 KFR(3) = 0
55835 C...Calculate width.
55836                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55837      &               IDLAM(LKNT,3),XRESI)
55838 C...Resonance KF codes (1=I,2=J,3=K)
55839                 KFR(1) = 0
55840                 KFR(2) = IDLAM(LKNT,2)-1
55841                 KFR(3) = 0
55842 C...Calculate width.
55843                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55844      &               IDLAM(LKNT,3),XRESJ)
55845 C...Resonance KF codes (1=I,2=J,3=K)
55846                 KFR(1) = 0
55847                 KFR(2) = 0
55848                 KFR(3) = IDLAM(LKNT,3)-1
55849 C...Calculate width.
55850                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55851      &               IDLAM(LKNT,3),XRESK)
55852 C...Resonance KF codes (1=I,2=J,3=K)
55853                 KFR(1) = IDLAM(LKNT,1)-1
55854                 KFR(2) = IDLAM(LKNT,2)-1
55855                 KFR(3) = 0
55856 C...Calculate width.
55857                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55858      &               IDLAM(LKNT,3),XRESIJ)
55859                 IF (ABS(XRESIJ/(XRESI+XRESJ)-1.).GT.1D-4) THEN
55860                   XRESIJ = XRESI+XRESJ-XRESIJ
55861                 ELSE
55862                   XRESIJ = 0D0
55863                 ENDIF
55864 C...Resonance KF codes (1=I,2=J,3=K)
55865                 KFR(1) = 0
55866                 KFR(2) = IDLAM(LKNT,2)-1
55867                 KFR(3) = IDLAM(LKNT,3)-1
55868 C...Calculate width.
55869                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55870      &               IDLAM(LKNT,3),XRESJK)
55871                 IF (ABS(XRESJK/(XRESJ+XRESK)-1.).GT.1D-4) THEN
55872                   XRESJK = XRESJ+XRESK-XRESJK
55873                 ELSE
55874                   XRESJK = 0D0
55875                 ENDIF
55876 C...Resonance KF codes (1=I,2=J,3=K)
55877                 KFR(1) = IDLAM(LKNT,1)-1
55878                 KFR(2) = 0
55879                 KFR(3) = IDLAM(LKNT,3)-1
55880 C...Calculate width.
55881                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55882      &               IDLAM(LKNT,3),XRESIK)
55883                 IF (ABS(XRESIK/(XRESI+XRESK)-1.).GT.1D-4) THEN
55884                   XRESIK = XRESI+XRESK-XRESIK
55885                 ELSE
55886                   XRESIK = 0D0
55887                 ENDIF
55888 C...CALCULATE TOTAL WIDTH
55889                 XLAM(LKNT) =
55890      &                 RVLIJK**2 * XRESI
55891      &               + RVLJKI**2 * XRESJ
55892      &               + RVLKIJ**2 * XRESK
55893      &               + RVLIJK*RVLJKI * XRESIJ
55894      &               + RVLIJK*RVLKIJ * XRESIK
55895      &               + RVLJKI*RVLKIJ * XRESJK
55896                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2.*PARU(1)*RMS(0))**3*32)
55897 C...KINEMATICS CHECK
55898                 IF (XLAM(LKNT).EQ.0D0) THEN
55899                   LKNT=LKNT-1
55900                 ENDIF
55901               ENDIF
55902   190       CONTINUE
55903           ENDIF
55904         ENDIF
55905       ENDIF
55906  
55907       RETURN
55908       END
55909  
55910 C*********************************************************************
55911  
55912 C...PYRVGL
55913 C...Calculates R-violating gluino decay widths.
55914 C...See BV part of PYRVCH for comments about the way the BV decay width
55915 C...is calculated. Same comments apply here.
55916 C...P. Z. Skands
55917  
55918       SUBROUTINE PYRVGL(KFIN,XLAM,IDLAM,LKNT)
55919  
55920 C...Double precision and integer declarations.
55921       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55922       IMPLICIT INTEGER(I-N)
55923 C...Parameter statement to help give large particle numbers.
55924       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
55925      &KEXCIT=4000000,KDIMEN=5000000)
55926 C...Commonblocks.
55927       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55928       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55929       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
55930       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
55931      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
55932       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
55933 C...Local variables.
55934       DOUBLE PRECISION XLAM(0:400)
55935       INTEGER IDLAM(400,3), PYCOMP
55936 C...Information from main routine to PYRVGW
55937       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
55938      &     ,DCMASS,KFR(3)
55939 C...Auxiliary variables needed for BV (RV Gauge STOre)
55940       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
55941      &     ,RVLJKI,RVLJIK
55942 C...Running quark masses
55943       DOUBLE PRECISION RMQ(6)
55944 C...Decay product masses on/off
55945       LOGICAL DCMASS
55946       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
55947      &     /RVGSTO/
55948  
55949 C...IF LQD OR UDD TYPE R-VIOLATION ON.
55950       IF (IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
55951         KFSM=KFIN-KSUSY1
55952  
55953 C... AB(x,y,z):
55954 C       x=1-2  : Select A or B coupling     (1:A ; 2:B)
55955 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
55956 C                                    11-16:e,nu_e,mu,... not used here)
55957 C       z=1-2  : Mass eigenstate number
55958         DO 100 I = 1,6
55959 C...A Couplings
55960           AB(1,I,1) = SFMIX(I,2)
55961           AB(1,I,2) = SFMIX(I,4)
55962 C...B Couplings
55963           AB(2,I,1) = -SFMIX(I,1)
55964           AB(2,I,2) = -SFMIX(I,3)
55965   100   CONTINUE
55966         GSTR2 = 4D0*PARU(1) * PYALPS(PMAS(PYCOMP(KFIN),1)**2)
55967 C...LQD DECAYS.
55968         IF (IMSS(52).GE.1) THEN
55969 C...STEP IN I,J,K USING SINGLE COUNTER
55970           DO 120 ISC=0,26
55971 C * GLUINO -> NUBAR_I + DBAR_J + D_K.
55972             LKNT          = LKNT+1
55973             IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
55974             IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55975             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55976             XLAM(LKNT)=0D0
55977 C...Set coupling, and decay product masses on/off
55978             RVLAMC=RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55979      &           * 5D-1 * GSTR2
55980             DCMASS        = .FALSE.
55981             IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
55982 C...Resonance KF codes (1=I,2=J,3=K)
55983             KFR(1)        = 0
55984             KFR(2)        = -IDLAM(LKNT,2)
55985             KFR(3)        = -IDLAM(LKNT,3)
55986 C...Calculate width.
55987             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55988      &           ,XLAM(LKNT))
55989 C...Normalize
55990             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55991 C...Charge conjugate mode.
55992   110       LKNT          = LKNT+1
55993             IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
55994             IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
55995             IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
55996             XLAM(LKNT)    = XLAM(LKNT-1)
55997 C...KINEMATICS CHECK
55998             IF (XLAM(LKNT).EQ.0D0) THEN
55999               LKNT=LKNT-2
56000             ENDIF
56001  
56002 C * GLUINO -> LEPTON+_I + UBAR_J + D_K
56003             LKNT = LKNT+1
56004             IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
56005             IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
56006             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
56007             XLAM(LKNT)=0D0
56008 C...Set coupling, and decay product masses on/off
56009             RVLAMC = RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
56010      &           **2* 5D-1 * GSTR2
56011             DCMASS        = .FALSE.
56012             IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
56013      &           .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
56014 C...Resonance KF codes (1=I,2=J,3=K)
56015             KFR(1)        = 0
56016             KFR(2)        = -IDLAM(LKNT,2)
56017             KFR(3)        = -IDLAM(LKNT,3)
56018 C...Calculate width.
56019             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56020      &           ,XLAM(LKNT))
56021             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
56022 C...Charge conjugate mode.
56023             LKNT=LKNT+1
56024             IDLAM(LKNT,1) = -IDLAM(LKNT-1,1)
56025             IDLAM(LKNT,2) = -IDLAM(LKNT-1,2)
56026             IDLAM(LKNT,3) = -IDLAM(LKNT-1,3)
56027             XLAM(LKNT)    =  XLAM(LKNT-1)
56028 C...KINEMATICS CHECK
56029             IF (XLAM(LKNT).EQ.0D0) THEN
56030               LKNT=LKNT-2
56031             ENDIF
56032  
56033   120     CONTINUE
56034         ENDIF
56035  
56036 C...UDD DECAYS.
56037         IF (IMSS(53).GE.1) THEN
56038 C...STEP IN I,J,K USING SINGLE COUNTER
56039           DO 130 ISC=0,26
56040 C * GLUINO -> UBAR_I + DBAR_J + DBAR_K.
56041             IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
56042               LKNT          = LKNT+1
56043               IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
56044               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
56045               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
56046               XLAM(LKNT)=0D0
56047 C...Set coupling, and decay product masses on/off. A factor of 2 for
56048 C...(N_C-1) has been used to cancel a factor 0.5.
56049               RVLAMC=RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
56050      &             **2 * GSTR2
56051               DCMASS        = .FALSE.
56052               IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
56053      &             .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
56054 C...Resonance KF codes (1=I,2=J,3=K)
56055               KFR(1)        = IDLAM(LKNT,1)
56056               KFR(2)        = 0
56057               KFR(3)        = 0
56058 C...Calculate width.
56059               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56060      &             ,XRESI)
56061 C...Resonance KF codes (1=I,2=J,3=K)
56062               KFR(1)        = 0
56063               KFR(2)        = IDLAM(LKNT,2)
56064               KFR(3)        = 0
56065 C...Calculate width.
56066               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56067      &             ,XRESJ)
56068 C...Resonance KF codes (1=I,2=J,3=K)
56069               KFR(1)        = 0
56070               KFR(2)        = 0
56071               KFR(3)        = IDLAM(LKNT,3)
56072 C...Calculate width.
56073               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56074      &             ,XRESK)
56075 C...Resonance KF codes (1=I,2=J,3=K)
56076               KFR(1)        = IDLAM(LKNT,1)
56077               KFR(2)        = IDLAM(LKNT,2)
56078               KFR(3)        = 0
56079 C...Calculate width.
56080               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56081      &             ,XRESIJ)
56082 C...Calculate interference function. (Factor -1/2 to make up for factor
56083 C...-2 in PYRVGW.
56084               IF (ABS((XRESI+XRESJ)/XRESIJ-1D0).GT.1D-4) THEN
56085                 XRESIJ = 5D-1 * (XRESI+XRESJ-XRESIJ)
56086               ELSE
56087                 XRESIJ = 0D0
56088               ENDIF
56089 C...Resonance KF codes (1=I,2=J,3=K)
56090               KFR(1)        = 0
56091               KFR(2)        = IDLAM(LKNT,2)
56092               KFR(3)        = IDLAM(LKNT,3)
56093 C...Calculate width.
56094               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56095      &             ,XRESJK)
56096               IF (ABS((XRESJ+XRESK)/XRESJK-1).GT.1D-4) THEN
56097                 XRESJK = 5D-1 * (XRESJ+XRESK-XRESJK)
56098               ELSE
56099                 XRESJK = 0D0
56100               ENDIF
56101 C...Resonance KF codes (1=I,2=J,3=K)
56102               KFR(1)        = IDLAM(LKNT,1)
56103               KFR(2)        = 0
56104               KFR(3)        = IDLAM(LKNT,3)
56105 C...Calculate width.
56106               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56107      &             ,XRESIK)
56108               IF (ABS((XRESI+XRESK)/XRESIK-1).GT.1D-4) THEN
56109                 XRESIK = 5D-1 * (XRESI+XRESK-XRESIK)
56110               ELSE
56111                 XRESIK = 0D0
56112               ENDIF
56113 C...Calculate total width (factor 1/2 from 1/(N_C-1))
56114               XLAM(LKNT) = XRESI + XRESJ + XRESK
56115      &             + 5D-1 * (XRESIJ + XRESIK + XRESJK)
56116 C...Normalize
56117               XLAM(LKNT) = XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
56118 C...Charge conjugate mode.
56119               LKNT          = LKNT+1
56120               IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
56121               IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
56122               IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
56123               XLAM(LKNT)    = XLAM(LKNT-1)
56124 C...KINEMATICS CHECK
56125               IF (XLAM(LKNT).EQ.0D0) THEN
56126                 LKNT=LKNT-2
56127               ENDIF
56128             ENDIF
56129   130     CONTINUE
56130         ENDIF
56131       ENDIF
56132       RETURN
56133       END
56134  
56135 C*********************************************************************
56136  
56137 C...PYRVSB
56138 C...Auxiliary function to PYRVSF for calculating R-Violating
56139 C...sfermion widths. Though the decay products are most often treated
56140 C...as massless in the calculation, the kinematical boundary of phase
56141 C...space is tested using the true masses.
56142 C...MODE = 1: All decay products massive
56143 C...MODE = 2: Decay product 1 massless
56144 C...MODE = 3: Decay product 2 massless
56145 C...MODE = 4: All decay products  massless
56146  
56147       FUNCTION PYRVSB(KFIN,ID1,ID2,RM2,MODE)
56148  
56149       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
56150       IMPLICIT INTEGER (I-N)
56151       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56152       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56153       SAVE /PYDAT1/,/PYDAT2/
56154       DOUBLE PRECISION SM(3)
56155       INTEGER PYCOMP, KC(3)
56156       KC(1)=PYCOMP(KFIN)
56157       KC(2)=PYCOMP(ID1)
56158       KC(3)=PYCOMP(ID2)
56159       SM(1)=PMAS(KC(1),1)**2
56160       SM(2)=PMAS(KC(2),1)**2
56161       SM(3)=PMAS(KC(3),1)**2
56162 C...Kinematics check
56163       IF ((SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2).LE.0D0) THEN
56164         PYRVSB=0D0
56165         RETURN
56166       ENDIF
56167 C...CM momenta squared
56168       IF (MODE.EQ.1) THEN
56169         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2)
56170      &       * (SM(1)-(PMAS(KC(2),1)-PMAS(KC(3),1))**2)
56171       ELSE IF (MODE.EQ.2) THEN
56172         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(3),1))**2)**2
56173       ELSE IF (MODE.EQ.3) THEN
56174         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1))**2)**2
56175       ELSE
56176         P2CM=SM(1)/4.
56177       ENDIF
56178 C...Calculate Width
56179       PYRVSB=RM2*SQRT(MAX(0D0,P2CM))/(8*PARU(1)*SM(1))
56180       RETURN
56181       END
56182  
56183 C*********************************************************************
56184  
56185 C...PYRVGW
56186 C...Generalized Matrix Element for R-Violating 3-body widths.
56187 C...P. Z. Skands
56188       SUBROUTINE PYRVGW(KFIN,ID1,ID2,ID3,XLAM)
56189  
56190       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
56191       IMPLICIT INTEGER (I-N)
56192       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
56193      &KEXCIT=4000000,KDIMEN=5000000)
56194       PARAMETER (EPS=1D-4)
56195       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56196       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56197      &     ,DCMASS,KFR(3)
56198       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
56199      & SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
56200       DOUBLE PRECISION XLIM(3,3)
56201       INTEGER KC(0:3), PYCOMP
56202       LOGICAL DCMASS, DCHECK(6)
56203       SAVE /PYDAT2/,/PYRVNV/,/PYSSMT/
56204  
56205       XLAM   = 0D0
56206  
56207       KC(0)  = PYCOMP(KFIN)
56208       KC(1)  = PYCOMP(ID1)
56209       KC(2)  = PYCOMP(ID2)
56210       KC(3)  = PYCOMP(ID3)
56211       RMS(0) = PMAS(KC(0),1)
56212       RMS(1) = PYMRUN(ID1,PMAS(KC(1),1)**2)
56213       RMS(2) = PYMRUN(ID2,PMAS(KC(2),1)**2)
56214       RMS(3) = PYMRUN(ID3,PMAS(KC(3),1)**2)
56215 C...INITIALIZE OUTER INTEGRATION LIMITS AND KINEMATICS CHECK
56216       XLIM(1,1)=(RMS(1)+RMS(2))**2
56217       XLIM(1,2)=(RMS(0)-RMS(3))**2
56218       XLIM(1,3)=XLIM(1,2)-XLIM(1,1)
56219       XLIM(2,1)=(RMS(2)+RMS(3))**2
56220       XLIM(2,2)=(RMS(0)-RMS(1))**2
56221       XLIM(2,3)=XLIM(2,2)-XLIM(2,1)
56222       XLIM(3,1)=(RMS(1)+RMS(3))**2
56223       XLIM(3,2)=(RMS(0)-RMS(2))**2
56224       XLIM(3,3)=XLIM(3,2)-XLIM(3,1)
56225 C...Check Phase Space
56226       IF (XLIM(1,3).LT.0D0.OR.XLIM(2,3).LT.0D0.OR.XLIM(3,3).LT.0D0) THEN
56227         RETURN
56228       ENDIF
56229  
56230 C...INITIALIZE RESONANCE INFORMATION
56231       DO 110 JRES = 1,3
56232         DO 100 IMASS = 1,2
56233           IRES = 2*(JRES-1)+IMASS
56234           INTRES(IRES,1) = 0
56235           DCHECK(IRES)   =.FALSE.
56236 C...NO RIGHT-HANDED NEUTRINOS
56237           IF (((IMASS.EQ.2).AND.((IABS(KFR(JRES)).EQ.12).OR
56238      &         .(IABS(KFR(JRES)).EQ.14).OR.(IABS(KFR(JRES)).EQ.16))).OR
56239      &         .KFR(JRES).EQ.0) GOTO 100
56240           RES(IRES,1) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),1)
56241           RES(IRES,2) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),2)
56242           INTRES(IRES,1) = IABS(KFR(JRES))
56243           INTRES(IRES,2) = IMASS
56244           IF (KFR(JRES).LT.0) INTRES(IRES,3) = 1
56245           IF (KFR(JRES).GT.0) INTRES(IRES,3) = 0
56246   100   CONTINUE
56247   110 CONTINUE
56248  
56249 C...SUM OVER DIAGRAMS AND INTEGRATE OVER PHASE SPACE
56250  
56251 C...RESONANCE CONTRIBUTIONS
56252 C...(Only sum contributions where the resonance is off shell).
56253 C...Store whether diagram on/off in DCHECK.
56254 C...LOOP OVER MASS STATES
56255       DO 120 J=1,2
56256         IDR=J
56257         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
56258         IF ((RMS(0).LT.(RMS(1)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(2)
56259      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
56260           DCHECK(IDR) =.TRUE.
56261           XLAM = XLAM + TMIX * PYRVI1(2,3,1)
56262         ENDIF
56263  
56264         IDR=J+2
56265         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
56266         IF ((RMS(0).LT.(RMS(2)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
56267      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
56268           DCHECK(IDR) =.TRUE.
56269           XLAM = XLAM + TMIX * PYRVI1(1,3,2)
56270         ENDIF
56271  
56272         IDR=J+4
56273         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
56274         IF ((RMS(0).LT.(RMS(3)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
56275      &       +RMS(2)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
56276           DCHECK(IDR) =.TRUE.
56277           XLAM = XLAM + TMIX * PYRVI1(1,2,3)
56278         ENDIF
56279   120 CONTINUE
56280 C... L-R INTERFERENCES
56281 C... (Only add contributions where both contributing diagrams
56282 C... are non-resonant).
56283       IDR=1
56284       IF (DCHECK(1).AND.DCHECK(2)) THEN
56285 C...Bug corrected 11/12 2001. Skands.
56286         XLAM  = XLAM + 2D0 * PYRVI2(2,3,1)
56287      &     * SFMIX(INTRES(1,1),2+INTRES(1,3)-1)
56288      &     * SFMIX(INTRES(2,1),4+INTRES(2,3)-1)
56289       ENDIF
56290  
56291       IDR=3
56292       IF (DCHECK(3).AND.DCHECK(4)) THEN
56293         XLAM  = XLAM + 2D0 * PYRVI2(1,3,2)
56294      &     * SFMIX(INTRES(3,1),2+INTRES(3,3)-1)
56295      &     * SFMIX(INTRES(4,1),4+INTRES(4,3)-1)
56296       ENDIF
56297  
56298       IDR=5
56299       IF (DCHECK(5).AND.DCHECK(6)) THEN
56300         XLAM  = XLAM + 2D0 * PYRVI2(1,2,3)
56301      &     * SFMIX(INTRES(5,1),2+INTRES(5,3)-1)
56302      &     * SFMIX(INTRES(6,1),4+INTRES(6,3)-1)
56303       ENDIF
56304 C... TRUE INTERFERENCES
56305 C... (Only add contributions where both contributing diagrams
56306 C... are non-resonant).
56307       PREF=-2D0
56308       IF ((KFIN-KSUSY1).EQ.24.OR.(KFIN-KSUSY1).EQ.37) PREF=2D0
56309       DO 140 IKR1 = 1,2
56310         DO 130 IKR2 = 1,2
56311           IDR  = IKR1+2
56312           IDR2 = IKR2
56313           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
56314             XLAM = XLAM + PREF*PYRVI3(1,3,2) *
56315      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
56316      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
56317           ENDIF
56318  
56319           IDR  = IKR1+4
56320           IDR2 = IKR2
56321           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
56322             XLAM = XLAM + PREF*PYRVI3(1,2,3) *
56323      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
56324      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
56325           ENDIF
56326  
56327           IDR  = IKR1+4
56328           IDR2 = IKR2+2
56329           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
56330             XLAM = XLAM + PREF*PYRVI3(2,1,3) *
56331      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
56332      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
56333           ENDIF
56334   130   CONTINUE
56335   140 CONTINUE
56336  
56337       RETURN
56338       END
56339  
56340 C*********************************************************************
56341  
56342 C...PYRVI1
56343 C...Function to integrate resonance contributions
56344  
56345       FUNCTION PYRVI1(ID1,ID2,ID3)
56346  
56347       IMPLICIT NONE
56348       DOUBLE PRECISION LO,HI,PYRVI1,PYRVG1,PYGAUS
56349       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
56350       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
56351       LOGICAL MFLAG,DCMASS
56352       EXTERNAL PYRVG1,PYGAUS
56353       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56354      &     ,DCMASS,KFR(3)
56355       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56356       SAVE/PYRVNV/,/PYRVPM/
56357 C...Initialize mass and width information
56358       PYRVI1 = 0D0
56359       RM(0)  = RMS(0)
56360       RM(1)  = RMS(ID1)
56361       RM(2)  = RMS(ID2)
56362       RM(3)  = RMS(ID3)
56363       RESM(1)= RES(IDR,1)
56364       RESW(1)= RES(IDR,2)
56365 C...A->B and B->A for antisparticles
56366       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56367       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56368 C...Integration boundaries and mass flag
56369       LO     = (RM(1)+RM(2))**2
56370       HI     = (RM(0)-RM(3))**2
56371       MFLAG  = DCMASS
56372       PYRVI1 = PYGAUS(PYRVG1,LO,HI,1D-3)
56373       RETURN
56374       END
56375  
56376 C*********************************************************************
56377  
56378 C...PYRVI2
56379 C...Function to integrate L-R interference contributions
56380  
56381       FUNCTION PYRVI2(ID1,ID2,ID3)
56382  
56383       IMPLICIT NONE
56384       DOUBLE PRECISION LO,HI,PYRVI2, PYRVG2, PYGAUS
56385       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
56386       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
56387       LOGICAL MFLAG,DCMASS
56388       EXTERNAL PYRVG2,PYGAUS
56389       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56390      &     ,DCMASS,KFR(3)
56391       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56392       SAVE/PYRVNV/,/PYRVPM/
56393 C...Initialize mass and width information
56394       PYRVI2 = 0D0
56395       RM(0)  = RMS(0)
56396       RM(1)  = RMS(ID1)
56397       RM(2)  = RMS(ID2)
56398       RM(3)  = RMS(ID3)
56399       RESM(1)= RES(IDR,1)
56400       RESW(1)= RES(IDR,2)
56401       RESM(2)= RES(IDR+1,1)
56402       RESW(2)= RES(IDR+1,2)
56403 C...A->B and B->A for antisparticles
56404       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56405       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56406       A(2)   = AB(1+INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
56407       B(2)   = AB(2-INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
56408 C...Boundaries and mass flag
56409       LO     = (RM(1)+RM(2))**2
56410       HI     = (RM(0)-RM(3))**2
56411       MFLAG  = DCMASS
56412       PYRVI2 = PYGAUS(PYRVG2,LO,HI,1D-3)
56413       RETURN
56414       END
56415  
56416 C*********************************************************************
56417  
56418 C...PYRVI3
56419 C...Function to integrate true interference contributions
56420  
56421       FUNCTION PYRVI3(ID1,ID2,ID3)
56422  
56423       IMPLICIT NONE
56424       DOUBLE PRECISION LO,HI,PYRVI3, PYRVG3, PYGAUS
56425       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
56426       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
56427       LOGICAL MFLAG,DCMASS
56428       EXTERNAL PYRVG3,PYGAUS
56429       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56430      &     ,DCMASS,KFR(3)
56431       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56432       SAVE/PYRVNV/,/PYRVPM/
56433 C...Initialize mass and width information
56434       PYRVI3 = 0D0
56435       RM(0)  = RMS(0)
56436       RM(1)  = RMS(ID1)
56437       RM(2)  = RMS(ID2)
56438       RM(3)  = RMS(ID3)
56439       RESM(1)= RES(IDR,1)
56440       RESW(1)= RES(IDR,2)
56441       RESM(2)= RES(IDR2,1)
56442       RESW(2)= RES(IDR2,2)
56443 C...A -> B and B -> A for antisparticles
56444       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56445       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56446       A(2)   = AB(1+INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
56447       B(2)   = AB(2-INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
56448 C...Boundaries and mass flag
56449       LO     = (RM(1)+RM(2))**2
56450       HI     = (RM(0)-RM(3))**2
56451       MFLAG  = DCMASS
56452       PYRVI3 = PYGAUS(PYRVG3,LO,HI,1D-3)
56453       RETURN
56454       END
56455  
56456 C*********************************************************************
56457  
56458 C...PYRVG1
56459 C...Integrand for resonance contributions
56460  
56461       FUNCTION PYRVG1(X)
56462  
56463       IMPLICIT NONE
56464       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56465       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY,PYRVR
56466       DOUBLE PRECISION RVR,PYRVG1,E2,E3,C1,SR1,SR2,A1,A2
56467       LOGICAL MFLAG
56468       SAVE/PYRVPM/
56469       RVR    = PYRVR(X,RESM(1),RESW(1))
56470       C1     = 2D0*SQRT(MAX(0D0,X))
56471       IF (.NOT.MFLAG) THEN
56472         E2     = X/C1
56473         E3     = (RM(0)**2-X)/C1
56474         DELTAY = 4D0*E2*E3
56475         PYRVG1 = DELTAY*RVR*X*(A(1)**2+B(1)**2)*(RM(0)**2-X)
56476       ELSE
56477         E2     = (X-RM(1)**2+RM(2)**2)/C1
56478         E3     = (RM(0)**2-X-RM(3)**2)/C1
56479         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
56480         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
56481         DELTAY = 4D0*SR1*SR2
56482         A1     = 4.*A(1)*B(1)*RM(3)*RM(0)
56483         A2     = (A(1)**2+B(1)**2)*(RM(0)**2+RM(3)**2-X)
56484         PYRVG1 = DELTAY*RVR*(X-RM(1)**2-RM(2)**2)*(A1+A2)
56485       ENDIF
56486       RETURN
56487       END
56488  
56489 C*********************************************************************
56490  
56491 C...PYRVG2
56492 C...Integrand for L-R interference contributions
56493  
56494       FUNCTION PYRVG2(X)
56495  
56496       IMPLICIT NONE
56497       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56498       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY, PYRVS
56499       DOUBLE PRECISION RVS,PYRVG2,E2,E3,C1,SR1,SR2
56500       LOGICAL MFLAG
56501       SAVE/PYRVPM/
56502       C1     = 2D0*SQRT(MAX(0D0,X))
56503       RVS    = PYRVS(X,X,RESM(1),RESW(1),RESM(2),RESW(2))
56504       IF (.NOT.MFLAG) THEN
56505         E2     = X/C1
56506         E3     = (RM(0)**2-X)/C1
56507         DELTAY = 4D0*E2*E3
56508         PYRVG2 = DELTAY*RVS*X*(A(1)*A(2)+B(1)*B(2))*(RM(0)**2-X)
56509       ELSE
56510         E2     = (X-RM(1)**2+RM(2)**2)/C1
56511         E3     = (RM(0)**2-X-RM(3)**2)/C1
56512         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
56513         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
56514         DELTAY = 4D0*SR1*SR2
56515         PYRVG2 = DELTAY*RVS*(X-RM(1)**2-RM(2)**2)*((A(1)*A(2)
56516      &       + B(1)*B(2))*(RM(0)**2+RM(3)**2-X)
56517      &       + 2D0*(A(1)*B(2)+A(2)*B(1))*RM(3)*RM(0))
56518       ENDIF
56519       RETURN
56520       END
56521  
56522 C*********************************************************************
56523  
56524 C...PYRVG3
56525 C...Function to do Y integration over true interference contributions
56526  
56527       FUNCTION PYRVG3(X)
56528  
56529       IMPLICIT NONE
56530       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56531 C...Second Dalitz variable for PYRVG4
56532       COMMON/PYG2DX/X1
56533       DOUBLE PRECISION RM, A, B, RESM, RESW, X, X1
56534       DOUBLE PRECISION E2, E3, C1, SQ1, SR1, SR2, YMIN, YMAX
56535       DOUBLE PRECISION PYRVG3, PYRVG4, PYGAU2
56536       LOGICAL MFLAG
56537       EXTERNAL PYGAU2,PYRVG4
56538       SAVE/PYRVPM/,/PYG2DX/
56539       PYRVG3=0D0
56540       C1=2D0*SQRT(MAX(1D-9,X))
56541       X1=X
56542       IF (.NOT.MFLAG) THEN
56543         E2    = X/C1
56544         E3    = (RM(0)**2-X)/C1
56545         YMIN  = 0D0
56546         YMAX  = 4D0*E2*E3
56547       ELSE
56548         E2    = (X-RM(1)**2+RM(2)**2)/C1
56549         E3    = (RM(0)**2-X-RM(3)**2)/C1
56550         SQ1   = (E2+E3)**2
56551         SR1   = SQRT(MAX(0D0,E2**2-RM(2)**2))
56552         SR2   = SQRT(MAX(0D0,E3**2-RM(3)**2))
56553         YMIN  = SQ1-(SR1+SR2)**2
56554         YMAX  = SQ1-(SR1-SR2)**2
56555       ENDIF
56556       PYRVG3 = PYGAU2(PYRVG4,YMIN,YMAX,1D-3)
56557       RETURN
56558       END
56559  
56560 C*********************************************************************
56561  
56562 C...PYRVG4
56563 C...Integrand for true intereference contributions
56564  
56565       FUNCTION PYRVG4(Y)
56566  
56567       IMPLICIT NONE
56568       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56569       COMMON/PYG2DX/X
56570       DOUBLE PRECISION X, Y, PYRVG4, RM, A, B, RESM, RESW, RVS, PYRVS
56571       LOGICAL MFLAG
56572       SAVE /PYRVPM/,/PYG2DX/
56573       PYRVG4=0D0
56574       RVS=PYRVS(X,Y,RESM(1),RESW(1),RESM(2),RESW(2))
56575       IF (.NOT.MFLAG) THEN
56576         PYRVG4 = RVS*B(1)*B(2)*X*Y
56577       ELSE
56578         PYRVG4 = RVS*(RM(1)*RM(3)*A(1)*A(2)*(X+Y-RM(1)**2-RM(3)**2)
56579      &       + RM(1)*RM(0)*B(1)*A(2)*(Y-RM(2)**2-RM(3)**2)
56580      &       + RM(3)*RM(0)*A(1)*B(2)*(X-RM(1)**2-RM(2)**2)
56581      &       + B(1)*B(2)*(X*Y-(RM(1)*RM(3))**2-(RM(0)*RM(2))**2))
56582       ENDIF
56583       RETURN
56584       END
56585  
56586 C*********************************************************************
56587  
56588 C...PYRVR
56589 C...Breit-Wigner for resonance contributions
56590  
56591       FUNCTION PYRVR(Mab2,RM,RW)
56592  
56593       IMPLICIT NONE
56594       DOUBLE PRECISION Mab2,RM,RW,PYRVR
56595       PYRVR = 1D0/((Mab2-RM**2)**2+RM**2*RW**2)
56596       RETURN
56597       END
56598  
56599 C*********************************************************************
56600  
56601 C...PYRVS
56602 C...Interference function
56603  
56604       FUNCTION PYRVS(X,Y,M1,W1,M2,W2)
56605  
56606       IMPLICIT NONE
56607       DOUBLE PRECISION X, Y, PYRVS, PYRVR, M1, M2, W1, W2
56608       PYRVS = PYRVR(X,M1,W1)*PYRVR(Y,M2,W2)*((X-M1**2)*(Y-M2**2)
56609      &     +W1*W2*M1*M2)
56610       RETURN
56611       END
56612  
56613 C*********************************************************************
56614  
56615 C...PY1ENT
56616 C...Stores one parton/particle in commonblock PYJETS.
56617  
56618       SUBROUTINE PY1ENT(IP,KF,PE,THE,PHI)
56619  
56620 C...Double precision and integer declarations.
56621       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56622       IMPLICIT INTEGER(I-N)
56623       INTEGER PYK,PYCHGE,PYCOMP
56624 C...Commonblocks.
56625       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56626       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56627       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56628       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56629  
56630 C...Standard checks.
56631       MSTU(28)=0
56632       IF(MSTU(12).NE.12345) CALL PYLIST(0)
56633       IPA=MAX(1,IABS(IP))
56634       IF(IPA.GT.MSTU(4)) CALL PYERRM(21,
56635      &'(PY1ENT:) writing outside PYJETS memory')
56636       KC=PYCOMP(KF)
56637       IF(KC.EQ.0) CALL PYERRM(12,'(PY1ENT:) unknown flavour code')
56638  
56639 C...Find mass. Reset K, P and V vectors.
56640       PM=0D0
56641       IF(MSTU(10).EQ.1) PM=P(IPA,5)
56642       IF(MSTU(10).GE.2) PM=PYMASS(KF)
56643       DO 100 J=1,5
56644         K(IPA,J)=0
56645         P(IPA,J)=0D0
56646         V(IPA,J)=0D0
56647   100 CONTINUE
56648  
56649 C...Store parton/particle in K and P vectors.
56650       K(IPA,1)=1
56651       IF(IP.LT.0) K(IPA,1)=2
56652       K(IPA,2)=KF
56653       P(IPA,5)=PM
56654       P(IPA,4)=MAX(PE,PM)
56655       PA=SQRT(P(IPA,4)**2-P(IPA,5)**2)
56656       P(IPA,1)=PA*SIN(THE)*COS(PHI)
56657       P(IPA,2)=PA*SIN(THE)*SIN(PHI)
56658       P(IPA,3)=PA*COS(THE)
56659  
56660 C...Set N. Optionally fragment/decay.
56661       N=IPA
56662       IF(IP.EQ.0) CALL PYEXEC
56663  
56664       RETURN
56665       END
56666  
56667 C*********************************************************************
56668  
56669 C...PY2ENT
56670 C...Stores two partons/particles in their CM frame,
56671 C...with the first along the +z axis.
56672  
56673       SUBROUTINE PY2ENT(IP,KF1,KF2,PECM)
56674  
56675 C...Double precision and integer declarations.
56676       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56677       IMPLICIT INTEGER(I-N)
56678       INTEGER PYK,PYCHGE,PYCOMP
56679 C...Commonblocks.
56680       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56681       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56682       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56683       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56684  
56685 C...Standard checks.
56686       MSTU(28)=0
56687       IF(MSTU(12).NE.12345) CALL PYLIST(0)
56688       IPA=MAX(1,IABS(IP))
56689       IF(IPA.GT.MSTU(4)-1) CALL PYERRM(21,
56690      &'(PY2ENT:) writing outside PYJETS memory')
56691       KC1=PYCOMP(KF1)
56692       KC2=PYCOMP(KF2)
56693       IF(KC1.EQ.0.OR.KC2.EQ.0) CALL PYERRM(12,
56694      &'(PY2ENT:) unknown flavour code')
56695  
56696 C...Find masses. Reset K, P and V vectors.
56697       PM1=0D0
56698       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
56699       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
56700       PM2=0D0
56701       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
56702       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
56703       DO 110 I=IPA,IPA+1
56704         DO 100 J=1,5
56705           K(I,J)=0
56706           P(I,J)=0D0
56707           V(I,J)=0D0
56708   100   CONTINUE
56709   110 CONTINUE
56710  
56711 C...Check flavours.
56712       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
56713       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
56714       IF(MSTU(19).EQ.1) THEN
56715         MSTU(19)=0
56716       ELSE
56717         IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL PYERRM(2,
56718      &  '(PY2ENT:) unphysical flavour combination')
56719       ENDIF
56720       K(IPA,2)=KF1
56721       K(IPA+1,2)=KF2
56722  
56723 C...Store partons/particles in K vectors for normal case.
56724       IF(IP.GE.0) THEN
56725         K(IPA,1)=1
56726         IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2
56727         K(IPA+1,1)=1
56728  
56729 C...Store partons in K vectors for parton shower evolution.
56730       ELSE
56731         K(IPA,1)=3
56732         K(IPA+1,1)=3
56733         K(IPA,4)=MSTU(5)*(IPA+1)
56734         K(IPA,5)=K(IPA,4)
56735         K(IPA+1,4)=MSTU(5)*IPA
56736         K(IPA+1,5)=K(IPA+1,4)
56737       ENDIF
56738  
56739 C...Check kinematics and store partons/particles in P vectors.
56740       IF(PECM.LE.PM1+PM2) CALL PYERRM(13,
56741      &'(PY2ENT:) energy smaller than sum of masses')
56742       PA=SQRT(MAX(0D0,(PECM**2-PM1**2-PM2**2)**2-(2D0*PM1*PM2)**2))/
56743      &(2D0*PECM)
56744       P(IPA,3)=PA
56745       P(IPA,4)=SQRT(PM1**2+PA**2)
56746       P(IPA,5)=PM1
56747       P(IPA+1,3)=-PA
56748       P(IPA+1,4)=SQRT(PM2**2+PA**2)
56749       P(IPA+1,5)=PM2
56750  
56751 C...Set N. Optionally fragment/decay.
56752       N=IPA+1
56753       IF(IP.EQ.0) CALL PYEXEC
56754  
56755       RETURN
56756       END
56757  
56758 C*********************************************************************
56759  
56760 C...PY3ENT
56761 C...Stores three partons or particles in their CM frame,
56762 C...with the first along the +z axis and the third in the (x,z)
56763 C...plane with x > 0.
56764  
56765       SUBROUTINE PY3ENT(IP,KF1,KF2,KF3,PECM,X1,X3)
56766  
56767 C...Double precision and integer declarations.
56768       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56769       IMPLICIT INTEGER(I-N)
56770       INTEGER PYK,PYCHGE,PYCOMP
56771 C...Commonblocks.
56772       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56773       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56774       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56775       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56776  
56777 C...Standard checks.
56778       MSTU(28)=0
56779       IF(MSTU(12).NE.12345) CALL PYLIST(0)
56780       IPA=MAX(1,IABS(IP))
56781       IF(IPA.GT.MSTU(4)-2) CALL PYERRM(21,
56782      &'(PY3ENT:) writing outside PYJETS memory')
56783       KC1=PYCOMP(KF1)
56784       KC2=PYCOMP(KF2)
56785       KC3=PYCOMP(KF3)
56786       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL PYERRM(12,
56787      &'(PY3ENT:) unknown flavour code')
56788  
56789 C...Find masses. Reset K, P and V vectors.
56790       PM1=0D0
56791       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
56792       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
56793       PM2=0D0
56794       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
56795       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
56796       PM3=0D0
56797       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
56798       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
56799       DO 110 I=IPA,IPA+2
56800         DO 100 J=1,5
56801           K(I,J)=0
56802           P(I,J)=0D0
56803           V(I,J)=0D0
56804   100   CONTINUE
56805   110 CONTINUE
56806  
56807 C...Check flavours.
56808       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
56809       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
56810       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
56811       IF(MSTU(19).EQ.1) THEN
56812         MSTU(19)=0
56813       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN
56814       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR.
56815      &  KQ1+KQ3.EQ.4)) THEN
56816       ELSE
56817         CALL PYERRM(2,'(PY3ENT:) unphysical flavour combination')
56818       ENDIF
56819       K(IPA,2)=KF1
56820       K(IPA+1,2)=KF2
56821       K(IPA+2,2)=KF3
56822  
56823 C...Store partons/particles in K vectors for normal case.
56824       IF(IP.GE.0) THEN
56825         K(IPA,1)=1
56826         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2
56827         K(IPA+1,1)=1
56828         IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2
56829         K(IPA+2,1)=1
56830  
56831 C...Store partons in K vectors for parton shower evolution.
56832       ELSE
56833         K(IPA,1)=3
56834         K(IPA+1,1)=3
56835         K(IPA+2,1)=3
56836         KCS=4
56837         IF(KQ1.EQ.-1) KCS=5
56838         K(IPA,KCS)=MSTU(5)*(IPA+1)
56839         K(IPA,9-KCS)=MSTU(5)*(IPA+2)
56840         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
56841         K(IPA+1,9-KCS)=MSTU(5)*IPA
56842         K(IPA+2,KCS)=MSTU(5)*IPA
56843         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
56844       ENDIF
56845  
56846 C...Check kinematics.
56847       MKERR=0
56848       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*(2D0-X1-X3)*PECM.LE.PM2.OR.
56849      &0.5D0*X3*PECM.LE.PM3) MKERR=1
56850       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
56851       PA2=SQRT(MAX(1D-10,(0.5D0*(2D0-X1-X3)*PECM)**2-PM2**2))
56852       PA3=SQRT(MAX(1D-10,(0.5D0*X3*PECM)**2-PM3**2))
56853       CTHE2=(PA3**2-PA1**2-PA2**2)/(2D0*PA1*PA2)
56854       CTHE3=(PA2**2-PA1**2-PA3**2)/(2D0*PA1*PA3)
56855       IF(ABS(CTHE2).GE.1.001D0.OR.ABS(CTHE3).GE.1.001D0) MKERR=1
56856       CTHE3=MAX(-1D0,MIN(1D0,CTHE3))
56857       IF(MKERR.NE.0) CALL PYERRM(13,
56858      &'(PY3ENT:) unphysical kinematical variable setup')
56859  
56860 C...Store partons/particles in P vectors.
56861       P(IPA,3)=PA1
56862       P(IPA,4)=SQRT(PA1**2+PM1**2)
56863       P(IPA,5)=PM1
56864       P(IPA+2,1)=PA3*SQRT(1D0-CTHE3**2)
56865       P(IPA+2,3)=PA3*CTHE3
56866       P(IPA+2,4)=SQRT(PA3**2+PM3**2)
56867       P(IPA+2,5)=PM3
56868       P(IPA+1,1)=-P(IPA+2,1)
56869       P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3)
56870       P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2)
56871       P(IPA+1,5)=PM2
56872  
56873 C...Set N. Optionally fragment/decay.
56874       N=IPA+2
56875       IF(IP.EQ.0) CALL PYEXEC
56876  
56877       RETURN
56878       END
56879  
56880 C*********************************************************************
56881  
56882 C...PY4ENT
56883 C...Stores four partons or particles in their CM frame, with
56884 C...the first along the +z axis, the last in the xz plane with x > 0
56885 C...and the second having y < 0 and y > 0 with equal probability.
56886  
56887       SUBROUTINE PY4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14)
56888  
56889 C...Double precision and integer declarations.
56890       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56891       IMPLICIT INTEGER(I-N)
56892       INTEGER PYK,PYCHGE,PYCOMP
56893 C...Commonblocks.
56894       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56895       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56896       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56897       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56898  
56899 C...Standard checks.
56900       MSTU(28)=0
56901       IF(MSTU(12).NE.12345) CALL PYLIST(0)
56902       IPA=MAX(1,IABS(IP))
56903       IF(IPA.GT.MSTU(4)-3) CALL PYERRM(21,
56904      &'(PY4ENT:) writing outside PYJETS momory')
56905       KC1=PYCOMP(KF1)
56906       KC2=PYCOMP(KF2)
56907       KC3=PYCOMP(KF3)
56908       KC4=PYCOMP(KF4)
56909       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL PYERRM(12,
56910      &'(PY4ENT:) unknown flavour code')
56911  
56912 C...Find masses. Reset K, P and V vectors.
56913       PM1=0D0
56914       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
56915       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
56916       PM2=0D0
56917       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
56918       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
56919       PM3=0D0
56920       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
56921       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
56922       PM4=0D0
56923       IF(MSTU(10).EQ.1) PM4=P(IPA+3,5)
56924       IF(MSTU(10).GE.2) PM4=PYMASS(KF4)
56925       DO 110 I=IPA,IPA+3
56926         DO 100 J=1,5
56927           K(I,J)=0
56928           P(I,J)=0D0
56929           V(I,J)=0D0
56930   100   CONTINUE
56931   110 CONTINUE
56932  
56933 C...Check flavours.
56934       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
56935       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
56936       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
56937       KQ4=KCHG(KC4,2)*ISIGN(1,KF4)
56938       IF(MSTU(19).EQ.1) THEN
56939         MSTU(19)=0
56940       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN
56941       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR.
56942      &  KQ1+KQ4.EQ.4)) THEN
56943       ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0D0)
56944      &  THEN
56945       ELSE
56946         CALL PYERRM(2,'(PY4ENT:) unphysical flavour combination')
56947       ENDIF
56948       K(IPA,2)=KF1
56949       K(IPA+1,2)=KF2
56950       K(IPA+2,2)=KF3
56951       K(IPA+3,2)=KF4
56952  
56953 C...Store partons/particles in K vectors for normal case.
56954       IF(IP.GE.0) THEN
56955         K(IPA,1)=1
56956         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2
56957         K(IPA+1,1)=1
56958         IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0))
56959      &  K(IPA+1,1)=2
56960         K(IPA+2,1)=1
56961         IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2
56962         K(IPA+3,1)=1
56963  
56964 C...Store partons for parton shower evolution from q-g-g-qbar or
56965 C...g-g-g-g event.
56966       ELSEIF(KQ1+KQ2.NE.0) THEN
56967         K(IPA,1)=3
56968         K(IPA+1,1)=3
56969         K(IPA+2,1)=3
56970         K(IPA+3,1)=3
56971         KCS=4
56972         IF(KQ1.EQ.-1) KCS=5
56973         K(IPA,KCS)=MSTU(5)*(IPA+1)
56974         K(IPA,9-KCS)=MSTU(5)*(IPA+3)
56975         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
56976         K(IPA+1,9-KCS)=MSTU(5)*IPA
56977         K(IPA+2,KCS)=MSTU(5)*(IPA+3)
56978         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
56979         K(IPA+3,KCS)=MSTU(5)*IPA
56980         K(IPA+3,9-KCS)=MSTU(5)*(IPA+2)
56981  
56982 C...Store partons for parton shower evolution from q-qbar-q-qbar event.
56983       ELSE
56984         K(IPA,1)=3
56985         K(IPA+1,1)=3
56986         K(IPA+2,1)=3
56987         K(IPA+3,1)=3
56988         K(IPA,4)=MSTU(5)*(IPA+1)
56989         K(IPA,5)=K(IPA,4)
56990         K(IPA+1,4)=MSTU(5)*IPA
56991         K(IPA+1,5)=K(IPA+1,4)
56992         K(IPA+2,4)=MSTU(5)*(IPA+3)
56993         K(IPA+2,5)=K(IPA+2,4)
56994         K(IPA+3,4)=MSTU(5)*(IPA+2)
56995         K(IPA+3,5)=K(IPA+3,4)
56996       ENDIF
56997  
56998 C...Check kinematics.
56999       MKERR=0
57000       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*X2*PECM.LE.PM2.OR.
57001      &0.5D0*(2D0-X1-X2-X4)*PECM.LE.PM3.OR.0.5D0*X4*PECM.LE.PM4)
57002      &MKERR=1
57003       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
57004       PA2=SQRT(MAX(1D-10,(0.5D0*X2*PECM)**2-PM2**2))
57005       PA4=SQRT(MAX(1D-10,(0.5D0*X4*PECM)**2-PM4**2))
57006       X24=X1+X2+X4-1D0-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2
57007       CTHE4=(X1*X4-2D0*X14)*PECM**2/(4D0*PA1*PA4)
57008       IF(ABS(CTHE4).GE.1.002D0) MKERR=1
57009       CTHE4=MAX(-1D0,MIN(1D0,CTHE4))
57010       STHE4=SQRT(1D0-CTHE4**2)
57011       CTHE2=(X1*X2-2D0*X12)*PECM**2/(4D0*PA1*PA2)
57012       IF(ABS(CTHE2).GE.1.002D0) MKERR=1
57013       CTHE2=MAX(-1D0,MIN(1D0,CTHE2))
57014       STHE2=SQRT(1D0-CTHE2**2)
57015       CPHI2=((X2*X4-2D0*X24)*PECM**2-4D0*PA2*CTHE2*PA4*CTHE4)/
57016      &MAX(1D-8*PECM**2,4D0*PA2*STHE2*PA4*STHE4)
57017       IF(ABS(CPHI2).GE.1.05D0) MKERR=1
57018       CPHI2=MAX(-1D0,MIN(1D0,CPHI2))
57019       IF(MKERR.EQ.1) CALL PYERRM(13,
57020      &'(PY4ENT:) unphysical kinematical variable setup')
57021  
57022 C...Store partons/particles in P vectors.
57023       P(IPA,3)=PA1
57024       P(IPA,4)=SQRT(PA1**2+PM1**2)
57025       P(IPA,5)=PM1
57026       P(IPA+3,1)=PA4*STHE4
57027       P(IPA+3,3)=PA4*CTHE4
57028       P(IPA+3,4)=SQRT(PA4**2+PM4**2)
57029       P(IPA+3,5)=PM4
57030       P(IPA+1,1)=PA2*STHE2*CPHI2
57031       P(IPA+1,2)=PA2*STHE2*SQRT(1D0-CPHI2**2)*(-1D0)**INT(PYR(0)+0.5D0)
57032       P(IPA+1,3)=PA2*CTHE2
57033       P(IPA+1,4)=SQRT(PA2**2+PM2**2)
57034       P(IPA+1,5)=PM2
57035       P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1)
57036       P(IPA+2,2)=-P(IPA+1,2)
57037       P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3)
57038       P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2)
57039       P(IPA+2,5)=PM3
57040  
57041 C...Set N. Optionally fragment/decay.
57042       N=IPA+3
57043       IF(IP.EQ.0) CALL PYEXEC
57044  
57045       RETURN
57046       END
57047  
57048 C*********************************************************************
57049  
57050 C...PY2FRM
57051 C...An interface from a two-fermion generator to include
57052 C...parton showers and hadronization.
57053  
57054       SUBROUTINE PY2FRM(IRAD,ITAU,ICOM)
57055  
57056 C...Double precision and integer declarations.
57057       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57058       IMPLICIT INTEGER(I-N)
57059       INTEGER PYK,PYCHGE,PYCOMP
57060 C...Commonblocks.
57061       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57062       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57063       SAVE /PYJETS/,/PYDAT1/
57064 C...Local arrays.
57065       DIMENSION IJOIN(2),INTAU(2)
57066  
57067 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
57068       IF(ICOM.EQ.0) THEN
57069         MSTU(28)=0
57070         CALL PYHEPC(2)
57071       ENDIF
57072  
57073 C...Loop through entries and pick up all final fermions/antifermions.
57074       I1=0
57075       I2=0
57076       DO 100 I=1,N
57077       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
57078       KFA=IABS(K(I,2))
57079       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
57080         IF(K(I,2).GT.0) THEN
57081           IF(I1.EQ.0) THEN
57082             I1=I
57083           ELSE
57084             CALL PYERRM(16,'(PY2FRM:) more than one fermion')
57085           ENDIF
57086         ELSE
57087           IF(I2.EQ.0) THEN
57088             I2=I
57089           ELSE
57090             CALL PYERRM(16,'(PY2FRM:) more than one antifermion')
57091           ENDIF
57092         ENDIF
57093       ENDIF
57094   100 CONTINUE
57095  
57096 C...Check that event is arranged according to conventions.
57097       IF(I1.EQ.0.OR.I2.EQ.0) THEN
57098         CALL PYERRM(16,'(PY2FRM:) event contains too few fermions')
57099       ENDIF
57100       IF(I2.LT.I1) THEN
57101         CALL PYERRM(6,'(PY2FRM:) fermions arranged in wrong order')
57102       ENDIF
57103  
57104 C...Check whether fermion pair is quarks or leptons.
57105       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
57106         IQL12=1
57107       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
57108         IQL12=2
57109       ELSE
57110         CALL PYERRM(16,'(PY2FRM:) fermion pair inconsistent')
57111       ENDIF
57112  
57113 C...Decide whether to allow or not photon radiation in showers.
57114       MSTJ(41)=2
57115       IF(IRAD.EQ.0) MSTJ(41)=1
57116  
57117 C...Do colour joining and parton showers.
57118       IP1=I1
57119       IP2=I2
57120       IF(IQL12.EQ.1) THEN
57121         IJOIN(1)=IP1
57122         IJOIN(2)=IP2
57123         CALL PYJOIN(2,IJOIN)
57124       ENDIF
57125       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
57126         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
57127      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
57128         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57129       ENDIF
57130  
57131 C...Do fragmentation and decays. Possibly except tau decay.
57132       IF(ITAU.EQ.0) THEN
57133         NTAU=0
57134         DO 110 I=1,N
57135         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
57136           NTAU=NTAU+1
57137           INTAU(NTAU)=I
57138           K(I,1)=11
57139         ENDIF
57140   110   CONTINUE
57141       ENDIF
57142       CALL PYEXEC
57143       IF(ITAU.EQ.0) THEN
57144         DO 120 I=1,NTAU
57145         K(INTAU(I),1)=1
57146   120   CONTINUE
57147       ENDIF
57148  
57149 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
57150       IF(ICOM.EQ.0) THEN
57151         MSTU(28)=0
57152         CALL PYHEPC(1)
57153       ENDIF
57154  
57155       END
57156  
57157 C*********************************************************************
57158  
57159 C...PY4FRM
57160 C...An interface from a four-fermion generator to include
57161 C...parton showers and hadronization.
57162  
57163       SUBROUTINE PY4FRM(ATOTSQ,A1SQ,A2SQ,ISTRAT,IRAD,ITAU,ICOM)
57164  
57165 C...Double precision and integer declarations.
57166       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57167       IMPLICIT INTEGER(I-N)
57168       INTEGER PYK,PYCHGE,PYCOMP
57169 C...Commonblocks.
57170       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57171       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57172       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
57173       COMMON/PYINT1/MINT(400),VINT(400)
57174       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
57175 C...Local arrays.
57176       DIMENSION IJOIN(2),INTAU(4)
57177  
57178 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
57179       IF(ICOM.EQ.0) THEN
57180         MSTU(28)=0
57181         CALL PYHEPC(2)
57182       ENDIF
57183  
57184 C...Loop through entries and pick up all final fermions/antifermions.
57185       I1=0
57186       I2=0
57187       I3=0
57188       I4=0
57189       DO 100 I=1,N
57190       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
57191       KFA=IABS(K(I,2))
57192       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
57193         IF(K(I,2).GT.0) THEN
57194           IF(I1.EQ.0) THEN
57195             I1=I
57196           ELSEIF(I3.EQ.0) THEN
57197             I3=I
57198           ELSE
57199             CALL PYERRM(16,'(PY4FRM:) more than two fermions')
57200           ENDIF
57201         ELSE
57202           IF(I2.EQ.0) THEN
57203             I2=I
57204           ELSEIF(I4.EQ.0) THEN
57205             I4=I
57206           ELSE
57207             CALL PYERRM(16,'(PY4FRM:) more than two antifermions')
57208           ENDIF
57209         ENDIF
57210       ENDIF
57211   100 CONTINUE
57212  
57213 C...Check that event is arranged according to conventions.
57214       IF(I3.EQ.0.OR.I4.EQ.0) THEN
57215         CALL PYERRM(16,'(PY4FRM:) event contains too few fermions')
57216       ENDIF
57217       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
57218         CALL PYERRM(6,'(PY4FRM:) fermions arranged in wrong order')
57219       ENDIF
57220  
57221 C...Check which fermion pairs are quarks and which leptons.
57222       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
57223         IQL12=1
57224       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
57225         IQL12=2
57226       ELSE
57227         CALL PYERRM(16,'(PY4FRM:) first fermion pair inconsistent')
57228       ENDIF
57229       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
57230         IQL34=1
57231       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
57232         IQL34=2
57233       ELSE
57234         CALL PYERRM(16,'(PY4FRM:) second fermion pair inconsistent')
57235       ENDIF
57236  
57237 C...Decide whether to allow or not photon radiation in showers.
57238       MSTJ(41)=2
57239       IF(IRAD.EQ.0) MSTJ(41)=1
57240  
57241 C...Decide on dipole pairing.
57242       IP1=I1
57243       IP2=I2
57244       IP3=I3
57245       IP4=I4
57246       IF(IQL12.EQ.IQL34) THEN
57247         R1SQ=A1SQ
57248         R2SQ=A2SQ
57249         DELTA=ATOTSQ-A1SQ-A2SQ
57250         IF(ISTRAT.EQ.1) THEN
57251           IF(DELTA.GT.0D0) R1SQ=R1SQ+DELTA
57252           IF(DELTA.LT.0D0) R2SQ=MAX(0D0,R2SQ+DELTA)
57253         ELSEIF(ISTRAT.EQ.2) THEN
57254           IF(DELTA.GT.0D0) R2SQ=R2SQ+DELTA
57255           IF(DELTA.LT.0D0) R1SQ=MAX(0D0,R1SQ+DELTA)
57256         ENDIF
57257         IF(R2SQ.GT.PYR(0)*(R1SQ+R2SQ)) THEN
57258           IP2=I4
57259           IP4=I2
57260         ENDIF
57261       ENDIF
57262  
57263 C...If colour reconnection then bookkeep W+W- or Z0Z0
57264 C...and copy q qbar q qbar consecutively.
57265       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
57266         K(N+1,1)=11
57267         K(N+1,3)=IP1
57268         K(N+1,4)=N+3
57269         K(N+1,5)=N+4
57270         K(N+2,1)=11
57271         K(N+2,3)=IP3
57272         K(N+2,4)=N+5
57273         K(N+2,5)=N+6
57274         IF(K(IP1,2)+K(IP2,2).EQ.0) THEN
57275           K(N+1,2)=23
57276           K(N+2,2)=23
57277           MINT(1)=22
57278         ELSEIF(PYCHGE(K(IP1,2)).GT.0) THEN
57279           K(N+1,2)=24
57280           K(N+2,2)=-24
57281           MINT(1)=25
57282         ELSE
57283           K(N+1,2)=-24
57284           K(N+2,2)=24
57285           MINT(1)=25
57286         ENDIF
57287         DO 110 J=1,5
57288           K(N+3,J)=K(IP1,J)
57289           K(N+4,J)=K(IP2,J)
57290           K(N+5,J)=K(IP3,J)
57291           K(N+6,J)=K(IP4,J)
57292           P(N+1,J)=P(IP1,J)+P(IP2,J)
57293           P(N+2,J)=P(IP3,J)+P(IP4,J)
57294           P(N+3,J)=P(IP1,J)
57295           P(N+4,J)=P(IP2,J)
57296           P(N+5,J)=P(IP3,J)
57297           P(N+6,J)=P(IP4,J)
57298           V(N+1,J)=V(IP1,J)
57299           V(N+2,J)=V(IP3,J)
57300           V(N+3,J)=V(IP1,J)
57301           V(N+4,J)=V(IP2,J)
57302           V(N+5,J)=V(IP3,J)
57303           V(N+6,J)=V(IP4,J)
57304   110   CONTINUE
57305         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
57306      &  P(N+1,3)**2))
57307         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
57308      &  P(N+2,3)**2))
57309         K(N+3,3)=N+1
57310         K(N+4,3)=N+1
57311         K(N+5,3)=N+2
57312         K(N+6,3)=N+2
57313 C...Remove original q qbar q qbar and update counters.
57314         K(IP1,1)=K(IP1,1)+10
57315         K(IP2,1)=K(IP2,1)+10
57316         K(IP3,1)=K(IP3,1)+10
57317         K(IP4,1)=K(IP4,1)+10
57318         IW1=N+1
57319         IW2=N+2
57320         NSD1=N+2
57321         IP1=N+3
57322         IP2=N+4
57323         IP3=N+5
57324         IP4=N+6
57325         N=N+6
57326       ENDIF
57327  
57328 C...Do colour joinings and parton showers.
57329       IF(IQL12.EQ.1) THEN
57330         IJOIN(1)=IP1
57331         IJOIN(2)=IP2
57332         CALL PYJOIN(2,IJOIN)
57333       ENDIF
57334       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
57335         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
57336      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
57337         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57338       ENDIF
57339       NAFT1=N
57340       IF(IQL34.EQ.1) THEN
57341         IJOIN(1)=IP3
57342         IJOIN(2)=IP4
57343         CALL PYJOIN(2,IJOIN)
57344       ENDIF
57345       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
57346         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
57347      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
57348         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
57349       ENDIF
57350  
57351 C...Optionally do colour reconnection.
57352       MINT(32)=0
57353       MSTI(32)=0
57354       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
57355         CALL PYRECO(IW1,IW2,NSD1,NAFT1)
57356         MSTI(32)=MINT(32)
57357       ENDIF
57358  
57359 C...Do fragmentation and decays. Possibly except tau decay.
57360       IF(ITAU.EQ.0) THEN
57361         NTAU=0
57362         DO 120 I=1,N
57363         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
57364           NTAU=NTAU+1
57365           INTAU(NTAU)=I
57366           K(I,1)=11
57367         ENDIF
57368   120   CONTINUE
57369       ENDIF
57370       CALL PYEXEC
57371       IF(ITAU.EQ.0) THEN
57372         DO 130 I=1,NTAU
57373         K(INTAU(I),1)=1
57374   130   CONTINUE
57375       ENDIF
57376  
57377 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
57378       IF(ICOM.EQ.0) THEN
57379         MSTU(28)=0
57380         CALL PYHEPC(1)
57381       ENDIF
57382  
57383       END
57384  
57385 C*********************************************************************
57386  
57387 C...PY6FRM
57388 C...An interface from a six-fermion generator to include
57389 C...parton showers and hadronization.
57390  
57391       SUBROUTINE PY6FRM(P12,P13,P21,P23,P31,P32,PTOP,IRAD,ITAU,ICOM)
57392  
57393 C...Double precision and integer declarations.
57394       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57395       IMPLICIT INTEGER(I-N)
57396       INTEGER PYK,PYCHGE,PYCOMP
57397 C...Commonblocks.
57398       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57399       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57400       SAVE /PYJETS/,/PYDAT1/
57401 C...Local arrays.
57402       DIMENSION IJOIN(2),INTAU(6),BETA(3),BETAO(3),BETAN(3)
57403  
57404 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
57405       IF(ICOM.EQ.0) THEN
57406         MSTU(28)=0
57407         CALL PYHEPC(2)
57408       ENDIF
57409  
57410 C...Loop through entries and pick up all final fermions/antifermions.
57411       I1=0
57412       I2=0
57413       I3=0
57414       I4=0
57415       I5=0
57416       I6=0
57417       DO 100 I=1,N
57418       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
57419       KFA=IABS(K(I,2))
57420       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
57421         IF(K(I,2).GT.0) THEN
57422           IF(I1.EQ.0) THEN
57423             I1=I
57424           ELSEIF(I3.EQ.0) THEN
57425             I3=I
57426           ELSEIF(I5.EQ.0) THEN
57427             I5=I
57428           ELSE
57429             CALL PYERRM(16,'(PY6FRM:) more than three fermions')
57430           ENDIF
57431         ELSE
57432           IF(I2.EQ.0) THEN
57433             I2=I
57434           ELSEIF(I4.EQ.0) THEN
57435             I4=I
57436           ELSEIF(I6.EQ.0) THEN
57437             I6=I
57438           ELSE
57439             CALL PYERRM(16,'(PY6FRM:) more than three antifermions')
57440           ENDIF
57441         ENDIF
57442       ENDIF
57443   100 CONTINUE
57444  
57445 C...Check that event is arranged according to conventions.
57446       IF(I5.EQ.0.OR.I6.EQ.0) THEN
57447         CALL PYERRM(16,'(PY6FRM:) event contains too few fermions')
57448       ENDIF
57449       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3.OR.I5.LT.I4.OR.I6.LT.I5) THEN
57450         CALL PYERRM(6,'(PY6FRM:) fermions arranged in wrong order')
57451       ENDIF
57452  
57453 C...Check which fermion pairs are quarks and which leptons.
57454       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
57455         IQL12=1
57456       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
57457         IQL12=2
57458       ELSE
57459         CALL PYERRM(16,'(PY6FRM:) first fermion pair inconsistent')
57460       ENDIF
57461       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
57462         IQL34=1
57463       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
57464         IQL34=2
57465       ELSE
57466         CALL PYERRM(16,'(PY6FRM:) second fermion pair inconsistent')
57467       ENDIF
57468       IF(IABS(K(I5,2)).LT.10.AND.IABS(K(I6,2)).LT.10) THEN
57469         IQL56=1
57470       ELSEIF(IABS(K(I5,2)).GT.10.AND.IABS(K(I6,2)).GT.10) THEN
57471         IQL56=2
57472       ELSE
57473         CALL PYERRM(16,'(PY6FRM:) third fermion pair inconsistent')
57474       ENDIF
57475  
57476 C...Decide whether to allow or not photon radiation in showers.
57477       MSTJ(41)=2
57478       IF(IRAD.EQ.0) MSTJ(41)=1
57479  
57480 C...Allow dipole pairings only among leptons and quarks separately.
57481       P12D=P12
57482       P13D=0D0
57483       IF(IQL34.EQ.IQL56) P13D=P13
57484       P21D=0D0
57485       IF(IQL12.EQ.IQL34) P21D=P21
57486       P23D=0D0
57487       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P23D=P23
57488       P31D=0D0
57489       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P31D=P31
57490       P32D=0D0
57491       IF(IQL12.EQ.IQL56) P32D=P32
57492  
57493 C...Decide whether t+tbar.
57494       ITOP=0
57495       IF(PYR(0).LT.PTOP) THEN
57496         ITOP=1
57497  
57498 C...If t+tbar: reconstruct t's.
57499         IT=N+1
57500         ITB=N+2
57501         DO 110 J=1,5
57502           K(IT,J)=0
57503           K(ITB,J)=0
57504           P(IT,J)=P(I1,J)+P(I3,J)+P(I4,J)
57505           P(ITB,J)=P(I2,J)+P(I5,J)+P(I6,J)
57506           V(IT,J)=0D0
57507           V(ITB,J)=0D0
57508   110   CONTINUE
57509         K(IT,1)=1
57510         K(ITB,1)=1
57511         K(IT,2)=6
57512         K(ITB,2)=-6
57513         P(IT,5)=SQRT(MAX(0D0,P(IT,4)**2-P(IT,1)**2-P(IT,2)**2-
57514      &  P(IT,3)**2))
57515         P(ITB,5)=SQRT(MAX(0D0,P(ITB,4)**2-P(ITB,1)**2-P(ITB,2)**2-
57516      &  P(ITB,3)**2))
57517         N=N+2
57518  
57519 C...If t+tbar: colour join t's and let them shower.
57520         IJOIN(1)=IT
57521         IJOIN(2)=ITB
57522         CALL PYJOIN(2,IJOIN)
57523         PMTTS=(P(IT,4)+P(ITB,4))**2-(P(IT,1)+P(ITB,1))**2-
57524      &  (P(IT,2)+P(ITB,2))**2-(P(IT,3)+P(ITB,3))**2
57525         CALL PYSHOW(IT,ITB,SQRT(MAX(0D0,PMTTS)))
57526  
57527 C...If t+tbar: pick up the t's after shower.
57528         ITNEW=IT
57529         ITBNEW=ITB
57530         DO 120 I=ITB+1,N
57531           IF(K(I,2).EQ.6) ITNEW=I
57532           IF(K(I,2).EQ.-6) ITBNEW=I
57533   120   CONTINUE
57534  
57535 C...If t+tbar: loop over two top systems.
57536         DO 200 IT1=1,2
57537           IF(IT1.EQ.1) THEN
57538             ITO=IT
57539             ITN=ITNEW
57540             IBO=I1
57541             IW1=I3
57542             IW2=I4
57543           ELSE
57544             ITO=ITB
57545             ITN=ITBNEW
57546             IBO=I2
57547             IW1=I5
57548             IW2=I6
57549           ENDIF
57550           IF(IABS(K(IBO,2)).NE.5) CALL PYERRM(6,
57551      &    '(PY6FRM:) not b in t decay')
57552  
57553 C...If t+tbar: find boost from original to new top frame.
57554           DO 130 J=1,3
57555             BETAO(J)=P(ITO,J)/P(ITO,4)
57556             BETAN(J)=P(ITN,J)/P(ITN,4)
57557   130     CONTINUE
57558  
57559 C...If t+tbar: boost copy of b by t shower and connect it in colour.
57560           N=N+1
57561           IB=N
57562           K(IB,1)=3
57563           K(IB,2)=K(IBO,2)
57564           K(IB,3)=ITN
57565           DO 140 J=1,5
57566             P(IB,J)=P(IBO,J)
57567             V(IB,J)=0D0
57568   140     CONTINUE
57569           CALL PYROBO(IB,IB,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
57570           CALL PYROBO(IB,IB,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
57571           K(IB,4)=MSTU(5)*ITN
57572           K(IB,5)=MSTU(5)*ITN
57573           K(ITN,4)=K(ITN,4)+IB
57574           K(ITN,5)=K(ITN,5)+IB
57575           K(ITN,1)=K(ITN,1)+10
57576           K(IBO,1)=K(IBO,1)+10
57577  
57578 C...If t+tbar: construct W recoiling against b.
57579           N=N+1
57580           IW=N
57581           DO 150 J=1,5
57582             K(IW,J)=0
57583             V(IW,J)=0D0
57584   150     CONTINUE
57585           K(IW,1)=1
57586           KCHW=PYCHGE(K(IW1,2))+PYCHGE(K(IW2,2))
57587           IF(IABS(KCHW).EQ.3) THEN
57588             K(IW,2)=ISIGN(24,KCHW)
57589           ELSE
57590             CALL PYERRM(16,'(PY6FRM:) fermion pair inconsistent with W')
57591           ENDIF
57592           K(IW,3)=IW1
57593  
57594 C...If t+tbar: construct W momentum, including boost by t shower.
57595           DO 160 J=1,4
57596             P(IW,J)=P(IW1,J)+P(IW2,J)
57597   160     CONTINUE
57598           P(IW,5)=SQRT(MAX(0D0,P(IW,4)**2-P(IW,1)**2-P(IW,2)**2-
57599      &    P(IW,3)**2))
57600           CALL PYROBO(IW,IW,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
57601           CALL PYROBO(IW,IW,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
57602  
57603 C...If t+tbar: boost b and W to top rest frame.
57604           DO 170 J=1,3
57605             BETA(J)=(P(IB,J)+P(IW,J))/(P(IB,4)+P(IW,4))
57606   170     CONTINUE
57607           CALL PYROBO(IB,IB,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57608           CALL PYROBO(IW,IW,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57609  
57610 C...If t+tbar: let b shower and pick up modified W.
57611           PMTS=(P(IB,4)+P(IW,4))**2-(P(IB,1)+P(IW,1))**2-
57612      &    (P(IB,2)+P(IW,2))**2-(P(IB,3)+P(IW,3))**2
57613           CALL PYSHOW(IB,IW,SQRT(MAX(0D0,PMTS)))
57614           DO 180 I=IW,N
57615             IF(IABS(K(I,2)).EQ.24) IWM=I
57616   180     CONTINUE
57617  
57618 C...If t+tbar: take copy of W decay products.
57619           DO 190 J=1,5
57620             K(N+1,J)=K(IW1,J)
57621             P(N+1,J)=P(IW1,J)
57622             V(N+1,J)=V(IW1,J)
57623             K(N+2,J)=K(IW2,J)
57624             P(N+2,J)=P(IW2,J)
57625             V(N+2,J)=V(IW2,J)
57626   190     CONTINUE
57627           K(IW1,1)=K(IW1,1)+10
57628           K(IW2,1)=K(IW2,1)+10
57629           K(IWM,1)=K(IWM,1)+10
57630           K(IWM,4)=N+1
57631           K(IWM,5)=N+2
57632           K(N+1,3)=IWM
57633           K(N+2,3)=IWM
57634           IF(IT1.EQ.1) THEN
57635             I3=N+1
57636             I4=N+2
57637           ELSE
57638             I5=N+1
57639             I6=N+2
57640           ENDIF
57641           N=N+2
57642  
57643 C...If t+tbar: boost W decay products, first by effects of t shower,
57644 C...then by those of b shower. b and its shower simple boost back.
57645           CALL PYROBO(N-1,N,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
57646           CALL PYROBO(N-1,N,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
57647           CALL PYROBO(N-1,N,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57648           CALL PYROBO(N-1,N,0D0,0D0,-P(IW,1)/P(IW,4),
57649      &    -P(IW,2)/P(IW,4),-P(IW,3)/P(IW,4))
57650           CALL PYROBO(N-1,N,0D0,0D0,P(IWM,1)/P(IWM,4),
57651      &    P(IWM,2)/P(IWM,4),P(IWM,3)/P(IWM,4))
57652           CALL PYROBO(IB,IB,0D0,0D0,BETA(1),BETA(2),BETA(3))
57653           CALL PYROBO(IW,N,0D0,0D0,BETA(1),BETA(2),BETA(3))
57654   200   CONTINUE
57655       ENDIF
57656  
57657 C...Decide on dipole pairing.
57658       IP1=I1
57659       IP3=I3
57660       IP5=I5
57661       PRN=PYR(0)*(P12D+P13D+P21D+P23D+P31D+P32D)
57662       IF(ITOP.EQ.1.OR.PRN.LT.P12D) THEN
57663         IP2=I2
57664         IP4=I4
57665         IP6=I6
57666       ELSEIF(PRN.LT.P12D+P13D) THEN
57667         IP2=I2
57668         IP4=I6
57669         IP6=I4
57670       ELSEIF(PRN.LT.P12D+P13D+P21D) THEN
57671         IP2=I4
57672         IP4=I2
57673         IP6=I6
57674       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D) THEN
57675         IP2=I4
57676         IP4=I6
57677         IP6=I2
57678       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D+P31D) THEN
57679         IP2=I6
57680         IP4=I2
57681         IP6=I4
57682       ELSE
57683         IP2=I6
57684         IP4=I4
57685         IP6=I2
57686       ENDIF
57687  
57688 C...Do colour joinings and parton showers
57689 C...(except ones already made for t+tbar).
57690       IF(ITOP.EQ.0) THEN
57691         IF(IQL12.EQ.1) THEN
57692           IJOIN(1)=IP1
57693           IJOIN(2)=IP2
57694           CALL PYJOIN(2,IJOIN)
57695         ENDIF
57696         IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
57697           PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
57698      &    (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
57699           CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57700         ENDIF
57701       ENDIF
57702       IF(IQL34.EQ.1) THEN
57703         IJOIN(1)=IP3
57704         IJOIN(2)=IP4
57705         CALL PYJOIN(2,IJOIN)
57706       ENDIF
57707       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
57708         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
57709      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
57710         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
57711       ENDIF
57712       IF(IQL56.EQ.1) THEN
57713         IJOIN(1)=IP5
57714         IJOIN(2)=IP6
57715         CALL PYJOIN(2,IJOIN)
57716       ENDIF
57717       IF(IQL56.EQ.1.OR.IRAD.EQ.1) THEN
57718         PM56S=(P(IP5,4)+P(IP6,4))**2-(P(IP5,1)+P(IP6,1))**2-
57719      &  (P(IP5,2)+P(IP6,2))**2-(P(IP5,3)+P(IP6,3))**2
57720         CALL PYSHOW(IP5,IP6,SQRT(MAX(0D0,PM56S)))
57721       ENDIF
57722  
57723 C...Do fragmentation and decays. Possibly except tau decay.
57724       IF(ITAU.EQ.0) THEN
57725         NTAU=0
57726         DO 210 I=1,N
57727         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
57728           NTAU=NTAU+1
57729           INTAU(NTAU)=I
57730           K(I,1)=11
57731         ENDIF
57732   210   CONTINUE
57733       ENDIF
57734       CALL PYEXEC
57735       IF(ITAU.EQ.0) THEN
57736         DO 220 I=1,NTAU
57737         K(INTAU(I),1)=1
57738   220   CONTINUE
57739       ENDIF
57740  
57741 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
57742       IF(ICOM.EQ.0) THEN
57743         MSTU(28)=0
57744         CALL PYHEPC(1)
57745       ENDIF
57746  
57747       END
57748  
57749 C*********************************************************************
57750  
57751 C...PY4JET
57752 C...An interface from a four-parton generator to include
57753 C...parton showers and hadronization.
57754  
57755       SUBROUTINE PY4JET(PMAX,IRAD,ICOM)
57756  
57757 C...Double precision and integer declarations.
57758       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57759       IMPLICIT INTEGER(I-N)
57760       INTEGER PYK,PYCHGE,PYCOMP
57761 C...Commonblocks.
57762       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57763       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57764       SAVE /PYJETS/,/PYDAT1/
57765 C...Local arrays.
57766       DIMENSION IJOIN(2),PTOT(4),BETA(3)
57767  
57768 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
57769       IF(ICOM.EQ.0) THEN
57770         MSTU(28)=0
57771         CALL PYHEPC(2)
57772       ENDIF
57773  
57774 C...Loop through entries and pick up all final partons.
57775       I1=0
57776       I2=0
57777       I3=0
57778       I4=0
57779       DO 100 I=1,N
57780       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
57781       KFA=IABS(K(I,2))
57782       IF((KFA.GE.1.AND.KFA.LE.6).OR.KFA.EQ.21) THEN
57783         IF(K(I,2).GT.0.AND.K(I,2).LE.6) THEN
57784           IF(I1.EQ.0) THEN
57785             I1=I
57786           ELSEIF(I3.EQ.0) THEN
57787             I3=I
57788           ELSE
57789             CALL PYERRM(16,'(PY4JET:) more than two quarks')
57790           ENDIF
57791         ELSEIF(K(I,2).LT.0) THEN
57792           IF(I2.EQ.0) THEN
57793             I2=I
57794           ELSEIF(I4.EQ.0) THEN
57795             I4=I
57796           ELSE
57797             CALL PYERRM(16,'(PY4JET:) more than two antiquarks')
57798           ENDIF
57799         ELSE
57800           IF(I3.EQ.0) THEN
57801             I3=I
57802           ELSEIF(I4.EQ.0) THEN
57803             I4=I
57804           ELSE
57805             CALL PYERRM(16,'(PY4JET:) more than two gluons')
57806           ENDIF
57807         ENDIF
57808       ENDIF
57809   100 CONTINUE
57810  
57811 C...Check that event is arranged according to conventions.
57812       IF(I1.EQ.0.OR.I2.EQ.0.OR.I3.EQ.0.OR.I4.EQ.0) THEN
57813         CALL PYERRM(16,'(PY4JET:) event contains too few partons')
57814       ENDIF
57815       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
57816         CALL PYERRM(6,'(PY4JET:) partons arranged in wrong order')
57817       ENDIF
57818  
57819 C...Check whether second pair are quarks or gluons.
57820       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
57821         IQG34=1
57822       ELSEIF(K(I3,2).EQ.21.AND.K(I4,2).EQ.21) THEN
57823         IQG34=2
57824       ELSE
57825         CALL PYERRM(16,'(PY4JET:) second parton pair inconsistent')
57826       ENDIF
57827  
57828 C...Boost partons to their cm frame.
57829       DO 110 J=1,4
57830         PTOT(J)=P(I1,J)+P(I2,J)+P(I3,J)+P(I4,J)
57831   110 CONTINUE
57832       ECM=SQRT(MAX(0D0,PTOT(4)**2-PTOT(1)**2-PTOT(2)**2-PTOT(3)**2))
57833       DO 120 J=1,3
57834         BETA(J)=PTOT(J)/PTOT(4)
57835   120 CONTINUE
57836       CALL PYROBO(I1,I1,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57837       CALL PYROBO(I2,I2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57838       CALL PYROBO(I3,I3,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57839       CALL PYROBO(I4,I4,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57840       NSAV=N
57841  
57842 C...Decide and set up shower history for q qbar q' qbar' events.
57843       IF(IQG34.EQ.1) THEN
57844         W1=PY4JTW(0,I1,I3,I4)
57845         W2=PY4JTW(0,I2,I3,I4)
57846         IF(W1.GT.PYR(0)*(W1+W2)) THEN
57847           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
57848         ELSE
57849           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
57850         ENDIF
57851  
57852 C...Decide and set up shower history for q qbar g g events.
57853       ELSE
57854         W1=PY4JTW(I1,I3,I2,I4)
57855         W2=PY4JTW(I1,I4,I2,I3)
57856         W3=PY4JTW(0,I3,I1,I4)
57857         W4=PY4JTW(0,I4,I1,I3)
57858         W5=PY4JTW(0,I3,I2,I4)
57859         W6=PY4JTW(0,I4,I2,I3)
57860         W7=PY4JTW(0,I1,I3,I4)
57861         W8=PY4JTW(0,I2,I3,I4)
57862         WR=(W1+W2+W3+W4+W5+W6+W7+W8)*PYR(0)
57863         IF(W1.GT.WR) THEN
57864           CALL PY4JTS(I1,I3,I2,I4,0,QMAX)
57865         ELSEIF(W1+W2.GT.WR) THEN
57866           CALL PY4JTS(I1,I4,I2,I3,0,QMAX)
57867         ELSEIF(W1+W2+W3.GT.WR) THEN
57868           CALL PY4JTS(0,I3,I1,I4,I2,QMAX)
57869         ELSEIF(W1+W2+W3+W4.GT.WR) THEN
57870           CALL PY4JTS(0,I4,I1,I3,I2,QMAX)
57871         ELSEIF(W1+W2+W3+W4+W5.GT.WR) THEN
57872           CALL PY4JTS(0,I3,I2,I4,I1,QMAX)
57873         ELSEIF(W1+W2+W3+W4+W5+W6.GT.WR) THEN
57874           CALL PY4JTS(0,I4,I2,I3,I1,QMAX)
57875         ELSEIF(W1+W2+W3+W4+W5+W6+W7.GT.WR) THEN
57876           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
57877         ELSE
57878           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
57879         ENDIF
57880       ENDIF
57881  
57882 C...Boost back original partons and mark them as deleted.
57883       CALL PYROBO(I1,I1,0D0,0D0,BETA(1),BETA(2),BETA(3))
57884       CALL PYROBO(I2,I2,0D0,0D0,BETA(1),BETA(2),BETA(3))
57885       CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
57886       CALL PYROBO(I4,I4,0D0,0D0,BETA(1),BETA(2),BETA(3))
57887       K(I1,1)=K(I1,1)+10
57888       K(I2,1)=K(I2,1)+10
57889       K(I3,1)=K(I3,1)+10
57890       K(I4,1)=K(I4,1)+10
57891  
57892 C...Rotate shower initiating partons to be along z axis.
57893       PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
57894       CALL PYROBO(NSAV+1,NSAV+6,0D0,-PHI,0D0,0D0,0D0)
57895       THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
57896       CALL PYROBO(NSAV+1,NSAV+6,-THE,0D0,0D0,0D0,0D0)
57897  
57898 C...Set up copy of shower initiating partons as on mass shell.
57899       DO 140 I=N+1,N+2
57900         DO 130 J=1,5
57901           K(I,J)=0
57902           P(I,J)=0D0
57903           V(I,J)=V(I1,J)
57904   130   CONTINUE
57905         K(I,1)=1
57906         K(I,2)=K(I-6,2)
57907   140 CONTINUE
57908       IF(K(NSAV+1,2).EQ.K(I1,2)) THEN
57909         K(N+1,3)=I1
57910         P(N+1,5)=P(I1,5)
57911         K(N+2,3)=I2
57912         P(N+2,5)=P(I2,5)
57913       ELSE
57914         K(N+1,3)=I2
57915         P(N+1,5)=P(I2,5)
57916         K(N+2,3)=I1
57917         P(N+2,5)=P(I1,5)
57918       ENDIF
57919       PABS=SQRT(MAX(0D0,(ECM**2-P(N+1,5)**2-P(N+2,5)**2)**2-
57920      &(2D0*P(N+1,5)*P(N+2,5))**2))/(2D0*ECM)
57921       P(N+1,3)=PABS
57922       P(N+1,4)=SQRT(PABS**2+P(N+1,5)**2)
57923       P(N+2,3)=-PABS
57924       P(N+2,4)=SQRT(PABS**2+P(N+2,5)**2)
57925       N=N+2
57926  
57927 C...Decide whether to allow or not photon radiation in showers.
57928 C...Connect up colours.
57929       MSTJ(41)=2
57930       IF(IRAD.EQ.0) MSTJ(41)=1
57931       IJOIN(1)=N-1
57932       IJOIN(2)=N
57933       CALL PYJOIN(2,IJOIN)
57934  
57935 C...Decide on maximum virtuality and do parton shower.
57936       IF(PMAX.LT.PARJ(82)) THEN
57937         PQMAX=QMAX
57938       ELSE
57939         PQMAX=PMAX
57940       ENDIF
57941       CALL PYSHOW(NSAV+1,-100,PQMAX)
57942  
57943 C...Rotate and boost back system.
57944       CALL PYROBO(NSAV+1,N,THE,PHI,BETA(1),BETA(2),BETA(3))
57945  
57946 C...Do fragmentation and decays.
57947       CALL PYEXEC
57948  
57949 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
57950       IF(ICOM.EQ.0) THEN
57951         MSTU(28)=0
57952         CALL PYHEPC(1)
57953       ENDIF
57954  
57955       RETURN
57956       END
57957  
57958 C*********************************************************************
57959  
57960 C...PY4JTW
57961 C...Auxiliary to PY4JET, to evaluate weight of configuration.
57962  
57963       FUNCTION PY4JTW(IA1,IA2,IA3,IA4)
57964  
57965 C...Double precision and integer declarations.
57966       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57967       IMPLICIT INTEGER(I-N)
57968       INTEGER PYK,PYCHGE,PYCOMP
57969 C...Commonblocks.
57970       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57971       SAVE /PYJETS/
57972  
57973 C...First case: when both original partons radiate.
57974 C...IA1 /= 0: N+1 -> IA1 + IA2, N+2 -> IA3 + IA4.
57975       IF(IA1.NE.0) THEN
57976         DO 100 J=1,4
57977           P(N+1,J)=P(IA1,J)+P(IA2,J)
57978           P(N+2,J)=P(IA3,J)+P(IA4,J)
57979   100   CONTINUE
57980         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
57981      &  P(N+1,3)**2))
57982         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
57983      &  P(N+2,3)**2))
57984         Z1=P(IA1,4)/P(N+1,4)
57985         WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-P(IA1,5)**2)
57986         Z2=P(IA3,4)/P(N+2,4)
57987         WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-P(IA3,5)**2)
57988  
57989 C...Second case: when one original parton radiates to three.
57990 C...IA1  = 0: N+1 -> IA2 + N+2, N+2 -> IA3 + IA4.
57991       ELSE
57992         DO 110 J=1,4
57993           P(N+2,J)=P(IA3,J)+P(IA4,J)
57994           P(N+1,J)=P(N+2,J)+P(IA2,J)
57995   110   CONTINUE
57996         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
57997      &  P(N+1,3)**2))
57998         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
57999      &  P(N+2,3)**2))
58000         IF(K(IA2,2).EQ.21) THEN
58001           Z1=P(N+2,4)/P(N+1,4)
58002           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
58003      &    P(IA3,5)**2)
58004         ELSE
58005           Z1=P(IA2,4)/P(N+1,4)
58006           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
58007      &    P(IA2,5)**2)
58008         ENDIF
58009         Z2=P(IA3,4)/P(N+2,4)
58010         IF(K(IA2,2).EQ.21) THEN
58011           WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-
58012      &    P(IA3,5)**2)
58013         ELSEIF(K(IA3,2).EQ.21) THEN
58014           WT2=3D0*((1D0-Z2*(1D0-Z2))**2/(Z2*(1D0-Z2)))/P(N+2,5)**2
58015         ELSE
58016           WT2=0.5D0*(Z2**2+(1D0-Z2)**2)
58017         ENDIF
58018       ENDIF
58019  
58020 C...Total weight.
58021       PY4JTW=WT1*WT2
58022  
58023       RETURN
58024       END
58025  
58026 C*********************************************************************
58027  
58028 C...PY4JTS
58029 C...Auxiliary to PY4JET, to set up chosen configuration.
58030  
58031       SUBROUTINE PY4JTS(IA1,IA2,IA3,IA4,IA5,QMAX)
58032  
58033 C...Double precision and integer declarations.
58034       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58035       IMPLICIT INTEGER(I-N)
58036       INTEGER PYK,PYCHGE,PYCOMP
58037 C...Commonblocks.
58038       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58039       SAVE /PYJETS/
58040  
58041 C...Reset info.
58042       DO 110 I=N+1,N+6
58043         DO 100 J=1,5
58044           K(I,J)=0
58045           V(I,J)=V(IA2,J)
58046   100   CONTINUE
58047         K(I,1)=16
58048   110 CONTINUE
58049  
58050 C...First case: when both original partons radiate.
58051 C...N+1 -> (IA1=N+3) + (IA2=N+4), N+2 -> (IA3=N+5) + (IA4=N+6).
58052       IF(IA1.NE.0) THEN
58053  
58054 C...Set up flavour and history pointers for new partons.
58055         K(N+1,2)=K(IA1,2)
58056         K(N+2,2)=K(IA3,2)
58057         K(N+3,2)=K(IA1,2)
58058         K(N+4,2)=K(IA2,2)
58059         K(N+5,2)=K(IA3,2)
58060         K(N+6,2)=K(IA4,2)
58061         K(N+1,3)=IA1
58062         K(N+1,4)=N+3
58063         K(N+1,5)=N+4
58064         K(N+2,3)=IA3
58065         K(N+2,4)=N+5
58066         K(N+2,5)=N+6
58067         K(N+3,3)=N+1
58068         K(N+4,3)=N+1
58069         K(N+5,3)=N+2
58070         K(N+6,3)=N+2
58071  
58072 C...Set up momenta for new partons.
58073         DO 120 J=1,5
58074           P(N+1,J)=P(IA1,J)+P(IA2,J)
58075           P(N+2,J)=P(IA3,J)+P(IA4,J)
58076           P(N+3,J)=P(IA1,J)
58077           P(N+4,J)=P(IA2,J)
58078           P(N+5,J)=P(IA3,J)
58079           P(N+6,J)=P(IA4,J)
58080   120   CONTINUE
58081         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
58082      &  P(N+1,3)**2))
58083         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
58084      &  P(N+2,3)**2))
58085         QMAX=MIN(P(N+1,5),P(N+2,5))
58086  
58087 C...Second case: q radiates twice.
58088 C...N+1 -> (IA2=N+4) + N+3, N+3 -> (IA3=N+5) + (IA4=N+6),
58089 C...IA5=N+2 does not radiate.
58090       ELSEIF(K(IA2,2).EQ.21) THEN
58091  
58092 C...Set up flavour and history pointers for new partons.
58093         K(N+1,2)=K(IA3,2)
58094         K(N+2,2)=K(IA5,2)
58095         K(N+3,2)=K(IA3,2)
58096         K(N+4,2)=K(IA2,2)
58097         K(N+5,2)=K(IA3,2)
58098         K(N+6,2)=K(IA4,2)
58099         K(N+1,3)=IA3
58100         K(N+1,4)=N+3
58101         K(N+1,5)=N+4
58102         K(N+2,3)=IA5
58103         K(N+3,3)=N+1
58104         K(N+3,4)=N+5
58105         K(N+3,5)=N+6
58106         K(N+4,3)=N+1
58107         K(N+5,3)=N+3
58108         K(N+6,3)=N+3
58109  
58110 C...Set up momenta for new partons.
58111         DO 130 J=1,5
58112           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
58113           P(N+2,J)=P(IA5,J)
58114           P(N+3,J)=P(IA3,J)+P(IA4,J)
58115           P(N+4,J)=P(IA2,J)
58116           P(N+5,J)=P(IA3,J)
58117           P(N+6,J)=P(IA4,J)
58118   130   CONTINUE
58119         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
58120      &  P(N+1,3)**2))
58121         P(N+3,5)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,1)**2-P(N+3,2)**2-
58122      &  P(N+3,3)**2))
58123         QMAX=P(N+3,5)
58124  
58125 C...Third case: q radiates g, g branches.
58126 C...N+1 -> (IA2=N+3) + N+4, N+4 -> (IA3=N+5) + (IA4=N+6),
58127 C...IA5=N+2 does not radiate.
58128       ELSE
58129  
58130 C...Set up flavour and history pointers for new partons.
58131         K(N+1,2)=K(IA2,2)
58132         K(N+2,2)=K(IA5,2)
58133         K(N+3,2)=K(IA2,2)
58134         K(N+4,2)=21
58135         K(N+5,2)=K(IA3,2)
58136         K(N+6,2)=K(IA4,2)
58137         K(N+1,3)=IA2
58138         K(N+1,4)=N+3
58139         K(N+1,5)=N+4
58140         K(N+2,3)=IA5
58141         K(N+3,3)=N+1
58142         K(N+4,3)=N+1
58143         K(N+4,4)=N+5
58144         K(N+4,5)=N+6
58145         K(N+5,3)=N+4
58146         K(N+6,3)=N+4
58147  
58148 C...Set up momenta for new partons.
58149         DO 140 J=1,5
58150           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
58151           P(N+2,J)=P(IA5,J)
58152           P(N+3,J)=P(IA2,J)
58153           P(N+4,J)=P(IA3,J)+P(IA4,J)
58154           P(N+5,J)=P(IA3,J)
58155           P(N+6,J)=P(IA4,J)
58156   140   CONTINUE
58157         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
58158      &  P(N+1,3)**2))
58159         P(N+4,5)=SQRT(MAX(0D0,P(N+4,4)**2-P(N+4,1)**2-P(N+4,2)**2-
58160      &  P(N+4,3)**2))
58161         QMAX=P(N+4,5)
58162  
58163       ENDIF
58164       N=N+6
58165  
58166       RETURN
58167       END
58168  
58169 C*********************************************************************
58170  
58171 C...PYJOIN
58172 C...Connects a sequence of partons with colour flow indices,
58173 C...as required for subsequent shower evolution (or other operations).
58174  
58175       SUBROUTINE PYJOIN(NJOIN,IJOIN)
58176  
58177 C...Double precision and integer declarations.
58178       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58179       IMPLICIT INTEGER(I-N)
58180       INTEGER PYK,PYCHGE,PYCOMP
58181 C...Commonblocks.
58182       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58183       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58184       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58185       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58186 C...Local array.
58187       DIMENSION IJOIN(*)
58188  
58189 C...Check that partons are of right types to be connected.
58190       IF(NJOIN.LT.2) GOTO 120
58191       KQSUM=0
58192       DO 100 IJN=1,NJOIN
58193         I=IJOIN(IJN)
58194         IF(I.LE.0.OR.I.GT.N) GOTO 120
58195         IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120
58196         KC=PYCOMP(K(I,2))
58197         IF(KC.EQ.0) GOTO 120
58198         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
58199         IF(KQ.EQ.0) GOTO 120
58200         IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120
58201         IF(KQ.NE.2) KQSUM=KQSUM+KQ
58202         IF(IJN.EQ.1) KQS=KQ
58203   100 CONTINUE
58204       IF(KQSUM.NE.0) GOTO 120
58205  
58206 C...Connect the partons sequentially (closing for gluon loop).
58207       KCS=(9-KQS)/2
58208       IF(KQS.EQ.2) KCS=INT(4.5D0+PYR(0))
58209       DO 110 IJN=1,NJOIN
58210         I=IJOIN(IJN)
58211         K(I,1)=3
58212         IF(IJN.NE.1) IP=IJOIN(IJN-1)
58213         IF(IJN.EQ.1) IP=IJOIN(NJOIN)
58214         IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1)
58215         IF(IJN.EQ.NJOIN) IN=IJOIN(1)
58216         K(I,KCS)=MSTU(5)*IN
58217         K(I,9-KCS)=MSTU(5)*IP
58218         IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0
58219         IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0
58220   110 CONTINUE
58221  
58222 C...Error exit: no action taken.
58223       RETURN
58224   120 CALL PYERRM(12,
58225      &'(PYJOIN:) given entries can not be joined by one string')
58226  
58227       RETURN
58228       END
58229  
58230 C*********************************************************************
58231  
58232 C...PYGIVE
58233 C...Sets values of commonblock variables.
58234  
58235       SUBROUTINE PYGIVE(CHIN)
58236  
58237 C...Double precision and integer declarations.
58238       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58239       IMPLICIT INTEGER(I-N)
58240       INTEGER PYK,PYCHGE,PYCOMP
58241 C...Commonblocks.
58242       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58243       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58244       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58245       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
58246       COMMON/PYDAT4/CHAF(500,2)
58247       CHARACTER CHAF*16
58248       COMMON/PYDATR/MRPY(6),RRPY(100)
58249       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
58250       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
58251       COMMON/PYINT1/MINT(400),VINT(400)
58252       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
58253       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
58254       COMMON/PYINT4/MWID(500),WIDS(500,5)
58255       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
58256       COMMON/PYINT6/PROC(0:500)
58257       CHARACTER PROC*28
58258       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
58259       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
58260      &XPDIR(-6:6)
58261       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
58262       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
58263       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
58264       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,
58265      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
58266      &/PYINT5/,/PYINT6/,/PYINT7/,/PYINT8/,/PYMSSM/,/PYMSRV/,/PYTCSM/
58267 C...Local arrays and character variables.
58268       CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28,
58269      &CHNEW2*28,CHNAM*6,CHVAR(54)*6,CHALP(2)*26,CHIND*8,CHINI*10,
58270      &CHINR*16,CHDIG*10
58271       DIMENSION MSVAR(54,8)
58272  
58273 C...For each variable to be translated give: name,
58274 C...integer/real/character, no. of indices, lower&upper index bounds.
58275       DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG',
58276      &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRPY',
58277      &'RRPY','MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI',
58278      &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH',
58279      &'MWID','WIDS','NGEN','XSEC','PROC','SIGT','XPVMD','XPANL',
58280      &'XPANH','XPBEH','XPDIR','IMSS','RMSS','RVLAM','RVLAMP','RVLAMB',
58281      &'ITCM','RTCM'/
58282       DATA ((MSVAR(I,J),J=1,8),I=1,54)/ 1,7*0,  1,2,1,4000,1,5,2*0,
58283      &2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0,
58284      &2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
58285      &1,2,1,500,1,4,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0,
58286      &2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,8000,1,2,2*0,
58287      &2,1,1,8000,4*0,  1,2,1,8000,1,5,2*0,  3,2,1,500,1,2,2*0,
58288      &1,1,1,6,4*0,  2,1,1,100,4*0,
58289      &1,7*0,  1,1,1,500,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0,
58290      &1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
58291      &1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,500,4*0,
58292      &1,2,1,500,1,2,2*0,  2,2,1,500,1,20,2*0,  1,3,1,40,1,4,1,2,
58293      &2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0,
58294      &1,1,1,500,4*0,   2,2,1,500,1,5,2*0,   1,2,0,500,1,3,2*0,
58295      &2,2,0,500,1,3,2*0,   4,1,0,500,4*0,   2,3,0,6,0,6,0,5,
58296      &2,1,-6,6,4*0,     2,1,-6,6,4*0,    2,1,-6,6,4*0,
58297      &2,1,-6,6,4*0,  2,1,-6,6,4*0,  1,1,0,99,4*0,  2,1,0,99,4*0,
58298      &2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,
58299      &1,1,0,99,4*0,  2,1,0,99,4*0/
58300       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
58301      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/, CHDIG/'1234567890'/
58302  
58303 C...Length of character variable. Subdivide it into instructions.
58304       IF(MSTU(12).NE.12345.AND.CHIN.NE.'mstu(12)=12345'.AND.
58305      &CHIN.NE.'MSTU(12)=12345') CALL PYLIST(0)
58306       CHBIT=CHIN//' '
58307       LBIT=101
58308   100 LBIT=LBIT-1
58309       IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100
58310       LTOT=0
58311       DO 110 LCOM=1,LBIT
58312         IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110
58313         LTOT=LTOT+1
58314         CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM)
58315   110 CONTINUE
58316       LLOW=0
58317   120 LHIG=LLOW+1
58318   130 LHIG=LHIG+1
58319       IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130
58320       LBIT=LHIG-LLOW-1
58321       CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1)
58322
58323 C...Send off decay-mode on/off commands to PYONOF.
58324       IONOF=0
58325       DO 135 LDIG=1,10
58326         IF(CHBIT(1:1).EQ.CHDIG(LDIG:LDIG)) IONOF=1
58327   135 CONTINUE
58328       IF(IONOF.EQ.1) THEN
58329         CALL PYONOF(CHIN)
58330         RETURN
58331       ENDIF   
58332  
58333 C...Peel off any text following exclamation mark.
58334       LHIG2=LBIT
58335       DO 140 LLOW2=LHIG2,1,-1
58336         IF(CHBIT(LLOW2:LLOW2).EQ.'!') LBIT=LLOW2-1
58337   140 CONTINUE
58338       IF(LBIT.EQ.0) RETURN
58339  
58340 C...Identify commonblock variable.
58341       LNAM=1
58342   150 LNAM=LNAM+1
58343       IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND.
58344      &LNAM.LE.6) GOTO 150
58345       CHNAM=CHBIT(1:LNAM-1)//' '
58346       DO 170 LCOM=1,LNAM-1
58347         DO 160 LALP=1,26
58348           IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)=
58349      &    CHALP(2)(LALP:LALP)
58350   160   CONTINUE
58351   170 CONTINUE
58352       IVAR=0
58353       DO 180 IV=1,54
58354         IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV
58355   180 CONTINUE
58356       IF(IVAR.EQ.0) THEN
58357         CALL PYERRM(18,'(PYGIVE:) do not recognize variable '//CHNAM)
58358         LLOW=LHIG
58359         IF(LLOW.LT.LTOT) GOTO 120
58360         RETURN
58361       ENDIF
58362  
58363 C...Identify any indices.
58364       I1=0
58365       I2=0
58366       I3=0
58367       NINDX=0
58368       IF(CHBIT(LNAM:LNAM).EQ.'(') THEN
58369         LIND=LNAM
58370   190   LIND=LIND+1
58371         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190
58372         CHIND=' '
58373         IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c')
58374      &  .AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17.OR.
58375      &  IVAR.EQ.37)) THEN
58376           CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1)
58377           READ(CHIND,'(I8)') KF
58378           I1=PYCOMP(KF)
58379         ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.
58380      &    'c') THEN
58381           CALL PYERRM(18,'(PYGIVE:) not allowed to use C index for '//
58382      &    CHNAM)
58383           LLOW=LHIG
58384           IF(LLOW.LT.LTOT) GOTO 120
58385           RETURN
58386         ELSE
58387           CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
58388           READ(CHIND,'(I8)') I1
58389         ENDIF
58390         LNAM=LIND
58391         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
58392         NINDX=1
58393       ENDIF
58394       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
58395         LIND=LNAM
58396   200   LIND=LIND+1
58397         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200
58398         CHIND=' '
58399         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
58400         READ(CHIND,'(I8)') I2
58401         LNAM=LIND
58402         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
58403         NINDX=2
58404       ENDIF
58405       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
58406         LIND=LNAM
58407   210   LIND=LIND+1
58408         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 210
58409         CHIND=' '
58410         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
58411         READ(CHIND,'(I8)') I3
58412         LNAM=LIND+1
58413         NINDX=3
58414       ENDIF
58415  
58416 C...Check that indices allowed.
58417       IERR=0
58418       IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1
58419       IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4)))
58420      &IERR=2
58421       IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6)))
58422      &IERR=3
58423       IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8)))
58424      &IERR=4
58425       IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5
58426       IF(IERR.GE.1) THEN
58427         CALL PYERRM(18,'(PYGIVE:) unallowed indices for '//
58428      &  CHBIT(1:LNAM-1))
58429         LLOW=LHIG
58430         IF(LLOW.LT.LTOT) GOTO 120
58431         RETURN
58432       ENDIF
58433  
58434 C...Save old value of variable.
58435       IF(IVAR.EQ.1) THEN
58436         IOLD=N
58437       ELSEIF(IVAR.EQ.2) THEN
58438         IOLD=K(I1,I2)
58439       ELSEIF(IVAR.EQ.3) THEN
58440         ROLD=P(I1,I2)
58441       ELSEIF(IVAR.EQ.4) THEN
58442         ROLD=V(I1,I2)
58443       ELSEIF(IVAR.EQ.5) THEN
58444         IOLD=MSTU(I1)
58445       ELSEIF(IVAR.EQ.6) THEN
58446         ROLD=PARU(I1)
58447       ELSEIF(IVAR.EQ.7) THEN
58448         IOLD=MSTJ(I1)
58449       ELSEIF(IVAR.EQ.8) THEN
58450         ROLD=PARJ(I1)
58451       ELSEIF(IVAR.EQ.9) THEN
58452         IOLD=KCHG(I1,I2)
58453       ELSEIF(IVAR.EQ.10) THEN
58454         ROLD=PMAS(I1,I2)
58455       ELSEIF(IVAR.EQ.11) THEN
58456         ROLD=PARF(I1)
58457       ELSEIF(IVAR.EQ.12) THEN
58458         ROLD=VCKM(I1,I2)
58459       ELSEIF(IVAR.EQ.13) THEN
58460         IOLD=MDCY(I1,I2)
58461       ELSEIF(IVAR.EQ.14) THEN
58462         IOLD=MDME(I1,I2)
58463       ELSEIF(IVAR.EQ.15) THEN
58464         ROLD=BRAT(I1)
58465       ELSEIF(IVAR.EQ.16) THEN
58466         IOLD=KFDP(I1,I2)
58467       ELSEIF(IVAR.EQ.17) THEN
58468         CHOLD=CHAF(I1,I2)(1:8)
58469       ELSEIF(IVAR.EQ.18) THEN
58470         IOLD=MRPY(I1)
58471       ELSEIF(IVAR.EQ.19) THEN
58472         ROLD=RRPY(I1)
58473       ELSEIF(IVAR.EQ.20) THEN
58474         IOLD=MSEL
58475       ELSEIF(IVAR.EQ.21) THEN
58476         IOLD=MSUB(I1)
58477       ELSEIF(IVAR.EQ.22) THEN
58478         IOLD=KFIN(I1,I2)
58479       ELSEIF(IVAR.EQ.23) THEN
58480         ROLD=CKIN(I1)
58481       ELSEIF(IVAR.EQ.24) THEN
58482         IOLD=MSTP(I1)
58483       ELSEIF(IVAR.EQ.25) THEN
58484         ROLD=PARP(I1)
58485       ELSEIF(IVAR.EQ.26) THEN
58486         IOLD=MSTI(I1)
58487       ELSEIF(IVAR.EQ.27) THEN
58488         ROLD=PARI(I1)
58489       ELSEIF(IVAR.EQ.28) THEN
58490         IOLD=MINT(I1)
58491       ELSEIF(IVAR.EQ.29) THEN
58492         ROLD=VINT(I1)
58493       ELSEIF(IVAR.EQ.30) THEN
58494         IOLD=ISET(I1)
58495       ELSEIF(IVAR.EQ.31) THEN
58496         IOLD=KFPR(I1,I2)
58497       ELSEIF(IVAR.EQ.32) THEN
58498         ROLD=COEF(I1,I2)
58499       ELSEIF(IVAR.EQ.33) THEN
58500         IOLD=ICOL(I1,I2,I3)
58501       ELSEIF(IVAR.EQ.34) THEN
58502         ROLD=XSFX(I1,I2)
58503       ELSEIF(IVAR.EQ.35) THEN
58504         IOLD=ISIG(I1,I2)
58505       ELSEIF(IVAR.EQ.36) THEN
58506         ROLD=SIGH(I1)
58507       ELSEIF(IVAR.EQ.37) THEN
58508         IOLD=MWID(I1)
58509       ELSEIF(IVAR.EQ.38) THEN
58510         ROLD=WIDS(I1,I2)
58511       ELSEIF(IVAR.EQ.39) THEN
58512         IOLD=NGEN(I1,I2)
58513       ELSEIF(IVAR.EQ.40) THEN
58514         ROLD=XSEC(I1,I2)
58515       ELSEIF(IVAR.EQ.41) THEN
58516         CHOLD2=PROC(I1)
58517       ELSEIF(IVAR.EQ.42) THEN
58518         ROLD=SIGT(I1,I2,I3)
58519       ELSEIF(IVAR.EQ.43) THEN
58520         ROLD=XPVMD(I1)
58521       ELSEIF(IVAR.EQ.44) THEN
58522         ROLD=XPANL(I1)
58523       ELSEIF(IVAR.EQ.45) THEN
58524         ROLD=XPANH(I1)
58525       ELSEIF(IVAR.EQ.46) THEN
58526         ROLD=XPBEH(I1)
58527       ELSEIF(IVAR.EQ.47) THEN
58528         ROLD=XPDIR(I1)
58529       ELSEIF(IVAR.EQ.48) THEN
58530         IOLD=IMSS(I1)
58531       ELSEIF(IVAR.EQ.49) THEN
58532         ROLD=RMSS(I1)
58533       ELSEIF(IVAR.EQ.50) THEN
58534         ROLD=RVLAM(I1,I2,I3)
58535       ELSEIF(IVAR.EQ.51) THEN
58536         ROLD=RVLAMP(I1,I2,I3)
58537       ELSEIF(IVAR.EQ.52) THEN
58538         ROLD=RVLAMB(I1,I2,I3)
58539       ELSEIF(IVAR.EQ.53) THEN
58540         IOLD=ITCM(I1)
58541       ELSEIF(IVAR.EQ.54) THEN
58542         ROLD=RTCM(I1)
58543       ENDIF
58544  
58545 C...Print current value of variable. Loop back.
58546       IF(LNAM.GE.LBIT) THEN
58547         CHBIT(LNAM:14)=' '
58548         CHBIT(15:60)=' has the value                                '
58549         IF(MSVAR(IVAR,1).EQ.1) THEN
58550           WRITE(CHBIT(51:60),'(I10)') IOLD
58551         ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
58552           WRITE(CHBIT(47:60),'(F14.5)') ROLD
58553         ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
58554           CHBIT(53:60)=CHOLD
58555         ELSE
58556           CHBIT(33:60)=CHOLD
58557         ENDIF
58558         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
58559         LLOW=LHIG
58560         IF(LLOW.LT.LTOT) GOTO 120
58561         RETURN
58562       ENDIF
58563  
58564 C...Read in new variable value.
58565       IF(MSVAR(IVAR,1).EQ.1) THEN
58566         CHINI=' '
58567         CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT)
58568         READ(CHINI,'(I10)') INEW
58569       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
58570         CHINR=' '
58571         CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT)
58572         READ(CHINR,*) RNEW
58573       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
58574         CHNEW=CHBIT(LNAM+1:LBIT)//' '
58575       ELSE
58576         CHNEW2=CHBIT(LNAM+1:LBIT)//' '
58577       ENDIF
58578  
58579 C...Store new variable value.
58580       IF(IVAR.EQ.1) THEN
58581         N=INEW
58582       ELSEIF(IVAR.EQ.2) THEN
58583         K(I1,I2)=INEW
58584       ELSEIF(IVAR.EQ.3) THEN
58585         P(I1,I2)=RNEW
58586       ELSEIF(IVAR.EQ.4) THEN
58587         V(I1,I2)=RNEW
58588       ELSEIF(IVAR.EQ.5) THEN
58589         MSTU(I1)=INEW
58590       ELSEIF(IVAR.EQ.6) THEN
58591         PARU(I1)=RNEW
58592       ELSEIF(IVAR.EQ.7) THEN
58593         MSTJ(I1)=INEW
58594       ELSEIF(IVAR.EQ.8) THEN
58595         PARJ(I1)=RNEW
58596       ELSEIF(IVAR.EQ.9) THEN
58597         KCHG(I1,I2)=INEW
58598       ELSEIF(IVAR.EQ.10) THEN
58599         PMAS(I1,I2)=RNEW
58600       ELSEIF(IVAR.EQ.11) THEN
58601         PARF(I1)=RNEW
58602       ELSEIF(IVAR.EQ.12) THEN
58603         VCKM(I1,I2)=RNEW
58604       ELSEIF(IVAR.EQ.13) THEN
58605         MDCY(I1,I2)=INEW
58606       ELSEIF(IVAR.EQ.14) THEN
58607         MDME(I1,I2)=INEW
58608       ELSEIF(IVAR.EQ.15) THEN
58609         BRAT(I1)=RNEW
58610       ELSEIF(IVAR.EQ.16) THEN
58611         KFDP(I1,I2)=INEW
58612       ELSEIF(IVAR.EQ.17) THEN
58613         CHAF(I1,I2)=CHNEW
58614       ELSEIF(IVAR.EQ.18) THEN
58615         MRPY(I1)=INEW
58616       ELSEIF(IVAR.EQ.19) THEN
58617         RRPY(I1)=RNEW
58618       ELSEIF(IVAR.EQ.20) THEN
58619         MSEL=INEW
58620       ELSEIF(IVAR.EQ.21) THEN
58621         MSUB(I1)=INEW
58622       ELSEIF(IVAR.EQ.22) THEN
58623         KFIN(I1,I2)=INEW
58624       ELSEIF(IVAR.EQ.23) THEN
58625         CKIN(I1)=RNEW
58626       ELSEIF(IVAR.EQ.24) THEN
58627         MSTP(I1)=INEW
58628       ELSEIF(IVAR.EQ.25) THEN
58629         PARP(I1)=RNEW
58630       ELSEIF(IVAR.EQ.26) THEN
58631         MSTI(I1)=INEW
58632       ELSEIF(IVAR.EQ.27) THEN
58633         PARI(I1)=RNEW
58634       ELSEIF(IVAR.EQ.28) THEN
58635         MINT(I1)=INEW
58636       ELSEIF(IVAR.EQ.29) THEN
58637         VINT(I1)=RNEW
58638       ELSEIF(IVAR.EQ.30) THEN
58639         ISET(I1)=INEW
58640       ELSEIF(IVAR.EQ.31) THEN
58641         KFPR(I1,I2)=INEW
58642       ELSEIF(IVAR.EQ.32) THEN
58643         COEF(I1,I2)=RNEW
58644       ELSEIF(IVAR.EQ.33) THEN
58645         ICOL(I1,I2,I3)=INEW
58646       ELSEIF(IVAR.EQ.34) THEN
58647         XSFX(I1,I2)=RNEW
58648       ELSEIF(IVAR.EQ.35) THEN
58649         ISIG(I1,I2)=INEW
58650       ELSEIF(IVAR.EQ.36) THEN
58651         SIGH(I1)=RNEW
58652       ELSEIF(IVAR.EQ.37) THEN
58653         MWID(I1)=INEW
58654       ELSEIF(IVAR.EQ.38) THEN
58655         WIDS(I1,I2)=RNEW
58656       ELSEIF(IVAR.EQ.39) THEN
58657         NGEN(I1,I2)=INEW
58658       ELSEIF(IVAR.EQ.40) THEN
58659         XSEC(I1,I2)=RNEW
58660       ELSEIF(IVAR.EQ.41) THEN
58661         PROC(I1)=CHNEW2
58662       ELSEIF(IVAR.EQ.42) THEN
58663         SIGT(I1,I2,I3)=RNEW
58664       ELSEIF(IVAR.EQ.43) THEN
58665         XPVMD(I1)=RNEW
58666       ELSEIF(IVAR.EQ.44) THEN
58667         XPANL(I1)=RNEW
58668       ELSEIF(IVAR.EQ.45) THEN
58669         XPANH(I1)=RNEW
58670       ELSEIF(IVAR.EQ.46) THEN
58671         XPBEH(I1)=RNEW
58672       ELSEIF(IVAR.EQ.47) THEN
58673         XPDIR(I1)=RNEW
58674       ELSEIF(IVAR.EQ.48) THEN
58675         IMSS(I1)=INEW
58676       ELSEIF(IVAR.EQ.49) THEN
58677         RMSS(I1)=RNEW
58678       ELSEIF(IVAR.EQ.50) THEN
58679         RVLAM(I1,I2,I3)=RNEW
58680       ELSEIF(IVAR.EQ.51) THEN
58681         RVLAMP(I1,I2,I3)=RNEW
58682       ELSEIF(IVAR.EQ.52) THEN
58683         RVLAMB(I1,I2,I3)=RNEW
58684       ELSEIF(IVAR.EQ.53) THEN
58685         ITCM(I1)=INEW
58686       ELSEIF(IVAR.EQ.54) THEN
58687         RTCM(I1)=RNEW
58688       ENDIF
58689  
58690 C...Write old and new value. Loop back.
58691       CHBIT(LNAM:14)=' '
58692       CHBIT(15:60)=' changed from                to               '
58693       IF(MSVAR(IVAR,1).EQ.1) THEN
58694         WRITE(CHBIT(33:42),'(I10)') IOLD
58695         WRITE(CHBIT(51:60),'(I10)') INEW
58696         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
58697       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
58698         WRITE(CHBIT(29:42),'(F14.5)') ROLD
58699         WRITE(CHBIT(47:60),'(F14.5)') RNEW
58700         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
58701       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
58702         CHBIT(35:42)=CHOLD
58703         CHBIT(53:60)=CHNEW
58704         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
58705       ELSE
58706         CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2
58707         IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88)
58708       ENDIF
58709       LLOW=LHIG
58710       IF(LLOW.LT.LTOT) GOTO 120
58711  
58712 C...Format statement for output on unit MSTU(11) (by default 6).
58713  5000 FORMAT(5X,A60)
58714  5100 FORMAT(5X,A88)
58715  
58716       RETURN
58717       END
58718  
58719 C*********************************************************************
58720  
58721 C...PYONOF
58722 C...Switches on and off decay channel by search for match.
58723  
58724       SUBROUTINE PYONOF(CHIN)
58725  
58726 C...Double precision and integer declarations.
58727       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58728       IMPLICIT INTEGER(I-N)
58729       INTEGER PYK,PYCHGE,PYCOMP
58730 C...Commonblocks.
58731       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58732       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
58733       SAVE /PYDAT1/,/PYDAT3/
58734 C...Local arrays and character variables.
58735       INTEGER KFCMP(10),KFTMP(10)
58736       CHARACTER CHIN*(*),CHTMP*104,CHFIX*104,CHMODE*10,CHCODE*8,
58737      &CHALP(2)*26
58738       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
58739      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
58740
58741 C...Determine length of character variable.
58742       CHTMP=CHIN//' '
58743       LBEG=0
58744   100 LBEG=LBEG+1
58745       IF(CHTMP(LBEG:LBEG).EQ.' ') GOTO 100
58746       LEND=LBEG-1
58747   105 LEND=LEND+1
58748       IF(LEND.LE.100.AND.CHTMP(LEND:LEND).NE.'!') GOTO 105
58749   110 LEND=LEND-1
58750       IF(CHTMP(LEND:LEND).EQ.' ') GOTO 110
58751       LEN=1+LEND-LBEG
58752       CHFIX(1:LEN)=CHTMP(LBEG:LEND)
58753
58754 C...Find colon separator and particle code.
58755       LCOLON=0
58756   120 LCOLON=LCOLON+1
58757       IF(CHFIX(LCOLON:LCOLON).NE.':') GOTO 120
58758       CHCODE=' '
58759       CHCODE(10-LCOLON:8)=CHFIX(1:LCOLON-1)
58760       READ(CHCODE,'(I8)',ERR=300) KF
58761       KC=PYCOMP(KF)
58762
58763 C...Done if unknown code or no decay channels.
58764       IF(KC.EQ.0) THEN
58765         CALL PYERRM(18,'(PYONOF:) unrecognized particle '//CHCODE)
58766         RETURN
58767       ENDIF
58768       IDCBEG=MDCY(KC,2)
58769       IDCLEN=MDCY(KC,3)
58770       IF(IDCBEG.EQ.0.OR.IDCLEN.EQ.0) THEN
58771         CALL PYERRM(18,'(PYONOF:) no decay channels for '//CHCODE)
58772         RETURN
58773       ENDIF
58774
58775 C...Find command name up to blank or equal sign.
58776       LSEP=LCOLON
58777   130 LSEP=LSEP+1
58778       IF(LSEP.LE.LEN.AND.CHFIX(LSEP:LSEP).NE.' '.AND.
58779      &CHFIX(LSEP:LSEP).NE.'=') GOTO 130
58780       CHMODE=' '
58781       LMODE=LSEP-LCOLON-1
58782       CHMODE(1:LMODE)=CHFIX(LCOLON+1:LSEP-1)
58783
58784 C...Convert to uppercase.
58785       DO 150 LCOM=1,LMODE
58786         DO 140 LALP=1,26
58787           IF(CHMODE(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) 
58788      &    CHMODE(LCOM:LCOM)=CHALP(2)(LALP:LALP)
58789   140   CONTINUE
58790   150 CONTINUE
58791
58792 C...Identify command. Failed if not identified.
58793       MODE=0
58794       IF(CHMODE.EQ.'ALLOFF') MODE=1
58795       IF(CHMODE.EQ.'ALLON') MODE=2
58796       IF(CHMODE.EQ.'OFFIFANY') MODE=3
58797       IF(CHMODE.EQ.'ONIFANY') MODE=4
58798       IF(CHMODE.EQ.'OFFIFALL') MODE=5
58799       IF(CHMODE.EQ.'ONIFALL') MODE=6
58800       IF(CHMODE.EQ.'OFFIFMATCH') MODE=7
58801       IF(CHMODE.EQ.'ONIFMATCH') MODE=8
58802       IF(MODE.EQ.0) THEN
58803         CALL PYERRM(18,'(PYONOF:) unknown command '//CHMODE)
58804         RETURN
58805       ENDIF
58806
58807 C...Simple cases when all on or all off.
58808       IF(MODE.EQ.1.OR.MODE.EQ.2) THEN
58809         WRITE(MSTU(11),1000) KF,CHMODE
58810         DO 160 IDC=IDCBEG,IDCBEG+IDCLEN-1
58811           IF(MDME(IDC,1).LT.0) GOTO 160
58812           MDME(IDC,1)=MODE-1
58813   160   CONTINUE
58814         RETURN
58815       ENDIF
58816
58817 C...Identify matching list.
58818       NCMP=0
58819       LBEG=LSEP
58820   170 LBEG=LBEG+1
58821       IF(LBEG.GT.LEN) GOTO 190
58822       IF(LBEG.LT.LEN.AND.(CHFIX(LBEG:LBEG).EQ.' '.OR.
58823      &CHFIX(LBEG:LBEG).EQ.'='.OR.CHFIX(LBEG:LBEG).EQ.',')) GOTO 170
58824       LEND=LBEG-1
58825   180 LEND=LEND+1
58826       IF(LEND.LT.LEN.AND.CHFIX(LEND:LEND).NE.' '.AND.
58827      &CHFIX(LEND:LEND).NE.'='.AND.CHFIX(LEND:LEND).NE.',') GOTO 180
58828       IF(LEND.LT.LEN) LEND=LEND-1
58829       CHCODE=' '
58830       CHCODE(8-LEND+LBEG:8)=CHFIX(LBEG:LEND)
58831       READ(CHCODE,'(I8)',ERR=300) KFREAD
58832       NCMP=NCMP+1
58833       KFCMP(NCMP)=IABS(KFREAD)
58834       LBEG=LEND
58835       IF(NCMP.LT.10) GOTO 170
58836   190 CONTINUE
58837       WRITE(MSTU(11),1100) KF,CHMODE,(KFCMP(ICMP),ICMP=1,NCMP)
58838
58839 C...Only one matching required.
58840       IF(MODE.EQ.3.OR.MODE.EQ.4) THEN
58841         DO 220 IDC=IDCBEG,IDCBEG+IDCLEN-1
58842           IF(MDME(IDC,1).LT.0) GOTO 220
58843           DO 210 IKF=1,5
58844             KFNOW=IABS(KFDP(IDC,IKF))
58845             IF(KFNOW.EQ.0) GOTO 210
58846             DO 200 ICMP=1,NCMP
58847               IF(KFCMP(ICMP).EQ.KFNOW) THEN
58848                 MDME(IDC,1)=MODE-3
58849                 GOTO 220
58850               ENDIF
58851   200      CONTINUE
58852   210     CONTINUE
58853   220   CONTINUE
58854         RETURN
58855       ENDIF
58856
58857 C...Multiple matchings required.
58858       DO 260 IDC=IDCBEG,IDCBEG+IDCLEN-1
58859         IF(MDME(IDC,1).LT.0) GOTO 260
58860         NTMP=NCMP
58861         DO 230 ITMP=1,NTMP
58862           KFTMP(ITMP)=KFCMP(ITMP)
58863   230   CONTINUE  
58864         NFIN=0 
58865         DO 250 IKF=1,5
58866           KFNOW=IABS(KFDP(IDC,IKF))
58867           IF(KFNOW.EQ.0) GOTO 250
58868           NFIN=NFIN+1
58869           DO 240 ITMP=1,NTMP
58870             IF(KFTMP(ITMP).EQ.KFNOW) THEN
58871               KFTMP(ITMP)=KFTMP(NTMP) 
58872               NTMP=NTMP-1
58873               GOTO 250
58874             ENDIF
58875   240     CONTINUE
58876   250   CONTINUE
58877         IF(NTMP.EQ.0.AND.MODE.LE.6) MDME(IDC,1)=MODE-5
58878         IF(NTMP.EQ.0.AND.NFIN.EQ.NCMP.AND.MODE.GE.7) 
58879      &  MDME(IDC,1)=MODE-7
58880   260 CONTINUE
58881       RETURN
58882
58883 C...Error exit for impossible read of particle code.
58884   300 CALL PYERRM(18,'(PYONOF:) could not interpret particle code '
58885      &//CHCODE)
58886
58887 C...Formats for output.
58888  1000 FORMAT(' Decays for',I8,' set ',A10)
58889  1100 FORMAT(' Decays for',I8,' set ',A10,' if match',10I8)
58890
58891       RETURN
58892       END
58893 C*********************************************************************
58894  
58895 C...PYTUNE
58896 C...Presets for a few specific underlying-event and min-bias tunes
58897 C...Note some tunes require external pdfs to be linked (e.g. 105:QW), 
58898 C...others require particular versions of pythia (e.g. the SCI and GAL 
58899 C...models). See below for details.
58900       SUBROUTINE PYTUNE(ITUNE) 
58901 C
58902 C ITUNE    NAME (detailed descriptions below)
58903 C     0 Default : No settings changed => linked Pythia version's defaults.
58904 C ====== Old UE, Q2-ordered showers ==========================================
58905 C   100       A : Rick Field's CDF Tune A 
58906 C   101      AW : Rick Field's CDF Tune AW
58907 C   102      BW : Rick Field's CDF Tune BW
58908 C   103      DW : Rick Field's CDF Tune DW
58909 C   104     DWT : Rick Field's CDF Tune DW with slower UE energy scaling
58910 C   105      QW : Rick Field's CDF Tune QW (NB: needs CTEQ6.1M pdfs externally)
58911 C   106 ATLAS-DC2: Arthur Moraes' (old) ATLAS tune (ATLAS DC2 / Rome)
58912 C   107     ACR : Tune A modified with annealing CR
58913 C   108      D6 : Rick Field's CDF Tune D6 (NB: needs CTEQ6L pdfs externally)
58914 C   109     D6T : Rick Field's CDF Tune D6T (NB: needs CTEQ6L pdfs externally)
58915 C ====== Intermediate Models =================================================
58916 C   200    IM 1 : Intermediate model: new UE, Q2-ordered showers, annealing CR
58917 C   201     APT : Tune A modified to use pT-ordered final-state showers
58918 C ====== New UE, interleaved pT-ordered showers, annealing CR ================
58919 C   300      S0 : Sandhoff-Skands Tune 0 
58920 C   301      S1 : Sandhoff-Skands Tune 1
58921 C   302      S2 : Sandhoff-Skands Tune 2
58922 C   303     S0A : S0 with "Tune A" UE energy scaling
58923 C   304    NOCR : New UE "best try" without colour reconnections
58924 C   305     Old : New UE, original (primitive) colour reconnections
58925 C   306 ATLAS-CSC: Arthur Moraes' (new) ATLAS tune (needs CTEQ6L externally)
58926 C ======= The Uppsala models =================================================
58927 C   ( NB! must be run with special modified Pythia 6.215 version )
58928 C   ( available from http://www.isv.uu.se/thep/MC/scigal/        )
58929 C   400   GAL 0 : Generalized area-law model. Old parameters
58930 C   401   SCI 0 : Soft-Colour-Interaction model. Old parameters
58931 C   402   GAL 1 : Generalized area-law model. Tevatron MB retuned (Skands)
58932 C   403   SCI 1 : Soft-Colour-Interaction model. Tevatron MB retuned (Skands)
58933 C
58934 C More details;
58935 C
58936 C Quick Dictionary:
58937 C      BE : Bose-Einstein
58938 C      BR : Beam Remnants
58939 C      CR : Colour Reconnections
58940 C      HAD: Hadronization
58941 C      ISR/FSR: Initial-State Radiation / Final-State Radiation
58942 C      FSI: Final-State Interactions (=CR+BE)
58943 C      MB : Minimum-bias
58944 C      MI : Multiple Interactions
58945 C      UE : Underlying Event 
58946 C       
58947 C   A (100) and AW (101). Old UE model, Q2-ordered showers.
58948 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
58949 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
58950 C...Key feature: extensively compared to CDF data (R.D. Field).
58951 C...* Large starting scale for ISR (PARP(67)=4)
58952 C...* AW has even more radiation due to smaller mu_R choice in alpha_s.
58953 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
58954 C
58955 C   BW (102). Old UE model, Q2-ordered showers.
58956 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
58957 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
58958 C...Key feature: extensively compared to CDF data (R.D. Field).
58959 C...NB: Can also be run with Pythia 6.2 or 6.312+
58960 C...* Small starting scale for ISR (PARP(67)=1)
58961 C...* BW has more radiation due to smaller mu_R choice in alpha_s.
58962 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
58963 C
58964 C   DW (103) and DWT (104). Old UE model, Q2-ordered showers.
58965 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
58966 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
58967 C...Key feature: extensively compared to CDF data (R.D. Field).
58968 C...NB: Can also be run with Pythia 6.2 or 6.312+
58969 C...* Intermediate starting scale for ISR (PARP(67)=2.5)
58970 C...* DWT has a different reference energy, the same as the "S" models
58971 C...  below, leading to more UE activity at the LHC, but less at RHIC.
58972 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
58973 C
58974 C   QW (105). Old UE model, Q2-ordered showers.
58975 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
58976 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
58977 C...Key feature: uses CTEQ61 (external pdf library must be linked)
58978 C
58979 C   ATLAS-DC2 (106). Old UE model, Q2-ordered showers.
58980 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
58981 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
58982 C...Key feature: tune used by the ATLAS collaboration.
58983 C
58984 C   ACR (107). Old UE model, Q2-ordered showers, annealing CR.
58985 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.412+    ***
58986 C...Key feature: Tune A modified to use annealing CR. 
58987 C...NB: PARP(85)=0D0 and amount of CR is regulated by PARP(78).
58988 C
58989 C   D6 (108) and D6T (109). Old UE model, Q2-ordered showers, CTEQ6L PDF.
58990 C...Key feature: Like DW and DWT but retuned to use CTEQ6L PDFs.
58991 C
58992 C...IM1 (200). Intermediate model, Q2-ordered showers.
58993 C...Key feature: new UE model with Q2-ordered showers and no interleaving.
58994 C...* "Rap" tune of hep-ph/0402078, modified with new annealing CR.
58995 C...* See: Sjostrand & Skands: JHEP 03(2004)053, hep-ph/0402078.
58996 C
58997 C...APT (201). Old UE model, pT-ordered final-state showers
58998 C...Key feature: Rick Field's Tune A, but with new final-state showers
58999 C
59000 C   S0 (300) and S0A (303). New UE model, pT-ordered showers. 
59001 C...Key feature: large amount of multiple interactions
59002 C...* Somewhat faster than the other colour annealing scenarios.
59003 C...* S0A has a faster energy scaling of the UE IR cutoff, borrowed 
59004 C...  from Tune A, leading to less UE at the LHC, but more at RHIC.
59005 C...* Small amount of radiation.
59006 C...* Large amount of low-pT MI
59007 C...* Low degree of proton lumpiness (broad matter dist.)
59008 C...* CR Type S (driven by free triplets), of medium strength.
59009 C...* See: Pythia6402 update notes or later.
59010 C
59011 C   S1 (301). New UE model, pT-ordered showers.
59012 C...Key feature: large amount of radiation.
59013 C...* Large amount of low-pT perturbative ISR
59014 C...* Large amount of FSR off ISR partons
59015 C...* Small amount of low-pT multiple interactions
59016 C...* Moderate degree of proton lumpiness
59017 C...* Least aggressive CR type (S+S Type I), but with large strength
59018 C...* See: Sandhoff & Skands: FERMILAB-CONF-05-518-T, in hep-ph/0604120.
59019 C
59020 C   S2 (302). New UE model, pT-ordered showers. 
59021 C...Key feature: very lumpy proton + gg string cluster formation allowed
59022 C...* Small amount of radiation
59023 C...* Moderate amount of low-pT MI
59024 C...* High degree of proton lumpiness (more spiky matter distribution)
59025 C...* Most aggressive CR type (S+S Type II), but with small strength
59026 C...* See: Sandhoff & Skands: FERMILAB-CONF-05-518-T, in hep-ph/0604120.
59027
59028 C   NOCR (304). New UE model, pT-ordered showers.
59029 C...Key feature: no colour reconnections (NB: "Best fit" only).
59030 C...* NB: <pT>(Nch) problematic in this tune.
59031 C...* Small amount of radiation
59032 C...* Small amount of low-pT MI
59033 C...* Low degree of proton lumpiness
59034 C...* Large BR composite x enhancement factor
59035 C...* Most clever colour flow without CR ("Lambda ordering")
59036 C
59037 C   ATLAS-CSC (306). New UE mode, pT-ordered showers, CTEQ6L.
59038 C...Key feature: 11-parameter ATLAS tune of the new framework.
59039 C...* Old (pre-annealing) colour reconnections a la 305.
59040 C...* Uses CTEQ6 Leading Order PDFs (must be interfaced externally)
59041 C
59042 C...The GAL and SCI models (400+) are special and *SHOULD NOT* be run 
59043 C...with an unmodified Pythia distribution. 
59044 C...See http://www.isv.uu.se/thep/MC/scigal/ for more information.
59045 C
59046 C ::: + Future improvements?
59047 C        Include also QCD K-factor a la M. Heinz / ATLAS TDR ? RDF's QK?
59048 C       (problem: K-factor affects everything so only works as
59049 C        intended for min-bias, not for UE ... probably need a 
59050 C        better long-term solution to handle UE as well. Anyway,
59051 C        Mark uses MSTP(33) and PARP(31)-PARP(33).)
59052
59053 C...Global statements
59054       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59055       INTEGER PYK,PYCHGE,PYCOMP
59056
59057 C...Commonblocks.
59058       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59059       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
59060
59061 C...SCI and GAL Commonblocks
59062       COMMON /SCIPAR/MSWI(2),PARSCI(2)
59063
59064 C...Internal parameters      
59065       PARAMETER(MXTUNS=500)
59066       CHARACTER*8 CHVERS, CHDOC
59067       PARAMETER (CHVERS='1.012   ',CHDOC='Sep 2007')      
59068       CHARACTER*16 CHNAMS(0:MXTUNS), CHNAME
59069       CHARACTER*42 CHMSTJ(50), CHMSTP(51:100), CHPARP(61:100), 
59070      &    CHPARJ(41:100), CH40
59071       CHARACTER*60 CH60
59072       CHARACTER*70 CH70
59073       DATA (CHNAMS(I),I=0,1)/'Default',' '/
59074       DATA (CHNAMS(I),I=100,110)/
59075      &    'Tune A','Tune AW','Tune BW','Tune DW','Tune DWT','Tune QW',
59076      &    'ATLAS Tune','Tune ACR','Tune D6','Tune D6T',' '/
59077       DATA (CHNAMS(I),I=300,310)/
59078      &    'Tune S0','Tune S1','Tune S2','Tune S0A','NOCR','Old',
59079      5    'ATLAS-CSC Tune','Yale Tune','Yale-K Tune',2*' '/
59080       DATA (CHNAMS(I),I=200,210)/
59081      &    'IM Tune 1','Tune APT',9*' '/
59082       DATA (CHNAMS(I),I=400,410)/
59083      &    'GAL Tune 0','SCI Tune 0','GAL Tune 1','SCI Tune 1',7*' '/
59084       DATA (CHMSTJ(I),I=11,20)/
59085      &    'HAD choice of fragmentation function(s)',4*' ',
59086      &    'HAD treatment of small-mass systems',4*' '/
59087       DATA (CHMSTJ(I),I=41,50)/
59088      &    'FSR type (Q2 or pT) for old framework',9*' '/
59089       DATA (CHMSTP(I),I=51,100)/
59090      5    'PDF set','PDF set internal (=1) or pdflib (=2)',8*' ',
59091      6    'ISR master switch',6*' ',
59092      6    'ISR phase space choice & ME corrections',' ',
59093      7    'ISR IR regularization scheme',' ',
59094      7    'ISR scheme for FSR off ISR',8*' ',
59095      8    'UE model',
59096      8    'UE hadron transverse mass distribution',5*' ',
59097      8    'BR composite scheme','BR colour scheme',
59098      9    'BR primordial kT compensation',
59099      9    'BR primordial kT distribution',
59100      9    'BR energy partitioning scheme',2*' ',
59101      9    'FSI colour (re-)connection model',5*' '/  
59102       DATA (CHPARP(I),I=61,100)/
59103      6    ' ','ISR IR cutoff',' ','ISR renormalization scale prefactor',
59104      6    2*' ','ISR Q2max factor',3*' ',
59105      7    'FSR Q2max factor for non-s-channel procs',5*' ', 
59106      7    'FSI colour reconnection turnoff scale',
59107      7    'FSI colour reconnection strength',
59108      7    'BR composite x enhancement','BR breakup suppression',
59109      8    2*'UE IR cutoff at reference ecm',
59110      8    2*'UE mass distribution parameter',
59111      8    'UE gg colour correlated fraction','UE total gg fraction',
59112      8    2*' ',
59113      8    'UE IR cutoff reference ecm','UE IR cutoff ecm scaling power',
59114      9    'BR primordial kT width <|kT|>',' ',
59115      9    'BR primordial kT UV cutoff',7*' '/    
59116       DATA (CHPARJ(I),I=41,90)/
59117      4    ' ','HAD string parameter b',8*' ',
59118      5    3*' ','HAD charm parameter','HAD bottom parameter',5*' ',
59119      6    10*' ',10*' ',
59120      8    'FSR Lambda_QCD scale','FSR IR cutoff',8*' '/    
59121       SAVE /PYDAT1/,/PYPARS/
59122       SAVE /SCIPAR/
59123
59124 C...1) Shorthand notation
59125       M13=MSTU(13)
59126       M11=MSTU(11)
59127       IF (ITUNE.LE.MXTUNS.AND.ITUNE.GE.0) THEN
59128         CHNAME=CHNAMS(ITUNE)
59129         IF (ITUNE.EQ.0) GOTO 9999
59130       ELSE
59131         CALL PYERRM(9,'(PYTUNE:) Tune number > max. Using defaults.')       
59132         GOTO 9999
59133       ENDIF
59134
59135 C...2) Hello World 
59136       IF (M13.GE.1) WRITE(M11,5000) CHVERS, CHDOC
59137
59138 C...3) Tune parameters
59139
59140 C=============================================================================
59141 C...Tunes S0, S1, S2, S0A, NOCR, and RAP (by P. Skands)
59142       IF (ITUNE.GE.300.AND.ITUNE.LE.305) THEN 
59143         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
59144         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
59145           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59146      &        ' with tune.')       
59147         ENDIF
59148
59149 C...PDFs
59150         MSTP(52)=1
59151         MSTP(51)=7
59152 C...ISR
59153         PARP(64)=1D0
59154 C...UE on, new model.
59155         MSTP(81)=21 
59156 C...Slow IR cutoff energy scaling by default
59157         PARP(89)=1800D0
59158         PARP(90)=0.16D0
59159 C...Switch off trial joinings
59160         MSTP(96)=0
59161 C...Primordial kT cutoff
59162         PARP(93)=5D0
59163
59164 C...S0 (300), S0A (303)
59165         IF (ITUNE.EQ.300.OR.ITUNE.EQ.303) THEN
59166           IF (M13.GE.1) THEN
59167             CH60='see P. Skands & D. Wicke, hep-ph/0703081'
59168             WRITE(M11,5030) CH60
59169             CH60='M. Sandhoff & P. Skands, in hep-ph/0604120'
59170             WRITE(M11,5030) CH60 
59171             CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59172             WRITE(M11,5030) CH60
59173           ENDIF
59174 C...Smooth ISR, low FSR
59175           MSTP(70)=2
59176           MSTP(72)=0
59177 C...pT0
59178           PARP(82)=1.85D0     
59179 C...Transverse density profile.
59180           MSTP(82)=5
59181           PARP(83)=1.6D0
59182 C...Colour Reconnections
59183           MSTP(95)=6
59184           PARP(78)=0.20D0
59185           PARP(77)=0.0D0
59186 C...  Reference energy for pT0 and energy scaling pace.
59187           IF (ITUNE.EQ.303) PARP(90)=0.25D0
59188 C...Lambda_FSR scale.
59189           PARJ(81)=0.23D0
59190 C...FSR activity.
59191           PARP(71)=4D0 
59192 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
59193           MSTP(89)=1
59194           MSTP(88)=0
59195           PARP(79)=2D0         
59196           PARP(80)=0.01D0
59197
59198 C...S1 (301)
59199         ELSEIF(ITUNE.EQ.301) THEN  
59200           IF (M13.GE.1) THEN
59201             CH60='see M. Sandhoff & P. Skands, in hep-ph/0604120'
59202             WRITE(M11,5030) CH60
59203             CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59204             WRITE(M11,5030) CH60
59205           ENDIF
59206 C...Sharp ISR, high FSR
59207           MSTP(70)=0
59208           MSTP(72)=1 
59209 C...pT0 
59210           PARP(82)=2.1D0
59211 C...Colour Reconnections
59212           MSTP(95)=2
59213           PARP(78)=0.35D0
59214 C...Transverse density profile.
59215           MSTP(82)=5
59216           PARP(83)=1.4D0
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...S2 (302)
59228         ELSEIF(ITUNE.EQ.302) 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...Smooth ISR, low FSR
59236           MSTP(70)=2
59237           MSTP(72)=0
59238 C...pT0
59239           PARP(82)=1.9D0 
59240 C...Transverse density profile.
59241           MSTP(82)=5
59242           PARP(83)=1.2D0
59243 C...Colour Reconnections
59244           MSTP(95)=4
59245           PARP(78)=0.15D0
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...NOCR (304)
59257         ELSEIF(ITUNE.EQ.304) THEN  
59258           IF (M13.GE.1) THEN
59259             CH60='"best try" without colour reconnections'
59260             WRITE(M11,5030) CH60
59261             CH60='see P. Skands & D. Wicke, hep-ph/0703081'
59262             WRITE(M11,5030) CH60
59263             CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59264             WRITE(M11,5030) CH60
59265           ENDIF
59266 C...Smooth ISR, low FSR
59267           MSTP(70)=2
59268           MSTP(72)=0
59269 C...pT0
59270           PARP(82)=2.05D0 
59271 C...Transverse density profile.
59272           MSTP(82)=5
59273           PARP(83)=1.8D0
59274 C...Colour Reconnections
59275           MSTP(95)=0       
59276 C...Lambda_FSR scale.
59277           PARJ(81)=0.23D0
59278 C...FSR activity.
59279           PARP(71)=4D0 
59280 C...Lambda order, Valence qq, large qq x enhc, BR-g-BR supp
59281           MSTP(89)=2
59282           MSTP(88)=0
59283           PARP(79)=3D0
59284           PARP(80)=0.01D0
59285
59286 C..."Lo FSR" retune (305)
59287         ELSEIF(ITUNE.EQ.305) THEN  
59288           IF (M13.GE.1) THEN
59289             CH60='"Lo FSR retune" with primitive colour reconnections'
59290             WRITE(M11,5030) CH60
59291             CH60='see T. Sjostrand & P. Skands, EPJC39(2005)129'
59292             WRITE(M11,5030) CH60
59293           ENDIF
59294 C...Smooth ISR, low FSR
59295           MSTP(70)=2
59296           MSTP(72)=0
59297 C...pT0
59298           PARP(82)=1.9D0         
59299 C...Transverse density profile.
59300           MSTP(82)=5
59301           PARP(83)=2.0D0
59302 C...Colour Reconnections
59303           MSTP(95)=1
59304           PARP(78)=1.0D0
59305 C...Lambda_FSR scale.
59306           PARJ(81)=0.23D0
59307 C...FSR activity.
59308           PARP(71)=4D0 
59309 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
59310           MSTP(89)=1
59311           MSTP(88)=0
59312           PARP(79)=2D0          
59313           PARP(80)=0.01D0          
59314         ENDIF
59315 C...Output
59316         IF (M13.GE.1) THEN 
59317           WRITE(M11,5030) ' '
59318           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59319           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59320           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59321           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59322           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59323           WRITE(M11,5030) CH60
59324           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
59325           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
59326           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59327           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59328           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59329           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59330           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59331           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59332           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59333           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59334           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
59335           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
59336           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
59337           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
59338           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59339           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
59340           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
59341         ENDIF
59342
59343 C=============================================================================
59344 C...ATLAS-CSC 11-parameter tune (By A. Moraes) 
59345       ELSEIF (ITUNE.EQ.306) THEN 
59346         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
59347         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
59348           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59349      &        ' with tune.')       
59350         ENDIF
59351
59352 C...PDFs
59353         MSTP(52)=2
59354         MSTP(54)=2
59355         MSTP(56)=2
59356         MSTP(51)=10042
59357         MSTP(53)=10042
59358         MSTP(55)=10042
59359 C...ISR
59360 C        PARP(64)=1D0
59361 C...UE on, new model.
59362         MSTP(81)=21 
59363 C...Energy scaling
59364         PARP(89)=1800D0
59365         PARP(90)=0.22D0
59366 C...Switch off trial joinings
59367         MSTP(96)=0
59368 C...Primordial kT cutoff
59369
59370         IF (M13.GE.1) THEN
59371           CH60='see presentations by A. Moraes (ATLAS),'
59372           WRITE(M11,5030) CH60
59373           CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59374           WRITE(M11,5030) CH60
59375           WRITE(M11,5030) ' '
59376           CH70='NB! This tune requires CTEQ6.1 pdfs to be '//
59377      &        'externally linked and'
59378           WRITE(M11,5035) CH70
59379           CH70='MSTP(51) should be set manually according to '//
59380      &        'the library used'
59381           WRITE(M11,5035) CH70
59382         ENDIF
59383 C...Smooth ISR, low FSR
59384         MSTP(70)=2
59385         MSTP(72)=0
59386 C...pT0
59387         PARP(82)=1.9D0     
59388 C...Transverse density profile.
59389         MSTP(82)=4
59390         PARP(83)=0.3D0
59391         PARP(84)=0.5D0
59392 C...ISR & FSR in interactions after the first (default)
59393         MSTP(84)=1
59394         MSTP(85)=1
59395 C...No double-counting (default)
59396         MSTP(86)=2
59397 C...Companion quark parent gluon (1-x) power
59398         MSTP(87)=4
59399 C...Primordial kT compensation along chaings (default = 0 : uniform)
59400         MSTP(90)=1 
59401 C...Colour Reconnections
59402         MSTP(95)=1
59403         PARP(78)=0.2D0
59404 C...Lambda_FSR scale.
59405         PARJ(81)=0.23D0
59406 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
59407         MSTP(89)=1
59408         MSTP(88)=0
59409 C   PARP(79)=2D0         
59410         PARP(80)=0.01D0
59411 C...Peterson charm frag, and c and b hadr parameters
59412         MSTJ(11)=3
59413         PARJ(54)=-0.07
59414         PARJ(55)=-0.006
59415 C...  Output
59416         IF (M13.GE.1) THEN 
59417           WRITE(M11,5030) ' '
59418           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59419           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59420           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59421           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59422           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59423           WRITE(M11,5030) CH60
59424           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
59425           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
59426           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59427           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59428           CH60='(Note: PARJ(81) changed from 0.14! See update notes)'
59429           WRITE(M11,5030) CH60
59430           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59431           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59432           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59433           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59434           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59435           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59436           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59437           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
59438           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
59439           WRITE(M11,5040) 90, MSTP(90), CHMSTP(90)
59440           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
59441           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
59442           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59443           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
59444           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
59445           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59446           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59447           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59448         ENDIF
59449
59450 C=============================================================================
59451 C...Tunes A, AW, BW, DW, DWT, QW, D6, D6T (by R.D. Field, CDF) 
59452 C...(100-105,108-109) and ATLAS-DC2 Tune (by A. Moraes, ATLAS) (106)
59453       ELSEIF ((ITUNE.GE.100.AND.ITUNE.LE.106).OR.ITUNE.EQ.108.OR.
59454      &      ITUNE.EQ.109) THEN
59455         IF (M13.GE.1.AND.ITUNE.NE.106) THEN 
59456           WRITE(M11,5010) ITUNE, CHNAME
59457           CH60='see R.D. Field (CDF), in hep-ph/0610012'
59458           WRITE(M11,5030) CH60 
59459           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59460           WRITE(M11,5030) CH60
59461         ENDIF
59462 C...Multiple interactions on, old framework
59463         MSTP(81)=1
59464 C...Fast IR cutoff energy scaling by default
59465         PARP(89)=1800D0
59466         PARP(90)=0.25D0
59467 C...Default CTEQ5L (internal), except for QW: CTEQ61 (external)
59468         MSTP(51)=7
59469         MSTP(52)=1
59470         IF (ITUNE.EQ.105) THEN 
59471           MSTP(51)=10150
59472           MSTP(52)=2
59473         ELSEIF(ITUNE.EQ.108.OR.ITUNE.EQ.109) THEN
59474           MSTP(52)=2
59475           MSTP(54)=2
59476           MSTP(56)=2
59477           MSTP(51)=10042
59478           MSTP(53)=10042
59479           MSTP(55)=10042
59480         ENDIF
59481 C...Double Gaussian matter distribution. 
59482         MSTP(82)=4
59483         PARP(83)=0.5D0
59484         PARP(84)=0.4D0
59485 C...FSR activity. 
59486         PARP(71)=4D0
59487 C...Lambda_FSR scale. 
59488         PARJ(81)=0.29D0     
59489 C...Fragmentation functions and c and b parameters
59490         MSTJ(11)=4
59491         PARJ(54)=-0.05
59492         PARJ(55)=-0.005
59493
59494 C...Tune A and AW 
59495         IF(ITUNE.EQ.100.OR.ITUNE.EQ.101) THEN
59496 C...pT0.
59497           PARP(82)=2.0D0
59498 c...String drawing almost completely minimizes string length.
59499           PARP(85)=0.9D0
59500           PARP(86)=0.95D0
59501 C...ISR cutoff, muR scale factor, and phase space size
59502           PARP(62)=1D0
59503           PARP(64)=1D0
59504           PARP(67)=4D0
59505 C...Intrinsic kT, size, and max
59506           MSTP(91)=1
59507           PARP(91)=1D0
59508           PARP(93)=5D0
59509 C...AW : higher ISR IR cutoff, but also larger alpha_s and more intrinsic kT.
59510           IF (ITUNE.EQ.101) THEN
59511             PARP(62)=1.25D0
59512             PARP(64)=0.2D0
59513             PARP(91)=2.1D0
59514             PARP(92)=15.0D0
59515           ENDIF
59516           
59517 C...Tune BW (larger alpha_s, more intrinsic kT. Smaller ISR phase space.)
59518         ELSEIF (ITUNE.EQ.102) THEN
59519 C...pT0.
59520           PARP(82)=1.9D0
59521 c...String drawing completely minimizes string length.
59522           PARP(85)=1.0D0
59523           PARP(86)=1.0D0
59524 C...ISR cutoff, muR scale factor, and phase space size
59525           PARP(62)=1.25D0
59526           PARP(64)=0.2D0
59527           PARP(67)=1D0
59528 C...Intrinsic kT, size, and max
59529           MSTP(91)=1
59530           PARP(91)=2.1D0
59531           PARP(93)=15D0
59532
59533 C...Tune DW
59534         ELSEIF (ITUNE.EQ.103) THEN
59535 C...pT0.
59536           PARP(82)=1.9D0
59537 c...String drawing completely minimizes string length.
59538           PARP(85)=1.0D0
59539           PARP(86)=1.0D0
59540 C...ISR cutoff, muR scale factor, and phase space size
59541           PARP(62)=1.25D0
59542           PARP(64)=0.2D0
59543           PARP(67)=2.5D0
59544 C...Intrinsic kT, size, and max
59545           MSTP(91)=1
59546           PARP(91)=2.1D0
59547           PARP(93)=15D0
59548
59549 C...Tune DWT
59550         ELSEIF (ITUNE.EQ.104) THEN
59551 C...pT0.
59552           PARP(82)=1.9409D0
59553 C...Run II ref scale and slow scaling
59554           PARP(89)=1960D0
59555           PARP(90)=0.16D0
59556 c...String drawing completely minimizes string length.
59557           PARP(85)=1.0D0
59558           PARP(86)=1.0D0
59559 C...ISR cutoff, muR scale factor, and phase space size
59560           PARP(62)=1.25D0
59561           PARP(64)=0.2D0
59562           PARP(67)=2.5D0
59563 C...Intrinsic kT, size, and max
59564           MSTP(91)=1
59565           PARP(91)=2.1D0
59566           PARP(93)=15D0
59567
59568 C...Tune QW
59569         ELSEIF(ITUNE.EQ.105) THEN
59570           IF (M13.GE.1) THEN 
59571             WRITE(M11,5030) ' '
59572             CH70='NB! This tune requires CTEQ6.1 pdfs to be '//
59573      &           'externally linked and'
59574             WRITE(M11,5035) CH70
59575             CH70='MSTP(51) should be set manually according to '//
59576      &          'the library used'
59577             WRITE(M11,5035) CH70
59578           ENDIF
59579 C...pT0.
59580           PARP(82)=1.1D0
59581 c...String drawing completely minimizes string length.
59582           PARP(85)=1.0D0
59583           PARP(86)=1.0D0
59584 C...ISR cutoff, muR scale factor, and phase space size
59585           PARP(62)=1.25D0
59586           PARP(64)=0.2D0
59587           PARP(67)=2.5D0
59588 C...Intrinsic kT, size, and max
59589           MSTP(91)=1
59590           PARP(91)=2.1D0
59591           PARP(93)=15D0
59592
59593 C...Tune D6 and D6T
59594         ELSEIF(ITUNE.EQ.108.OR.ITUNE.EQ.109) THEN
59595           IF (M13.GE.1) THEN 
59596             WRITE(M11,5030) ' '
59597             CH70='NB! This tune requires CTEQ6L pdfs to be '//
59598      &           'externally linked and'
59599             WRITE(M11,5035) CH70
59600             CH70='MSTP(51) should be set manually according to '//
59601      &          'the library used'
59602             WRITE(M11,5035) CH70
59603           ENDIF
59604 C...The "Rick" proton, double gauss with 0.5/0.4
59605           MSTP(82)=4
59606           PARP(83)=0.5D0
59607           PARP(84)=0.4D0
59608 c...String drawing completely minimizes string length.
59609           PARP(85)=1.0D0
59610           PARP(86)=1.0D0
59611           IF (ITUNE.EQ.108) THEN
59612 C...D6: pT0, Run I ref scale, and fast energy scaling
59613             PARP(82)=1.8D0
59614             PARP(89)=1800D0
59615             PARP(90)=0.25D0
59616           ELSE
59617 C...D6T: pT0, Run II ref scale, and slow energy scaling
59618             PARP(82)=1.8387D0
59619             PARP(89)=1960D0
59620             PARP(90)=0.16D0
59621           ENDIF
59622 C...ISR cutoff, muR scale factor, and phase space size
59623           PARP(62)=1.25D0
59624           PARP(64)=0.2D0
59625           PARP(67)=2.5D0
59626 C...Intrinsic kT, size, and max
59627           MSTP(91)=1
59628           PARP(91)=2.1D0
59629           PARP(93)=15D0
59630           
59631 C...Old ATLAS-DC2 5-parameter tune
59632         ELSEIF(ITUNE.EQ.106) THEN
59633           IF (M13.GE.1) THEN 
59634             WRITE(M11,5010) ITUNE, CHNAME
59635             CH60='see A. Moraes et al., SN-ATLAS-2006-057'
59636             WRITE(M11,5030) CH60
59637             CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59638             WRITE(M11,5030) CH60
59639           ENDIF
59640 C...  pT0.
59641           PARP(82)=1.8D0
59642 C...  Different ref and rescaling pacee
59643           PARP(89)=1000D0
59644           PARP(90)=0.16D0
59645 C...  Parameters of mass distribution
59646           PARP(83)=0.5D0
59647           PARP(84)=0.5D0
59648 C...  Old default string drawing
59649           PARP(85)=0.33D0
59650           PARP(86)=0.66D0
59651 C...  ISR, phase space equivalent to Tune B
59652           PARP(62)=1D0
59653           PARP(64)=1D0
59654           PARP(67)=1D0
59655 C...  FSR
59656           PARP(71)=4D0
59657           PARJ(81)=0.29D0
59658 C...  Intrinsic kT
59659           MSTP(91)=1
59660           PARP(91)=1D0
59661           PARP(93)=5D0
59662         ENDIF
59663         
59664 C...  Output
59665         IF (M13.GE.1) THEN 
59666           WRITE(M11,5030) ' '
59667           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59668           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59669           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59670           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59671           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
59672           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59673           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59674           WRITE(M11,5030) CH60
59675           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59676           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59677           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59678           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59679           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59680           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59681           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59682           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59683           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59684           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
59685           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
59686           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
59687           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
59688           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59689           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59690           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59691           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59692         ENDIF     
59693
59694 C=============================================================================
59695 C... ACR, tune A with new CR (107)
59696       ELSEIF(ITUNE.EQ.107) THEN
59697         IF (M13.GE.1) THEN 
59698           WRITE(M11,5010) ITUNE, CHNAME
59699           CH60='Tune A modified with new colour reconnections'
59700           WRITE(M11,5030) CH60
59701           CH60='PARP(85)=0D0 and amount of CR is regulated by PARP(78)'
59702           WRITE(M11,5030) CH60 
59703           CH60='see P. Skands & D. Wicke, hep-ph/0703081,'
59704           WRITE(M11,5030) CH60 
59705           CH60='R.D. Field (CDF), in hep-ph/0610012 (Tune A)'
59706           WRITE(M11,5030) CH60 
59707           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59708           WRITE(M11,5030) CH60
59709         ENDIF
59710         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.406))THEN
59711           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59712      &        ' with tune. Using defaults.')       
59713           GOTO 9998
59714         ENDIF
59715         MSTP(81)=1
59716         PARP(89)=1800D0
59717         PARP(90)=0.25D0
59718         MSTP(82)=4
59719         PARP(83)=0.5D0
59720         PARP(84)=0.4D0
59721         MSTP(51)=7
59722         MSTP(52)=1
59723         PARP(71)=4D0
59724         PARJ(81)=0.29D0
59725         PARP(82)=2.0D0
59726         PARP(85)=0.0D0
59727         PARP(86)=0.66D0
59728         PARP(62)=1D0
59729         PARP(64)=1D0
59730         PARP(67)=4D0
59731         MSTP(91)=1
59732         PARP(91)=1D0
59733         PARP(93)=5D0
59734         MSTP(95)=6
59735         PARP(78)=0.25D0
59736 C...Fragmentation functions and c and b parameters
59737         MSTJ(11)=4
59738         PARJ(54)=-0.05
59739         PARJ(55)=-0.005
59740 C...Output
59741         IF (M13.GE.1) THEN 
59742           WRITE(M11,5030) ' '
59743           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59744           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59745           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59746           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59747           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
59748           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59749           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59750           WRITE(M11,5030) CH60
59751           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59752           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59753           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59754           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59755           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59756           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59757           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59758           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59759           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59760           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
59761           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
59762           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
59763           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
59764           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59765           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
59766           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
59767           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59768           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59769           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59770         ENDIF
59771
59772 C=============================================================================
59773 C...  Intermediate model. Rap tune (retuned to post-6.406 IR factorization)
59774       ELSEIF(ITUNE.EQ.200) THEN
59775         IF (M13.GE.1) THEN 
59776           WRITE(M11,5010) ITUNE, CHNAME
59777           CH60='see T. Sjostrand & P. Skands, JHEP03(2004)053'
59778           WRITE(M11,5030) CH60
59779         ENDIF
59780         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
59781           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59782      &        ' with tune.')       
59783         ENDIF
59784 C...PDF
59785         MSTP(51)=7
59786         MSTP(52)=1
59787 C...ISR 
59788         PARP(62)=1D0
59789         PARP(64)=1D0
59790         PARP(67)=4D0
59791 C...FSR
59792         PARP(71)=4D0
59793         PARJ(81)=0.29D0
59794 C...UE
59795         MSTP(81)=11
59796         PARP(82)=2.25D0
59797         PARP(89)=1800D0
59798         PARP(90)=0.25D0
59799 C...  ExpOfPow(1.8) overlap profile
59800         MSTP(82)=5
59801         PARP(83)=1.8D0
59802 C...  Valence qq
59803         MSTP(88)=0
59804 C...  Rap Tune
59805         MSTP(89)=1
59806 C...  Default diquark, BR-g-BR supp
59807         PARP(79)=2D0           
59808         PARP(80)=0.01D0
59809 C...  Final state reconnect.
59810         MSTP(95)=1
59811         PARP(78)=0.55D0 
59812 C...Fragmentation functions and c and b parameters
59813         MSTJ(11)=4
59814         PARJ(54)=-0.05
59815         PARJ(55)=-0.005
59816 C...  Output
59817         IF (M13.GE.1) THEN 
59818           WRITE(M11,5030) ' '
59819           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59820           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59821           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59822           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59823           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
59824           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59825           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59826           WRITE(M11,5030) CH60
59827           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59828           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59829           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59830           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59831           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59832           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59833           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59834           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59835           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
59836           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
59837           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
59838           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
59839           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59840           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
59841           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
59842           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59843           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59844           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59845         ENDIF
59846
59847 C...APT. Tune A modified to use new pT-ordered FSR.
59848       ELSEIF(ITUNE.EQ.201) THEN
59849         IF (M13.GE.1) THEN 
59850           WRITE(M11,5010) ITUNE, CHNAME
59851           CH60='see P. Skands & D. Wicke, hep-ph/0703081 (Tune APT),'
59852           WRITE(M11,5030) CH60 
59853           CH60='R.D. Field (CDF), in hep-ph/0610012 (Tune A)'
59854           WRITE(M11,5030) CH60
59855           CH60='T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59856           WRITE(M11,5030) CH60
59857           CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59858           WRITE(M11,5030) CH60
59859         ENDIF
59860         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.411))THEN
59861           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59862      &        ' with tune.')       
59863         ENDIF
59864 C...First set as if Pythia tune A
59865 C...Multiple interactions on, old framework
59866         MSTP(81)=1
59867 C...Fast IR cutoff energy scaling by default
59868         PARP(89)=1800D0
59869         PARP(90)=0.25D0
59870 C...Default CTEQ5L (internal)
59871         MSTP(51)=7
59872         MSTP(52)=1
59873 C...Double Gaussian matter distribution. 
59874         MSTP(82)=4
59875         PARP(83)=0.5D0
59876         PARP(84)=0.4D0
59877 C...FSR activity. 
59878         PARP(71)=4D0
59879 c...String drawing almost completely minimizes string length.
59880         PARP(85)=0.9D0
59881         PARP(86)=0.95D0
59882 C...ISR cutoff, muR scale factor, and phase space size
59883         PARP(62)=1D0
59884         PARP(64)=1D0
59885         PARP(67)=4D0
59886 C...Intrinsic kT, size, and max
59887         MSTP(91)=1
59888         PARP(91)=1D0
59889         PARP(93)=5D0
59890 C...Use pT-ordered FSR
59891         MSTJ(41)=12
59892 C...Lambda_FSR scale for pT-ordering 
59893         PARJ(81)=0.23D0
59894 C...Retune pT0
59895         PARP(82)=2.1D0
59896 C...Fragmentation functions and c and b parameters
59897         MSTJ(11)=4
59898         PARJ(54)=-0.05
59899         PARJ(55)=-0.005
59900
59901 C...  Output
59902         IF (M13.GE.1) THEN 
59903           WRITE(M11,5030) ' '
59904           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59905           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59906           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59907           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59908           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
59909           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59910           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59911           WRITE(M11,5030) CH60
59912           WRITE(M11,5070) 41, MSTJ(41), CHMSTJ(41)
59913           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59914           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59915           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59916           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59917           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59918           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59919           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59920           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59921           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59922           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
59923           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
59924           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
59925           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
59926           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59927           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59928           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59929           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59930         ENDIF     
59931
59932 C=============================================================================
59933 C...Uppsala models: Generalized Area Law and Soft Colour Interactions
59934       ELSEIF(CHNAME.EQ.'GAL Tune 0'.OR.CHNAME.EQ.'GAL Tune 1') THEN
59935         IF (M13.GE.1) THEN 
59936           WRITE(M11,5010) ITUNE, CHNAME
59937           CH60='see J. Rathsman, PLB452(1999)364'
59938           WRITE(M11,5030) CH60
59939 C ?         CH60='A. Edin, G. Ingelman, J. Rathsman, hep-ph/9912539,'
59940 C ?         WRITE(M11,5030)
59941           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59942           WRITE(M11,5030) CH60          
59943           WRITE(M11,5030) ' '    
59944           CH70='NB! The GAL model must be run with modified '//
59945      &        'Pythia v6.215:'
59946           WRITE(M11,5035) CH70
59947           CH70='available from http://www.isv.uu.se/thep/MC/scigal/'
59948           WRITE(M11,5035) CH70
59949           WRITE(M11,5030) ' '
59950         ENDIF
59951 C...GAL Recommended settings from Uppsala web page (as per 22/08 2006)
59952         MSWI(2) = 3
59953         PARSCI(2) = 0.10
59954         MSWI(1) = 2
59955         PARSCI(1) = 0.44
59956         MSTJ(16) = 0
59957         PARJ(42) = 0.45
59958         PARJ(82) = 2.0
59959         PARP(62) = 2.0  
59960         MSTP(81) = 1
59961         MSTP(82) = 1
59962         PARP(81) = 1.9
59963         MSTP(92) = 1
59964         IF(CHNAME.EQ.'GAL Tune 1') THEN
59965 C...GAL retune (P. Skands) to get better min-bias <Nch> at Tevatron
59966           MSTP(82)=4
59967           PARP(83)=0.25D0
59968           PARP(84)=0.5D0
59969           PARP(82) = 1.75
59970           IF (M13.GE.1) THEN 
59971             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59972             WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59973             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59974             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59975             WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59976           ENDIF
59977         ELSE
59978           IF (M13.GE.1) THEN
59979             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59980             WRITE(M11,5050) 81, PARP(81), CHPARP(81)
59981             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59982           ENDIF
59983         ENDIF
59984 C...Output
59985         IF (M13.GE.1) THEN
59986           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59987           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
59988           WRITE(M11,5040) 92, MSTP(92), CHMSTP(92)
59989           CH40='FSI SCI/GAL selection'
59990           WRITE(M11,6040) 1, MSWI(1), CH40
59991           CH40='FSI SCI/GAL sea quark treatment'
59992           WRITE(M11,6040) 2, MSWI(2), CH40
59993           CH40='FSI SCI/GAL sea quark treatment parm'
59994           WRITE(M11,6050) 1, PARSCI(1), CH40
59995           CH40='FSI SCI/GAL string reco probability R_0'
59996           WRITE(M11,6050) 2, PARSCI(2), CH40 
59997           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
59998           WRITE(M11,5070) 16, MSTJ(16), CHMSTJ(16)
59999         ENDIF
60000       ELSEIF(CHNAME.EQ.'SCI Tune 0'.OR.CHNAME.EQ.'SCI Tune 1') THEN
60001         IF (M13.GE.1) THEN 
60002           WRITE(M11,5010) ITUNE, CHNAME
60003           CH60='see A.Edin et al, PLB366(1996)371, Z.Phys.C75(1997)57,'
60004           WRITE(M11,5030) CH60
60005           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
60006           WRITE(M11,5030) CH60          
60007           WRITE(M11,5030) ' '    
60008           CH70='NB! The SCI model must be run with modified '//
60009      &        'Pythia v6.215:'
60010           WRITE(M11,5035) CH70
60011           CH70='available from http://www.isv.uu.se/thep/MC/scigal/'
60012           WRITE(M11,5035) CH70
60013           WRITE(M11,5030) ' '
60014         ENDIF
60015 C...SCI Recommended settings from Uppsala web page (as per 22/08 2006)
60016         MSTP(81)=1
60017         MSTP(82)=1
60018         PARP(81)=2.2
60019         MSTP(92)=1        
60020         MSWI(2)=2               
60021         PARSCI(2)=0.50          
60022         MSWI(1)=2               
60023         PARSCI(1)=0.44          
60024         MSTJ(16)=0              
60025         IF (CHNAME.EQ.'SCI Tune 1') THEN
60026 C...SCI retune (P. Skands) to get better min-bias <Nch> at Tevatron
60027           MSTP(81) = 1
60028           MSTP(82) = 3
60029           PARP(82) = 2.4
60030           PARP(83) = 0.5D0
60031           PARP(62) = 1.5
60032           PARP(84)=0.25D0        
60033           IF (M13.GE.1) THEN 
60034             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
60035             WRITE(M11,5050) 82, PARP(82), CHPARP(82)
60036             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
60037             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
60038             WRITE(M11,5050) 62, PARP(62), CHPARP(62)
60039           ENDIF
60040         ELSE
60041           IF (M13.GE.1) THEN
60042             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
60043             WRITE(M11,5050) 81, PARP(81), CHPARP(81)
60044             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
60045           ENDIF
60046         ENDIF
60047 C...Output
60048         IF (M13.GE.1) THEN 
60049           WRITE(M11,5040) 92, MSTP(92), CHMSTP(92)
60050           CH40='FSI SCI/GAL selection'
60051           WRITE(M11,6040) 1, MSWI(1), CH40
60052           CH40='FSI SCI/GAL sea quark treatment'
60053           WRITE(M11,6040) 2, MSWI(2), CH40
60054           CH40='FSI SCI/GAL sea quark treatment parm'
60055           WRITE(M11,6050) 1, PARSCI(1), CH40
60056           CH40='FSI SCI/GAL string reco probability R_0'
60057           WRITE(M11,6050) 2, PARSCI(2), CH40 
60058           WRITE(M11,5070) 16, MSTJ(16), CHMSTJ(16)
60059         ENDIF
60060
60061       ELSE
60062         IF (MSTU(13).GE.1) WRITE(M11,5020) ITUNE
60063
60064       ENDIF   
60065  
60066  9998 IF (MSTU(13).GE.1) WRITE(M11,6000) 
60067
60068  9999 RETURN 
60069
60070  5000 FORMAT(1x,78('*')/' *',76x,'*'/' *',3x,'PYTUNE v',A6,' : ',
60071      &    'Presets for underlying-event (and min-bias)',13x,'*'/' *',
60072      &    20x,'Last Change : ',A8,' - P. Skands',22x,'*'/' *',76x,'*')
60073  5010 FORMAT(' *',3x,I4,1x,A16,52x,'*')
60074  5020 FORMAT(' *',3x,'Tune ',I4, ' not recognized. Using defaults.')
60075  5030 FORMAT(' *',3x,10x,A60,3x,'*')
60076  5035 FORMAT(' *',3x,A70,3x,'*')
60077  5040 FORMAT(' *',5x,'MSTP(',I2,') = ',I12,3x,A42,3x,'*')
60078  5050 FORMAT(' *',5x,'PARP(',I2,') = ',F12.4,3x,A40,5x,'*')
60079  5060 FORMAT(' *',5x,'PARJ(',I2,') = ',F12.4,3x,A40,5x,'*')
60080  5070 FORMAT(' *',5x,'MSTJ(',I2,') = ',I12,3x,A40,5x,'*')
60081  5140 FORMAT(' *',5x,'MSTP(',I3,')= ',I12,3x,A40,5x,'*')
60082  5150 FORMAT(' *',5x,'PARP(',I3,')= ',F12.4,3x,A40,5x,'*')
60083  6000 FORMAT(' *',76x,'*'/1x,32('*'),1x,'END OF PYTUNE',1x,31('*')) 
60084  6040 FORMAT(' *',5x,'MSWI(',I1,')  = ',I12,3x,A40,5x,'*')
60085  6050 FORMAT(' *',5x,'PARSCI(',I1,')= ',F12.4,3x,A40,5x,'*')
60086
60087       END 
60088
60089 C*********************************************************************
60090  
60091 C...PYEXEC
60092 C...Administrates the fragmentation and decay chain.
60093  
60094       SUBROUTINE PYEXEC
60095  
60096 C...Double precision and integer declarations.
60097       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60098       IMPLICIT INTEGER(I-N)
60099       INTEGER PYK,PYCHGE,PYCOMP
60100 C...Commonblocks.
60101       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
60102       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60103       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
60104       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
60105       COMMON/PYINT1/MINT(400),VINT(400)
60106       COMMON/PYINT4/MWID(500),WIDS(500,5)
60107       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYINT4/
60108 C...Local array.
60109       DIMENSION PS(2,6),IJOIN(100)
60110  
60111 C...Initialize and reset.
60112       MSTU(24)=0
60113       IF(MSTU(12).NE.12345) CALL PYLIST(0)
60114       MSTU(29)=0
60115       MSTU(31)=MSTU(31)+1
60116       MSTU(1)=0
60117       MSTU(2)=0
60118       MSTU(3)=0
60119       IF(MSTU(17).LE.0) MSTU(90)=0
60120       MCONS=1
60121  
60122 C...Sum up momentum, energy and charge for starting entries.
60123       NSAV=N
60124       DO 110 I=1,2
60125         DO 100 J=1,6
60126           PS(I,J)=0D0
60127   100   CONTINUE
60128   110 CONTINUE
60129       DO 130 I=1,N
60130         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130
60131         DO 120 J=1,4
60132           PS(1,J)=PS(1,J)+P(I,J)
60133   120   CONTINUE
60134         PS(1,6)=PS(1,6)+PYCHGE(K(I,2))
60135   130 CONTINUE
60136       PARU(21)=PS(1,4)
60137  
60138 C...Start by all decays of coloured resonances involved in shower.
60139       NORIG=N
60140       DO 140 I=1,NORIG
60141         IF(K(I,1).EQ.3) THEN
60142           KC=PYCOMP(K(I,2))
60143           IF(MWID(KC).NE.0.AND.KCHG(KC,2).NE.0) CALL PYRESD(I)
60144         ENDIF
60145   140 CONTINUE
60146  
60147 C...Prepare system for subsequent fragmentation/decay.
60148       CALL PYPREP(0)
60149       IF(MINT(51).NE.0) RETURN
60150  
60151 C...Loop through jet fragmentation and particle decays.
60152       MBE=0
60153   150 MBE=MBE+1
60154       IP=0
60155   160 IP=IP+1
60156       KC=0
60157       IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=PYCOMP(K(IP,2))
60158       IF(KC.EQ.0) THEN
60159  
60160 C...Deal with any remaining undecayed resonance
60161 C...(normally the task of PYEVNT, so seldom used).
60162       ELSEIF(MWID(KC).NE.0) THEN
60163         IBEG=IP
60164         IF(KCHG(KC,2).NE.0.AND.K(I,1).NE.3) THEN
60165           IBEG=IP+1
60166   170     IBEG=IBEG-1
60167           IF(IBEG.GE.2.AND.K(IBEG,1).EQ.2) GOTO 170
60168           IF(K(IBEG,1).NE.2) IBEG=IBEG+1
60169           IEND=IP-1
60170   180     IEND=IEND+1
60171           IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 180
60172           IF(IEND.LT.N.AND.KCHG(PYCOMP(K(IEND,2)),2).EQ.0) GOTO 180
60173           NJOIN=0
60174           DO 190 I=IBEG,IEND
60175             IF(KCHG(PYCOMP(K(IEND,2)),2).NE.0) THEN
60176               NJOIN=NJOIN+1
60177               IJOIN(NJOIN)=I
60178             ENDIF
60179   190     CONTINUE
60180         ENDIF
60181         CALL PYRESD(IP)
60182         CALL PYPREP(IBEG)
60183         IF(MINT(51).NE.0) RETURN
60184  
60185 C...Particle decay if unstable and allowed. Save long-lived particle
60186 C...decays until second pass after Bose-Einstein effects.
60187       ELSEIF(KCHG(KC,2).EQ.0) THEN
60188         IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE
60189      &  .EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311))
60190      &  CALL PYDECY(IP)
60191  
60192 C...Decay products may develop a shower.
60193         IF(MSTJ(92).GT.0) THEN
60194           IP1=MSTJ(92)
60195           QMAX=SQRT(MAX(0D0,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
60196      &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
60197           MINT(33)=0
60198           CALL PYSHOW(IP1,IP1+1,QMAX)
60199           CALL PYPREP(IP1)
60200           IF(MINT(51).NE.0) RETURN
60201           MSTJ(92)=0
60202         ELSEIF(MSTJ(92).LT.0) THEN
60203           IP1=-MSTJ(92)
60204           MINT(33)=0
60205           CALL PYSHOW(IP1,-3,P(IP,5))
60206           CALL PYPREP(IP1)
60207           IF(MINT(51).NE.0) RETURN
60208           MSTJ(92)=0
60209         ENDIF
60210  
60211 C...Jet fragmentation: string or independent fragmentation.
60212       ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN
60213         MFRAG=MSTJ(1)
60214         IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2
60215         IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN
60216           IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND.
60217      &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN
60218             IF(KCHG(PYCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG)
60219           ENDIF
60220         ENDIF
60221         IF(MFRAG.EQ.1) CALL PYSTRF(IP)
60222         IF(MFRAG.EQ.2) CALL PYINDF(IP)
60223         IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0
60224         IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0
60225       ENDIF
60226  
60227 C...Loop back if enough space left in PYJETS and no error abort.
60228       IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN
60229       ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN
60230         GOTO 160
60231       ELSEIF(IP.LT.N) THEN
60232         CALL PYERRM(11,'(PYEXEC:) no more memory left in PYJETS')
60233       ENDIF
60234  
60235 C...Include simple Bose-Einstein effect parametrization if desired.
60236       IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN
60237         CALL PYBOEI(NSAV)
60238         GOTO 150
60239       ENDIF
60240  
60241 C...Check that momentum, energy and charge were conserved.
60242       DO 210 I=1,N
60243         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 210
60244         DO 200 J=1,4
60245           PS(2,J)=PS(2,J)+P(I,J)
60246   200   CONTINUE
60247         PS(2,6)=PS(2,6)+PYCHGE(K(I,2))
60248   210 CONTINUE
60249       PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)-
60250      &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1D0+ABS(PS(2,4))+ABS(PS(1,4)))
60251       IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL PYERRM(15,
60252      &'(PYEXEC:) four-momentum was not conserved')
60253       IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1D0) CALL PYERRM(15,
60254      &'(PYEXEC:) charge was not conserved')
60255  
60256       RETURN
60257       END
60258  
60259 C*********************************************************************
60260  
60261 C...PYPREP
60262 C...Rearranges partons along strings.
60263 C...Special considerations for systems with junctions, with
60264 C...possibility of junction-antijunction annihilation.
60265 C...Allows small systems to collapse into one or two particles.
60266 C...Checks flavours and colour singlet invariant masses.
60267  
60268       SUBROUTINE PYPREP(IP)
60269  
60270 C...Double precision and integer declarations.
60271       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60272       INTEGER PYK,PYCHGE,PYCOMP
60273 C...Commonblocks.
60274       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
60275       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60276       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
60277       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
60278       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
60279       COMMON/PYINT1/MINT(400),VINT(400)
60280 C...The common block of colour tags.
60281       COMMON/PYCTAG/NCT,MCT(4000,2)
60282       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYCTAG/,
60283      &/PYPARS/
60284       DATA NERRPR/0/
60285       SAVE NERRPR
60286 C...Local arrays.
60287       DIMENSION DPS(5),DPC(5),UE(3),PG(5),E1(3),E2(3),E3(3),E4(3),
60288      &ECL(3),IJUNC(10,0:4),IPIECE(30,0:4),KFEND(4),KFQ(4),
60289      &IJUR(4),PJU(4,6),IRNG(4,2),TJJ(2,5),T(5),PUL(3,5),
60290      &IJCP(0:6),TJUOLD(5)
60291       CHARACTER CHTMP*6
60292  
60293 C...Function to give four-product.
60294       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)
60295  
60296 C...Rearrange parton shower product listing along strings: begin loop.
60297       MSTU(24)=0
60298       NOLD=N
60299       I1=N
60300       NJUNC=0
60301       NPIECE=0
60302       NJJSTR=0
60303       MSTU32=MSTU(32)+1
60304       DO 100 I=MAX(1,IP),N
60305 C...First store junction positions.
60306         IF(K(I,1).EQ.42) THEN
60307           NJUNC=NJUNC+1
60308           IJUNC(NJUNC,0)=I
60309           IJUNC(NJUNC,4)=0
60310         ENDIF
60311   100 CONTINUE
60312  
60313       DO 250 MQGST=1,3
60314         DO 240 I=MAX(1,IP),N
60315 C...Special treatment for junctions
60316           IF (K(I,1).LE.0) GOTO 240
60317           IF(K(I,1).EQ.42) THEN
60318 C...MQGST=2: Look for junction-junction strings (not detected in the
60319 C...main search below).
60320             IF (MQGST.EQ.2.AND.NPIECE.NE.3*NJUNC) THEN
60321               IF (NJJSTR.EQ.0) THEN
60322                 NJJSTR = (3*NJUNC-NPIECE)/2
60323               ENDIF
60324 C...Check how many already identified strings end on this junction
60325               ILC=0
60326               DO 110 J=1,NPIECE
60327                 IF (IPIECE(J,4).EQ.I) ILC=ILC+1
60328   110         CONTINUE
60329 C...If less than 3, remaining must be to another junction
60330               IF (ILC.LT.3) THEN
60331                 IF (ILC.NE.2) THEN
60332 C...Multiple j-j connections not handled yet.
60333                   CALL PYERRM(2,
60334      &            '(PYPREP:) Too many junction-junction strings.')
60335                   MINT(51)=1
60336                   RETURN
60337                 ENDIF
60338 C...The colour information in the junction is unreadable for the
60339 C...colour space search further down in this routine, so we must
60340 C...start on the colour mother of this junction and then "artificially"
60341 C...prevent the colour mother from connecting here again.
60342                 ITJUNC=MOD(K(I,4)/MSTU(5),MSTU(5))
60343                 KCS=4
60344                 IF (MOD(ITJUNC,2).EQ.0) KCS=5
60345 C...Switch colour if the junction-junction leg is presumably a
60346 C...junction mother leg rather than a junction daughter leg.
60347                 IF (ITJUNC.GE.3) KCS=9-KCS
60348                 IF (MINT(33).EQ.0) THEN
60349 C...Find the unconnected leg and reorder junction daughter pointers so
60350 C...MOD(K(I,4),MSTU(5)) always points to the junction-junction string
60351 C...piece.
60352                   IA=MOD(K(I,4),MSTU(5))
60353                   IF (K(IA,KCS)/MSTU(5)**2.GE.2) THEN
60354                     ITMP=MOD(K(I,5),MSTU(5))
60355                     IF (K(ITMP,KCS)/MSTU(5)**2.GE.2) THEN
60356                       ITMP=MOD(K(I,5)/MSTU(5),MSTU(5))
60357                       K(I,5)=K(I,5)+(IA-ITMP)*MSTU(5)
60358                     ELSE
60359                       K(I,5)=K(I,5)+(IA-ITMP)
60360                     ENDIF
60361                     K(I,4)=K(I,4)+(ITMP-IA)
60362                     IA=ITMP
60363                   ENDIF
60364                   IF (ITJUNC.LE.2) THEN
60365 C...Beam baryon junction
60366                     K(IA,KCS)   = K(IA,KCS) + 2*MSTU(5)**2
60367                     K(I,KCS)    = K(I,KCS) + 1*MSTU(5)**2
60368 C...Else 1 -> 2 decay junction
60369                   ELSE
60370                     K(IA,KCS)   = K(IA,KCS) + MSTU(5)**2
60371                     K(I,KCS)    = K(I,KCS) + 2*MSTU(5)**2
60372                   ENDIF
60373                   I1BEG = I1
60374                   NSTP = 0
60375                   GOTO 170
60376 C...Alternatively use colour tag information.
60377                 ELSE
60378 C...Find a final state parton with appropriate dangling colour tag.
60379                   JCT=0
60380                   IA=0
60381                   IJUMO=K(I,3)
60382                   DO 140 J1=MAX(1,IP),N
60383                     IF (K(J1,1).NE.3) GOTO 140
60384 C...Check for matching final-state colour tag
60385                     IMATCH=0
60386                     DO 120 J2=MAX(1,IP),N
60387                       IF (K(J2,1).NE.3) GOTO 120
60388                       IF (MCT(J1,KCS-3).EQ.MCT(J2,6-KCS)) IMATCH=1
60389   120               CONTINUE
60390                     IF (IMATCH.EQ.1) GOTO 140
60391 C...Check whether this colour tag belongs to the present junction
60392 C...by seeing whether any parton with this colour tag has the same
60393 C...mother as the junction.
60394                     JCT=MCT(J1,KCS-3)
60395                     IMATCH=0
60396                     DO 130 J2=MINT(84)+1,N
60397                       IMO2=K(J2,3)
60398 C...First scattering partons have IMO1 = 3 and 4.
60399                       IF (IMO2.EQ.MINT(83)+3.OR.IMO2.EQ.MINT(83)+4)
60400      &                     IMO2=IMO2-2
60401                       IF (MCT(J2,KCS-3).EQ.JCT.AND.IMO2.EQ.IJUMO)
60402      &                     IMATCH=1
60403   130               CONTINUE
60404                     IF (IMATCH.EQ.0) GOTO 140
60405                     IA=J1
60406   140             CONTINUE
60407 C...Check for junction-junction strings without intermediate final state
60408 C...glue (not detected above).
60409                   IF (IA.EQ.0) THEN
60410                     DO 160 MJU=1,NJUNC
60411                       IJU2=IJUNC(MJU,0)
60412                       IF (IJU2.EQ.I) GOTO 160
60413                       ITJU2=MOD(K(IJU2,4)/MSTU(5),MSTU(5))
60414 C...Only opposite types of junctions can connect to each other.
60415                       IF (MOD(ITJU2,2).EQ.MOD(ITJUNC,2)) GOTO 160
60416                       IS=0
60417                       DO 150 J=1,NPIECE
60418                         IF (IPIECE(J,4).EQ.IJU2) IS=IS+1
60419   150                 CONTINUE
60420                       IF (IS.EQ.3) GOTO 160
60421                       IB=I
60422                       IA=IJU2
60423   160               CONTINUE
60424                   ENDIF
60425 C...Switch to other side of adjacent parton and step from there.
60426                   KCS=9-KCS
60427                   I1BEG = I1
60428                   NSTP = 0
60429                   GOTO 170
60430                 ENDIF
60431               ELSE IF (ILC.NE.3) THEN
60432               ENDIF
60433             ENDIF
60434           ENDIF
60435  
60436 C...Look for coloured string endpoint, or (later) leftover gluon.
60437           IF(K(I,1).NE.3) GOTO 240
60438           KC=PYCOMP(K(I,2))
60439           IF(KC.EQ.0) GOTO 240
60440           KQ=KCHG(KC,2)
60441           IF(KQ.EQ.0.OR.(MQGST.LE.2.AND.KQ.EQ.2)) GOTO 240
60442  
60443 C...Pick up loose string end.
60444           KCS=4
60445           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
60446           IA=I
60447           IB=I
60448           I1BEG=I1
60449           NSTP=0
60450   170     NSTP=NSTP+1
60451           IF(NSTP.GT.4*N) THEN
60452             CALL PYERRM(14,'(PYPREP:) caught in infinite loop')
60453             MINT(51)=1
60454             RETURN
60455           ENDIF
60456  
60457 C...Copy undecayed parton. Finished if reached string endpoint.
60458           IF(K(IA,1).EQ.3) THEN
60459             IF(I1.GE.MSTU(4)-MSTU32-5) THEN
60460               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
60461               MINT(51)=1
60462               MSTU(24)=1
60463               RETURN
60464             ENDIF
60465             I1=I1+1
60466             K(I1,1)=2
60467             IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) K(I1,1)=1
60468             K(I1,2)=K(IA,2)
60469             K(I1,3)=IA
60470             K(I1,4)=0
60471             K(I1,5)=0
60472             DO 180 J=1,5
60473               P(I1,J)=P(IA,J)
60474               V(I1,J)=V(IA,J)
60475   180       CONTINUE
60476             K(IA,1)=K(IA,1)+10
60477             IF(K(I1,1).EQ.1) GOTO 240
60478           ENDIF
60479  
60480 C...Also finished (for now) if reached junction; then copy to end.
60481           IF(K(IA,1).EQ.42) THEN
60482             NCOPY=I1-I1BEG
60483             IF(I1.GE.MSTU(4)-MSTU32-NCOPY-5) THEN
60484               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
60485               MINT(51)=1
60486               MSTU(24)=1
60487               RETURN
60488             ENDIF
60489             IF (MQGST.LE.2.AND.NCOPY.NE.0) THEN
60490               DO 200 ICOPY=1,NCOPY
60491                 DO 190 J=1,5
60492                   K(MSTU(4)-MSTU32-ICOPY,J)=K(I1BEG+ICOPY,J)
60493                   P(MSTU(4)-MSTU32-ICOPY,J)=P(I1BEG+ICOPY,J)
60494                   V(MSTU(4)-MSTU32-ICOPY,J)=V(I1BEG+ICOPY,J)
60495   190           CONTINUE
60496   200         CONTINUE
60497             ENDIF
60498 C...For junction-junction strings, find end leg and reorder junction
60499 C...daughter pointers so MOD(K(I,4),MSTU(5)) always points to the
60500 C...junction-junction string piece.
60501             IF (K(I,1).EQ.42.AND.MINT(33).EQ.0) THEN
60502               ITMP=MOD(K(IA,4),MSTU(5))
60503               IF (ITMP.NE.IB) THEN
60504                 IF (MOD(K(IA,5),MSTU(5)).EQ.IB) THEN
60505                   K(IA,5)=K(IA,5)+(ITMP-IB)
60506                 ELSE
60507                   K(IA,5)=K(IA,5)+(ITMP-IB)*MSTU(5)
60508                 ENDIF
60509                 K(IA,4)=K(IA,4)+(IB-ITMP)
60510               ENDIF
60511             ENDIF
60512             NPIECE=NPIECE+1
60513 C...IPIECE:
60514 C...0: endpoint in original ER
60515 C...1:
60516 C...2:
60517 C...3: Parton immediately next to junction
60518 C...4: Junction
60519             IPIECE(NPIECE,0)=I
60520             IPIECE(NPIECE,1)=MSTU32+1
60521             IPIECE(NPIECE,2)=MSTU32+NCOPY
60522             IPIECE(NPIECE,3)=IB
60523             IPIECE(NPIECE,4)=IA
60524             MSTU32=MSTU32+NCOPY
60525             I1=I1BEG
60526             GOTO 240
60527           ENDIF
60528  
60529 C...GOTO next parton in colour space.
60530           IB=IA
60531           IF (MINT(33).EQ.0) THEN
60532             IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5
60533      &           )).NE.0) THEN
60534               IA=MOD(K(IB,KCS),MSTU(5))
60535               K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
60536               MREV=0
60537             ELSE
60538               IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
60539      &             MSTU(5)).EQ.0) KCS=9-KCS
60540               IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
60541               K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
60542               MREV=1
60543             ENDIF
60544             IF(IA.LE.0.OR.IA.GT.N) THEN
60545               CALL PYERRM(12,'(PYPREP:) colour rearrangement failed')
60546               IF(NERRPR.LT.5) THEN
60547                 NERRPR=NERRPR+1
60548                 WRITE(MSTU(11),*) 'started at:', I
60549                 WRITE(MSTU(11),*) 'ended going from',IB,' to',IA
60550                 WRITE(MSTU(11),*) 'MQGST =',MQGST
60551                 CALL PYLIST(4)
60552               ENDIF
60553               MINT(51)=1
60554               RETURN
60555             ENDIF
60556             IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5)
60557      &           ,MSTU(5)).EQ.IB) THEN
60558               IF(MREV.EQ.1) KCS=9-KCS
60559               IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
60560               K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
60561             ELSE
60562               IF(MREV.EQ.0) KCS=9-KCS
60563               IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
60564               K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
60565             ENDIF
60566             IF(IA.NE.I) GOTO 170
60567 C...Use colour tag information
60568           ELSE
60569 C...First create colour tags starting on IB if none already present.
60570             IF (MCT(IB,KCS-3).EQ.0) THEN
60571               CALL PYCTTR(IB,KCS,IB)
60572               IF(MINT(51).NE.0) RETURN
60573             ENDIF
60574             JCT=MCT(IB,KCS-3)
60575             IFOUND=0
60576 C...Find final state tag partner
60577             DO 210 IT=MAX(1,IP),N
60578               IF (IT.EQ.IB) GOTO 210
60579               IF (MCT(IT,6-KCS).EQ.JCT.AND.K(IT,1).LT.10.AND.K(IT,1).GT
60580      &             .0) THEN
60581                 IFOUND=IFOUND+1
60582                 IA=IT
60583               ENDIF
60584   210       CONTINUE
60585 C...Just copy and goto next if exactly one partner found.
60586             IF (IFOUND.EQ.1) THEN
60587               GOTO 170
60588 C...When no match found, match is presumably junction.
60589             ELSEIF (IFOUND.EQ.0.AND.MQGST.LE.2) THEN
60590 C...Check whether this colour tag matches a junction
60591 C...by seeing whether any parton with this colour tag has the same
60592 C...mother as a junction.
60593 C...NB: Only type 1 and 2 junctions handled presently.
60594               DO 230 IJU=1,NJUNC
60595                 IJUMO=K(IJUNC(IJU,0),3)
60596                 ITJUNC=MOD(K(IJUNC(IJU,0),4)/MSTU(5),MSTU(5))
60597 C...Colours only connect to junctions, anti-colours to antijunctions:
60598                 IF (MOD(ITJUNC+1,2)+1.NE.KCS-3) GOTO 230
60599                 IMATCH=0
60600                 DO 220 J1=MAX(1,IP),N
60601                   IF (K(J1,1).LE.0) GOTO 220
60602 C...First scattering partons have IMO1 = 3 and 4.
60603                   IMO=K(J1,3)
60604                   IF (IMO.EQ.MINT(83)+3.OR.IMO.EQ.MINT(83)+4)
60605      &                 IMO=IMO-2
60606                   IF (MCT(J1,KCS-3).EQ.JCT.AND.IMO.EQ.IJUMO.AND.MOD(K(J1
60607      &                 ,3+ITJUNC)/MSTU(5),MSTU(5)).EQ.IJUNC(IJU,0))
60608      &                 IMATCH=1
60609 C...Attempt at handling type > 3 junctions also. Not tested.
60610                   IF (ITJUNC.GE.3.AND.MCT(J1,6-KCS).EQ.JCT.AND.IMO.EQ
60611      &                 .IJUMO) IMATCH=1
60612   220           CONTINUE
60613                 IF (IMATCH.EQ.0) GOTO 230
60614                 IA=IJUNC(IJU,0)
60615                 IFOUND=IFOUND+1
60616   230         CONTINUE
60617  
60618               IF (IFOUND.EQ.1) THEN
60619                 GOTO 170
60620               ELSEIF (IFOUND.EQ.0) THEN
60621                 WRITE(CHTMP,*) JCT
60622                 CALL PYERRM(12,'(PYPREP:) no matching colour tag: '
60623      &               //CHTMP)
60624                 IF(NERRPR.LT.5) THEN
60625                   NERRPR=NERRPR+1
60626                   CALL PYLIST(4)
60627                 ENDIF
60628                 MINT(51)=1
60629                 RETURN
60630               ENDIF
60631             ELSEIF (IFOUND.GE.2) THEN
60632               WRITE(CHTMP,*) JCT
60633               CALL PYERRM(12
60634      &             ,'(PYPREP:) too many occurences of colour line: '//
60635      &             CHTMP)
60636               IF(NERRPR.LT.5) THEN
60637                 NERRPR=NERRPR+1
60638                 CALL PYLIST(4)
60639               ENDIF
60640               MINT(51)=1
60641               RETURN
60642             ENDIF
60643           ENDIF
60644           K(I1,1)=1
60645   240   CONTINUE
60646   250 CONTINUE
60647  
60648 C...Junction systems remain.
60649       IJU=0
60650       IJUS=0
60651       IJUCNT=0
60652       MREV=0
60653       IJJSTR=0
60654   260 IJUCNT=IJUCNT+1
60655       IF (IJUCNT.LE.NJUNC) THEN
60656 C...If we are not processing a j-j string, treat this junction as new.
60657         IF (IJJSTR.EQ.0) THEN
60658           IJU=IJUNC(IJUCNT,0)
60659           MREV=0
60660 C...If junction has already been read, ignore it.
60661           IF (IJUNC(IJUCNT,4).EQ.1) GOTO 260
60662 C...If we are on a j-j string, goto second j-j junction.
60663         ELSE
60664           IJUCNT=IJUCNT-1
60665           IJU=IJUS
60666         ENDIF
60667 C...Mark selected junction read.
60668         DO 270 J=1,NJUNC
60669           IF (IJUNC(J,0).EQ.IJU) IJUNC(J,4)=1
60670   270   CONTINUE
60671 C...Determine junction type
60672         ITJUNC = MOD(K(IJU,4)/MSTU(5),MSTU(5))
60673 C...Type 1 and 2 junctions: ~chi -> q q q, ~chi -> qbar,qbar,qbar
60674 C...Type 3 and 4 junctions: ~qbar -> q q , ~q -> qbar qbar
60675 C...Type 5 and 6 junctions: ~g -> q q q, ~g -> qbar qbar qbar
60676         IF (ITJUNC.GE.1.AND.ITJUNC.LE.6) THEN
60677           IHK=0
60678   280     IHK=IHK+1
60679 C...Find which quarks belong to given junction.
60680           IHF=0
60681           DO 290 IPC=1,NPIECE
60682             IF (IPIECE(IPC,4).EQ.IJU) THEN
60683               IHF=IHF+1
60684               IF (IHF.EQ.IHK) IEND=IPIECE(IPC,3)
60685             ENDIF
60686             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJU) IEND=IPIECE(IPC,3)
60687   290     CONTINUE
60688 C...IHK = 3 is special. Either normal string piece, or j-j string.
60689           IF(IHK.EQ.3) THEN
60690             IF (MREV.NE.1) THEN
60691               DO 300 IPC=1,NPIECE
60692 C...If there is a j-j string starting on the present junction which has
60693 C...zero length, insert next junction immediately.
60694                 IF (IPIECE(IPC,0).EQ.IJU.AND.K(IPIECE(IPC,4),1)
60695      &          .EQ.42.AND.IPIECE(IPC,1)-1-IPIECE(IPC,2).EQ.0) THEN
60696                   IJJSTR = 1
60697                   GOTO 340
60698                 ENDIF
60699   300         CONTINUE
60700               MREV = 1
60701 C...If MREV is 1 and IHK is 3 we are finished with this system.
60702             ELSE
60703               MREV=0
60704               GOTO 260
60705             ENDIF
60706           ENDIF
60707  
60708 C...If we've gotten this far, then either IHK < 3, or
60709 C...an interjunction string exists, or just a third normal string.
60710           IJUNC(IJUCNT,IHK)=0
60711           IJJSTR = 0
60712 C..Order pieces belonging to this junction. Also look for j-j.
60713           DO 310 IPC=1,NPIECE
60714             IF (IPIECE(IPC,3).EQ.IEND) IJUNC(IJUCNT,IHK)=IPC
60715             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJUNC(IJUCNT,0)
60716      &      .AND.K(IPIECE(IPC,4),1).EQ.42) THEN
60717               IJUNC(IJUCNT,IHK)=IPC
60718               IJJSTR = 1
60719               MREV = 0
60720             ENDIF
60721   310     CONTINUE
60722 C...Copy back chains in proper order. MREV=0/1 : descending/ascending
60723           IPC=IJUNC(IJUCNT,IHK)
60724 C...Temporary solution to cover for bug.
60725           IF(IPC.LE.0) THEN
60726             CALL PYERRM(12,'(PYPREP:) fails to hook up junctions')
60727             MINT(51)=1
60728             RETURN
60729           ENDIF
60730           DO 330 ICP=IPIECE(IPC,1+MREV),IPIECE(IPC,2-MREV),1-2*MREV
60731             I1=I1+1
60732             DO 320 J=1,5
60733               K(I1,J)=K(MSTU(4)-ICP,J)
60734               P(I1,J)=P(MSTU(4)-ICP,J)
60735               V(I1,J)=V(MSTU(4)-ICP,J)
60736   320       CONTINUE
60737   330     CONTINUE
60738           K(I1,1)=2
60739 C...Mark last quark.
60740           IF (MREV.EQ.1.AND.IHK.GE.2) K(I1,1)=1
60741 C...Do not insert junctions at wrong places.
60742           IF(IHK.LT.2.OR.MREV.NE.0) GOTO 360
60743 C...Insert junction.
60744   340     IJUS = IJU
60745           IF (IHK.EQ.3) THEN
60746 C...Shift to end junction if a j-j string has been processed.
60747             IF (IJJSTR.NE.0) IJUS = IPIECE(IPC,4)
60748             MREV= 1
60749           ENDIF
60750           I1=I1+1
60751           DO 350 J=1,5
60752             K(I1,J)=0
60753             P(I1,J)=0.
60754             V(I1,J)=0.
60755   350     CONTINUE
60756           K(I1,1)=41
60757           K(IJUS,1)=K(IJUS,1)+10
60758           K(I1,2)=K(IJUS,2)
60759           K(I1,3)=IJUS
60760   360     IF (IHK.LT.3) GOTO 280
60761         ELSE
60762           CALL PYERRM(12,'(PYPREP:) Unknown junction type')
60763           MINT(51)=1
60764           RETURN
60765         ENDIF
60766         IF (IJUCNT.NE.NJUNC) GOTO 260
60767       ENDIF
60768       N=I1
60769  
60770 C...Rearrange three strings from junction, e.g. in case one has been
60771 C...shortened by shower, so the last is the largest-energy one.
60772       IF(NJUNC.GE.1) THEN
60773 C...Find systems with exactly one junction.
60774         MJUN1=0
60775         NBEG=NOLD+1
60776         DO 470 I=NOLD+1,N
60777           IF(K(I,1).NE.1.AND.K(I,1).NE.41) THEN
60778           ELSEIF(K(I,1).EQ.41) THEN
60779             MJUN1=MJUN1+1
60780           ELSEIF(K(I,1).EQ.1.AND.MJUN1.NE.1) THEN
60781             MJUN1=0
60782             NBEG=I+1
60783           ELSE
60784             NEND=I
60785 C...Sum up energy-momentum in each junction string.
60786             DO 370 J=1,5
60787               PJU(1,J)=0D0
60788               PJU(2,J)=0D0
60789               PJU(3,J)=0D0
60790   370       CONTINUE
60791             NJU=0
60792             DO 390 I1=NBEG,NEND
60793               IF(K(I1,2).NE.21) THEN
60794                 NJU=NJU+1
60795                 IJUR(NJU)=I1
60796               ENDIF
60797               DO 380 J=1,5
60798                 PJU(MIN(NJU,3),J)=PJU(MIN(NJU,3),J)+P(I1,J)
60799   380         CONTINUE
60800   390       CONTINUE
60801 C...Find which of them has highest energy (minus mass) in rest frame.
60802             DO 400 J=1,5
60803               PJU(4,J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
60804   400       CONTINUE
60805             PMJU=SQRT(MAX(0D0,PJU(4,4)**2-PJU(4,1)**2-PJU(4,2)**2-
60806      &      PJU(4,3)**2))
60807             DO 410 I2=1,3
60808               PJU(I2,6)=(PJU(4,4)*PJU(I2,4)-PJU(4,1)*PJU(I2,1)-
60809      &        PJU(4,2)*PJU(I2,2)-PJU(4,3)*PJU(I2,3))/PMJU-PJU(I2,5)
60810   410       CONTINUE
60811             IF(PJU(3,6).LT.MIN(PJU(1,6),PJU(2,6))) THEN
60812 C...Decide how to rearrange so that new last has highest energy.
60813               IF(PJU(1,6).LT.PJU(2,6)) THEN
60814                 IRNG(1,1)=IJUR(1)
60815                 IRNG(1,2)=IJUR(2)-1
60816                 IRNG(2,1)=IJUR(4)
60817                 IRNG(2,2)=IJUR(3)+1
60818                 IRNG(4,1)=IJUR(3)-1
60819                 IRNG(4,2)=IJUR(2)
60820               ELSE
60821                 IRNG(1,1)=IJUR(4)
60822                 IRNG(1,2)=IJUR(3)+1
60823                 IRNG(2,1)=IJUR(2)
60824                 IRNG(2,2)=IJUR(3)-1
60825                 IRNG(4,1)=IJUR(2)-1
60826                 IRNG(4,2)=IJUR(1)
60827               ENDIF
60828               IRNG(3,1)=IJUR(3)
60829               IRNG(3,2)=IJUR(3)
60830 C...Copy in correct order below bottom of current event record.
60831               I2=N
60832               DO 440 II=1,4
60833                 DO 430 I1=IRNG(II,1),IRNG(II,2),
60834      &          ISIGN(1,IRNG(II,2)-IRNG(II,1))
60835                   I2=I2+1
60836                   IF(I2.GE.MSTU(4)-MSTU32-5) THEN
60837                     CALL PYERRM(11,
60838      &              '(PYPREP:) no more memory left in PYJETS')
60839                     MINT(51)=1
60840                     MSTU(24)=1
60841                     RETURN
60842                   ENDIF
60843                   DO 420 J=1,5
60844                     K(I2,J)=K(I1,J)
60845                     P(I2,J)=P(I1,J)
60846                     V(I2,J)=V(I1,J)
60847   420             CONTINUE
60848                   IF(K(I2,1).EQ.1) K(I2,1)=2
60849   430           CONTINUE
60850   440         CONTINUE
60851               K(I2,1)=1
60852 C...Copy back up, overwriting but now in correct order.
60853               DO 460 I1=NBEG,NEND
60854                 I2=I1-NBEG+N+1
60855                 DO 450 J=1,5
60856                   K(I1,J)=K(I2,J)
60857                   P(I1,J)=P(I2,J)
60858                   V(I1,J)=V(I2,J)
60859   450           CONTINUE
60860   460         CONTINUE
60861             ENDIF
60862             MJUN1=0
60863             NBEG=I+1
60864           ENDIF
60865   470   CONTINUE
60866  
60867 C...Check whether q-q-j-j-qbar-qbar systems should be collapsed
60868 C...to two q-qbar systems.
60869 C...(MSTJ(19)=1 forces q-q-j-j-qbar-qbar.)
60870         IF (MSTJ(19).NE.1) THEN
60871           MJUN1  = 0
60872           JJGLUE = 0
60873           NBEG   = NOLD+1
60874 C...Force collapse when MSTJ(19)=2.
60875           IF (MSTJ(19).EQ.2) THEN
60876             DELMJJ = 1D9
60877             DELMQQ = 0D0
60878           ENDIF
60879 C...Find systems with exactly two junctions.
60880           DO 700 I=NOLD+1,N
60881 C...Count junctions
60882             IF (K(I,1).EQ.41) THEN
60883               MJUN1 = MJUN1+1
60884 C...Check for interjunction gluons
60885               IF (MJUN1.EQ.2.AND.K(I-1,1).NE.41) THEN
60886                 JJGLUE = 1
60887               ENDIF
60888             ELSEIF(K(I,1).EQ.1.AND.(MJUN1.NE.2)) THEN
60889 C...If end of system reached with either zero or one junction, restart
60890 C...with next system.
60891               MJUN1  = 0
60892               JJGLUE = 0
60893               NBEG   = I+1
60894             ELSEIF(K(I,1).EQ.1) THEN
60895 C...If end of system reached with exactly two junctions, compute string
60896 C...length measure for the (q-q-j-j-qbar-qbar) topology and compare with
60897 C...length measure for the (q-qbar)(q-qbar) topology.
60898               NEND=I
60899 C...Loop down through chain.
60900               ISID=0
60901               DO 480 I1=NBEG,NEND
60902 C...Store string piece division locations in event record
60903                 IF (K(I1,2).NE.21) THEN
60904                   ISID       = ISID+1
60905                   IJCP(ISID) = I1
60906                 ENDIF
60907   480         CONTINUE
60908 C...Randomly choose between (1,3)(2,4) and (1,4)(2,3) topologies.
60909               ISW=0
60910               IF (PYR(0).LT.0.5D0) ISW=1
60911 C...Randomly choose which qqbar string gets the jj gluons.
60912               IGS=1
60913               IF (PYR(0).GT.0.5D0) IGS=2
60914 C...Only compute string lengths when no topology forced.
60915               IF (MSTJ(19).EQ.0) THEN
60916 C...Repeat following for each junction
60917                 DO 570 IJU=1,2
60918 C...Initialize iterative procedure for finding JRF
60919                   IJRFIT=0
60920                   DO 490 IX=1,3
60921                     TJUOLD(IX)=0D0
60922   490             CONTINUE
60923                   TJUOLD(4)=1D0
60924 C...Start iteration. Sum up momenta in string pieces
60925   500             DO 540 IJS=1,3
60926 C...JD=-1 for first junction, +1 for second junction.
60927 C...Find out where piece starts and ends and which direction to go.
60928                     JD=2*IJU-3
60929                     IF (IJS.LE.2) THEN
60930                       IA = IJCP((IJU-1)*7 - JD*(IJS+1)) + JD
60931                       IB = IJCP((IJU-1)*7 - JD*IJS)
60932                     ELSEIF (IJS.EQ.3) THEN
60933                       JD =-JD
60934                       IA = IJCP((IJU-1)*7 + JD*(IJS)) + JD
60935                       IB = IJCP((IJU-1)*7 + JD*(IJS+3))
60936                     ENDIF
60937 C...Initialize junction pull 4-vector.
60938                     DO 510 J=1,5
60939                       PUL(IJS,J)=0D0
60940   510               CONTINUE
60941 C...Initialize weight
60942                     PWT = 0D0
60943                     PWTOLD = 0D0
60944 C...Sum up (weighted) momenta along each string piece
60945                     DO 530 ISP=IA,IB,JD
60946 C...If present parton not last in chain
60947                       IF (ISP.NE.IA.AND.ISP.NE.IB) THEN
60948 C...If last parton was a junction, store present weight
60949                         IF (K(ISP-JD,2).EQ.88) THEN
60950                           PWTOLD = PWT
60951 C...If last parton was a quark, reset to stored weight.
60952                         ELSEIF (K(ISP-JD,2).NE.21) THEN
60953                           PWT = PWTOLD
60954                         ENDIF
60955                       ENDIF
60956 C...Skip next parton if weight already large
60957                       IF (PWT.GT.10D0) GOTO 530
60958 C...Compute momentum in TJUOLD frame:
60959                       TDP=TJUOLD(1)*P(ISP,1)+TJUOLD(2)*P(ISP,2)+TJUOLD(3
60960      &                     )*P(ISP,3)
60961                       BFC=TDP/(1D0+TJUOLD(4))+P(ISP,4)
60962                       DO 520 J=1,3
60963                         TMP=P(ISP,J)+TJUOLD(J)*BFC
60964                         PUL(IJS,J)=PUL(IJS,J)+TMP*EXP(-PWT)
60965   520                 CONTINUE
60966 C...Boosted energy
60967                       TMP=TJUOLD(4)*P(ISP,4)+TDP
60968                       PUL(IJS,4)=PUL(IJS,J)+TMP*EXP(-PWT)
60969 C...Update weight
60970                       PWT=PWT+TMP/PARJ(48)
60971 C...Put |p| rather than m in 5th slot
60972                       PUL(IJS,5)=SQRT(PUL(IJS,1)**2+PUL(IJS,2)**2
60973      &                     +PUL(IJS,3)**2)
60974   530               CONTINUE
60975   540             CONTINUE
60976 C...Compute boost
60977                   IJRFIT=IJRFIT+1
60978                   CALL PYJURF(PUL,T)
60979 C...Combine new boost (T) with old boost (TJUOLD)
60980                   TMP=T(1)*TJUOLD(1)+T(2)*TJUOLD(2)+T(3)*TJUOLD(3)
60981                   DO 550 IX=1,3
60982                     TJUOLD(IX)=T(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+T(4
60983      &                   ))
60984   550             CONTINUE
60985                   TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)
60986      &                 **2)
60987 C...If last boost small, accept JRF, else iterate.
60988 C...Also prevent possibility of infinite loop.
60989                   IF (ABS((T(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
60990      &                 IJRFIT.LT.MSTJ(18))THEN
60991                     GOTO 500
60992                   ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
60993                     CALL PYERRM(1,'(PYPREP:) failed to converge on JRF')
60994                   ENDIF
60995 C...Store final boost, with change of sign since TJJ motion vector.
60996                   DO 560 IX=1,3
60997                     TJJ(IJU,IX)=-TJUOLD(IX)
60998   560             CONTINUE
60999                   TJJ(IJU,4)=SQRT(1D0+TJJ(IJU,1)**2+TJJ(IJU,2)**2
61000      &                 +TJJ(IJU,3)**2)
61001   570           CONTINUE
61002 C...String length measure for (q-qbar)(q-qbar) topology.
61003 C...Note only momenta of nearest partons used (since rest of system
61004 C...identical).
61005                 IF (JJGLUE.EQ.0) THEN
61006                   DELMQQ=4D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)*FOUR(IJCP(3)
61007      &                 -1,IJCP(5-ISW)+1)
61008                 ELSE
61009 C...Put jj gluons on selected string (IGS selected randomly above).
61010                   IF (IGS.EQ.1) THEN
61011                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
61012      &                   ,IJCP(4+ISW)+1)*FOUR(IJCP(3)-1,IJCP(5-ISW)+1)
61013                   ELSE
61014                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)
61015      &                   *FOUR(IJCP(3)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
61016      &                   ,IJCP(5-ISW)+1)
61017                   ENDIF
61018                 ENDIF
61019 C...String length measure for q-q-j-j-q-q topology.
61020                 T1G1=0D0
61021                 T2G2=0D0
61022                 T1T2=0D0
61023                 T1P1=0D0
61024                 T1P2=0D0
61025                 T2P3=0D0
61026                 T2P4=0D0
61027                 ISGN=-1
61028 C...Note only momenta of nearest partons used (since rest of system
61029 C...identical).
61030                 DO 580 IX=1,4
61031                   IF (IX.EQ.4) ISGN=1
61032                   T1P1=T1P1+ISGN*TJJ(1,IX)*P(IJCP(2)-1,IX)
61033                   T1P2=T1P2+ISGN*TJJ(1,IX)*P(IJCP(3)-1,IX)
61034                   T2P3=T2P3+ISGN*TJJ(2,IX)*P(IJCP(4)+1,IX)
61035                   T2P4=T2P4+ISGN*TJJ(2,IX)*P(IJCP(5)+1,IX)
61036                   IF (JJGLUE.EQ.0) THEN
61037 C...Junction motion vector dot product gives length when inter-junction
61038 C...gluons absent.
61039                     T1T2=T1T2+ISGN*TJJ(1,IX)*TJJ(2,IX)
61040                   ELSE
61041 C...Junction motion vector dot products with gluon momenta give length
61042 C...when inter-junction gluons present.
61043                     T1G1=T1G1+ISGN*TJJ(1,IX)*P(IJCP(3)+1,IX)
61044                     T2G2=T2G2+ISGN*TJJ(2,IX)*P(IJCP(4)-1,IX)
61045                   ENDIF
61046   580           CONTINUE
61047                 DELMJJ=16D0*T1P1*T1P2*T2P3*T2P4
61048                 IF (JJGLUE.EQ.0) THEN
61049                   DELMJJ=DELMJJ*(T1T2+SQRT(T1T2**2-1))
61050                 ELSE
61051                   DELMJJ=DELMJJ*4D0*T1G1*T2G2
61052                 ENDIF
61053               ENDIF
61054 C...If delmjj > delmqq collapse string system to q-qbar q-qbar
61055 C...(Always the case for MSTJ(19)=2 due to initialization above)
61056               IF (DELMJJ.GT.DELMQQ) THEN
61057 C...Put new system at end of event record
61058                 NCOP=N
61059                 DO 650 IST=1,2
61060                   DO 600 ICOP=IJCP(IST),IJCP(IST+1)-1
61061                     NCOP=NCOP+1
61062                     DO 590 IX=1,5
61063                       P(NCOP,IX)=P(ICOP,IX)
61064                       K(NCOP,IX)=K(ICOP,IX)
61065   590               CONTINUE
61066   600             CONTINUE
61067                   IF (JJGLUE.NE.0.AND.IST.EQ.IGS) THEN
61068 C...Insert inter-junction gluon string piece (reversed)
61069                     NJJGL=0
61070                     DO 620 ICOP=IJCP(4)-1,IJCP(3)+1,-1
61071                       NJJGL=NJJGL+1
61072                       NCOP=NCOP+1
61073                       DO 610 IX=1,5
61074                         P(NCOP,IX)=P(ICOP,IX)
61075                         K(NCOP,IX)=K(ICOP,IX)
61076   610                 CONTINUE
61077   620               CONTINUE
61078                     ENDIF
61079                   IFC=-2*IST+3
61080                   DO 640 ICOP=IJCP(IST+IFC*ISW+3)+1,IJCP(IST+IFC*ISW+4)
61081                     NCOP=NCOP+1
61082                     DO 630 IX=1,5
61083                       P(NCOP,IX)=P(ICOP,IX)
61084                       K(NCOP,IX)=K(ICOP,IX)
61085   630               CONTINUE
61086   640             CONTINUE
61087                   K(NCOP,1)=1
61088   650           CONTINUE
61089 C...Copy system back in right order
61090                 DO 670 ICOP=NBEG,NEND-2
61091                   DO 660 IX=1,5
61092                     P(ICOP,IX)=P(N+ICOP-NBEG+1,IX)
61093                     K(ICOP,IX)=K(N+ICOP-NBEG+1,IX)
61094   660             CONTINUE
61095   670           CONTINUE
61096 C...Shift down rest of event record
61097                 DO 690 ICOP=NEND+1,N
61098                   DO 680 IX=1,5
61099                     P(ICOP-2,IX)=P(ICOP,IX)
61100                     K(ICOP-2,IX)=K(ICOP,IX)
61101   680             CONTINUE
61102   690             CONTINUE
61103 C...Update length of event record.
61104                 N=N-2
61105               ENDIF
61106               MJUN1=0
61107               NBEG=I+1
61108             ENDIF
61109   700     CONTINUE
61110         ENDIF
61111       ENDIF
61112  
61113 C...Done if no checks on small-mass systems.
61114       IF(MSTJ(14).LT.0) RETURN
61115       IF(MSTJ(14).EQ.0) GOTO 1140
61116  
61117 C...Find lowest-mass colour singlet jet system.
61118       NS=N
61119   710 NSIN=N-NS
61120       PDMIN=1D0+PARJ(32)
61121       IC=0
61122       DO 770 I=MAX(1,IP),N
61123         IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN
61124         ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN
61125           NSIN=NSIN+1
61126           IC=I
61127           DO 720 J=1,4
61128             DPS(J)=P(I,J)
61129   720     CONTINUE
61130           MSTJ(93)=1
61131           DPS(5)=PYMASS(K(I,2))
61132         ELSEIF(K(I,1).EQ.2.AND.K(I,2).NE.21) THEN
61133           DO 730 J=1,4
61134             DPS(J)=DPS(J)+P(I,J)
61135   730     CONTINUE
61136           MSTJ(93)=1
61137           DPS(5)=DPS(5)+PYMASS(K(I,2))
61138         ELSEIF(K(I,1).EQ.2) THEN
61139           DO 740 J=1,4
61140             DPS(J)=DPS(J)+P(I,J)
61141   740     CONTINUE
61142         ELSEIF(IC.NE.0.AND.KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
61143           DO 750 J=1,4
61144             DPS(J)=DPS(J)+P(I,J)
61145   750     CONTINUE
61146           MSTJ(93)=1
61147           DPS(5)=DPS(5)+PYMASS(K(I,2))
61148           PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-
61149      &    DPS(5)
61150           IF(PD.LT.PDMIN) THEN
61151             PDMIN=PD
61152             DO 760 J=1,5
61153               DPC(J)=DPS(J)
61154   760       CONTINUE
61155             IC1=IC
61156             IC2=I
61157           ENDIF
61158           IC=0
61159         ELSE
61160           NSIN=NSIN+1
61161         ENDIF
61162   770 CONTINUE
61163  
61164 C...Done if lowest-mass system above threshold for string frag.
61165       IF(PDMIN.GE.PARJ(32)) GOTO 1140
61166  
61167 C...Fill small-mass system as cluster.
61168       NSAV=N
61169       PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2))
61170       K(N+1,1)=11
61171       K(N+1,2)=91
61172       K(N+1,3)=IC1
61173       P(N+1,1)=DPC(1)
61174       P(N+1,2)=DPC(2)
61175       P(N+1,3)=DPC(3)
61176       P(N+1,4)=DPC(4)
61177       P(N+1,5)=PECM
61178  
61179 C...Set up history, assuming cluster -> 2 hadrons.
61180       NBODY=2
61181       K(N+1,4)=N+2
61182       K(N+1,5)=N+3
61183       K(N+2,1)=1
61184       K(N+3,1)=1
61185       IF(MSTU(16).NE.2) THEN
61186         K(N+2,3)=N+1
61187         K(N+3,3)=N+1
61188       ELSE
61189         K(N+2,3)=IC1
61190         K(N+3,3)=IC2
61191       ENDIF
61192       K(N+2,4)=0
61193       K(N+3,4)=0
61194       K(N+2,5)=0
61195       K(N+3,5)=0
61196       V(N+1,5)=0D0
61197       V(N+2,5)=0D0
61198       V(N+3,5)=0D0
61199  
61200 C...Find total flavour content - complicated by presence of junctions.
61201       NQ=0
61202       NDIQ=0
61203       DO 780 I=IC1,IC2
61204         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.K(I,2).NE.21) THEN
61205           NQ=NQ+1
61206           KFQ(NQ)=K(I,2)
61207           IF(IABS(K(I,2)).GT.1000) NDIQ=NDIQ+1
61208         ENDIF
61209   780 CONTINUE
61210  
61211 C...If several diquarks, split up one to give even number of flavours.
61212       IF(NQ.EQ.3.AND.NDIQ.GE.2) THEN
61213         I1=3
61214         IF(IABS(KFQ(3)).LT.1000) I1=1
61215         KFQ(4)=ISIGN(MOD(IABS(KFQ(I1))/100,10),KFQ(I1))
61216         KFQ(I1)=KFQ(I1)/1000
61217         NQ=4
61218         NDIQ=NDIQ-1
61219       ENDIF
61220  
61221 C...If four quark ends, join two to diquark.
61222       IF(NQ.EQ.4.AND.NDIQ.EQ.0) THEN
61223         I1=1
61224         I2=2
61225         IF(KFQ(I1)*KFQ(I2).LT.0) I2=3
61226         IF(I2.EQ.3.AND.KFQ(I1)*KFQ(I2).LT.0) I2=4
61227         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
61228         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
61229         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
61230      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
61231         KFQ(I2)=KFQ(4)
61232         NQ=3
61233         NDIQ=1
61234       ENDIF
61235  
61236 C...If two quark ends, plus quark or diquark, join quarks to diquark.
61237       IF(NQ.EQ.3) THEN
61238         I1=1
61239         I2=2
61240         IF(IABS(KFQ(I1)).GT.1000) I1=3
61241         IF(IABS(KFQ(I2)).GT.1000) I2=3
61242         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
61243         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
61244         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
61245      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
61246         KFQ(I2)=KFQ(3)
61247         NQ=2
61248         NDIQ=NDIQ+1
61249       ENDIF
61250  
61251 C...Form two particles from flavours of lowest-mass system, if feasible.
61252       NTRY = 0
61253   790 NTRY = NTRY + 1
61254  
61255 C...Open string with two specified endpoint flavours.
61256       IF(NQ.EQ.2) THEN
61257         KC1=PYCOMP(KFQ(1))
61258         KC2=PYCOMP(KFQ(2))
61259         IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 1140
61260         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
61261         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
61262         IF(KQ1+KQ2.NE.0) GOTO 1140
61263 C...Start with qq, if there is one. Only allow for rank 1 popcorn meson
61264   800   K1=KFQ(1)
61265         IF(IABS(KFQ(2)).GT.1000) K1=KFQ(2)
61266         MSTU(125)=0
61267         CALL PYDCYK(K1,0,KFLN,K(N+2,2))
61268         CALL PYDCYK(KFQ(1)+KFQ(2)-K1,-KFLN,KFLDMP,K(N+3,2))
61269         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 800
61270  
61271 C...Open string with four specified flavours.
61272       ELSEIF(NQ.EQ.4) THEN
61273         KC1=PYCOMP(KFQ(1))
61274         KC2=PYCOMP(KFQ(2))
61275         KC3=PYCOMP(KFQ(3))
61276         KC4=PYCOMP(KFQ(4))
61277         IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) GOTO 1140
61278         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
61279         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
61280         KQ3=KCHG(KC3,2)*ISIGN(1,KFQ(3))
61281         KQ4=KCHG(KC4,2)*ISIGN(1,KFQ(4))
61282         IF(KQ1+KQ2+KQ3+KQ4.NE.0) GOTO 1140
61283 C...Combine flavours pairwise to form two hadrons.
61284   810   I1=1
61285         I2=2
61286         IF(KQ1*KQ2.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
61287      &  IABS(KFQ(2)).GT.1000)) I2=3
61288         IF(I2.EQ.3.AND.(KQ1*KQ3.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
61289      &  IABS(KFQ(3)).GT.1000))) I2=4
61290         I3=3
61291         IF(I2.EQ.3) I3=2
61292         I4=10-I1-I2-I3
61293         CALL PYDCYK(KFQ(I1),KFQ(I2),KFLDMP,K(N+2,2))
61294         CALL PYDCYK(KFQ(I3),KFQ(I4),KFLDMP,K(N+3,2))
61295         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 810
61296  
61297 C...Closed string.
61298       ELSE
61299         IF(IABS(K(IC2,2)).NE.21) GOTO 1140
61300 C...No room for popcorn mesons in closed string -> 2 hadrons.
61301         MSTU(125)=0
61302   820   CALL PYDCYK(1+INT((2D0+PARJ(2))*PYR(0)),0,KFLN,KFDMP)
61303         CALL PYDCYK(KFLN,0,KFLM,K(N+2,2))
61304         CALL PYDCYK(-KFLN,-KFLM,KFLDMP,K(N+3,2))
61305         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 820
61306       ENDIF
61307       P(N+2,5)=PYMASS(K(N+2,2))
61308       P(N+3,5)=PYMASS(K(N+3,2))
61309  
61310 C...If it does not work: try again (a number of times), give up (if no
61311 C...place to shuffle momentum or too many flavours), or form one hadron.
61312       IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) THEN
61313         IF(NTRY.LT.MSTJ(17).OR.(NQ.EQ.4.AND.NTRY.LT.5*MSTJ(17))) THEN
61314           GOTO 790
61315         ELSEIF(NSIN.EQ.1.OR.NQ.EQ.4) THEN
61316           GOTO 1140
61317         ELSE
61318           GOTO 890
61319         END IF
61320       END IF
61321  
61322 C...Perform two-particle decay of jet system.
61323 C...First step: find reference axis in decaying system rest frame.
61324 C...(Borrow slot N+2 for temporary direction.)
61325       DO 830 J=1,4
61326         P(N+2,J)=P(IC1,J)
61327   830 CONTINUE
61328       DO 850 I=IC1+1,IC2-1
61329         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
61330      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
61331           FRAC1=FOUR(IC2,I)/(FOUR(IC1,I)+FOUR(IC2,I))
61332           DO 840 J=1,4
61333             P(N+2,J)=P(N+2,J)+FRAC1*P(I,J)
61334   840     CONTINUE
61335         ENDIF
61336   850 CONTINUE
61337       CALL PYROBO(N+2,N+2,0D0,0D0,-DPC(1)/DPC(4),-DPC(2)/DPC(4),
61338      &-DPC(3)/DPC(4))
61339       THE1=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
61340       PHI1=PYANGL(P(N+2,1),P(N+2,2))
61341  
61342 C...Second step: generate isotropic/anisotropic decay.
61343       PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2-
61344      &(P(N+2,5)-P(N+3,5))**2))/(2D0*PECM)
61345   860 UE(3)=PYR(0)
61346       IF(PARJ(21).LE.0.01D0) UE(3)=1D0
61347       PT2=(1D0-UE(3)**2)*PA**2
61348       IF(MSTJ(16).LE.0) THEN
61349         PREV=0.5D0
61350       ELSE
61351         IF(EXP(-PT2/(2D0*MAX(0.01D0,PARJ(21))**2)).LT.PYR(0)) GOTO 860
61352         PR1=P(N+2,5)**2+PT2
61353         PR2=P(N+3,5)**2+PT2
61354         ALAMBD=SQRT(MAX(0D0,(PECM**2-PR1-PR2)**2-4D0*PR1*PR2))
61355         PREVCF=PARJ(42)
61356         IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
61357         PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*ALAMBD*PARJ(40))))
61358       ENDIF
61359       IF(PYR(0).LT.PREV) UE(3)=-UE(3)
61360       PHI=PARU(2)*PYR(0)
61361       UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
61362       UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
61363       DO 870 J=1,3
61364         P(N+2,J)=PA*UE(J)
61365         P(N+3,J)=-PA*UE(J)
61366   870 CONTINUE
61367       P(N+2,4)=SQRT(PA**2+P(N+2,5)**2)
61368       P(N+3,4)=SQRT(PA**2+P(N+3,5)**2)
61369  
61370 C...Third step: move back to event frame and set production vertex.
61371       CALL PYROBO(N+2,N+3,THE1,PHI1,DPC(1)/DPC(4),DPC(2)/DPC(4),
61372      &DPC(3)/DPC(4))
61373       DO 880 J=1,4
61374         V(N+1,J)=V(IC1,J)
61375         V(N+2,J)=V(IC1,J)
61376         V(N+3,J)=V(IC2,J)
61377   880 CONTINUE
61378       N=N+3
61379       GOTO 1120
61380  
61381 C...Else form one particle, if possible.
61382   890 NBODY=1
61383       K(N+1,5)=N+2
61384       DO 900 J=1,4
61385         V(N+1,J)=V(IC1,J)
61386         V(N+2,J)=V(IC1,J)
61387   900 CONTINUE
61388  
61389 C...Select hadron flavour from available quark flavours.
61390   910 IF(NQ.EQ.2.AND.IABS(KFQ(1)).GT.100.AND.IABS(KFQ(2)).GT.100) THEN
61391         GOTO 1140
61392       ELSEIF(NQ.EQ.2) THEN
61393         CALL PYKFDI(KFQ(1),KFQ(2),KFLDMP,K(N+2,2))
61394       ELSE
61395         KFLN=1+INT((2D0+PARJ(2))*PYR(0))
61396         CALL PYKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2))
61397       ENDIF
61398       IF(K(N+2,2).EQ.0) GOTO 910
61399       P(N+2,5)=PYMASS(K(N+2,2))
61400  
61401 C...Use old algorithm for E/p conservation? (EN)
61402       IF (MSTJ(16).LE.0) GOTO 1080
61403  
61404 C...Find the string piece closest to the cluster by a loop
61405 C...over the undecayed partons not in present cluster. (EN)
61406       DGLOMI=1D30
61407       IBEG=0
61408       I0=0
61409       NJUNC=0
61410       DO 940 I1=MAX(1,IP),N-1
61411         IF(K(I1,1).EQ.1) NJUNC=0
61412         IF(K(I1,1).EQ.41) NJUNC=NJUNC+1
61413         IF(K(I1,1).EQ.41) GOTO 940
61414         IF(I1.GE.IC1-1.AND.I1.LE.IC2) THEN
61415           I0=0
61416         ELSEIF(K(I1,1).EQ.2) THEN
61417           IF(I0.EQ.0) I0=I1
61418           I2=I1
61419   920     I2=I2+1
61420           IF(K(I2,1).EQ.41) GOTO 940
61421           IF(K(I2,1).GT.10) GOTO 920
61422           IF(KCHG(PYCOMP(K(I2,2)),2).EQ.0) GOTO 920
61423           IF(K(I1,2).EQ.21.AND.K(I2,2).NE.21.AND.K(I2,1).NE.1.AND.
61424      &    NJUNC.EQ.0) GOTO 940
61425           IF(K(I1,2).NE.21.AND.K(I2,2).EQ.21.AND.NJUNC.NE.0) GOTO 940
61426           IF(K(I1,2).NE.21.AND.K(I2,2).NE.21.AND.(I1.GT.I0.OR.
61427      &    K(I2,1).NE.1)) GOTO 940
61428  
61429 C...Define velocity vectors e1, e2, ecl and differences e3, e4.
61430           DO 930 J=1,3
61431             E1(J)=P(I1,J)/P(I1,4)
61432             E2(J)=P(I2,J)/P(I2,4)
61433             ECL(J)=P(N+1,J)/P(N+1,4)
61434             E3(J)=E2(J)-E1(J)
61435             E4(J)=ECL(J)-E1(J)
61436   930     CONTINUE
61437  
61438 C...Calculate minimal D=(e4-alpha*e3)**2 for 0<alpha<1.
61439           E3S=E3(1)**2+E3(2)**2+E3(3)**2
61440           E4S=E4(1)**2+E4(2)**2+E4(3)**2
61441           E34=E3(1)*E4(1)+E3(2)*E4(2)+E3(3)*E4(3)
61442           IF(E34.LE.0D0) THEN
61443             DDMIN=E4S
61444           ELSEIF(E34.LT.E3S) THEN
61445             DDMIN=E4S-E34**2/E3S
61446           ELSE
61447             DDMIN=E4S-2D0*E34+E3S
61448           ENDIF
61449  
61450 C...Is this the smallest so far?
61451           IF(DDMIN.LT.DGLOMI) THEN
61452             DGLOMI=DDMIN
61453             IBEG=I0
61454             IPCS=I1
61455           ENDIF
61456         ELSEIF(K(I1,1).EQ.1.AND.KCHG(PYCOMP(K(I1,2)),2).NE.0) THEN
61457           I0=0
61458         ENDIF
61459   940 CONTINUE
61460  
61461 C... Check if there are any strings to connect to the new gluon. (EN)
61462       IF (IBEG.EQ.0) GOTO 1080
61463  
61464 C...Delta_m = m_clus - m_had > 0: emit a 'gluon' (EN)
61465       IF (P(N+1,5).GE.P(N+2,5)) THEN
61466  
61467 C...Construct 'gluon' that is needed to put hadron on the mass shell.
61468         FRAC=P(N+2,5)/P(N+1,5)
61469         DO 950 J=1,5
61470           P(N+2,J)=FRAC*P(N+1,J)
61471           PG(J)=(1D0-FRAC)*P(N+1,J)
61472   950   CONTINUE
61473  
61474 C... Copy string with new gluon put in.
61475         N=N+2
61476         I=IBEG-1
61477   960   I=I+1
61478         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 960
61479         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 960
61480         N=N+1
61481         DO 970 J=1,5
61482           K(N,J)=K(I,J)
61483           P(N,J)=P(I,J)
61484           V(N,J)=V(I,J)
61485   970   CONTINUE
61486         K(I,1)=K(I,1)+10
61487         K(I,4)=N
61488         K(I,5)=N
61489         K(N,3)=I
61490         IF(I.EQ.IPCS) THEN
61491           N=N+1
61492           DO 980 J=1,5
61493             K(N,J)=K(N-1,J)
61494             P(N,J)=PG(J)
61495             V(N,J)=V(N-1,J)
61496   980     CONTINUE
61497           K(N,2)=21
61498           K(N,3)=NSAV+1
61499         ENDIF
61500         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 960
61501         GOTO 1120
61502  
61503 C...Delta_m = m_clus - m_had < 0: have to absorb a 'gluon' instead,
61504 C...from string piece endpoints.
61505       ELSE
61506  
61507 C...Begin by copying string that should give energy to cluster.
61508         N=N+2
61509         I=IBEG-1
61510   990   I=I+1
61511         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 990
61512         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 990
61513         N=N+1
61514         DO 1000 J=1,5
61515           K(N,J)=K(I,J)
61516           P(N,J)=P(I,J)
61517           V(N,J)=V(I,J)
61518  1000   CONTINUE
61519         K(I,1)=K(I,1)+10
61520         K(I,4)=N
61521         K(I,5)=N
61522         K(N,3)=I
61523         IF(I.EQ.IPCS) I1=N
61524         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 990
61525         I2=I1+1
61526  
61527 C...Set initial Phad.
61528         DO 1010 J=1,4
61529           P(NSAV+2,J)=P(NSAV+1,J)
61530  1010   CONTINUE
61531  
61532 C...Calculate Pg, a part of which will be added to Phad later. (EN)
61533  1020   IF(MSTJ(16).EQ.1) THEN
61534           ALPHA=1D0
61535           BETA=1D0
61536         ELSE
61537           ALPHA=FOUR(NSAV+1,I2)/FOUR(I1,I2)
61538           BETA=FOUR(NSAV+1,I1)/FOUR(I1,I2)
61539         ENDIF
61540         DO 1030 J=1,4
61541           PG(J)=ALPHA*P(I1,J)+BETA*P(I2,J)
61542  1030   CONTINUE
61543         PG(5)=SQRT(MAX(1D-20,PG(4)**2-PG(1)**2-PG(2)**2-PG(3)**2))
61544  
61545 C..Solve 2nd order equation, use the best (smallest) solution. (EN)
61546         PMSCOL=P(NSAV+2,4)**2-P(NSAV+2,1)**2-P(NSAV+2,2)**2-
61547      &  P(NSAV+2,3)**2
61548         PCLPG=(P(NSAV+2,4)*PG(4)-P(NSAV+2,1)*PG(1)-
61549      &  P(NSAV+2,2)*PG(2)-P(NSAV+2,3)*PG(3))/PG(5)**2
61550         DELTA=SQRT(PCLPG**2+(P(NSAV+2,5)**2-PMSCOL)/PG(5)**2)-PCLPG
61551  
61552 C...If all gluon energy eaten, zero it and take a step back.
61553         ITER=0
61554         IF(DELTA*ALPHA.GT.1D0.AND.I1.GT.NSAV+3.AND.K(I1,2).EQ.21) THEN
61555           ITER=1
61556           DO 1040 J=1,4
61557             P(NSAV+2,J)=P(NSAV+2,J)+P(I1,J)
61558             P(I1,J)=0D0
61559  1040     CONTINUE
61560           P(I1,5)=0D0
61561           K(I1,1)=K(I1,1)+10
61562           I1=I1-1
61563           IF(K(I1,1).EQ.41) ITER=-1
61564         ENDIF
61565         IF(DELTA*BETA.GT.1D0.AND.I2.LT.N.AND.K(I2,2).EQ.21) THEN
61566           ITER=1
61567           DO 1050 J=1,4
61568             P(NSAV+2,J)=P(NSAV+2,J)+P(I2,J)
61569             P(I2,J)=0D0
61570  1050     CONTINUE
61571           P(I2,5)=0D0
61572           K(I2,1)=K(I2,1)+10
61573           I2=I2+1
61574           IF(K(I2,1).EQ.41) ITER=-1
61575         ENDIF
61576         IF(ITER.EQ.1) GOTO 1020
61577  
61578 C...If also all endpoint energy eaten, revert to old procedure.
61579         IF((1D0-DELTA*ALPHA)*P(I1,4).LT.P(I1,5).OR.
61580      &  (1D0-DELTA*BETA)*P(I2,4).LT.P(I2,5).OR.ITER.EQ.-1) THEN
61581           DO 1060 I=NSAV+3,N
61582             IM=K(I,3)
61583             K(IM,1)=K(IM,1)-10
61584             K(IM,4)=0
61585             K(IM,5)=0
61586  1060     CONTINUE
61587           N=NSAV
61588           GOTO 1080
61589         ENDIF
61590  
61591 C... Construct the collapsed hadron and modified string partons.
61592         DO 1070 J=1,4
61593           P(NSAV+2,J)=P(NSAV+2,J)+DELTA*PG(J)
61594           P(I1,J)=(1D0-DELTA*ALPHA)*P(I1,J)
61595           P(I2,J)=(1D0-DELTA*BETA)*P(I2,J)
61596  1070   CONTINUE
61597           P(I1,5)=(1D0-DELTA*ALPHA)*P(I1,5)
61598           P(I2,5)=(1D0-DELTA*BETA)*P(I2,5)
61599  
61600 C...Finished with string collapse in new scheme.
61601         GOTO 1120
61602       ENDIF
61603  
61604 C... Use old algorithm; by choice or when in trouble.
61605  1080 CONTINUE
61606 C...Find parton/particle which combines to largest extra mass.
61607       IR=0
61608       HA=0D0
61609       HSM=0D0
61610       DO 1100 MCOMB=1,3
61611         IF(IR.NE.0) GOTO 1100
61612         DO 1090 I=MAX(1,IP),N
61613           IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2
61614      &    .AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 1090
61615           IF(MCOMB.EQ.1) KCI=PYCOMP(K(I,2))
61616           IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 1090
61617           IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 1090
61618           IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100)
61619      &    GOTO 1090
61620           HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3)
61621           HSR=2D0*HCR+PECM**2-P(N+2,5)**2-2D0*P(N+2,5)*P(I,5)
61622           IF(HSR.GT.HSM) THEN
61623             IR=I
61624             HA=HCR
61625             HSM=HSR
61626           ENDIF
61627  1090   CONTINUE
61628  1100 CONTINUE
61629  
61630 C...Shuffle energy and momentum to put new particle on mass shell.
61631       IF(IR.NE.0) THEN
61632         HB=PECM**2+HA
61633         HC=P(N+2,5)**2+HA
61634         HD=P(IR,5)**2+HA
61635         HK2=0.5D0*(HB*SQRT(MAX(0D0,((HB+HC)**2-4D0*(HB+HD)*P(N+2,5)**2)/
61636      &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD)
61637         HK1=(0.5D0*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB
61638         DO 1110 J=1,4
61639           P(N+2,J)=(1D0+HK1)*DPC(J)-HK2*P(IR,J)
61640           P(IR,J)=(1D0+HK2)*P(IR,J)-HK1*DPC(J)
61641  1110   CONTINUE
61642         N=N+2
61643       ELSE
61644         CALL PYERRM(3,'(PYPREP:) no match for collapsing cluster')
61645         RETURN
61646       ENDIF
61647  
61648 C...Mark collapsed system and store daughter pointers. Iterate.
61649  1120 DO 1130 I=IC1,IC2
61650         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
61651      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
61652           K(I,1)=K(I,1)+10
61653           IF(MSTU(16).NE.2) THEN
61654             K(I,4)=NSAV+1
61655             K(I,5)=NSAV+1
61656           ELSE
61657             K(I,4)=NSAV+2
61658             K(I,5)=NSAV+1+NBODY
61659           ENDIF
61660         ENDIF
61661         IF(K(I,1).EQ.41) K(I,1)=K(I,1)+10
61662  1130 CONTINUE
61663       IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 710
61664  
61665 C...Check flavours and invariant masses in parton systems.
61666  1140 NP=0
61667       KFN=0
61668       KQS=0
61669       NJU=0
61670       DO 1150 J=1,5
61671         DPS(J)=0D0
61672  1150 CONTINUE
61673       DO 1180 I=MAX(1,IP),N
61674         IF(K(I,1).EQ.41) NJU=NJU+1
61675         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 1180
61676         KC=PYCOMP(K(I,2))
61677         IF(KC.EQ.0) GOTO 1180
61678         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
61679         IF(KQ.EQ.0) GOTO 1180
61680         NP=NP+1
61681         IF(KQ.NE.2) THEN
61682           KFN=KFN+1
61683           KQS=KQS+KQ
61684           MSTJ(93)=1
61685           DPS(5)=DPS(5)+PYMASS(K(I,2))
61686         ENDIF
61687         DO 1160 J=1,4
61688           DPS(J)=DPS(J)+P(I,J)
61689  1160   CONTINUE
61690         IF(K(I,1).EQ.1) THEN
61691           NFERR=0
61692           IF(NJU.EQ.0.AND.NP.NE.1) THEN
61693             IF(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0) NFERR=1
61694           ELSEIF(NJU.EQ.1) THEN
61695             IF(KFN.NE.3.OR.IABS(KQS).NE.3) NFERR=1
61696           ELSEIF(NJU.EQ.2) THEN
61697             IF(KFN.NE.4.OR.KQS.NE.0) NFERR=1
61698           ELSEIF(NJU.GE.3) THEN
61699             NFERR=1
61700           ENDIF
61701           IF(NFERR.EQ.1) THEN
61702             CALL PYERRM(2,'(PYPREP:) unphysical flavour combination')
61703             MINT(51)=1
61704             RETURN
61705           ENDIF
61706           IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT.
61707      &    (0.9D0*PARJ(32)+DPS(5))**2) CALL PYERRM(3,
61708      &    '(PYPREP:) too small mass in jet system')
61709           NP=0
61710           KFN=0
61711           KQS=0
61712           NJU=0
61713           DO 1170 J=1,5
61714             DPS(J)=0D0
61715  1170     CONTINUE
61716         ENDIF
61717  1180 CONTINUE
61718  
61719       RETURN
61720       END
61721  
61722 C*********************************************************************
61723  
61724 C...PYSTRF
61725 C...Handles the fragmentation of an arbitrary colour singlet
61726 C...jet system according to the Lund string fragmentation model.
61727  
61728       SUBROUTINE PYSTRF(IP)
61729  
61730 C...Double precision and integer declarations.
61731       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
61732       IMPLICIT INTEGER(I-N)
61733       INTEGER PYK,PYCHGE,PYCOMP
61734 C...Commonblocks.
61735       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
61736       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
61737       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
61738       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
61739 C...Local arrays. All MOPS variables ends with MO
61740       DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2),
61741      &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(6),PJU(5,5),
61742      &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8),
61743      &INMO(9),PM2QMO(2),XTMO(2),EJSTR(2),IJUORI(2),IBARRK(2),
61744      &PBST(3,5),TJUOLD(5)
61745  
61746 C...Function: four-product of two vectors.
61747       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)
61748       DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)-
61749      &DP(I,3)*DP(J,3)
61750  
61751 C...Reset counters.
61752       MSTJ(91)=0
61753       NSAV=N
61754       MSTU90=MSTU(90)
61755       NP=0
61756       KQSUM=0
61757       DO 100 J=1,5
61758         DPS(J)=0D0
61759   100 CONTINUE
61760       MJU(1)=0
61761       MJU(2)=0
61762       NTRYFN=0
61763       IJUORI(1)=0
61764       IJUORI(2)=0
61765  
61766 C...Identify parton system.
61767       I=IP-1
61768   110 I=I+1
61769       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
61770         CALL PYERRM(12,'(PYSTRF:) failed to reconstruct jet system')
61771         IF(MSTU(21).GE.1) RETURN
61772       ENDIF
61773       IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110
61774       KC=PYCOMP(K(I,2))
61775       IF(KC.EQ.0) GOTO 110
61776       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
61777       IF(KQ.EQ.0.AND.K(I,1).NE.41) GOTO 110
61778       IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN
61779         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
61780         IF(MSTU(21).GE.1) RETURN
61781       ENDIF
61782  
61783 C...Take copy of partons to be considered. Check flavour sum.
61784       NP=NP+1
61785       DO 120 J=1,5
61786         K(N+NP,J)=K(I,J)
61787         P(N+NP,J)=P(I,J)
61788         IF(J.NE.4) DPS(J)=DPS(J)+P(I,J)
61789   120 CONTINUE
61790       DPS(4)=DPS(4)+SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
61791       K(N+NP,3)=I
61792       IF(KQ.NE.2) KQSUM=KQSUM+KQ
61793       IF(K(I,1).EQ.41) THEN
61794         IF(MOD(KQSUM,2).EQ.0.AND.MJU(1).EQ.0) THEN
61795           MJU(1)=N+NP
61796           IJUORI(1)=I
61797         ELSE
61798           MJU(2)=N+NP
61799           IJUORI(2)=I
61800         ENDIF
61801       ENDIF
61802       IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110
61803       IF(MOD(KQSUM,3).NE.0) THEN
61804         CALL PYERRM(12,'(PYSTRF:) unphysical flavour combination')
61805         IF(MSTU(21).GE.1) RETURN
61806       ENDIF
61807       IF(MJU(1).GT.0.OR.MJU(2).GT.0) MSTU(29)=1
61808  
61809 C...Boost copied system to CM frame (for better numerical precision).
61810       IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN
61811         MBST=0
61812         MSTU(33)=1
61813         CALL PYROBO(N+1,N+NP,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
61814      &  -DPS(3)/DPS(4))
61815       ELSE
61816         MBST=1
61817         HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3)))
61818         DO 130 I=N+1,N+NP
61819           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
61820           IF(P(I,3).GT.0D0) THEN
61821             HHPEZ=MAX(1D-10,(P(I,4)+P(I,3))/HHBZ)
61822             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
61823             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
61824           ELSE
61825             HHPEZ=MAX(1D-10,(P(I,4)-P(I,3))*HHBZ)
61826             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
61827             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
61828           ENDIF
61829   130   CONTINUE
61830       ENDIF
61831  
61832 C...Search for very nearby partons that may be recombined.
61833       NTRYR=0
61834       NTRYWR=0
61835       PARU12=PARU(12)
61836       PARU13=PARU(13)
61837       MJU(3)=MJU(1)
61838       MJU(4)=MJU(2)
61839       NR=NP
61840       NRMIN=2
61841       IF(MJU(1).GT.0) NRMIN=NRMIN+2
61842       IF(MJU(2).GT.0) NRMIN=NRMIN+2
61843   140 IF(NR.GT.NRMIN) THEN
61844         PDRMIN=2D0*PARU12
61845         DO 150 I=N+1,N+NR
61846           IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150
61847           I1=I+1
61848           IF(I.EQ.N+NR) I1=N+1
61849           IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150
61850           IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21)
61851      &    GOTO 150
61852           IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21)
61853      &    GOTO 150
61854           PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+
61855      &    P(I1,2)**2+P(I1,3)**2))
61856           PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3)
61857           PDR=4D0*(PAP-PVP)**2/MAX(1D-6,PARU13**2*PAP+2D0*(PAP-PVP))
61858           IF(PDR.LT.PDRMIN) THEN
61859             IR=I
61860             PDRMIN=PDR
61861           ENDIF
61862   150   CONTINUE
61863  
61864 C...Recombine very nearby partons to avoid machine precision problems.
61865         IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN
61866           DO 160 J=1,4
61867             P(N+1,J)=P(N+1,J)+P(N+NR,J)
61868   160     CONTINUE
61869           P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
61870      &    P(N+1,3)**2))
61871           NR=NR-1
61872           GOTO 140
61873         ELSEIF(PDRMIN.LT.PARU12) THEN
61874           DO 170 J=1,4
61875             P(IR,J)=P(IR,J)+P(IR+1,J)
61876   170     CONTINUE
61877           P(IR,5)=SQRT(MAX(0D0,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2-
61878      &    P(IR,3)**2))
61879           IF(MJU(2).NE.0.AND.IR.GT.MJU(2)) K(IR,2)=K(IR+1,2)
61880           DO 190 I=IR+1,N+NR-1
61881             K(I,1)=K(I+1,1)
61882             K(I,2)=K(I+1,2)
61883             DO 180 J=1,5
61884               P(I,J)=P(I+1,J)
61885   180       CONTINUE
61886   190     CONTINUE
61887           IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2)
61888           NR=NR-1
61889           IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1
61890           IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1
61891           GOTO 140
61892         ENDIF
61893       ENDIF
61894       NTRYR=NTRYR+1
61895  
61896 C...Reset particle counter. Skip ahead if no junctions are present;
61897 C...this is usually the case!
61898       NRS=MAX(5*NR+11,NP)
61899       NTRY=0
61900   200 NTRY=NTRY+1
61901       IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
61902         PARU12=4D0*PARU12
61903         PARU13=2D0*PARU13
61904         GOTO 140
61905       ELSEIF(NTRY.GT.100.OR.NTRYR.GT.100) THEN
61906         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
61907         IF(MSTU(21).GE.1) RETURN
61908       ENDIF
61909       I=N+NRS
61910       MSTU(90)=MSTU90
61911       IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 650
61912       IF(MSTJ(12).GE.4) CALL PYERRM(29,'(PYSTRF:) sorry,'//
61913      &     ' junction strings not handled by MSTJ(12)>3 options')
61914       DO 640 JT=1,2
61915         NJS(JT)=0
61916         IF(MJU(JT).EQ.0) GOTO 640
61917         JS=3-2*JT
61918  
61919 C++SKANDS
61920 C...Find and sum up momentum on three sides of junction.
61921 C...Begin with previous boost = zero.
61922         IJRFIT=0
61923         DO 210 IX=1,3
61924           TJUOLD(IX)=0D0
61925   210   CONTINUE
61926         TJUOLD(4)=1D0
61927   220   IU=0
61928 C...Beginning and end of string system in event record.
61929         I1BEG=N+1+(JT-1)*(NR-1)
61930         I1END=N+NR+(JT-1)*(1-NR)
61931 C...Look for junction string piece end points
61932         DO 230 I1=I1BEG,I1END,JS
61933           IF(K(I1,2).NE.21.AND.IU.LE.5.AND.IJRFIT.EQ.0) THEN
61934 C...Store junction string piece end points.
61935 C                 1-junction systems        2-junction systems
61936 C           IU :  1     2     3   4     1     2   3     4   5     6
61937 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
61938             IU=IU+1
61939             IJU(IU)=I1
61940           ENDIF
61941 C...Sum over momenta, from junction outwards.
61942   230   CONTINUE
61943         DO 280 IU=1,3
61944           PWT=0D0
61945 C...Initialize junction drag and string piece 4-vectors.
61946           DO 240 J=1,5
61947             PBST(IU,J)=0D0
61948             PJU(IU,J)=0D0
61949   240     CONTINUE
61950 C...First two branches. Inwards out means opposite direction to JS.
61951 C...(JS is 1 for JT=1, -1 for JT=2)
61952           IF (IU.LT.3) THEN
61953             I1A=IJU(IU+1)-JS
61954             I1B=IJU(IU)
61955             IDIR=-JS
61956 C...Last branch (gq or gjgqgq). Direction now reversed.
61957           ELSE
61958             I1A=IJU(IU)+JS
61959             I1B=I1END
61960             IDIR=JS
61961           ENDIF
61962           DO 270 I1=I1A,I1B,IDIR
61963 C...Sum up momentum directions with exponential suppression
61964 C...for use in finding junction rest frame below.
61965             IF (K(I1,2).EQ.88) THEN
61966 C...gjgqgq type system encountered. Use current PWT as start
61967 C...for both strings.
61968               PWTOLD=PWT
61969             ELSE
61970               IF (I1.EQ.IJU(5)+IDIR) PWT=PWTOLD
61971 C...Sum up string piece (boosted) 4-momenta.
61972               DO 250 J=1,4
61973                 PJU(IU,J)=PJU(IU,J)+P(I1,J)
61974   250         CONTINUE
61975 C...Compute "junction drag" vectors from (boosted) 4-momenta (initial
61976 C...boost is zero, see above). Skip parton if suppression factor large.
61977               IF (PWT.GT.10D0) GOTO 270
61978 C...Compute momentum in current frame:
61979               TDP=TJUOLD(1)*P(I1,1)+TJUOLD(2)*P(I1,2)+TJUOLD(3)*P(I1,3)
61980               BFC=TDP/(1D0+TJUOLD(4))+P(I1,4)
61981               DO 260 J=1,3
61982                 PTMP=P(I1,J)+TJUOLD(J)*BFC
61983                 PBST(IU,J)=PBST(IU,J)+PTMP*EXP(-PWT)
61984   260         CONTINUE
61985 C...Boosted energy
61986               PTMP=TJUOLD(4)*P(I1,4)+TDP
61987               PBST(IU,4)=PBST(IU,J)+PTMP*EXP(-PWT)
61988               PWT=PWT+PTMP/PARJ(48)
61989             ENDIF
61990   270     CONTINUE
61991 C...Put |p| rather than m in 5th slot.
61992           PBST(IU,5)=SQRT(PBST(IU,1)**2+PBST(IU,2)**2+PBST(IU,3)**2)
61993           PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2)
61994   280   CONTINUE
61995  
61996 C...Calculate boost from present frame to next JRF candidate.
61997         IJRFIT=IJRFIT+1
61998         CALL PYJURF(PBST,TJU)
61999  
62000 C...After some iterations do not take full step in new direction.
62001         IF(IJRFIT.GT.5) THEN
62002           REDUCE=0.8D0**(IJRFIT-5)
62003           TJU(1)=REDUCE*TJU(1)
62004           TJU(2)=REDUCE*TJU(2)
62005           TJU(3)=REDUCE*TJU(3)
62006           TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
62007         ENDIF
62008  
62009 C...Combine new boost (TJU) with old boost (TJUOLD)
62010         TMP=TJU(1)*TJUOLD(1)+TJU(2)*TJUOLD(2)+TJU(3)*TJUOLD(3)
62011         DO 290 IX=1,3
62012           TJUOLD(IX)=TJU(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+TJU(4))
62013   290   CONTINUE
62014         TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)**2)
62015  
62016 C...If last boost small, accept JRF, else iterate.
62017 C...Also prevent possibility of infinite loop.
62018         IF (ABS((TJU(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
62019      &  IJRFIT.LT.MSTJ(18)) THEN
62020           GOTO 220
62021         ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
62022           CALL PYERRM(1,'(PYSTRF:) failed to converge on JRF')
62023         ENDIF
62024  
62025 C...Now store total boost in TJU and change perception.
62026 C...TJUOLD = boost vector from CM of string syst -> JRF. Henceforth,
62027 C...TJU = junction motion vector in string CM, so the sign changes.
62028         DO 300 J=1,3
62029           TJU(J)=-TJUOLD(J)
62030   300   CONTINUE
62031         TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
62032  
62033 C--SKANDS
62034  
62035 C...Calculate string piece energies in junction rest frame.
62036         DO 310 IU=1,3
62037           PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)-
62038      &    TJU(3)*PJU(IU,3)
62039           PBST(IU,5)=TJU(4)*PBST(IU,4)-TJU(1)*PBST(IU,1)-
62040      &    TJU(2)*PBST(IU,2)-TJU(3)*PBST(IU,3)
62041   310   CONTINUE
62042  
62043 C...Start preparing for fragmentation of two strings from junction.
62044         ISTA=I
62045         NTRYER=0
62046   320   NTRYER=NTRYER+1
62047         I=ISTA
62048         DO 620 IU=1,2
62049           NS=IABS(IJU(IU+1)-IJU(IU))
62050  
62051 C...Junction strings: find longitudinal string directions.
62052           DO 350 IS=1,NS
62053             IS1=IJU(IU)+JS*(IS-1)
62054             IS2=IJU(IU)+JS*IS
62055             DO 330 J=1,5
62056               DP(1,J)=0.5D0*P(IS1,J)
62057               IF(IS.EQ.1) DP(1,J)=P(IS1,J)
62058               DP(2,J)=0.5D0*P(IS2,J)
62059               IF(IS.EQ.NS) DP(2,J)=(-PBST(IU,J)+2D0*PBST(IU,5)*TJU(J))*
62060      &        (PJU(IU,5)/PBST(IU,5))
62061   330       CONTINUE
62062             IF(IS.EQ.NS) DP(2,5)=SQRT(MAX(0D0,PJU(IU,4)**2-
62063      &      PJU(IU,1)**2-PJU(IU,2)**2-PJU(IU,3)**2))
62064             DP(3,5)=DFOUR(1,1)
62065             DP(4,5)=DFOUR(2,2)
62066             DHKC=DFOUR(1,2)
62067             IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) THEN
62068               DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62069               DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62070               DP(3,5)=0D0
62071               DP(4,5)=0D0
62072               DHKC=DFOUR(1,2)
62073             ENDIF
62074             DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
62075             DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
62076             DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
62077             IN1=N+NR+4*IS-3
62078             P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
62079             DO 340 J=1,4
62080               P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
62081               P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
62082   340       CONTINUE
62083   350     CONTINUE
62084  
62085 C...Junction strings: initialize flavour, momentum and starting pos.
62086           ISAV=I
62087           MSTU91=MSTU(90)
62088   360     NTRY=NTRY+1
62089           IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
62090             PARU12=4D0*PARU12
62091             PARU13=2D0*PARU13
62092             GOTO 140
62093           ELSEIF(NTRY.GT.100) THEN
62094             CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
62095             IF(MSTU(21).GE.1) RETURN
62096           ENDIF
62097           I=ISAV
62098           MSTU(90)=MSTU91
62099           IRANKJ=0
62100           IE(1)=K(N+1+(JT/2)*(NP-1),3)
62101           IF (MOD(JT+IU,2).NE.0) THEN
62102             IE(1)=K(IJU(IU),3)
62103             IF (NP-NR.NE.0) THEN
62104 C...If gluons have disappeared. Original IJU must be used.
62105               IT=IP
62106               NE=1
62107   370         IT=IT+1
62108               IF (K(IT,2).NE.21) THEN
62109                 NE=NE+1
62110               ENDIF
62111               IF (NE.EQ.IU+4*(JT-1)) THEN
62112                 IE(1)=IT
62113               ELSEIF (IT.LE.IP+NP) THEN
62114                 GOTO 370
62115               ELSE
62116                 CALL PYERRM(14,'(PYSTRF:) '//
62117      &               'Original IJU could not be reconstructed!')
62118               ENDIF
62119             ENDIF
62120           ENDIF
62121           IN(4)=N+NR+1
62122           IN(5)=IN(4)+1
62123           IN(6)=N+NR+4*NS+1
62124           DO 390 JQ=1,2
62125             DO 380 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4
62126               P(IN1,1)=2-JQ
62127               P(IN1,2)=JQ-1
62128               P(IN1,3)=1D0
62129   380       CONTINUE
62130   390     CONTINUE
62131           KFL(1)=K(IJU(IU),2)
62132           PX(1)=0D0
62133           PY(1)=0D0
62134           GAM(1)=0D0
62135           DO 400 J=1,5
62136             PJU(IU+3,J)=0D0
62137   400     CONTINUE
62138  
62139 C...Junction strings: find initial transverse directions.
62140           DO 410 J=1,4
62141             DP(1,J)=P(IN(4),J)
62142             DP(2,J)=P(IN(4)+1,J)
62143             DP(3,J)=0D0
62144             DP(4,J)=0D0
62145   410     CONTINUE
62146           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62147           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62148           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
62149           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
62150           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
62151           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
62152           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
62153           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
62154           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
62155           DHC12=DFOUR(1,2)
62156           DHCX1=DFOUR(3,1)/DHC12
62157           DHCX2=DFOUR(3,2)/DHC12
62158           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
62159           DHCY1=DFOUR(4,1)/DHC12
62160           DHCY2=DFOUR(4,2)/DHC12
62161           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
62162           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
62163           DO 420 J=1,4
62164             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
62165             P(IN(6),J)=DP(3,J)
62166             P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
62167      &      DHCYX*DP(3,J))
62168   420     CONTINUE
62169  
62170 C...Junction strings: produce new particle, origin.
62171   430     I=I+1
62172           IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
62173             CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
62174             IF(MSTU(21).GE.1) RETURN
62175           ENDIF
62176           IRANKJ=IRANKJ+1
62177           K(I,1)=1
62178           K(I,3)=IE(1)
62179           K(I,4)=0
62180           K(I,5)=0
62181  
62182 C...Junction strings: generate flavour, hadron, pT, z and Gamma.
62183   440     CALL PYKFDI(KFL(1),0,KFL(3),K(I,2))
62184           IF(K(I,2).EQ.0) GOTO 360
62185           IF(IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND.
62186      &    IABS(KFL(3)).GT.10) THEN
62187             IF(PYR(0).GT.PARJ(19)) GOTO 440
62188           ENDIF
62189           P(I,5)=PYMASS(K(I,2))
62190           CALL PYPTDI(KFL(1),PX(3),PY(3))
62191           PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2
62192           CALL PYZDIS(KFL(1),KFL(3),PR(1),Z)
62193           IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND.
62194      &    MSTU(90).LT.8) THEN
62195             MSTU(90)=MSTU(90)+1
62196             MSTU(90+MSTU(90))=I
62197             PARU(90+MSTU(90))=Z
62198           ENDIF
62199           GAM(3)=(1D0-Z)*(GAM(1)+PR(1)/Z)
62200           DO 450 J=1,3
62201             IN(J)=IN(3+J)
62202   450     CONTINUE
62203  
62204 C...Junction strings: stepping within 'low' string region.
62205           IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
62206      &    P(IN(1),5)**2.GE.PR(1)) THEN
62207             P(IN(1)+2,4)=Z*P(IN(1)+2,3)
62208             P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2)
62209             DO 460 J=1,4
62210               P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J)
62211   460       CONTINUE
62212             GOTO 560
62213 C...Has used up energy of junction string, i.e. no more hadrons in it.
62214           ELSEIF(IN(1)+1.EQ.IN(2).AND.IN(1).EQ.N+NR+4*NS-3) THEN
62215             DO 470 J=1,5
62216               P(I,J)=0D0
62217   470       CONTINUE
62218             GOTO 600
62219 C...Stepping from 'low' string region
62220           ELSEIF(IN(1)+1.EQ.IN(2)) THEN
62221             P(IN(2)+2,4)=P(IN(2)+2,3)
62222             P(IN(2)+2,1)=1D0
62223             IN(2)=IN(2)+4
62224             IF(IN(2).GT.N+NR+4*NS) GOTO 360
62225             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
62226               P(IN(1)+2,4)=P(IN(1)+2,3)
62227               P(IN(1)+2,1)=0D0
62228               IN(1)=IN(1)+4
62229             ENDIF
62230           ENDIF
62231  
62232 C...Junction strings: find new transverse directions.
62233   480     IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR.
62234      &    IN(1).GT.IN(2)) GOTO 360
62235           IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN
62236             DO 490 J=1,4
62237               DP(1,J)=P(IN(1),J)
62238               DP(2,J)=P(IN(2),J)
62239               DP(3,J)=0D0
62240               DP(4,J)=0D0
62241   490       CONTINUE
62242             DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62243             DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62244             DHC12=DFOUR(1,2)
62245             IF(DHC12.LE.1D-2) THEN
62246               P(IN(1)+2,4)=P(IN(1)+2,3)
62247               P(IN(1)+2,1)=0D0
62248               IN(1)=IN(1)+4
62249               GOTO 480
62250             ENDIF
62251             IN(3)=N+NR+4*NS+5
62252             DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
62253             DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
62254             DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
62255             IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
62256             IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
62257             IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
62258             IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
62259             DHCX1=DFOUR(3,1)/DHC12
62260             DHCX2=DFOUR(3,2)/DHC12
62261             DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
62262             DHCY1=DFOUR(4,1)/DHC12
62263             DHCY2=DFOUR(4,2)/DHC12
62264             DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
62265             DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
62266             DO 500 J=1,4
62267               DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
62268               P(IN(3),J)=DP(3,J)
62269               P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
62270      &        DHCYX*DP(3,J))
62271   500       CONTINUE
62272 C...Express pT with respect to new axes, if sensible.
62273             PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3)))
62274             PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1))
62275             IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
62276               PX(3)=PXP
62277               PY(3)=PYP
62278             ENDIF
62279           ENDIF
62280  
62281 C...Junction strings: sum up known four-momentum, coefficients for m2.
62282           DO 530 J=1,4
62283             DHG(J)=0D0
62284             P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+
62285      &      PY(3)*P(IN(3)+1,J)
62286             DO 510 IN1=IN(4),IN(1)-4,4
62287               P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
62288   510       CONTINUE
62289             DO 520 IN2=IN(5),IN(2)-4,4
62290               P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
62291   520       CONTINUE
62292   530     CONTINUE
62293           DHM(1)=FOUR(I,I)
62294           DHM(2)=2D0*FOUR(I,IN(1))
62295           DHM(3)=2D0*FOUR(I,IN(2))
62296           DHM(4)=2D0*FOUR(IN(1),IN(2))
62297  
62298 C...Junction strings: find coefficients for Gamma expression.
62299           DO 550 IN2=IN(1)+1,IN(2),4
62300             DO 540 IN1=IN(1),IN2-1,4
62301               DHC=2D0*FOUR(IN1,IN2)
62302               DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC
62303               IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC
62304               IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC
62305               IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
62306   540       CONTINUE
62307   550     CONTINUE
62308  
62309 C...Junction strings: solve (m2, Gamma) equation system for energies.
62310           DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3)
62311           IF(ABS(DHS1).LT.1D-4) GOTO 360
62312           DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)*
62313      &    (P(I,5)**2-DHM(1))+DHG(2)*DHM(3)
62314           DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1))
62315           P(IN(2)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
62316      &    ABS(DHS1)-DHS2/DHS1)
62317           IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0D0) GOTO 360
62318           P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/
62319      &    (DHM(2)+DHM(4)*P(IN(2)+2,4))
62320  
62321 C...Junction strings: step to new region if necessary.
62322           IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN
62323             P(IN(2)+2,4)=P(IN(2)+2,3)
62324             P(IN(2)+2,1)=1D0
62325             IN(2)=IN(2)+4
62326             IF(IN(2).GT.N+NR+4*NS) GOTO 360
62327             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
62328               P(IN(1)+2,4)=P(IN(1)+2,3)
62329               P(IN(1)+2,1)=0D0
62330               IN(1)=IN(1)+4
62331             ENDIF
62332             GOTO 480
62333           ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN
62334             P(IN(1)+2,4)=P(IN(1)+2,3)
62335             P(IN(1)+2,1)=0D0
62336             IN(1)=IN(1)+4
62337             GOTO 480
62338           ENDIF
62339  
62340 C...Junction strings: particle four-momentum, remainder, loop back.
62341   560     DO 570 J=1,4
62342             P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+
62343      &      P(IN(2)+2,4)*P(IN(2),J)
62344             PJU(IU+3,J)=PJU(IU+3,J)+P(I,J)
62345   570     CONTINUE
62346           IF(P(I,4).LT.P(I,5)) GOTO 360
62347           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
62348      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
62349           IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN
62350             KFL(1)=-KFL(3)
62351             PX(1)=-PX(3)
62352             PY(1)=-PY(3)
62353             GAM(1)=GAM(3)
62354             IF(IN(3).NE.IN(6)) THEN
62355               DO 580 J=1,4
62356                 P(IN(6),J)=P(IN(3),J)
62357                 P(IN(6)+1,J)=P(IN(3)+1,J)
62358   580         CONTINUE
62359             ENDIF
62360             DO 590 JQ=1,2
62361               IN(3+JQ)=IN(JQ)
62362               P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
62363               P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4)
62364   590       CONTINUE
62365             GOTO 430
62366           ENDIF
62367  
62368 C...Junction strings: save quantities left after each string.
62369           IF(IABS(KFL(1)).GT.10) GOTO 360
62370   600     I=I-1
62371           KFJH(IU)=KFL(1)
62372           DO 610 J=1,4
62373             PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J)
62374   610     CONTINUE
62375  
62376 C...Junction strings: loopback if much unused energy in both strings.
62377           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
62378      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
62379           EJSTR(IU)=PJU(IU,5)-PJU(IU+3,5)
62380   620   CONTINUE
62381         IF((MIN(EJSTR(1),EJSTR(2)).GT.PARJ(49).OR.
62382      &  EJSTR(1).GT.PARJ(49)+PYR(0)*PARJ(50).OR.
62383      &  EJSTR(2).GT.PARJ(49)+PYR(0)*PARJ(50))
62384      &  .AND.NTRYER.LT.10) GOTO 320
62385  
62386 C...Junction strings: put together to new effective string endpoint.
62387         NJS(JT)=I-ISTA
62388         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
62389         IF(KFJH(1).EQ.KFJH(2)) KFLS=3
62390         KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)),IABS(KFJH(2)))+
62391      &  100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+KFLS,KFJH(1))
62392         DO 630 J=1,4
62393           PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J)
62394           PJS(JT+2,J)=PJU(4,J)+PJU(5,J)
62395   630   CONTINUE
62396         PJS(JT,5)=SQRT(MAX(0D0,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2-
62397      &  PJS(JT,3)**2))
62398         PJS(JT+2,5)=0D0
62399   640 CONTINUE
62400  
62401 C...Open versus closed strings. Choose breakup region for latter.
62402   650 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN
62403         NS=MJU(2)-MJU(1)
62404         NB=MJU(1)-N
62405       ELSEIF(MJU(1).NE.0) THEN
62406         NS=N+NR-MJU(1)
62407         NB=MJU(1)-N
62408       ELSEIF(MJU(2).NE.0) THEN
62409         NS=MJU(2)-N
62410         NB=1
62411       ELSEIF(IABS(K(N+1,2)).NE.21) THEN
62412         NS=NR-1
62413         NB=1
62414       ELSE
62415         NS=NR+1
62416         W2SUM=0D0
62417         DO 660 IS=1,NR
62418           P(N+NR+IS,1)=0.5D0*FOUR(N+IS,N+IS+1-NR*(IS/NR))
62419           W2SUM=W2SUM+P(N+NR+IS,1)
62420   660   CONTINUE
62421         W2RAN=PYR(0)*W2SUM
62422         NB=0
62423   670   NB=NB+1
62424         W2SUM=W2SUM-P(N+NR+NB,1)
62425         IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 670
62426       ENDIF
62427  
62428 C...Find longitudinal string directions (i.e. lightlike four-vectors).
62429       DO 700 IS=1,NS
62430         IS1=N+IS+NB-1-NR*((IS+NB-2)/NR)
62431         IS2=N+IS+NB-NR*((IS+NB-1)/NR)
62432         DO 680 J=1,5
62433           DP(1,J)=P(IS1,J)
62434           IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5D0*DP(1,J)
62435           IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J)
62436           DP(2,J)=P(IS2,J)
62437           IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5D0*DP(2,J)
62438           IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J)
62439   680   CONTINUE
62440         IF(IS1.EQ.MJU(1)) DP(1,5)=SQRT(MAX(0D0,DP(1,4)**2-DP(1,1)**2-
62441      &  DP(1,2)**2-DP(1,3)**2))
62442         IF(IS2.EQ.MJU(2)) DP(2,5)=SQRT(MAX(0D0,DP(2,4)**2-DP(2,1)**2-
62443      &  DP(2,2)**2-DP(2,3)**2))
62444         DP(3,5)=DFOUR(1,1)
62445         DP(4,5)=DFOUR(2,2)
62446         DHKC=DFOUR(1,2)
62447         IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) GOTO 200
62448         DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
62449         DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
62450         DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
62451         IN1=N+NR+4*IS-3
62452         P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
62453         DO 690 J=1,4
62454           P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
62455           P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
62456   690   CONTINUE
62457   700 CONTINUE
62458  
62459 C...Begin initialization: sum up energy, set starting position.
62460       ISAV=I
62461       MSTU91=MSTU(90)
62462   710 NTRY=NTRY+1
62463       IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
62464         PARU12=4D0*PARU12
62465         PARU13=2D0*PARU13
62466         GOTO 140
62467       ELSEIF(NTRY.GT.100) THEN
62468         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
62469         IF(MSTU(21).GE.1) RETURN
62470       ENDIF
62471       I=ISAV
62472       MSTU(90)=MSTU91
62473       DO 730 J=1,4
62474         P(N+NRS,J)=0D0
62475         DO 720 IS=1,NR
62476           P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J)
62477   720   CONTINUE
62478   730 CONTINUE
62479       DO 750 JT=1,2
62480         IRANK(JT)=0
62481         IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT)
62482         IF(NS.GT.NR) IRANK(JT)=1
62483         IBARRK(JT)=0
62484         IE(JT)=K(N+1+(JT/2)*(NP-1),3)
62485         IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1)
62486         IN(3*JT+2)=IN(3*JT+1)+1
62487         IN(3*JT+3)=N+NR+4*NS+2*JT-1
62488         DO 740 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4
62489           P(IN1,1)=2-JT
62490           P(IN1,2)=JT-1
62491           P(IN1,3)=1D0
62492   740   CONTINUE
62493   750 CONTINUE
62494  
62495 C.. MOPS variables and switches
62496       NRVMO=0
62497       XBMO=1D0
62498       MSTU(121)=0
62499       MSTU(122)=0
62500  
62501 C...Initialize flavour and pT variables for open string.
62502       IF(NS.LT.NR) THEN
62503         PX(1)=0D0
62504         PY(1)=0D0
62505         IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL PYPTDI(0,PX(1),PY(1))
62506         PX(2)=-PX(1)
62507         PY(2)=-PY(1)
62508         DO 760 JT=1,2
62509           KFL(JT)=K(IE(JT),2)
62510           IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT)
62511           IF(MJU(JT).NE.0.AND.IABS(KFL(JT)).GT.1000) IBARRK(JT)=1
62512           MSTJ(93)=1
62513           PMQ(JT)=PYMASS(KFL(JT))
62514           GAM(JT)=0D0
62515   760   CONTINUE
62516  
62517 C...Closed string: random initial breakup flavour, pT and vertex.
62518       ELSE
62519         KFL(3)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
62520         IBMO=0
62521   770   CALL PYKFDI(KFL(3),0,KFL(1),KDUMP)
62522 C.. Closed string: first vertex diq attempt => enforced second
62523 C.. vertex diq
62524         IF(IABS(KFL(1)).GT.10)THEN
62525            IBMO=1
62526            MSTU(121)=0
62527            GOTO 770
62528         ENDIF
62529         IF(IBMO.EQ.1) MSTU(121)=-1
62530         KFL(2)=-KFL(1)
62531         CALL PYPTDI(KFL(1),PX(1),PY(1))
62532         PX(2)=-PX(1)
62533         PY(2)=-PY(1)
62534         PR3=MIN(25D0,0.1D0*P(N+NR+1,5)**2)
62535   780   CALL PYZDIS(KFL(1),KFL(2),PR3,Z)
62536         ZR=PR3/(Z*P(N+NR+1,5)**2)
62537         IF(ZR.GE.1D0) GOTO 780
62538         DO 790 JT=1,2
62539           MSTJ(93)=1
62540           PMQ(JT)=PYMASS(KFL(JT))
62541           GAM(JT)=PR3*(1D0-Z)/Z
62542           IN1=N+NR+3+4*(JT/2)*(NS-1)
62543           P(IN1,JT)=1D0-Z
62544           P(IN1,3-JT)=JT-1
62545           P(IN1,3)=(2-JT)*(1D0-Z)+(JT-1)*Z
62546           P(IN1+1,JT)=ZR
62547           P(IN1+1,3-JT)=2-JT
62548           P(IN1+1,3)=(2-JT)*(1D0-ZR)+(JT-1)*ZR
62549   790   CONTINUE
62550       ENDIF
62551 C.. MOPS variables
62552       DO 800 JT=1,2
62553          XTMO(JT)=1D0
62554          PM2QMO(JT)=PMQ(JT)**2
62555          IF(IABS(KFL(JT)).GT.10) PM2QMO(JT)=0D0
62556   800 CONTINUE
62557  
62558 C...Find initial transverse directions (i.e. spacelike four-vectors).
62559       DO 840 JT=1,2
62560         IF(JT.EQ.1.OR.NS.EQ.NR-1.OR.MJU(1)+MJU(2).NE.0) THEN
62561           IN1=IN(3*JT+1)
62562           IN3=IN(3*JT+3)
62563           DO 810 J=1,4
62564             DP(1,J)=P(IN1,J)
62565             DP(2,J)=P(IN1+1,J)
62566             DP(3,J)=0D0
62567             DP(4,J)=0D0
62568   810     CONTINUE
62569           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62570           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62571           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
62572           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
62573           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
62574           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
62575           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
62576           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
62577           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
62578           DHC12=DFOUR(1,2)
62579           DHCX1=DFOUR(3,1)/DHC12
62580           DHCX2=DFOUR(3,2)/DHC12
62581           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
62582           DHCY1=DFOUR(4,1)/DHC12
62583           DHCY2=DFOUR(4,2)/DHC12
62584           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
62585           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
62586           DO 820 J=1,4
62587             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
62588             P(IN3,J)=DP(3,J)
62589             P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
62590      &      DHCYX*DP(3,J))
62591   820     CONTINUE
62592         ELSE
62593           DO 830 J=1,4
62594             P(IN3+2,J)=P(IN3,J)
62595             P(IN3+3,J)=P(IN3+1,J)
62596   830     CONTINUE
62597         ENDIF
62598   840 CONTINUE
62599  
62600 C...Remove energy used up in junction string fragmentation.
62601       IF(MJU(1)+MJU(2).GT.0) THEN
62602         DO 860 JT=1,2
62603           IF(NJS(JT).EQ.0) GOTO 860
62604           DO 850 J=1,4
62605             P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J)
62606   850     CONTINUE
62607   860   CONTINUE
62608         PARJST=PARJ(33)
62609         IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
62610         WMIN=PARJST+PMQ(1)+PMQ(2)
62611         WREM2=FOUR(N+NRS,N+NRS)
62612         IF(P(N+NRS,4).LT.0D0.OR.WREM2.LT.WMIN**2) THEN
62613           NTRYWR=NTRYWR+1
62614           IF(MOD(NTRYWR,20).NE.0) NTRYR=NTRYR-1
62615           GOTO 140
62616         ENDIF
62617       ENDIF
62618  
62619 C...Produce new particle: side, origin.
62620   870 I=I+1
62621       IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
62622         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
62623         IF(MSTU(21).GE.1) RETURN
62624       ENDIF
62625 C.. New side priority for popcorn systems
62626       IF(MSTU(121).LE.0)THEN
62627          JT=1.5D0+PYR(0)
62628          IF(IABS(KFL(3-JT)).GT.10) JT=3-JT
62629          IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT
62630       ENDIF
62631       JR=3-JT
62632       JS=3-2*JT
62633       IRANK(JT)=IRANK(JT)+1
62634       K(I,1)=1
62635       K(I,4)=0
62636       K(I,5)=0
62637  
62638 C...Generate flavour, hadron and pT.
62639   880 K(I,3)=IE(JT)
62640       CALL PYKFDI(KFL(JT),0,KFL(3),K(I,2))
62641       IF(K(I,2).EQ.0) GOTO 710
62642       MU90MO=MSTU(90)
62643       IF(MSTU(121).EQ.-1) GOTO 910
62644       IF(IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND.
62645      &IABS(KFL(3)).GT.10) THEN
62646         IF(PYR(0).GT.PARJ(19)) GOTO 880
62647       ENDIF
62648       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
62649      &K(I,3)=IJUORI(JT)
62650       P(I,5)=PYMASS(K(I,2))
62651       CALL PYPTDI(KFL(JT),PX(3),PY(3))
62652       PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2
62653  
62654 C...Final hadrons for small invariant mass.
62655       MSTJ(93)=1
62656       PMQ(3)=PYMASS(KFL(3))
62657       PARJST=PARJ(33)
62658       IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
62659       WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3)
62660       IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN=
62661      &WMIN-0.5D0*PARJ(36)*PMQ(3)
62662       WREM2=FOUR(N+NRS,N+NRS)
62663       IF(WREM2.LT.0.10D0) GOTO 710
62664       IF(WREM2.LT.MAX(WMIN*(1D0+(2D0*PYR(0)-1D0)*PARJ(37)),
62665      &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 1080
62666  
62667 C...Choose z, which gives Gamma. Shift z for heavy flavours.
62668       CALL PYZDIS(KFL(JT),KFL(3),PR(JT),Z)
62669       IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND.
62670      &MSTU(90).LT.8) THEN
62671         MSTU(90)=MSTU(90)+1
62672         MSTU(90+MSTU(90))=I
62673         PARU(90+MSTU(90))=Z
62674       ENDIF
62675       KFL1A=IABS(KFL(1))
62676       KFL2A=IABS(KFL(2))
62677       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
62678      &MOD(KFL2A/1000,10)).GE.4) THEN
62679         PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
62680         PW12=SQRT(MAX(0D0,(WREM2-PR(1)-PR(2))**2-4D0*PR(1)*PR(2)))
62681         Z=(WREM2+PR(JT)-PR(JR)+PW12*(2D0*Z-1D0))/(2D0*WREM2)
62682         PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
62683         IF((1D0-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 1080
62684       ENDIF
62685       GAM(3)=(1D0-Z)*(GAM(JT)+PR(JT)/Z)
62686  
62687 C.. MOPS baryon model modification
62688       XTMO3=(1D0-Z)*XTMO(JT)
62689       IF(IABS(KFL(3)).LE.10) NRVMO=0
62690       IF(IABS(KFL(3)).GT.10.AND.MSTJ(12).GE.4) THEN
62691          GTSTMO=1D0
62692          PTSTMO=1D0
62693          RTSTMO=PYR(0)
62694          IF(IABS(KFL(JT)).LE.10)THEN
62695             XBMO=MIN(XTMO3,1D0-(2D-10))
62696             GBMO=GAM(3)
62697             PMMO=0D0
62698             PGMO=GBMO+LOG(1D0-XBMO)*PM2QMO(JT)
62699             GTSTMO=1D0-PARF(192)**PGMO
62700          ELSE
62701             IF(IRANK(JT).EQ.1) THEN
62702                GBMO=GAM(JT)
62703                PMMO=0D0
62704                XBMO=1D0
62705             ENDIF
62706             IF(XBMO.LT.1D0-(1D-10))THEN
62707                PGNMO=GBMO*XTMO3/XBMO+PM2QMO(JT)*LOG(1D0-XTMO3)
62708                GTSTMO=(1D0-PARF(192)**PGNMO)/(1D0-PARF(192)**PGMO)
62709                PGMO=PGNMO
62710             ENDIF
62711             IF(MSTJ(12).GE.5)THEN
62712                PMNMO=SQRT((XBMO-XTMO3)*(GAM(3)/XTMO3-GBMO/XBMO))
62713                PMMO=PMMO+PMAS(PYCOMP(K(I,2)),1)-PMAS(PYCOMP(K(I,2)),3)
62714                PTSTMO=EXP((PMMO-PMNMO)*PARF(193))
62715                PMMO=PMNMO
62716             ENDIF
62717          ENDIF
62718  
62719 C.. MOPS Accepting popcorn system hadron.
62720          IF(PTSTMO*GTSTMO.GT.RTSTMO) THEN
62721             IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) THEN
62722                NRVMO=I-N-NR
62723                IF(I+NRVMO.GT.MSTU(4)-MSTU(32)-5) THEN
62724                   CALL PYERRM(11,
62725      &                 '(PYSTRF:) no more memory left in PYJETS')
62726                   IF(MSTU(21).GE.1) RETURN
62727                ENDIF
62728                IMO=I
62729                KFLMO=KFL(JT)
62730                PMQMO=PMQ(JT)
62731                PXMO=PX(JT)
62732                PYMO=PY(JT)
62733                GAMMO=GAM(JT)
62734                IRMO=IRANK(JT)
62735                XMO=XTMO(JT)
62736                DO 900 J=1,9
62737                   IF(J.LE.5) THEN
62738                      DO 890 LINE=1,I-N-NR
62739                         P(MSTU(4)-MSTU(32)-LINE,J)=P(N+NR+LINE,J)
62740                         K(MSTU(4)-MSTU(32)-LINE,J)=K(N+NR+LINE,J)
62741   890                CONTINUE
62742                   ENDIF
62743                   INMO(J)=IN(J)
62744   900          CONTINUE
62745             ENDIF
62746          ELSE
62747 C..Reject popcorn system, flag=-1 if enforcing new one
62748             MSTU(121)=-1
62749             IF(PTSTMO.GT.RTSTMO) MSTU(121)=-2
62750          ENDIF
62751       ENDIF
62752  
62753  
62754 C..Lift restoring string outside MOPS block
62755   910 IF(MSTU(121).LT.0) THEN
62756          IF(MSTU(121).EQ.-2) MSTU(121)=0
62757          MSTU(90)=MU90MO
62758          NRVMO=0
62759          IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) GOTO 880
62760          I=IMO
62761          KFL(JT)=KFLMO
62762          PMQ(JT)=PMQMO
62763          PX(JT)=PXMO
62764          PY(JT)=PYMO
62765          GAM(JT)=GAMMO
62766          IRANK(JT)=IRMO
62767          XTMO(JT)=XMO
62768          DO 930 J=1,9
62769             IF(J.LE.5) THEN
62770                DO 920 LINE=1,I-N-NR
62771                   P(N+NR+LINE,J)=P(MSTU(4)-MSTU(32)-LINE,J)
62772                   K(N+NR+LINE,J)=K(MSTU(4)-MSTU(32)-LINE,J)
62773   920          CONTINUE
62774             ENDIF
62775             IN(J)=INMO(J)
62776   930    CONTINUE
62777          GOTO 880
62778       ENDIF
62779       XTMO(JT)=XTMO3
62780 C.. MOPS end of modification
62781  
62782       DO 940 J=1,3
62783         IN(J)=IN(3*JT+J)
62784   940 CONTINUE
62785  
62786 C...Stepping within or from 'low' string region easy.
62787       IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
62788      &P(IN(1),5)**2.GE.PR(JT)) THEN
62789         P(IN(JT)+2,4)=Z*P(IN(JT)+2,3)
62790         P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2)
62791         DO 950 J=1,4
62792           P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J)
62793   950   CONTINUE
62794         GOTO 1040
62795       ELSEIF(IN(1)+1.EQ.IN(2)) THEN
62796         P(IN(JR)+2,4)=P(IN(JR)+2,3)
62797         P(IN(JR)+2,JT)=1D0
62798         IN(JR)=IN(JR)+4*JS
62799         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 710
62800         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
62801           P(IN(JT)+2,4)=P(IN(JT)+2,3)
62802           P(IN(JT)+2,JT)=0D0
62803           IN(JT)=IN(JT)+4*JS
62804         ENDIF
62805       ENDIF
62806  
62807 C...Find new transverse directions (i.e. spacelike string vectors).
62808   960 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR.
62809      &IN(1).GT.IN(2)) GOTO 710
62810       IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN
62811         DO 970 J=1,4
62812           DP(1,J)=P(IN(1),J)
62813           DP(2,J)=P(IN(2),J)
62814           DP(3,J)=0D0
62815           DP(4,J)=0D0
62816   970   CONTINUE
62817         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62818         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62819         DHC12=DFOUR(1,2)
62820         IF(DHC12.LE.1D-2) THEN
62821           P(IN(JT)+2,4)=P(IN(JT)+2,3)
62822           P(IN(JT)+2,JT)=0D0
62823           IN(JT)=IN(JT)+4*JS
62824           GOTO 960
62825         ENDIF
62826         IN(3)=N+NR+4*NS+5
62827         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
62828         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
62829         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
62830         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
62831         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
62832         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
62833         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
62834         DHCX1=DFOUR(3,1)/DHC12
62835         DHCX2=DFOUR(3,2)/DHC12
62836         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
62837         DHCY1=DFOUR(4,1)/DHC12
62838         DHCY2=DFOUR(4,2)/DHC12
62839         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
62840         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
62841         DO 980 J=1,4
62842           DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
62843           P(IN(3),J)=DP(3,J)
62844           P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
62845      &    DHCYX*DP(3,J))
62846   980   CONTINUE
62847 C...Express pT with respect to new axes, if sensible.
62848         PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)*
62849      &  FOUR(IN(3*JT+3)+1,IN(3)))
62850         PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)*
62851      &  FOUR(IN(3*JT+3)+1,IN(3)+1))
62852         IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
62853           PX(3)=PXP
62854           PY(3)=PYP
62855         ENDIF
62856       ENDIF
62857  
62858 C...Sum up known four-momentum. Gives coefficients for m2 expression.
62859       DO 1010 J=1,4
62860         DHG(J)=0D0
62861         P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+
62862      &  PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J)
62863         DO 990 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS
62864           P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
62865   990   CONTINUE
62866         DO 1000 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS
62867           P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
62868  1000   CONTINUE
62869  1010 CONTINUE
62870       DHM(1)=FOUR(I,I)
62871       DHM(2)=2D0*FOUR(I,IN(1))
62872       DHM(3)=2D0*FOUR(I,IN(2))
62873       DHM(4)=2D0*FOUR(IN(1),IN(2))
62874  
62875 C...Find coefficients for Gamma expression.
62876       DO 1030 IN2=IN(1)+1,IN(2),4
62877         DO 1020 IN1=IN(1),IN2-1,4
62878           DHC=2D0*FOUR(IN1,IN2)
62879           DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC
62880           IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC
62881           IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC
62882           IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
62883  1020   CONTINUE
62884  1030 CONTINUE
62885  
62886 C...Solve (m2, Gamma) equation system for energies taken.
62887       DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1)
62888       IF(ABS(DHS1).LT.1D-4) GOTO 710
62889       DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)*
62890      &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1)
62891       DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1))
62892       P(IN(JR)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
62893      &ABS(DHS1)-DHS2/DHS1)
62894       IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0D0) GOTO 710
62895       P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/
62896      &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4))
62897  
62898 C...Step to new region if necessary.
62899       IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN
62900         P(IN(JR)+2,4)=P(IN(JR)+2,3)
62901         P(IN(JR)+2,JT)=1D0
62902         IN(JR)=IN(JR)+4*JS
62903         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 710
62904         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
62905           P(IN(JT)+2,4)=P(IN(JT)+2,3)
62906           P(IN(JT)+2,JT)=0D0
62907           IN(JT)=IN(JT)+4*JS
62908         ENDIF
62909         GOTO 960
62910       ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN
62911         P(IN(JT)+2,4)=P(IN(JT)+2,3)
62912         P(IN(JT)+2,JT)=0D0
62913         IN(JT)=IN(JT)+4*JS
62914         GOTO 960
62915       ENDIF
62916  
62917 C...Four-momentum of particle. Remaining quantities. Loop back.
62918  1040 DO 1050 J=1,4
62919         P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J)
62920         P(N+NRS,J)=P(N+NRS,J)-P(I,J)
62921  1050 CONTINUE
62922       IF(P(IN(1)+2,4).GT.1D0+PARU(14).OR.P(IN(1)+2,4).LT.-PARU(14).OR.
62923      &P(IN(2)+2,4).GT.1D0+PARU(14).OR.P(IN(2)+2,4).LT.-PARU(14))
62924      &GOTO 200
62925       IF(P(I,4).LT.P(I,5)) GOTO 710
62926       KFL(JT)=-KFL(3)
62927       PMQ(JT)=PMQ(3)
62928       PX(JT)=-PX(3)
62929       PY(JT)=-PY(3)
62930       GAM(JT)=GAM(3)
62931       IF(IN(3).NE.IN(3*JT+3)) THEN
62932         DO 1060 J=1,4
62933           P(IN(3*JT+3),J)=P(IN(3),J)
62934           P(IN(3*JT+3)+1,J)=P(IN(3)+1,J)
62935  1060   CONTINUE
62936       ENDIF
62937       DO 1070 JQ=1,2
62938         IN(3*JT+JQ)=IN(JQ)
62939         P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
62940         P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4)
62941  1070 CONTINUE
62942       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
62943      &IBARRK(JT)=0
62944       GOTO 870
62945  
62946 C...Final hadron: side, flavour, hadron, mass.
62947  1080 I=I+1
62948       K(I,1)=1
62949       K(I,3)=IE(JR)
62950       K(I,4)=0
62951       K(I,5)=0
62952       CALL PYKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2))
62953       IF(K(I,2).EQ.0) GOTO 710
62954       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I-1,2)),10000).GT.1000)
62955      &IBARRK(JT)=0
62956       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
62957      &K(I,3)=IJUORI(JT)
62958       IF(IBARRK(JR).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
62959      &K(I,3)=IJUORI(JR)
62960       P(I,5)=PYMASS(K(I,2))
62961       PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
62962  
62963 C...Final two hadrons: find common setup of four-vectors.
62964       JQ=1
62965       IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.
62966      &P(IN(7)+2,3)*P(IN(8)+2,3)*FOUR(IN(7),IN(8))) JQ=2
62967       DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2))
62968       DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12
62969       DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12
62970       IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN
62971         PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ)
62972         PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ)
62973         PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS*
62974      &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2
62975       ENDIF
62976  
62977 C...Solve kinematics for final two hadrons, if possible.
62978       WREM2=2D0*DHR1*DHR2*DHC12
62979       FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2)
62980       IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1D0) GOTO 200
62981       IF(FD.GE.1D0) GOTO 710
62982       FA=WREM2+PR(JT)-PR(JR)
62983       FB=SQRT(MAX(0D0,FA**2-4D0*WREM2*PR(JT)))
62984       PREVCF=PARJ(42)
62985       IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
62986       PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*FB*PARJ(40))))
62987       FB=SIGN(FB,JS*(PYR(0)-PREV))
62988       KFL1A=IABS(KFL(1))
62989       KFL2A=IABS(KFL(2))
62990       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
62991      &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0D0,FA**2-
62992      &4D0*WREM2*PR(JT))),DBLE(JS))
62993       DO 1090 J=1,4
62994         P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))*
62995      &  P(IN(3*JQ+3)+1,J)+0.5D0*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+
62996      &  DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2
62997         P(I,J)=P(N+NRS,J)-P(I-1,J)
62998  1090 CONTINUE
62999       IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 710
63000       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
63001       DM2F2=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
63002       IF(DM2F1.GT.1D-10*P(I-1,4)**2.OR.DM2F2.GT.1D-10*P(I,4)**2) THEN
63003         NTRYFN=NTRYFN+1
63004         IF(NTRYFN.LT.100) GOTO 140
63005         CALL PYERRM(13,'(PYSTRF:) bad energies for final two hadrons')
63006       ENDIF
63007  
63008 C...Mark jets as fragmented and give daughter pointers.
63009       N=I-NRS+1
63010       DO 1100 I=NSAV+1,NSAV+NP
63011         IM=K(I,3)
63012         K(IM,1)=K(IM,1)+10
63013         IF(MSTU(16).NE.2) THEN
63014           K(IM,4)=NSAV+1
63015           K(IM,5)=NSAV+1
63016         ELSE
63017           K(IM,4)=NSAV+2
63018           K(IM,5)=N
63019         ENDIF
63020  1100 CONTINUE
63021  
63022 C...Document string system. Move up particles.
63023       NSAV=NSAV+1
63024       K(NSAV,1)=11
63025       K(NSAV,2)=92
63026       K(NSAV,3)=IP
63027       K(NSAV,4)=NSAV+1
63028       K(NSAV,5)=N
63029       DO 1110 J=1,4
63030         P(NSAV,J)=DPS(J)
63031         V(NSAV,J)=V(IP,J)
63032  1110 CONTINUE
63033       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
63034       V(NSAV,5)=0D0
63035       DO 1130 I=NSAV+1,N
63036         DO 1120 J=1,5
63037           K(I,J)=K(I+NRS-1,J)
63038           P(I,J)=P(I+NRS-1,J)
63039           V(I,J)=0D0
63040  1120   CONTINUE
63041  1130 CONTINUE
63042       MSTU91=MSTU(90)
63043       DO 1140 IZ=MSTU90+1,MSTU91
63044         MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N
63045         PARU9T(IZ)=PARU(90+IZ)
63046  1140 CONTINUE
63047       MSTU(90)=MSTU90
63048  
63049 C...Order particles in rank along the chain. Update mother pointer.
63050       DO 1160 I=NSAV+1,N
63051         DO 1150 J=1,5
63052           K(I-NSAV+N,J)=K(I,J)
63053           P(I-NSAV+N,J)=P(I,J)
63054  1150   CONTINUE
63055  1160 CONTINUE
63056       I1=NSAV
63057       DO 1190 I=N+1,2*N-NSAV
63058         IF(K(I,3).NE.IE(1).AND.K(I,3).NE.IJUORI(1)) GOTO 1190
63059         I1=I1+1
63060         DO 1170 J=1,5
63061           K(I1,J)=K(I,J)
63062           P(I1,J)=P(I,J)
63063  1170   CONTINUE
63064         IF(MSTU(16).NE.2) K(I1,3)=NSAV
63065         DO 1180 IZ=MSTU90+1,MSTU91
63066           IF(MSTU9T(IZ).EQ.I) THEN
63067             MSTU(90)=MSTU(90)+1
63068             MSTU(90+MSTU(90))=I1
63069             PARU(90+MSTU(90))=PARU9T(IZ)
63070           ENDIF
63071  1180   CONTINUE
63072  1190 CONTINUE
63073       DO 1220 I=2*N-NSAV,N+1,-1
63074         IF(K(I,3).EQ.IE(1).OR.K(I,3).EQ.IJUORI(1)) GOTO 1220
63075         I1=I1+1
63076         DO 1200 J=1,5
63077           K(I1,J)=K(I,J)
63078           P(I1,J)=P(I,J)
63079  1200   CONTINUE
63080         IF(MSTU(16).NE.2) K(I1,3)=NSAV
63081         DO 1210 IZ=MSTU90+1,MSTU91
63082           IF(MSTU9T(IZ).EQ.I) THEN
63083             MSTU(90)=MSTU(90)+1
63084             MSTU(90+MSTU(90))=I1
63085             PARU(90+MSTU(90))=PARU9T(IZ)
63086           ENDIF
63087  1210   CONTINUE
63088  1220 CONTINUE
63089  
63090 C...Boost back particle system. Set production vertices.
63091       IF(MBST.EQ.0) THEN
63092         MSTU(33)=1
63093         CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),
63094      &  DPS(3)/DPS(4))
63095       ELSE
63096         DO 1230 I=NSAV+1,N
63097           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
63098           IF(P(I,3).GT.0D0) THEN
63099             HHPEZ=(P(I,4)+P(I,3))*HHBZ
63100             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
63101             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
63102           ELSE
63103             HHPEZ=(P(I,4)-P(I,3))/HHBZ
63104             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
63105             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
63106           ENDIF
63107  1230   CONTINUE
63108       ENDIF
63109       DO 1250 I=NSAV+1,N
63110         DO 1240 J=1,4
63111           V(I,J)=V(IP,J)
63112  1240   CONTINUE
63113  1250 CONTINUE
63114  
63115       RETURN
63116       END
63117  
63118 C*********************************************************************
63119  
63120 C...PYJURF
63121 C...From three given input vectors in PJU the boost VJU from
63122 C...the "lab frame" to the junction rest frame is constructed.
63123  
63124       SUBROUTINE PYJURF(PJU,VJU)
63125  
63126 C...Double precision and integer declarations.
63127       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
63128       IMPLICIT INTEGER(I-N)
63129  
63130 C...Input, output and local arrays.
63131       DIMENSION PJU(3,5),VJU(5),PSUM(5),A(3,3),PENEW(3),PCM(5,5)
63132       DATA TWOPI/6.283186D0/
63133  
63134 C...Calculate masses and other invariants.
63135       DO 100 J=1,4
63136         PSUM(J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
63137   100 CONTINUE
63138       PSUM2=PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2
63139       PSUM(5)=SQRT(PSUM2)
63140       DO 120 I=1,3
63141         DO 110 J=1,3
63142           A(I,J)=PJU(I,4)*PJU(J,4)-PJU(I,1)*PJU(J,1)-
63143      &    PJU(I,2)*PJU(J,2)-PJU(I,3)*PJU(J,3)
63144   110   CONTINUE
63145   120 CONTINUE
63146  
63147 C...Pick I to be most massive parton and J to be the one closest to I.
63148       ITRY=0
63149       I=1
63150       IF(A(2,2).GT.A(1,1)) I=2
63151       IF(A(3,3).GT.MAX(A(1,1),A(2,2))) I=3
63152   130 ITRY=ITRY+1
63153       J=1+MOD(I,3)
63154       K=1+MOD(J,3)
63155       IF(A(I,K)**2*A(J,J).LT.A(I,J)**2*A(K,K)) THEN
63156         K=1+MOD(I,3)
63157         J=1+MOD(K,3)
63158       ENDIF
63159       PMI2=A(I,I)
63160       PMJ2=A(J,J)
63161       PMK2=A(K,K)
63162       AIJ=A(I,J)
63163       AIK=A(I,K)
63164       AJK=A(J,K)
63165  
63166 C...Trivial find new parton energies if all three partons are massless.
63167       IF(PMI2.LT.1D-4) THEN
63168         PEI=SQRT(2D0*AIK*AIJ/(3D0*AJK))
63169         PEJ=SQRT(2D0*AJK*AIJ/(3D0*AIK))
63170         PEK=SQRT(2D0*AIK*AJK/(3D0*AIJ))
63171  
63172 C...Else find momentum range for parton I and values at extremes.
63173       ELSE
63174         PAIMIN=0D0
63175         PEIMIN=SQRT(PMI2)
63176         PEJMIN=AIJ/PEIMIN
63177         PEKMIN=AIK/PEIMIN
63178         PAJMIN=SQRT(MAX(0D0,PEJMIN**2-PMJ2))
63179         PAKMIN=SQRT(MAX(0D0,PEKMIN**2-PMK2))
63180         FMIN=PEJMIN*PEKMIN+0.5D0*PAJMIN*PAKMIN-AJK
63181         PEIMAX=(AIJ+AIK)/SQRT(PMJ2+PMK2+2D0*AJK)
63182         IF(PMJ2.GT.1D-4) PEIMAX=AIJ/SQRT(PMJ2)
63183         PAIMAX=SQRT(MAX(0D0,PEIMAX**2-PMI2))
63184         HI=PEIMAX**2-0.25D0*PAIMAX**2
63185         PAJMAX=(PEIMAX*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-
63186      &  0.5D0*PAIMAX*AIJ)/HI
63187         PAKMAX=(PEIMAX*SQRT(MAX(0D0,AIK**2-PMK2*HI))-
63188      &  0.5D0*PAIMAX*AIK)/HI
63189         PEJMAX=SQRT(PAJMAX**2+PMJ2)
63190         PEKMAX=SQRT(PAKMAX**2+PMK2)
63191         FMAX=PEJMAX*PEKMAX+0.5D0*PAJMAX*PAKMAX-AJK
63192  
63193 C...If unexpected values at upper endpoint then pick another parton.
63194         IF(FMAX.GT.0D0.AND.ITRY.LE.2) THEN
63195           I1=1+MOD(I,3)
63196           IF(A(I1,I1).GE.1D-4) THEN
63197             I=I1
63198             GOTO 130
63199           ENDIF
63200           ITRY=ITRY+1
63201           I1=1+MOD(I,3)
63202           IF(ITRY.LE.2.AND.A(I1,I1).GE.1D-4) THEN
63203             I=I1
63204             GOTO 130
63205           ENDIF
63206         ENDIF
63207  
63208 C..Start binary + linear search to find solution inside range.
63209         ITER=0
63210         ITMIN=0
63211         ITMAX=0
63212         PAI=0.5D0*(PAIMIN+PAIMAX)
63213   140   ITER=ITER+1
63214  
63215 C...Derive momentum of other two partons and distance to root.
63216         PEI=SQRT(PAI**2+PMI2)
63217         HI=PEI**2-0.25D0*PAI**2
63218         PAJ=(PEI*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-0.5D0*PAI*AIJ)/HI
63219         PEJ=SQRT(PAJ**2+PMJ2)
63220         PAK=(PEI*SQRT(MAX(0D0,AIK**2-PMK2*HI))-0.5D0*PAI*AIK)/HI
63221         PEK=SQRT(PAK**2+PMK2)
63222         FNOW=PEJ*PEK+0.5D0*PAJ*PAK-AJK
63223  
63224 C...Pick next I momentum to explore, hopefully closer to root.
63225         IF(FNOW.GT.0D0) THEN
63226           PAIMIN=PAI
63227           FMIN=FNOW
63228           ITMIN=ITMIN+1
63229         ELSE
63230           PAIMAX=PAI
63231           FMAX=FNOW
63232           ITMAX=ITMAX+1
63233         ENDIF
63234         IF((ITER.LT.10.OR.ITMIN.LE.1.OR.ITMAX.LE.1).AND.ITER.LT.20)
63235      &  THEN
63236           PAI=0.5D0*(PAIMIN+PAIMAX)
63237           GOTO 140
63238         ELSEIF(ITER.LT.40.AND.FMIN.GT.0D0.AND.FMAX.LT.0D0.AND.
63239      &  ABS(FNOW).GT.1D-12*PSUM2) THEN
63240           PAI=PAIMIN+(PAIMAX-PAIMIN)*FMIN/(FMIN-FMAX)
63241           GOTO 140
63242         ENDIF
63243       ENDIF
63244  
63245 C...Now know energies in junction rest frame.
63246       PENEW(I)=PEI
63247       PENEW(J)=PEJ
63248       PENEW(K)=PEK
63249  
63250 C...Boost (copy of) partons to their rest frame.
63251       VXCM=-PSUM(1)/PSUM(5)
63252       VYCM=-PSUM(2)/PSUM(5)
63253       VZCM=-PSUM(3)/PSUM(5)
63254       GAMCM=SQRT(1D0+VXCM**2+VYCM**2+VZCM**2)
63255       DO 150 I=1,3
63256         FAC1=PJU(I,1)*VXCM+PJU(I,2)*VYCM+PJU(I,3)*VZCM
63257         FAC2=FAC1/(1D0+GAMCM)+PJU(I,4)
63258         PCM(I,1)=PJU(I,1)+FAC2*VXCM
63259         PCM(I,2)=PJU(I,2)+FAC2*VYCM
63260         PCM(I,3)=PJU(I,3)+FAC2*VZCM
63261         PCM(I,4)=PJU(I,4)*GAMCM+FAC1
63262         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
63263   150 CONTINUE
63264  
63265 C...Construct difference vectors and boost to junction rest frame.
63266       DO 160 J=1,3
63267         PCM(4,J)=PCM(1,J)/PCM(1,4)-PCM(2,J)/PCM(2,4)
63268         PCM(5,J)=PCM(1,J)/PCM(1,4)-PCM(3,J)/PCM(3,4)
63269   160 CONTINUE
63270       PCM(4,4)=PENEW(1)/PCM(1,4)-PENEW(2)/PCM(2,4)
63271       PCM(5,4)=PENEW(1)/PCM(1,4)-PENEW(3)/PCM(3,4)
63272       PCM4S=PCM(4,1)**2+PCM(4,2)**2+PCM(4,3)**2
63273       PCM5S=PCM(5,1)**2+PCM(5,2)**2+PCM(5,3)**2
63274       PCM45=PCM(4,1)*PCM(5,1)+PCM(4,2)*PCM(5,2)+PCM(4,3)*PCM(5,3)
63275       C4=(PCM5S*PCM(4,4)-PCM45*PCM(5,4))/(PCM4S*PCM5S-PCM45**2)
63276       C5=(PCM4S*PCM(5,4)-PCM45*PCM(4,4))/(PCM4S*PCM5S-PCM45**2)
63277       VXJU=C4*PCM(4,1)+C5*PCM(5,1)
63278       VYJU=C4*PCM(4,2)+C5*PCM(5,2)
63279       VZJU=C4*PCM(4,3)+C5*PCM(5,3)
63280       GAMJU=SQRT(1D0+VXJU**2+VYJU**2+VZJU**2)
63281  
63282 C...Add two boosts, giving final result.
63283       FCM=(VXJU*VXCM+VYJU*VYCM+VZJU*VZCM)/(1+GAMCM)+GAMJU
63284       VJU(1)=VXJU+FCM*VXCM
63285       VJU(2)=VYJU+FCM*VYCM
63286       VJU(3)=VZJU+FCM*VZCM
63287       VJU(4)=SQRT(1D0+VJU(1)**2+VJU(2)**2+VJU(3)**2)
63288       VJU(5)=1D0
63289  
63290 C...In case of error in reconstruction: revert to CM frame of system.
63291       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
63292      &(PCM(1,5)*PCM(2,5))
63293       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
63294      &(PCM(1,5)*PCM(3,5))
63295       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
63296      &(PCM(2,5)*PCM(3,5))
63297       ERRCCM=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
63298       ERRTCM=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
63299       DO 170 I=1,3
63300         FAC1=PJU(I,1)*VJU(1)+PJU(I,2)*VJU(2)+PJU(I,3)*VJU(3)
63301         FAC2=FAC1/(1D0+VJU(4))+PJU(I,4)
63302         PCM(I,1)=PJU(I,1)+FAC2*VJU(1)
63303         PCM(I,2)=PJU(I,2)+FAC2*VJU(2)
63304         PCM(I,3)=PJU(I,3)+FAC2*VJU(3)
63305         PCM(I,4)=PJU(I,4)*VJU(4)+FAC1
63306         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
63307   170 CONTINUE
63308       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
63309      &(PCM(1,5)*PCM(2,5))
63310       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
63311      &(PCM(1,5)*PCM(3,5))
63312       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
63313      &(PCM(2,5)*PCM(3,5))
63314       ERRCJU=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
63315       ERRTJU=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
63316       IF(ERRCJU+ERRTJU.GT.ERRCCM+ERRTCM) THEN
63317         VJU(1)=VXCM
63318         VJU(2)=VYCM
63319         VJU(3)=VZCM
63320         VJU(4)=GAMCM
63321       ENDIF
63322  
63323       RETURN
63324       END
63325  
63326 C*********************************************************************
63327  
63328 C...PYINDF
63329 C...Handles the fragmentation of a jet system (or a single
63330 C...jet) according to independent fragmentation models.
63331  
63332       SUBROUTINE PYINDF(IP)
63333  
63334 C...Double precision and integer declarations.
63335       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
63336       IMPLICIT INTEGER(I-N)
63337       INTEGER PYK,PYCHGE,PYCOMP
63338 C...Commonblocks.
63339       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
63340       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
63341       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
63342       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
63343 C...Local arrays.
63344       DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3),
63345      &KFLO(2),PXO(2),PYO(2),WO(2)
63346  
63347 C.. MOPS error message
63348       IF(MSTJ(12).GT.3) CALL PYERRM(9,'(PYINDF:) MSTJ(12)>3 options'//
63349      &' are not treated as expected in independent fragmentation')
63350  
63351 C...Reset counters. Identify parton system and take copy. Check flavour.
63352       NSAV=N
63353       MSTU90=MSTU(90)
63354       NJET=0
63355       KQSUM=0
63356       DO 100 J=1,5
63357         DPS(J)=0D0
63358   100 CONTINUE
63359       I=IP-1
63360   110 I=I+1
63361       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
63362         CALL PYERRM(12,'(PYINDF:) failed to reconstruct jet system')
63363         IF(MSTU(21).GE.1) RETURN
63364       ENDIF
63365       IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110
63366       KC=PYCOMP(K(I,2))
63367       IF(KC.EQ.0) GOTO 110
63368       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
63369       IF(KQ.EQ.0) GOTO 110
63370       NJET=NJET+1
63371       IF(KQ.NE.2) KQSUM=KQSUM+KQ
63372       DO 120 J=1,5
63373         K(NSAV+NJET,J)=K(I,J)
63374         P(NSAV+NJET,J)=P(I,J)
63375         DPS(J)=DPS(J)+P(I,J)
63376   120 CONTINUE
63377       K(NSAV+NJET,3)=I
63378       IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND.
63379      &K(I+1,1).EQ.2)) GOTO 110
63380       IF(NJET.NE.1.AND.KQSUM.NE.0) THEN
63381         CALL PYERRM(12,'(PYINDF:) unphysical flavour combination')
63382         IF(MSTU(21).GE.1) RETURN
63383       ENDIF
63384  
63385 C...Boost copied system to CM frame. Find CM energy and sum flavours.
63386       IF(NJET.NE.1) THEN
63387         MSTU(33)=1
63388         CALL PYROBO(NSAV+1,NSAV+NJET,0D0,0D0,-DPS(1)/DPS(4),
63389      &  -DPS(2)/DPS(4),-DPS(3)/DPS(4))
63390       ENDIF
63391       PECM=0D0
63392       DO 130 J=1,3
63393         NFI(J)=0
63394   130 CONTINUE
63395       DO 140 I=NSAV+1,NSAV+NJET
63396         PECM=PECM+P(I,4)
63397         KFA=IABS(K(I,2))
63398         IF(KFA.LE.3) THEN
63399           NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2))
63400         ELSEIF(KFA.GT.1000) THEN
63401           KFLA=MOD(KFA/1000,10)
63402           KFLB=MOD(KFA/100,10)
63403           IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2))
63404           IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2))
63405         ENDIF
63406   140 CONTINUE
63407  
63408 C...Loop over attempts made. Reset counters.
63409       NTRY=0
63410   150 NTRY=NTRY+1
63411       IF(NTRY.GT.200) THEN
63412         CALL PYERRM(14,'(PYINDF:) caught in infinite loop')
63413         IF(MSTU(21).GE.1) RETURN
63414       ENDIF
63415       N=NSAV+NJET
63416       MSTU(90)=MSTU90
63417       DO 160 J=1,3
63418         NFL(J)=NFI(J)
63419         IFET(J)=0
63420         KFLF(J)=0
63421   160 CONTINUE
63422  
63423 C...Loop over jets to be fragmented.
63424       DO 230 IP1=NSAV+1,NSAV+NJET
63425         MSTJ(91)=0
63426         NSAV1=N
63427         MSTU91=MSTU(90)
63428  
63429 C...Initial flavour and momentum values. Jet along +z axis.
63430         KFLH=IABS(K(IP1,2))
63431         IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10)
63432         KFLO(2)=0
63433         WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2)
63434  
63435 C...Initial values for quark or diquark jet.
63436   170   IF(IABS(K(IP1,2)).NE.21) THEN
63437           NSTR=1
63438           KFLO(1)=K(IP1,2)
63439           CALL PYPTDI(0,PXO(1),PYO(1))
63440           WO(1)=WF
63441  
63442 C...Initial values for gluon treated like random quark jet.
63443         ELSEIF(MSTJ(2).LE.2) THEN
63444           NSTR=1
63445           IF(MSTJ(2).EQ.2) MSTJ(91)=1
63446           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
63447           CALL PYPTDI(0,PXO(1),PYO(1))
63448           WO(1)=WF
63449  
63450 C...Initial values for gluon treated like quark-antiquark jet pair,
63451 C...sharing energy according to Altarelli-Parisi splitting function.
63452         ELSE
63453           NSTR=2
63454           IF(MSTJ(2).EQ.4) MSTJ(91)=1
63455           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
63456           KFLO(2)=-KFLO(1)
63457           CALL PYPTDI(0,PXO(1),PYO(1))
63458           PXO(2)=-PXO(1)
63459           PYO(2)=-PYO(1)
63460           WO(1)=WF*PYR(0)**(1D0/3D0)
63461           WO(2)=WF-WO(1)
63462         ENDIF
63463  
63464 C...Initial values for rank, flavour, pT and W+.
63465         DO 220 ISTR=1,NSTR
63466   180     I=N
63467           MSTU(90)=MSTU91
63468           IRANK=0
63469           KFL1=KFLO(ISTR)
63470           PX1=PXO(ISTR)
63471           PY1=PYO(ISTR)
63472           W=WO(ISTR)
63473  
63474 C...New hadron. Generate flavour and hadron species.
63475   190     I=I+1
63476           IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN
63477             CALL PYERRM(11,'(PYINDF:) no more memory left in PYJETS')
63478             IF(MSTU(21).GE.1) RETURN
63479           ENDIF
63480           IRANK=IRANK+1
63481           K(I,1)=1
63482           K(I,3)=IP1
63483           K(I,4)=0
63484           K(I,5)=0
63485   200     CALL PYKFDI(KFL1,0,KFL2,K(I,2))
63486           IF(K(I,2).EQ.0) GOTO 180
63487           IF(IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND.IABS(KFL2).GT.10) THEN
63488             IF(PYR(0).GT.PARJ(19)) GOTO 200
63489           ENDIF
63490  
63491 C...Find hadron mass. Generate four-momentum.
63492           P(I,5)=PYMASS(K(I,2))
63493           CALL PYPTDI(KFL1,PX2,PY2)
63494           P(I,1)=PX1+PX2
63495           P(I,2)=PY1+PY2
63496           PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
63497           CALL PYZDIS(KFL1,KFL2,PR,Z)
63498           MZSAV=0
63499           IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN
63500             MZSAV=1
63501             MSTU(90)=MSTU(90)+1
63502             MSTU(90+MSTU(90))=I
63503             PARU(90+MSTU(90))=Z
63504           ENDIF
63505           P(I,3)=0.5D0*(Z*W-PR/MAX(1D-4,Z*W))
63506           P(I,4)=0.5D0*(Z*W+PR/MAX(1D-4,Z*W))
63507           IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND.
63508      &    P(I,3).LE.0.001D0) THEN
63509             IF(W.GE.P(I,5)+0.5D0*PARJ(32)) GOTO 180
63510             P(I,3)=0.0001D0
63511             P(I,4)=SQRT(PR)
63512             Z=P(I,4)/W
63513           ENDIF
63514  
63515 C...Remaining flavour and momentum.
63516           KFL1=-KFL2
63517           PX1=-PX2
63518           PY1=-PY2
63519           W=(1D0-Z)*W
63520           DO 210 J=1,5
63521             V(I,J)=0D0
63522   210     CONTINUE
63523  
63524 C...Check if pL acceptable. Go back for new hadron if enough energy.
63525           IF(MSTJ(3).GE.0.AND.P(I,3).LT.0D0) THEN
63526             I=I-1
63527             IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1
63528           ENDIF
63529           IF(W.GT.PARJ(31)) GOTO 190
63530           N=I
63531   220   CONTINUE
63532         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1D0*PARJ(32)
63533         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170
63534  
63535 C...Rotate jet to new direction.
63536         THE=PYANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2))
63537         PHI=PYANGL(P(IP1,1),P(IP1,2))
63538         MSTU(33)=1
63539         CALL PYROBO(NSAV1+1,N,THE,PHI,0D0,0D0,0D0)
63540         K(K(IP1,3),4)=NSAV1+1
63541         K(K(IP1,3),5)=N
63542  
63543 C...End of jet generation loop. Skip conservation in some cases.
63544   230 CONTINUE
63545       IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490
63546       IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150
63547  
63548 C...Subtract off produced hadron flavours, finished if zero.
63549       DO 240 I=NSAV+NJET+1,N
63550         KFA=IABS(K(I,2))
63551         KFLA=MOD(KFA/1000,10)
63552         KFLB=MOD(KFA/100,10)
63553         KFLC=MOD(KFA/10,10)
63554         IF(KFLA.EQ.0) THEN
63555           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB
63556           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB
63557         ELSE
63558           IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2))
63559           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))
63560           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2))
63561         ENDIF
63562   240 CONTINUE
63563       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
63564      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
63565       IF(NREQ.EQ.0) GOTO 320
63566  
63567 C...Take away flavour of low-momentum particles until enough freedom.
63568       NREM=0
63569   250 IREM=0
63570       P2MIN=PECM**2
63571       DO 260 I=NSAV+NJET+1,N
63572         P2=P(I,1)**2+P(I,2)**2+P(I,3)**2
63573         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I
63574         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2
63575   260 CONTINUE
63576       IF(IREM.EQ.0) GOTO 150
63577       K(IREM,1)=7
63578       KFA=IABS(K(IREM,2))
63579       KFLA=MOD(KFA/1000,10)
63580       KFLB=MOD(KFA/100,10)
63581       KFLC=MOD(KFA/10,10)
63582       IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8
63583       IF(K(IREM,1).EQ.8) GOTO 250
63584       IF(KFLA.EQ.0) THEN
63585         ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB
63586         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN
63587         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN
63588       ELSE
63589         IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2))
63590         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2))
63591         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2))
63592       ENDIF
63593       NREM=NREM+1
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.GT.NREM) GOTO 250
63597       DO 270 I=NSAV+NJET+1,N
63598         IF(K(I,1).EQ.8) K(I,1)=1
63599   270 CONTINUE
63600  
63601 C...Find combination of existing and new flavours for hadron.
63602   280 NFET=2
63603       IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3
63604       IF(NREQ.LT.NREM) NFET=1
63605       IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0
63606       DO 290 J=1,NFET
63607         IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*PYR(0)
63608         KFLF(J)=ISIGN(1,NFL(1))
63609         IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2))
63610         IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3))
63611   290 CONTINUE
63612       IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0))
63613      &GOTO 280
63614       IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR.
63615      &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3)
63616      &.LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280
63617       IF(NFET.EQ.0) KFLF(1)=1+INT((2D0+PARJ(2))*PYR(0))
63618       IF(NFET.EQ.0) KFLF(2)=-KFLF(1)
63619       IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2D0+PARJ(2))*PYR(0)),-KFLF(1))
63620       IF(NFET.LE.2) KFLF(3)=0
63621       IF(KFLF(3).NE.0) THEN
63622         KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+
63623      &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1))
63624         IF(KFLF(1).EQ.KFLF(3).OR.(1D0+3D0*PARJ(4))*PYR(0).GT.1D0)
63625      &  KFLFC=KFLFC+ISIGN(2,KFLFC)
63626       ELSE
63627         KFLFC=KFLF(1)
63628       ENDIF
63629       CALL PYKFDI(KFLFC,KFLF(2),KFLDMP,KF)
63630       IF(KF.EQ.0) GOTO 280
63631       DO 300 J=1,MAX(2,NFET)
63632         NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J))
63633   300 CONTINUE
63634  
63635 C...Store hadron at random among free positions.
63636       NPOS=MIN(1+INT(PYR(0)*NREM),NREM)
63637       DO 310 I=NSAV+NJET+1,N
63638         IF(K(I,1).EQ.7) NPOS=NPOS-1
63639         IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310
63640         K(I,1)=1
63641         K(I,2)=KF
63642         P(I,5)=PYMASS(K(I,2))
63643         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
63644   310 CONTINUE
63645       NREM=NREM-1
63646       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
63647      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
63648       IF(NREM.GT.0) GOTO 280
63649  
63650 C...Compensate for missing momentum in global scheme (3 options).
63651   320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN
63652         DO 340 J=1,3
63653           PSI(J)=0D0
63654           DO 330 I=NSAV+NJET+1,N
63655             PSI(J)=PSI(J)+P(I,J)
63656   330     CONTINUE
63657   340   CONTINUE
63658         PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2
63659         PWS=0D0
63660         DO 350 I=NSAV+NJET+1,N
63661           IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4)
63662           IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
63663      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
63664           IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1D0
63665   350   CONTINUE
63666         DO 370 I=NSAV+NJET+1,N
63667           IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4)
63668           IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
63669      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
63670           IF(MOD(MSTJ(3),5).EQ.3) PW=1D0
63671           DO 360 J=1,3
63672             P(I,J)=P(I,J)-PSI(J)*PW/PWS
63673   360     CONTINUE
63674           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
63675   370   CONTINUE
63676  
63677 C...Compensate for missing momentum withing each jet separately.
63678       ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN
63679         DO 390 I=N+1,N+NJET
63680           K(I,1)=0
63681           DO 380 J=1,5
63682             P(I,J)=0D0
63683   380     CONTINUE
63684   390   CONTINUE
63685         DO 410 I=NSAV+NJET+1,N
63686           IR1=K(I,3)
63687           IR2=N+IR1-NSAV
63688           K(IR2,1)=K(IR2,1)+1
63689           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
63690      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
63691           DO 400 J=1,3
63692             P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J)
63693   400     CONTINUE
63694           P(IR2,4)=P(IR2,4)+P(I,4)
63695           P(IR2,5)=P(IR2,5)+PLS
63696   410   CONTINUE
63697         PSS=0D0
63698         DO 420 I=N+1,N+NJET
63699           IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8D0*P(I,5)+0.2D0))
63700   420   CONTINUE
63701         DO 440 I=NSAV+NJET+1,N
63702           IR1=K(I,3)
63703           IR2=N+IR1-NSAV
63704           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
63705      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
63706           DO 430 J=1,3
63707             P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1D0/(P(IR2,5)*PSS)-1D0)*
63708      &      PLS*P(IR1,J)
63709   430     CONTINUE
63710           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
63711   440   CONTINUE
63712       ENDIF
63713  
63714 C...Scale momenta for energy conservation.
63715       IF(MOD(MSTJ(3),5).NE.0) THEN
63716         PMS=0D0
63717         PES=0D0
63718         PQS=0D0
63719         DO 450 I=NSAV+NJET+1,N
63720           PMS=PMS+P(I,5)
63721           PES=PES+P(I,4)
63722           PQS=PQS+P(I,5)**2/P(I,4)
63723   450   CONTINUE
63724         IF(PMS.GE.PECM) GOTO 150
63725         NECO=0
63726   460   NECO=NECO+1
63727         PFAC=(PECM-PQS)/(PES-PQS)
63728         PES=0D0
63729         PQS=0D0
63730         DO 480 I=NSAV+NJET+1,N
63731           DO 470 J=1,3
63732             P(I,J)=PFAC*P(I,J)
63733   470     CONTINUE
63734           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
63735           PES=PES+P(I,4)
63736           PQS=PQS+P(I,5)**2/P(I,4)
63737   480   CONTINUE
63738         IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2D-6*PECM) GOTO 460
63739       ENDIF
63740  
63741 C...Origin of produced particles and parton daughter pointers.
63742   490 DO 500 I=NSAV+NJET+1,N
63743         IF(MSTU(16).NE.2) K(I,3)=NSAV+1
63744         IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3)
63745   500 CONTINUE
63746       DO 510 I=NSAV+1,NSAV+NJET
63747         I1=K(I,3)
63748         K(I1,1)=K(I1,1)+10
63749         IF(MSTU(16).NE.2) THEN
63750           K(I1,4)=NSAV+1
63751           K(I1,5)=NSAV+1
63752         ELSE
63753           K(I1,4)=K(I1,4)-NJET+1
63754           K(I1,5)=K(I1,5)-NJET+1
63755           IF(K(I1,5).LT.K(I1,4)) THEN
63756             K(I1,4)=0
63757             K(I1,5)=0
63758           ENDIF
63759         ENDIF
63760   510 CONTINUE
63761  
63762 C...Document independent fragmentation system. Remove copy of jets.
63763       NSAV=NSAV+1
63764       K(NSAV,1)=11
63765       K(NSAV,2)=93
63766       K(NSAV,3)=IP
63767       K(NSAV,4)=NSAV+1
63768       K(NSAV,5)=N-NJET+1
63769       DO 520 J=1,4
63770         P(NSAV,J)=DPS(J)
63771         V(NSAV,J)=V(IP,J)
63772   520 CONTINUE
63773       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
63774       V(NSAV,5)=0D0
63775       DO 540 I=NSAV+NJET,N
63776         DO 530 J=1,5
63777           K(I-NJET+1,J)=K(I,J)
63778           P(I-NJET+1,J)=P(I,J)
63779           V(I-NJET+1,J)=V(I,J)
63780   530   CONTINUE
63781   540 CONTINUE
63782       N=N-NJET+1
63783       DO 550 IZ=MSTU90+1,MSTU(90)
63784         MSTU(90+IZ)=MSTU(90+IZ)-NJET+1
63785   550 CONTINUE
63786  
63787 C...Boost back particle system. Set production vertices.
63788       IF(NJET.NE.1) CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),
63789      &DPS(2)/DPS(4),DPS(3)/DPS(4))
63790       DO 570 I=NSAV+1,N
63791         DO 560 J=1,4
63792           V(I,J)=V(IP,J)
63793   560   CONTINUE
63794   570 CONTINUE
63795  
63796       RETURN
63797       END
63798  
63799 C*********************************************************************
63800  
63801 C...PYDECY
63802 C...Handles the decay of unstable particles.
63803  
63804       SUBROUTINE PYDECY(IP)
63805  
63806 C...Double precision and integer declarations.
63807       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
63808       IMPLICIT INTEGER(I-N)
63809       INTEGER PYK,PYCHGE,PYCOMP
63810 C...Commonblocks.
63811       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
63812       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
63813       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
63814       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
63815       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
63816 C...Local arrays.
63817       DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3),
63818      &WTCOR(10),PTAU(4),PCMTAU(4),DBETAU(3)
63819       CHARACTER CIDC*4
63820       DATA WTCOR/2D0,5D0,15D0,60D0,250D0,1500D0,1.2D4,1.2D5,150D0,16D0/
63821  
63822 C...Functions: momentum in two-particle decays and four-product.
63823       PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2D0*A)
63824       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)
63825  
63826 C...Initial values.
63827       NTRY=0
63828       NSAV=N
63829       KFA=IABS(K(IP,2))
63830       KFS=ISIGN(1,K(IP,2))
63831       KC=PYCOMP(KFA)
63832       MSTJ(92)=0
63833  
63834 C...Choose lifetime and determine decay vertex.
63835       IF(K(IP,1).EQ.5) THEN
63836         V(IP,5)=0D0
63837       ELSEIF(K(IP,1).NE.4) THEN
63838         V(IP,5)=-PMAS(KC,4)*LOG(PYR(0))
63839       ENDIF
63840       DO 100 J=1,4
63841         VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5)
63842   100 CONTINUE
63843  
63844 C...Determine whether decay allowed or not.
63845       MOUT=0
63846       IF(MSTJ(22).EQ.2) THEN
63847         IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1
63848       ELSEIF(MSTJ(22).EQ.3) THEN
63849         IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
63850       ELSEIF(MSTJ(22).EQ.4) THEN
63851         IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
63852         IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
63853       ENDIF
63854       IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN
63855         K(IP,1)=4
63856         RETURN
63857       ENDIF
63858  
63859 C...Interface to external tau decay library (for tau polarization).
63860       IF(KFA.EQ.15.AND.MSTJ(28).GE.1) THEN
63861  
63862 C...Starting values for pointers and momenta.
63863         ITAU=IP
63864         DO 110 J=1,4
63865           PTAU(J)=P(ITAU,J)
63866           PCMTAU(J)=P(ITAU,J)
63867   110   CONTINUE
63868  
63869 C...Iterate to find position and code of mother of tau.
63870         IMTAU=ITAU
63871   120   IMTAU=K(IMTAU,3)
63872  
63873         IF(IMTAU.EQ.0) THEN
63874 C...If no known origin then impossible to do anything further.
63875           KFORIG=0
63876           IORIG=0
63877  
63878         ELSEIF(K(IMTAU,2).EQ.K(ITAU,2)) THEN
63879 C...If tau -> tau + gamma then add gamma energy and loop.
63880           IF(K(K(IMTAU,4),2).EQ.22) THEN
63881             DO 130 J=1,4
63882               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,4),J)
63883   130       CONTINUE
63884           ELSEIF(K(K(IMTAU,5),2).EQ.22) THEN
63885             DO 140 J=1,4
63886               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,5),J)
63887   140       CONTINUE
63888           ENDIF
63889           GOTO 120
63890  
63891         ELSEIF(IABS(K(IMTAU,2)).GT.100) THEN
63892 C...If coming from weak decay of hadron then W is not stored in record,
63893 C...but can be reconstructed by adding neutrino momentum.
63894           KFORIG=-ISIGN(24,K(ITAU,2))
63895           IORIG=0
63896           DO 160 II=K(IMTAU,4),K(IMTAU,5)
63897             IF(K(II,2)*ISIGN(1,K(ITAU,2)).EQ.-16) THEN
63898               DO 150 J=1,4
63899                 PCMTAU(J)=PCMTAU(J)+P(II,J)
63900   150         CONTINUE
63901             ENDIF
63902   160     CONTINUE
63903  
63904         ELSE
63905 C...If coming from resonance decay then find latest copy of this
63906 C...resonance (may not completely agree).
63907           KFORIG=K(IMTAU,2)
63908           IORIG=IMTAU
63909           DO 170 II=IMTAU+1,IP-1
63910             IF(K(II,2).EQ.KFORIG.AND.K(II,3).EQ.IORIG.AND.
63911      &      ABS(P(II,5)-P(IORIG,5)).LT.1D-5*P(IORIG,5)) IORIG=II
63912   170     CONTINUE
63913           DO 180 J=1,4
63914             PCMTAU(J)=P(IORIG,J)
63915   180     CONTINUE
63916         ENDIF
63917  
63918 C...Boost tau to rest frame of production process (where known)
63919 C...and rotate it to sit along +z axis.
63920         DO 190 J=1,3
63921           DBETAU(J)=PCMTAU(J)/PCMTAU(4)
63922   190   CONTINUE
63923         IF(KFORIG.NE.0) CALL PYROBO(ITAU,ITAU,0D0,0D0,-DBETAU(1),
63924      &  -DBETAU(2),-DBETAU(3))
63925         PHITAU=PYANGL(P(ITAU,1),P(ITAU,2))
63926         CALL PYROBO(ITAU,ITAU,0D0,-PHITAU,0D0,0D0,0D0)
63927         THETAU=PYANGL(P(ITAU,3),P(ITAU,1))
63928         CALL PYROBO(ITAU,ITAU,-THETAU,0D0,0D0,0D0,0D0)
63929  
63930 C...Call tau decay routine (if meaningful) and fill extra info.
63931         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
63932           CALL PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
63933           DO 200 II=NSAV+1,NSAV+NDECAY
63934             K(II,1)=1
63935             K(II,3)=IP
63936             K(II,4)=0
63937             K(II,5)=0
63938   200     CONTINUE
63939           N=NSAV+NDECAY
63940         ENDIF
63941  
63942 C...Boost back decay tau and decay products.
63943         DO 210 J=1,4
63944           P(ITAU,J)=PTAU(J)
63945   210   CONTINUE
63946         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
63947           CALL PYROBO(NSAV+1,N,THETAU,PHITAU,0D0,0D0,0D0)
63948           IF(KFORIG.NE.0) CALL PYROBO(NSAV+1,N,0D0,0D0,DBETAU(1),
63949      &    DBETAU(2),DBETAU(3))
63950  
63951 C...Skip past ordinary tau decay treatment.
63952           MMAT=0
63953           MBST=0
63954           ND=0
63955           GOTO 630
63956         ENDIF
63957       ENDIF
63958  
63959 C...B-Bbar mixing: flip sign of meson appropriately.
63960       MMIX=0
63961       IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN
63962         XBBMIX=PARJ(76)
63963         IF(KFA.EQ.531) XBBMIX=PARJ(77)
63964         IF(SIN(0.5D0*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.PYR(0)) MMIX=1
63965         IF(MMIX.EQ.1) KFS=-KFS
63966       ENDIF
63967  
63968 C...Check existence of decay channels. Particle/antiparticle rules.
63969       KCA=KC
63970       IF(MDCY(KC,2).GT.0) THEN
63971         MDMDCY=MDME(MDCY(KC,2),2)
63972         IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY
63973       ENDIF
63974       IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN
63975         CALL PYERRM(9,'(PYDECY:) no decay channel defined')
63976         RETURN
63977       ENDIF
63978       IF(MOD(KFA/1000,10).EQ.0.AND.KCA.EQ.85) KFS=-KFS
63979       IF(KCHG(KC,3).EQ.0) THEN
63980         KFSP=1
63981         KFSN=0
63982         IF(PYR(0).GT.0.5D0) KFS=-KFS
63983       ELSEIF(KFS.GT.0) THEN
63984         KFSP=1
63985         KFSN=0
63986       ELSE
63987         KFSP=0
63988         KFSN=1
63989       ENDIF
63990  
63991 C...Sum branching ratios of allowed decay channels.
63992   220 NOPE=0
63993       BRSU=0D0
63994       DO 230 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1
63995         IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
63996      &  KFSN*MDME(IDL,1).NE.3) GOTO 230
63997         IF(MDME(IDL,2).GT.100) GOTO 230
63998         NOPE=NOPE+1
63999         BRSU=BRSU+BRAT(IDL)
64000   230 CONTINUE
64001       IF(NOPE.EQ.0) THEN
64002         CALL PYERRM(2,'(PYDECY:) all decay channels closed by user')
64003         RETURN
64004       ENDIF
64005  
64006 C...Select decay channel among allowed ones.
64007   240 RBR=BRSU*PYR(0)
64008       IDL=MDCY(KCA,2)-1
64009   250 IDL=IDL+1
64010       IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
64011      &KFSN*MDME(IDL,1).NE.3) THEN
64012         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
64013       ELSEIF(MDME(IDL,2).GT.100) THEN
64014         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
64015       ELSE
64016         IDC=IDL
64017         RBR=RBR-BRAT(IDL)
64018         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0D0) GOTO 250
64019       ENDIF
64020  
64021 C...Start readout of decay channel: matrix element, reset counters.
64022       MMAT=MDME(IDC,2)
64023   260 NTRY=NTRY+1
64024       IF(MOD(NTRY,200).EQ.0) THEN
64025         WRITE(CIDC,'(I4)') IDC
64026 C...Do not print warning for some well-known special cases.
64027         IF(KFA.NE.113.AND.KFA.NE.115.AND.KFA.NE.215)
64028      &  CALL PYERRM(4,'(PYDECY:) caught in loop for decay channel'//
64029      &  CIDC)
64030         GOTO 240
64031       ENDIF
64032       IF(NTRY.GT.1000) THEN
64033         CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
64034         IF(MSTU(21).GE.1) RETURN
64035       ENDIF
64036       I=N
64037       NP=0
64038       NQ=0
64039       MBST=0
64040       IF(MMAT.GE.11.AND.P(IP,4).GT.20D0*P(IP,5)) MBST=1
64041       DO 270 J=1,4
64042         PV(1,J)=0D0
64043         IF(MBST.EQ.0) PV(1,J)=P(IP,J)
64044   270 CONTINUE
64045       IF(MBST.EQ.1) PV(1,4)=P(IP,5)
64046       PV(1,5)=P(IP,5)
64047       PS=0D0
64048       PSQ=0D0
64049       MREM=0
64050       MHADDY=0
64051       IF(KFA.GT.80) MHADDY=1
64052 C.. Random flavour and popcorn system memory.
64053       IRNDMO=0
64054       JTMO=0
64055       MSTU(121)=0
64056       MSTU(125)=10
64057  
64058 C...Read out decay products. Convert to standard flavour code.
64059       JTMAX=5
64060       IF(MDME(IDC+1,2).EQ.101) JTMAX=10
64061       DO 280 JT=1,JTMAX
64062         IF(JT.LE.5) KP=KFDP(IDC,JT)
64063         IF(JT.GE.6) KP=KFDP(IDC+1,JT-5)
64064         IF(KP.EQ.0) GOTO 280
64065         KPA=IABS(KP)
64066         KCP=PYCOMP(KPA)
64067         IF(KPA.GT.80) MHADDY=1
64068         IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN
64069           KFP=KP
64070         ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN
64071           KFP=KFS*KP
64072         ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN
64073           KFP=-KFS*MOD(KFA/10,10)
64074         ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN
64075           KFP=KFS*(100*MOD(KFA/10,100)+3)
64076         ELSEIF(KPA.EQ.81) THEN
64077           KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1)
64078         ELSEIF(KP.EQ.82) THEN
64079           CALL PYDCYK(-KFS*INT(1D0+(2D0+PARJ(2))*PYR(0)),0,KFP,KDUMP)
64080           IF(KFP.EQ.0) GOTO 260
64081           KFP=-KFP
64082           IRNDMO=1
64083           MSTJ(93)=1
64084           IF(PV(1,5).LT.PARJ(32)+2D0*PYMASS(KFP)) GOTO 260
64085         ELSEIF(KP.EQ.-82) THEN
64086           KFP=MSTU(124)
64087         ENDIF
64088         IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=PYCOMP(KFP)
64089  
64090 C...Add decay product to event record or to quark flavour list.
64091         KFPA=IABS(KFP)
64092         KQP=KCHG(KCP,2)
64093         IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN
64094           NQ=NQ+1
64095           KFLO(NQ)=KFP
64096 C...set rndmflav popcorn system pointer
64097           IF(KP.EQ.82.AND.MSTU(121).GT.0) JTMO=NQ
64098           MSTJ(93)=2
64099           PSQ=PSQ+PYMASS(KFLO(NQ))
64100         ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND.
64101      &    MOD(NQ,2).EQ.1) THEN
64102           NQ=NQ-1
64103           PS=PS-P(I,5)
64104           K(I,1)=1
64105           KFI=K(I,2)
64106           CALL PYKFDI(KFP,KFI,KFLDMP,K(I,2))
64107           IF(K(I,2).EQ.0) GOTO 260
64108           MSTJ(93)=1
64109           P(I,5)=PYMASS(K(I,2))
64110           PS=PS+P(I,5)
64111         ELSE
64112           I=I+1
64113           NP=NP+1
64114           IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1
64115           IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1
64116           K(I,1)=1+MOD(NQ,2)
64117           IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2
64118           IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1
64119           K(I,2)=KFP
64120           K(I,3)=IP
64121           K(I,4)=0
64122           K(I,5)=0
64123           P(I,5)=PYMASS(KFP)
64124           PS=PS+P(I,5)
64125         ENDIF
64126   280 CONTINUE
64127  
64128 C...Check masses for resonance decays.
64129       IF(MHADDY.EQ.0) THEN
64130         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 240
64131       ENDIF
64132  
64133 C...Choose decay multiplicity in phase space model.
64134   290 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN
64135         PSP=PS
64136         CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1D0))
64137         IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63)
64138   300   NTRY=NTRY+1
64139 C...Reset popcorn flags if new attempt. Re-select rndmflav if failed.
64140         IF(IRNDMO.EQ.0) THEN
64141            MSTU(121)=0
64142            JTMO=0
64143         ELSEIF(IRNDMO.EQ.1) THEN
64144            IRNDMO=2
64145         ELSE
64146            GOTO 260
64147         ENDIF
64148         IF(NTRY.GT.1000) THEN
64149           CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
64150           IF(MSTU(21).GE.1) RETURN
64151         ENDIF
64152         IF(MMAT.LE.20) THEN
64153           GAUSS=SQRT(-2D0*CNDE*LOG(MAX(1D-10,PYR(0))))*
64154      &    SIN(PARU(2)*PYR(0))
64155           ND=0.5D0+0.5D0*NP+0.25D0*NQ+CNDE+GAUSS
64156           IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 300
64157           IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 300
64158           IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 300
64159           IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 300
64160         ELSE
64161           ND=MMAT-20
64162         ENDIF
64163 C.. Set maximum popcorn meson number. Test rndmflav popcorn size.
64164         MSTU(125)=ND-NQ/2
64165         IF(MSTU(121).GT.MSTU(125)) GOTO 300
64166  
64167 C...Form hadrons from flavour content.
64168         DO 310 JT=1,NQ
64169           KFL1(JT)=KFLO(JT)
64170   310   CONTINUE
64171         IF(ND.EQ.NP+NQ/2) GOTO 330
64172         DO 320 I=N+NP+1,N+ND-NQ/2
64173 C.. Stick to started popcorn system, else pick side at random
64174           JT=JTMO
64175           IF(JT.EQ.0) JT=1+INT((NQ-1)*PYR(0))
64176           CALL PYDCYK(KFL1(JT),0,KFL2,K(I,2))
64177           IF(K(I,2).EQ.0) GOTO 300
64178           MSTU(125)=MSTU(125)-1
64179           JTMO=0
64180           IF(MSTU(121).GT.0) JTMO=JT
64181           KFL1(JT)=-KFL2
64182   320   CONTINUE
64183   330   JT=2
64184         JT2=3
64185         JT3=4
64186         IF(NQ.EQ.4.AND.PYR(0).LT.PARJ(66)) JT=4
64187         IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))*
64188      &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3
64189         IF(JT.EQ.3) JT2=2
64190         IF(JT.EQ.4) JT3=2
64191         CALL PYDCYK(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2))
64192         IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 300
64193         IF(NQ.EQ.4) CALL PYDCYK(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2))
64194         IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 300
64195  
64196 C...Check that sum of decay product masses not too large.
64197         PS=PSP
64198         DO 340 I=N+NP+1,N+ND
64199           K(I,1)=1
64200           K(I,3)=IP
64201           K(I,4)=0
64202           K(I,5)=0
64203           P(I,5)=PYMASS(K(I,2))
64204           PS=PS+P(I,5)
64205   340   CONTINUE
64206         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 300
64207  
64208 C...Rescale energy to subtract off spectator quark mass.
64209       ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44)
64210      &  .AND.NP.GE.3) THEN
64211         PS=PS-P(N+NP,5)
64212         PQT=(P(N+NP,5)+PARJ(65))/PV(1,5)
64213         DO 350 J=1,5
64214           P(N+NP,J)=PQT*PV(1,J)
64215           PV(1,J)=(1D0-PQT)*PV(1,J)
64216   350   CONTINUE
64217         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
64218         ND=NP-1
64219         MREM=1
64220  
64221 C...Fully specified final state: check mass broadening effects.
64222       ELSE
64223         IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 260
64224         ND=NP
64225       ENDIF
64226  
64227 C...Determine position of grandmother, number of sisters.
64228       NM=0
64229       KFAS=0
64230       MSGN=0
64231       IF(MMAT.EQ.3) THEN
64232         IM=K(IP,3)
64233         IF(IM.LT.0.OR.IM.GE.IP) IM=0
64234         IF(IM.NE.0) KFAM=IABS(K(IM,2))
64235         IF(IM.NE.0) THEN
64236           DO 360 IL=MAX(IP-2,IM+1),MIN(IP+2,N)
64237             IF(K(IL,3).EQ.IM) NM=NM+1
64238             IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL
64239   360     CONTINUE
64240           IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR.
64241      &    MOD(KFAM/1000,10).NE.0) NM=0
64242           IF(NM.EQ.2) THEN
64243             KFAS=IABS(K(ISIS,2))
64244             IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR.
64245      &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0
64246           ENDIF
64247         ENDIF
64248       ENDIF
64249  
64250 C...Kinematics of one-particle decays.
64251       IF(ND.EQ.1) THEN
64252         DO 370 J=1,4
64253           P(N+1,J)=P(IP,J)
64254   370   CONTINUE
64255         GOTO 630
64256       ENDIF
64257  
64258 C...Calculate maximum weight ND-particle decay.
64259       PV(ND,5)=P(N+ND,5)
64260       IF(ND.GE.3) THEN
64261         WTMAX=1D0/WTCOR(ND-2)
64262         PMAX=PV(1,5)-PS+P(N+ND,5)
64263         PMIN=0D0
64264         DO 380 IL=ND-1,1,-1
64265           PMAX=PMAX+P(N+IL,5)
64266           PMIN=PMIN+P(N+IL+1,5)
64267           WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5))
64268   380   CONTINUE
64269       ENDIF
64270  
64271 C...Find virtual gamma mass in Dalitz decay.
64272   390 IF(ND.EQ.2) THEN
64273       ELSEIF(MMAT.EQ.2) THEN
64274         PMES=4D0*PMAS(11,1)**2
64275         PMRHO2=PMAS(131,1)**2
64276         PGRHO2=PMAS(131,2)**2
64277   400   PMST=PMES*(P(IP,5)**2/PMES)**PYR(0)
64278         WT=(1+0.5D0*PMES/PMST)*SQRT(MAX(0D0,1D0-PMES/PMST))*
64279      &  (1D0-PMST/P(IP,5)**2)**3*(1D0+PGRHO2/PMRHO2)/
64280      &  ((1D0-PMST/PMRHO2)**2+PGRHO2/PMRHO2)
64281         IF(WT.LT.PYR(0)) GOTO 400
64282         PV(2,5)=MAX(2.00001D0*PMAS(11,1),SQRT(PMST))
64283  
64284 C...M-generator gives weight. If rejected, try again.
64285       ELSE
64286   410   RORD(1)=1D0
64287         DO 440 IL1=2,ND-1
64288           RSAV=PYR(0)
64289           DO 420 IL2=IL1-1,1,-1
64290             IF(RSAV.LE.RORD(IL2)) GOTO 430
64291             RORD(IL2+1)=RORD(IL2)
64292   420     CONTINUE
64293   430     RORD(IL2+1)=RSAV
64294   440   CONTINUE
64295         RORD(ND)=0D0
64296         WT=1D0
64297         DO 450 IL=ND-1,1,-1
64298           PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*
64299      &    (PV(1,5)-PS)
64300           WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
64301   450   CONTINUE
64302         IF(WT.LT.PYR(0)*WTMAX) GOTO 410
64303       ENDIF
64304  
64305 C...Perform two-particle decays in respective CM frame.
64306   460 DO 480 IL=1,ND-1
64307         PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
64308         UE(3)=2D0*PYR(0)-1D0
64309         PHI=PARU(2)*PYR(0)
64310         UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
64311         UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
64312         DO 470 J=1,3
64313           P(N+IL,J)=PA*UE(J)
64314           PV(IL+1,J)=-PA*UE(J)
64315   470   CONTINUE
64316         P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2)
64317         PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2)
64318   480 CONTINUE
64319  
64320 C...Lorentz transform decay products to lab frame.
64321       DO 490 J=1,4
64322         P(N+ND,J)=PV(ND,J)
64323   490 CONTINUE
64324       DO 530 IL=ND-1,1,-1
64325         DO 500 J=1,3
64326           BE(J)=PV(IL,J)/PV(IL,4)
64327   500   CONTINUE
64328         GA=PV(IL,4)/PV(IL,5)
64329         DO 520 I=N+IL,N+ND
64330           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
64331           DO 510 J=1,3
64332             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
64333   510     CONTINUE
64334           P(I,4)=GA*(P(I,4)+BEP)
64335   520   CONTINUE
64336   530 CONTINUE
64337  
64338 C...Check that no infinite loop in matrix element weight.
64339       NTRY=NTRY+1
64340       IF(NTRY.GT.800) GOTO 560
64341  
64342 C...Matrix elements for omega and phi decays.
64343       IF(MMAT.EQ.1) THEN
64344         WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2
64345      &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2
64346      &  +2D0*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3)
64347         IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001D0).LT.PYR(0)) GOTO 390
64348  
64349 C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-.
64350       ELSEIF(MMAT.EQ.2) THEN
64351         FOUR12=FOUR(N+1,N+2)
64352         FOUR13=FOUR(N+1,N+3)
64353         WT=(PMST-0.5D0*PMES)*(FOUR12**2+FOUR13**2)+
64354      &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2)
64355         IF(WT.LT.PYR(0)*0.25D0*PMST*(P(IP,5)**2-PMST)**2) GOTO 460
64356  
64357 C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar,
64358 C...V vector), of form cos**2(theta02) in V1 rest frame, and for
64359 C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02).
64360       ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN
64361         FOUR10=FOUR(IP,IM)
64362         FOUR12=FOUR(IP,N+1)
64363         FOUR02=FOUR(IM,N+1)
64364         PMS1=P(IP,5)**2
64365         PMS0=P(IM,5)**2
64366         PMS2=P(N+1,5)**2
64367         IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2
64368         IF(KFAS.EQ.22) HNUM=PMS1*(2D0*FOUR10*FOUR12*FOUR02-
64369      &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2)
64370         HNUM=MAX(1D-6*PMS1**2*PMS0*PMS2,HNUM)
64371         HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2)
64372         IF(HNUM.LT.PYR(0)*HDEN) GOTO 460
64373  
64374 C...Matrix element for "onium" -> g + g + g or gamma + g + g.
64375       ELSEIF(MMAT.EQ.4) THEN
64376         HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
64377         HX2=2D0*FOUR(IP,N+2)/P(IP,5)**2
64378         HX3=2D0*FOUR(IP,N+3)/P(IP,5)**2
64379         WT=((1D0-HX1)/(HX2*HX3))**2+((1D0-HX2)/(HX1*HX3))**2+
64380      &  ((1D0-HX3)/(HX1*HX2))**2
64381         IF(WT.LT.2D0*PYR(0)) GOTO 390
64382         IF(K(IP+1,2).EQ.22.AND.(1D0-HX1)*P(IP,5)**2.LT.4D0*PARJ(32)**2)
64383      &  GOTO 390
64384  
64385 C...Effective matrix element for nu spectrum in tau -> nu + hadrons.
64386       ELSEIF(MMAT.EQ.41) THEN
64387         IF(MBST.EQ.0) HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
64388         IF(MBST.EQ.1) HX1=2D0*P(N+1,4)/P(IP,5)
64389         HXM=MIN(0.75D0,2D0*(1D0-PS/P(IP,5)))
64390         IF(HX1*(3D0-2D0*HX1).LT.PYR(0)*HXM*(3D0-2D0*HXM)) GOTO 390
64391  
64392 C...Matrix elements for weak decays (only semileptonic for c and b)
64393       ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
64394      &  .AND.ND.EQ.3) THEN
64395         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3)
64396         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3)
64397         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
64398       ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN
64399         DO 550 J=1,4
64400           P(N+NP+1,J)=0D0
64401           DO 540 IS=N+3,N+NP
64402             P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J)
64403   540     CONTINUE
64404   550   CONTINUE
64405         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1)
64406         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1)
64407         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
64408       ENDIF
64409  
64410 C...Scale back energy and reattach spectator.
64411   560 IF(MREM.EQ.1) THEN
64412         DO 570 J=1,5
64413           PV(1,J)=PV(1,J)/(1D0-PQT)
64414   570   CONTINUE
64415         ND=ND+1
64416         MREM=0
64417       ENDIF
64418  
64419 C...Low invariant mass for system with spectator quark gives particle,
64420 C...not two jets. Readjust momenta accordingly.
64421       IF(MMAT.EQ.31.AND.ND.EQ.3) THEN
64422         MSTJ(93)=1
64423         PM2=PYMASS(K(N+2,2))
64424         MSTJ(93)=1
64425         PM3=PYMASS(K(N+3,2))
64426         IF(P(N+2,5)**2+P(N+3,5)**2+2D0*FOUR(N+2,N+3).GE.
64427      &  (PARJ(32)+PM2+PM3)**2) GOTO 630
64428         K(N+2,1)=1
64429         KFTEMP=K(N+2,2)
64430         CALL PYKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2))
64431         IF(K(N+2,2).EQ.0) GOTO 260
64432         P(N+2,5)=PYMASS(K(N+2,2))
64433         PS=P(N+1,5)+P(N+2,5)
64434         PV(2,5)=P(N+2,5)
64435         MMAT=0
64436         ND=2
64437         GOTO 460
64438       ELSEIF(MMAT.EQ.44) THEN
64439         MSTJ(93)=1
64440         PM3=PYMASS(K(N+3,2))
64441         MSTJ(93)=1
64442         PM4=PYMASS(K(N+4,2))
64443         IF(P(N+3,5)**2+P(N+4,5)**2+2D0*FOUR(N+3,N+4).GE.
64444      &  (PARJ(32)+PM3+PM4)**2) GOTO 600
64445         K(N+3,1)=1
64446         KFTEMP=K(N+3,2)
64447         CALL PYKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2))
64448         IF(K(N+3,2).EQ.0) GOTO 260
64449         P(N+3,5)=PYMASS(K(N+3,2))
64450         DO 580 J=1,3
64451           P(N+3,J)=P(N+3,J)+P(N+4,J)
64452   580   CONTINUE
64453         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)
64454         HA=P(N+1,4)**2-P(N+2,4)**2
64455         HB=HA-(P(N+1,5)**2-P(N+2,5)**2)
64456         HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+
64457      &  (P(N+1,3)-P(N+2,3))**2
64458         HD=(PV(1,4)-P(N+3,4))**2
64459         HE=HA**2-2D0*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2
64460         HF=HD*HC-HB**2
64461         HG=HD*HC-HA*HB
64462         HH=(SQRT(HG**2+HE*HF)-HG)/(2D0*HF)
64463         DO 590 J=1,3
64464           PCOR=HH*(P(N+1,J)-P(N+2,J))
64465           P(N+1,J)=P(N+1,J)+PCOR
64466           P(N+2,J)=P(N+2,J)-PCOR
64467   590   CONTINUE
64468         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)
64469         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)
64470         ND=ND-1
64471       ENDIF
64472  
64473 C...Check invariant mass of W jets. May give one particle or start over.
64474   600 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
64475      &.AND.IABS(K(N+1,2)).LT.10) THEN
64476         PMR=SQRT(MAX(0D0,P(N+1,5)**2+P(N+2,5)**2+2D0*FOUR(N+1,N+2)))
64477         MSTJ(93)=1
64478         PM1=PYMASS(K(N+1,2))
64479         MSTJ(93)=1
64480         PM2=PYMASS(K(N+2,2))
64481         IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 610
64482         KFLDUM=INT(1.5D0+PYR(0))
64483         CALL PYKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1)
64484         CALL PYKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2)
64485         IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 260
64486         PSM=PYMASS(KF1)+PYMASS(KF2)
64487         IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 610
64488         IF(MMAT.GE.43.AND.PMR.GT.0.2D0*PARJ(32)+PSM) GOTO 610
64489         IF(MMAT.EQ.48) GOTO 390
64490         IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 260
64491         K(N+1,1)=1
64492         KFTEMP=K(N+1,2)
64493         CALL PYKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2))
64494         IF(K(N+1,2).EQ.0) GOTO 260
64495         P(N+1,5)=PYMASS(K(N+1,2))
64496         K(N+2,2)=K(N+3,2)
64497         P(N+2,5)=P(N+3,5)
64498         PS=P(N+1,5)+P(N+2,5)
64499         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
64500         PV(2,5)=P(N+3,5)
64501         MMAT=0
64502         ND=2
64503         GOTO 460
64504       ENDIF
64505  
64506 C...Phase space decay of partons from W decay.
64507   610 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN
64508         KFLO(1)=K(N+1,2)
64509         KFLO(2)=K(N+2,2)
64510         K(N+1,1)=K(N+3,1)
64511         K(N+1,2)=K(N+3,2)
64512         DO 620 J=1,5
64513           PV(1,J)=P(N+1,J)+P(N+2,J)
64514           P(N+1,J)=P(N+3,J)
64515   620   CONTINUE
64516         PV(1,5)=PMR
64517         N=N+1
64518         NP=0
64519         NQ=2
64520         PS=0D0
64521         MSTJ(93)=2
64522         PSQ=PYMASS(KFLO(1))
64523         MSTJ(93)=2
64524         PSQ=PSQ+PYMASS(KFLO(2))
64525         MMAT=11
64526         GOTO 290
64527       ENDIF
64528  
64529 C...Boost back for rapidly moving particle.
64530   630 N=N+ND
64531       IF(MBST.EQ.1) THEN
64532         DO 640 J=1,3
64533           BE(J)=P(IP,J)/P(IP,4)
64534   640   CONTINUE
64535         GA=P(IP,4)/P(IP,5)
64536         DO 660 I=NSAV+1,N
64537           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
64538           DO 650 J=1,3
64539             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
64540   650     CONTINUE
64541           P(I,4)=GA*(P(I,4)+BEP)
64542   660   CONTINUE
64543       ENDIF
64544  
64545 C...Fill in position of decay vertex.
64546       DO 680 I=NSAV+1,N
64547         DO 670 J=1,4
64548           V(I,J)=VDCY(J)
64549   670   CONTINUE
64550         V(I,5)=0D0
64551   680 CONTINUE
64552  
64553 C...Set up for parton shower evolution from jets.
64554       IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN
64555         K(NSAV+1,1)=3
64556         K(NSAV+2,1)=3
64557         K(NSAV+3,1)=3
64558         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
64559         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
64560         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
64561         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
64562         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
64563         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
64564         MSTJ(92)=-(NSAV+1)
64565       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN
64566         K(NSAV+2,1)=3
64567         K(NSAV+3,1)=3
64568         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
64569         K(NSAV+2,5)=MSTU(5)*(NSAV+3)
64570         K(NSAV+3,4)=MSTU(5)*(NSAV+2)
64571         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
64572         MSTJ(92)=NSAV+2
64573       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
64574      &  IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN
64575         K(NSAV+1,1)=3
64576         K(NSAV+2,1)=3
64577         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
64578         K(NSAV+1,5)=MSTU(5)*(NSAV+2)
64579         K(NSAV+2,4)=MSTU(5)*(NSAV+1)
64580         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
64581         MSTJ(92)=NSAV+1
64582       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
64583      &  IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN
64584         MSTJ(92)=NSAV+1
64585       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21)
64586      &  THEN
64587         K(NSAV+1,1)=3
64588         K(NSAV+2,1)=3
64589         K(NSAV+3,1)=3
64590         KCP=PYCOMP(K(NSAV+1,2))
64591         KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2))
64592         JCON=4
64593         IF(KQP.LT.0) JCON=5
64594         K(NSAV+1,JCON)=MSTU(5)*(NSAV+2)
64595         K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1)
64596         K(NSAV+2,JCON)=MSTU(5)*(NSAV+3)
64597         K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2)
64598         MSTJ(92)=NSAV+1
64599       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN
64600         K(NSAV+1,1)=3
64601         K(NSAV+3,1)=3
64602         K(NSAV+1,4)=MSTU(5)*(NSAV+3)
64603         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
64604         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
64605         K(NSAV+3,5)=MSTU(5)*(NSAV+1)
64606         MSTJ(92)=NSAV+1
64607       ENDIF
64608  
64609 C...Mark decayed particle; special option for B-Bbar mixing.
64610       IF(K(IP,1).EQ.5) K(IP,1)=15
64611       IF(K(IP,1).LE.10) K(IP,1)=11
64612       IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12
64613       K(IP,4)=NSAV+1
64614       K(IP,5)=N
64615  
64616       RETURN
64617       END
64618  
64619  
64620 C*********************************************************************
64621  
64622 C...PYDCYK
64623 C...Handles flavour production in the decay of unstable particles
64624 C...and small string clusters.
64625  
64626       SUBROUTINE PYDCYK(KFL1,KFL2,KFL3,KF)
64627  
64628 C...Double precision and integer declarations.
64629       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
64630       IMPLICIT INTEGER(I-N)
64631       INTEGER PYK,PYCHGE,PYCOMP
64632 C...Commonblocks.
64633       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
64634       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
64635       SAVE /PYDAT1/,/PYDAT2/
64636  
64637  
64638 C.. Call PYKFDI directly if no popcorn option is on
64639       IF(MSTJ(12).LT.2) THEN
64640          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
64641          MSTU(124)=KFL3
64642          RETURN
64643       ENDIF
64644  
64645       KFL3=0
64646       KF=0
64647       IF(KFL1.EQ.0) RETURN
64648       KF1A=IABS(KFL1)
64649       KF2A=IABS(KFL2)
64650  
64651       NSTO=130
64652       NMAX=MIN(MSTU(125),10)
64653  
64654 C.. Identify rank 0 cluster qq
64655       IRANK=1
64656       IF(KF1A.GT.10.AND.KF1A.LT.10000) IRANK=0
64657  
64658       IF(KF2A.GT.0)THEN
64659 C.. Join jets: Fails if store not empty
64660          IF(MSTU(121).GT.0) THEN
64661             MSTU(121)=0
64662             RETURN
64663          ENDIF
64664          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
64665       ELSEIF(KF1A.GT.10.AND.MSTU(121).GT.0)THEN
64666 C.. Pick popcorn meson from store, return same qq, decrease store
64667          KF=MSTU(NSTO+MSTU(121))
64668          KFL3=-KFL1
64669          MSTU(121)=MSTU(121)-1
64670       ELSE
64671 C.. Generate new flavour. Then done if no diquark is generated
64672   100    CALL PYKFDI(KFL1,0,KFL3,KF)
64673          IF(MSTU(121).EQ.-1) GOTO 100
64674          MSTU(124)=KFL3
64675          IF(KF.EQ.0.OR.IABS(KFL3).LE.10) RETURN
64676  
64677 C.. Simple case if no dynamical popcorn suppressions are considered
64678          IF(MSTJ(12).LT.4) THEN
64679             IF(MSTU(121).EQ.0) RETURN
64680             NMES=1
64681             KFPREV=-KFL3
64682             CALL PYKFDI(KFPREV,0,KFL3,KFM)
64683 C.. Due to eta+eta' suppr., a qq->M+qq attempt might end as qq->B+q
64684             IF(IABS(KFL3).LE.10)THEN
64685                KFL3=-KFPREV
64686                RETURN
64687             ENDIF
64688             GOTO 120
64689          ENDIF
64690  
64691 C test output qq against fake Gamma, then return if no popcorn.
64692          GB=2D0
64693          IF(IRANK.NE.0)THEN
64694             CALL PYZDIS(1,2103,5D0,Z)
64695             GB=5D0*(1D0-Z)/Z
64696             IF(1D0-PARF(192)**GB.LT.PYR(0)) THEN
64697                MSTU(121)=0
64698                GOTO 100
64699             ENDIF
64700          ENDIF
64701          IF(MSTU(121).EQ.0) RETURN
64702  
64703 C..Set store size memory. Pick fake dynamical variables of qq.
64704          NMES=MSTU(121)
64705          CALL PYPTDI(1,PX3,PY3)
64706          X=1D0
64707          POPM=0D0
64708          G=GB
64709          POPG=GB
64710  
64711 C.. Pick next popcorn meson, test with fake dynamical variables
64712   110    KFPREV=-KFL3
64713          PX1=-PX3
64714          PY1=-PY3
64715          CALL PYKFDI(KFPREV,0,KFL3,KFM)
64716          IF(MSTU(121).EQ.-1) GOTO 100
64717          CALL PYPTDI(KFL3,PX3,PY3)
64718          PM=PYMASS(KFM)**2+(PX1+PX3)**2+(PY1+PY3)**2
64719          CALL PYZDIS(KFPREV,KFL3,PM,Z)
64720          G=(1D0-Z)*(G+PM/Z)
64721          X=(1D0-Z)*X
64722  
64723          PTST=1D0
64724          GTST=1D0
64725          RTST=PYR(0)
64726          IF(MSTJ(12).GT.4)THEN
64727             POPMN=SQRT((1D0-X)*(G/X-GB))
64728             POPM=POPM+PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
64729             PTST=EXP((POPM-POPMN)*PARF(193))
64730             POPM=POPMN
64731          ENDIF
64732          IF(IRANK.NE.0)THEN
64733             POPGN=X*GB
64734             GTST=(1D0-PARF(192)**POPGN)/(1D0-PARF(192)**POPG)
64735             POPG=POPGN
64736          ENDIF
64737          IF(RTST.GT.PTST*GTST)THEN
64738             MSTU(121)=0
64739             IF(RTST.GT.PTST) MSTU(121)=-1
64740             GOTO 100
64741          ENDIF
64742  
64743 C.. Store meson
64744   120    IF(NMES.LE.NMAX) MSTU(NSTO+MSTU(121)+1)=KFM
64745          IF(MSTU(121).GT.0) GOTO 110
64746  
64747 C.. Test accepted system size. If OK set global popcorn size variable.
64748          IF(NMES.GT.NMAX)THEN
64749             KF=0
64750             KFL3=0
64751             RETURN
64752          ENDIF
64753          MSTU(121)=NMES
64754       ENDIF
64755  
64756       RETURN
64757       END
64758  
64759 C********************************************************************
64760  
64761 C...PYKFDI
64762 C...Generates a new flavour pair and combines off a hadron
64763  
64764       SUBROUTINE PYKFDI(KFL1,KFL2,KFL3,KF)
64765  
64766 C...Double precision and integer declarations.
64767       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
64768       IMPLICIT INTEGER(I-N)
64769       INTEGER PYK,PYCHGE,PYCOMP
64770 C...Commonblocks.
64771       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
64772       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
64773       SAVE /PYDAT1/,/PYDAT2/
64774 C...Local arrays.
64775       DIMENSION PD(7)
64776  
64777       IF(MSTU(123).EQ.0.AND.MSTJ(12).GE.0)  CALL PYKFIN
64778  
64779 C...Default flavour values. Input consistency checks.
64780       KF1A=IABS(KFL1)
64781       KF2A=IABS(KFL2)
64782       KFL3=0
64783       KF=0
64784       IF(KF1A.EQ.0) RETURN
64785       IF(KF2A.NE.0)THEN
64786         IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN
64787         IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN
64788         IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN
64789       ENDIF
64790  
64791 C...Check if tabulated flavour probabilities are to be used.
64792       IF(MSTJ(15).EQ.1) THEN
64793         IF(MSTJ(12).GE.5)  CALL PYERRM(29,
64794      &        '(PYKFDI:) Sorry, option MSTJ(15)=1 not available' //
64795      &        ' together with MSTJ(12)>=5 modification')
64796         KTAB1=-1
64797         IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A
64798         KFL1A=MOD(KF1A/1000,10)
64799         KFL1B=MOD(KF1A/100,10)
64800         KFL1S=MOD(KF1A,10)
64801         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4)
64802      &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2
64803         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1
64804         IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A
64805         KTAB2=0
64806         IF(KF2A.NE.0) THEN
64807           KTAB2=-1
64808           IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A
64809           KFL2A=MOD(KF2A/1000,10)
64810           KFL2B=MOD(KF2A/100,10)
64811           KFL2S=MOD(KF2A,10)
64812           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4)
64813      &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2
64814           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1
64815         ENDIF
64816         IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 140
64817       ENDIF
64818  
64819 C.. Recognize rank 0 diquark case
64820   100 IRANK=1
64821       KFDIQ=MAX(KF1A,KF2A)
64822       IF(KFDIQ.GT.10.AND.KFDIQ.LT.10000) IRANK=0
64823  
64824 C.. Join two flavours to meson or baryon. Test for popcorn.
64825       IF(KF2A.GT.0)THEN
64826         MBARY=0
64827         IF(KFDIQ.GT.10) THEN
64828           IF(IRANK.EQ.0.AND.MSTJ(12).LT.5)
64829      &         CALL PYNMES(KFDIQ)
64830           IF(MSTU(121).NE.0) THEN
64831              MSTU(121)=0
64832              RETURN
64833           ENDIF
64834           MBARY=2
64835         ENDIF
64836         KFQOLD=KF1A
64837         KFQVER=KF2A
64838         GOTO 130
64839       ENDIF
64840  
64841 C.. Separate incoming flavours, curtain flavour consistency check
64842       KFIN=KFL1
64843       KFQOLD=KF1A
64844       KFQPOP=KF1A/10000
64845       IF(KF1A.GT.10)THEN
64846          KFIN=-KFL1
64847          KFL1A=MOD(KF1A/1000,10)
64848          KFL1B=MOD(KF1A/100,10)
64849          IF(IRANK.EQ.0)THEN
64850             QAWT=1D0
64851             IF(KFL1A.GE.3) QAWT=PARF(136+KFL1A/4)
64852             IF(KFL1B.GE.3) QAWT=QAWT/PARF(136+KFL1B/4)
64853             KFQPOP=KFL1A+(KFL1B-KFL1A)*INT(1D0/(QAWT+1D0)+PYR(0))
64854          ENDIF
64855          IF(KFQPOP.NE.KFL1B.AND.KFQPOP.NE.KFL1A) THEN
64856              MSTU(121)=0
64857              RETURN
64858           ENDIF
64859          KFQOLD=KFL1A+KFL1B-KFQPOP
64860       ENDIF
64861  
64862 C...Meson/baryon choice. Set number of mesons if starting a popcorn
64863 C...system.
64864   110 MBARY=0
64865       IF(KF1A.LE.10.AND.MSTJ(12).GT.0)THEN
64866          IF(MSTU(121).EQ.-1.OR.(1D0+PARJ(1))*PYR(0).GT.1D0)THEN
64867             MBARY=1
64868             CALL PYNMES(0)
64869          ENDIF
64870       ELSEIF(KF1A.GT.10)THEN
64871          MBARY=2
64872          IF(IRANK.EQ.0) CALL PYNMES(KF1A)
64873          IF(MSTU(121).GT.0) MBARY=-1
64874       ENDIF
64875  
64876 C..x->H+q: Choose single vertex quark. Jump to form hadron.
64877       IF(MBARY.EQ.0.OR.MBARY.EQ.2)THEN
64878          KFQVER=1+INT((2D0+PARJ(2))*PYR(0))
64879          KFL3=ISIGN(KFQVER,-KFIN)
64880          GOTO 130
64881       ENDIF
64882  
64883 C..x->H+qq: (IDW=proper PARF position for diquark weights)
64884       IDW=160
64885       IF(MBARY.EQ.1)THEN
64886          IF(MSTU(121).EQ.0) IDW=150
64887          SQWT=PARF(IDW+1)
64888          IF(MSTU(121).GT.0) SQWT=SQWT*PARF(135)*PARF(138)**MSTU(121)
64889          KFQPOP=1+INT((2D0+SQWT)*PYR(0))
64890 C..   Shift to s-curtain parameters if needed
64891          IF(KFQPOP.GE.3.AND.MSTJ(12).GE.5)THEN
64892             PARF(194)=PARF(138)*PARF(139)
64893             PARF(193)=PARJ(8)+PARJ(9)
64894          ENDIF
64895       ENDIF
64896  
64897 C.. x->H+qq: Get vertex quark
64898       IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
64899          IDW=MSTU(122)
64900          MSTU(121)=MSTU(121)-1
64901          IF(IDW.EQ.170) THEN
64902             IF(MSTU(121).EQ.0)THEN
64903                IPOS=3*MIN(KFQPOP-1,2)+MIN(KFQOLD-1,2)
64904             ELSE
64905                IPOS=3*3+3*MAX(0,MIN(KFQPOP-2,1))+MIN(KFQOLD-1,2)
64906             ENDIF
64907          ELSE
64908             IF(MSTU(121).EQ.0)THEN
64909                IPOS=3*5+5*MIN(KFQPOP-1,3)+MIN(KFQOLD-1,4)
64910             ELSE
64911                IPOS=3*5+5*4+MIN(KFQOLD-1,4)
64912             ENDIF
64913          ENDIF
64914          IPOS=200+30*IPOS+1
64915  
64916          IMES=-1
64917          RMES=PYR(0)*PARF(194)
64918   120    IMES=IMES+1
64919          RMES=RMES-PARF(IPOS+IMES)
64920          IF(IMES.EQ.30) THEN
64921             MSTU(121)=-1
64922             KF=-111
64923             RETURN
64924          ENDIF
64925          IF(RMES.GT.0D0) GOTO 120
64926          KMUL=IMES/5
64927          KFJ=2*KMUL+1
64928          IF(KMUL.EQ.2) KFJ=10003
64929          IF(KMUL.EQ.3) KFJ=10001
64930          IF(KMUL.EQ.4) KFJ=20003
64931          IF(KMUL.EQ.5) KFJ=5
64932          IDIAG=0
64933          KFQVER=MOD(IMES,5)+1
64934          IF(KFQVER.GE.KFQOLD) KFQVER=KFQVER+1
64935          IF(KFQVER.GT.3)THEN
64936             IDIAG=KFQVER-3
64937             KFQVER=KFQOLD
64938          ENDIF
64939       ELSE
64940          IF(MBARY.EQ.-1) IDW=170
64941          SQWT=PARF(IDW+2)
64942          IF(KFQPOP.EQ.3) SQWT=PARF(IDW+3)
64943          IF(KFQPOP.GT.3) SQWT=PARF(IDW+3)*(1D0/PARF(IDW+5)+1D0)/2D0
64944          KFQVER=MIN(3,1+INT((2D0+SQWT)*PYR(0)))
64945          IF(KFQPOP.LT.3.AND.KFQVER.LT.3)THEN
64946             KFQVER=KFQPOP
64947             IF(PYR(0).GT.PARF(IDW+4)) KFQVER=3-KFQPOP
64948          ENDIF
64949       ENDIF
64950  
64951 C..x->H+qq: form outgoing diquark with KFQPOP flag at 10000-pos
64952       KFLDS=3
64953       IF(KFQPOP.NE.KFQVER)THEN
64954          SWT=PARF(IDW+7)
64955          IF(KFQVER.EQ.3) SWT=PARF(IDW+6)
64956          IF(KFQPOP.GE.3) SWT=PARF(IDW+5)
64957          IF((1D0+SWT)*PYR(0).LT.1D0) KFLDS=1
64958       ENDIF
64959       KFDIQ=900*MAX(KFQVER,KFQPOP)+100*(KFQVER+KFQPOP)+KFLDS
64960      &      +10000*KFQPOP
64961       KFL3=ISIGN(KFDIQ,KFIN)
64962  
64963 C..x->M+y: flavour for meson.
64964   130 IF(MBARY.LE.0)THEN
64965         KFLA=MAX(KFQOLD,KFQVER)
64966         KFLB=MIN(KFQOLD,KFQVER)
64967         KFS=ISIGN(1,KFL1)
64968         IF(KFLA.NE.KFQOLD) KFS=-KFS
64969 C... Form meson, with spin and flavour mixing for diagonal states.
64970         IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
64971            IF(IDIAG.GT.0) KF=110*IDIAG+KFJ
64972            IF(IDIAG.EQ.0) KF=(100*KFLA+10*KFLB+KFJ)*KFS*(-1)**KFLA
64973            RETURN
64974         ENDIF
64975         IF(KFLA.LE.2) KMUL=INT(PARJ(11)+PYR(0))
64976         IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+PYR(0))
64977         IF(KFLA.GE.4) KMUL=INT(PARJ(13)+PYR(0))
64978         IF(KMUL.EQ.0.AND.PARJ(14).GT.0D0)THEN
64979           IF(PYR(0).LT.PARJ(14)) KMUL=2
64980         ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0D0)THEN
64981           RMUL=PYR(0)
64982           IF(RMUL.LT.PARJ(15)) KMUL=3
64983           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4
64984           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5
64985         ENDIF
64986         KFLS=3
64987         IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
64988         IF(KMUL.EQ.5) KFLS=5
64989         IF(KFLA.NE.KFLB)THEN
64990           KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA
64991         ELSE
64992           RMIX=PYR(0)
64993           IMIX=2*KFLA+10*KMUL
64994           IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+
64995      &    INT(RMIX+PARF(IMIX)))+KFLS
64996           IF(KFLA.GE.4) KF=110*KFLA+KFLS
64997         ENDIF
64998         IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF)
64999         IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF)
65000  
65001 C..Optional extra suppression of eta and eta'.
65002 C..Allow shift to qq->B+q in old version (set IRANK to 0)
65003         IF(KF.EQ.221.OR.KF.EQ.331)THEN
65004            IF(PYR(0).GT.PARJ(25+KF/300))THEN
65005               IF(KF2A.GT.0) GOTO 130
65006               IF(MSTJ(12).LT.4) IRANK=0
65007               GOTO 110
65008            ENDIF
65009         ENDIF
65010         MSTU(121)=0
65011  
65012 C.. x->B+y: Flavour for baryon
65013       ELSE
65014         KFLA=KFQVER
65015         IF(KF1A.LE.10) KFLA=KFQOLD
65016         KFLB=MOD(KFDIQ/1000,10)
65017         KFLC=MOD(KFDIQ/100,10)
65018         KFLDS=MOD(KFDIQ,10)
65019         KFLD=MAX(KFLA,KFLB,KFLC)
65020         KFLF=MIN(KFLA,KFLB,KFLC)
65021         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
65022  
65023 C...  SU(6) factors for formation of baryon.
65024         KBARY=3
65025         KDMAX=5
65026         KFLG=KFLB
65027         IF(KFLB.NE.KFLC)THEN
65028            KBARY=2*KFLDS-1
65029            KDMAX=1+KFLDS/2
65030            IF(KFLB.GT.2) KDMAX=KDMAX+2
65031         ENDIF
65032         IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC)THEN
65033            KBARY=KBARY+1
65034            KFLG=KFLA
65035         ENDIF
65036  
65037         SU6MAX=PARF(140+KDMAX)
65038         SU6DEC=PARJ(18)
65039         SU6S  =PARF(146)
65040         IF(MSTJ(12).GE.5.AND.IRANK.EQ.0) THEN
65041            SU6MAX=1D0
65042            SU6DEC=1D0
65043            SU6S  =1D0
65044         ENDIF
65045         SU6OCT=PARF(60+KBARY)
65046         IF(KFLG.GT.MAX(KFLA+KFLB-KFLG,2))THEN
65047            SU6OCT=SU6OCT*4*SU6S/(3*SU6S+1)
65048            IF(KBARY.EQ.2) SU6OCT=PARF(60+KBARY)*4/(3*SU6S+1)
65049         ELSE
65050            IF(KBARY.EQ.6) SU6OCT=SU6OCT*(3+SU6S)/(3*SU6S+1)
65051         ENDIF
65052         SU6WT=SU6OCT+SU6DEC*PARF(70+KBARY)
65053  
65054 C..   SU(6) test. Old options enforce new baryon if q->B+qq is rejected.
65055         IF(SU6WT.LT.PYR(0)*SU6MAX.AND.KF2A.EQ.0)THEN
65056            MSTU(121)=0
65057            IF(MSTJ(12).LE.2.AND.MBARY.EQ.1) MSTU(121)=-1
65058            GOTO 110
65059         ENDIF
65060  
65061 C.. Form baryon. Distinguish Lambda- and Sigmalike baryons.
65062         KSIG=1
65063         KFLS=2
65064         IF(SU6WT*PYR(0).GT.SU6OCT) KFLS=4
65065         IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF)THEN
65066           KSIG=KFLDS/3
65067           IF(KFLA.NE.KFLD) KSIG=INT(3*SU6S/(3*SU6S+KFLDS**2)+PYR(0))
65068         ENDIF
65069         KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1)
65070         IF(KSIG.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1)
65071       ENDIF
65072       RETURN
65073  
65074 C...Use tabulated probabilities to select new flavour and hadron.
65075   140 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN
65076         KT3L=1
65077         KT3U=6
65078       ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN
65079         KT3L=1
65080         KT3U=6
65081       ELSEIF(KTAB2.EQ.0) THEN
65082         KT3L=1
65083         KT3U=22
65084       ELSE
65085         KT3L=KTAB2
65086         KT3U=KTAB2
65087       ENDIF
65088       RFL=0D0
65089       DO 160 KTS=0,2
65090         DO 150 KT3=KT3L,KT3U
65091           RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3)
65092   150   CONTINUE
65093   160 CONTINUE
65094       RFL=PYR(0)*RFL
65095       DO 180 KTS=0,2
65096         KTABS=KTS
65097         DO 170 KT3=KT3L,KT3U
65098           KTAB3=KT3
65099           RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3)
65100           IF(RFL.LE.0D0) GOTO 190
65101   170   CONTINUE
65102   180 CONTINUE
65103   190 CONTINUE
65104  
65105 C...Reconstruct flavour of produced quark/diquark.
65106       IF(KTAB3.LE.6) THEN
65107         KFL3A=KTAB3
65108         KFL3B=0
65109         KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13))
65110       ELSE
65111         KFL3A=1
65112         IF(KTAB3.GE.8) KFL3A=2
65113         IF(KTAB3.GE.11) KFL3A=3
65114         IF(KTAB3.GE.16) KFL3A=4
65115         KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2
65116         KFL3=1000*KFL3A+100*KFL3B+1
65117         IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3=
65118      &  KFL3+2
65119         KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1))
65120       ENDIF
65121  
65122 C...Reconstruct meson code.
65123       IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR.
65124      &KFL3B.NE.0)) THEN
65125         RFL=PYR(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
65126      &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS))
65127         KF=110+2*KTABS+1
65128         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1
65129         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
65130      &  25*KTABS)) KF=330+2*KTABS+1
65131       ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN
65132         KFLA=MAX(KTAB1,KTAB3)
65133         KFLB=MIN(KTAB1,KTAB3)
65134         KFS=ISIGN(1,KFL1)
65135         IF(KFLA.NE.KF1A) KFS=-KFS
65136         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
65137       ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN
65138         KFS=ISIGN(1,KFL1)
65139         IF(KFL1A.EQ.KFL3A) THEN
65140           KFLA=MAX(KFL1B,KFL3B)
65141           KFLB=MIN(KFL1B,KFL3B)
65142           IF(KFLA.NE.KFL1B) KFS=-KFS
65143         ELSEIF(KFL1A.EQ.KFL3B) THEN
65144           KFLA=KFL3A
65145           KFLB=KFL1B
65146           KFS=-KFS
65147         ELSEIF(KFL1B.EQ.KFL3A) THEN
65148           KFLA=KFL1A
65149           KFLB=KFL3B
65150         ELSEIF(KFL1B.EQ.KFL3B) THEN
65151           KFLA=MAX(KFL1A,KFL3A)
65152           KFLB=MIN(KFL1A,KFL3A)
65153           IF(KFLA.NE.KFL1A) KFS=-KFS
65154         ELSE
65155           CALL PYERRM(2,'(PYKFDI:) no matching flavours for qq -> qq')
65156           GOTO 100
65157         ENDIF
65158         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
65159  
65160 C...Reconstruct baryon code.
65161       ELSE
65162         IF(KTAB1.GE.7) THEN
65163           KFLA=KFL3A
65164           KFLB=KFL1A
65165           KFLC=KFL1B
65166         ELSE
65167           KFLA=KFL1A
65168           KFLB=KFL3A
65169           KFLC=KFL3B
65170         ENDIF
65171         KFLD=MAX(KFLA,KFLB,KFLC)
65172         KFLF=MIN(KFLA,KFLB,KFLC)
65173         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
65174         IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1)
65175         IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1)
65176       ENDIF
65177  
65178 C...Check that constructed flavour code is an allowed one.
65179       IF(KFL2.NE.0) KFL3=0
65180       KC=PYCOMP(KF)
65181       IF(KC.EQ.0) THEN
65182         CALL PYERRM(2,'(PYKFDI:) user-defined flavour probabilities '//
65183      &  'failed')
65184         GOTO 100
65185       ENDIF
65186  
65187       RETURN
65188       END
65189  
65190 C*********************************************************************
65191  
65192 C...PYNMES
65193 C...Generates number of popcorn mesons and stores some relevant
65194 C...parameters.
65195  
65196       SUBROUTINE PYNMES(KFDIQ)
65197  
65198 C...Double precision and integer declarations.
65199       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65200       IMPLICIT INTEGER(I-N)
65201       INTEGER PYK,PYCHGE,PYCOMP
65202 C...Commonblocks.
65203       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65204       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65205       SAVE /PYDAT1/,/PYDAT2/
65206  
65207       MSTU(121)=0
65208       IF(MSTJ(12).LT.2) RETURN
65209  
65210 C..Old version: Get 1 or 0 popcorn mesons
65211       IF(MSTJ(12).LT.5)THEN
65212          POPWT=PARF(131)
65213          IF(KFDIQ.NE.0) THEN
65214             KFDIQA=IABS(KFDIQ)
65215             KFA=MOD(KFDIQA/1000,10)
65216             KFB=MOD(KFDIQA/100,10)
65217             KFS=MOD(KFDIQA,10)
65218             POPWT=PARF(132)
65219             IF(KFA.EQ.3) POPWT=PARF(133)
65220             IF(KFB.EQ.3) POPWT=PARF(134)
65221             IF(KFS.EQ.1) POPWT=POPWT*SQRT(PARJ(4))
65222          ENDIF
65223          MSTU(121)=INT(POPWT/(1D0+POPWT)+PYR(0))
65224          RETURN
65225       ENDIF
65226  
65227 C..New version: Store popcorn- or rank 0 diquark parameters
65228       MSTU(122)=170
65229       PARF(193)=PARJ(8)
65230       PARF(194)=PARF(139)
65231       IF(KFDIQ.NE.0) THEN
65232          MSTU(122)=180
65233          PARF(193)=PARJ(10)
65234          PARF(194)=PARF(140)
65235       ENDIF
65236       IF(PARF(194).LT.1D-5.OR.PARF(194).GT.1D0-1D-5) THEN
65237          IF(PARF(194).GT.1D0-1D-5) CALL PYERRM(9,
65238      &        '(PYNMES:) Neglecting too large popcorn possibility')
65239          RETURN
65240       ENDIF
65241  
65242 C..New version: Get number of popcorn mesons
65243   100 RTST=PYR(0)
65244       MSTU(121)=-1
65245   110 MSTU(121)=MSTU(121)+1
65246       RTST=RTST/PARF(194)
65247       IF(RTST.LT.1D0) GOTO 110
65248       IF(KFDIQ.EQ.0.AND.PYR(0)*(2D0+PARF(135)*PARF(161)).GT.
65249      &     (2D0+PARF(135)*PARF(161)*PARF(138)**MSTU(121))) GOTO 100
65250       RETURN
65251       END
65252  
65253 C***************************************************************
65254  
65255 C...PYKFIN
65256 C...Precalculates a set of diquark and popcorn weights.
65257  
65258       SUBROUTINE PYKFIN
65259  
65260 C...Double precision and integer declarations.
65261       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65262       IMPLICIT INTEGER(I-N)
65263       INTEGER PYK,PYCHGE,PYCOMP
65264 C...Commonblocks.
65265       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65266       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65267       SAVE /PYDAT1/,/PYDAT2/
65268  
65269       DIMENSION SU6(12),SU6M(7),QBB(7),QBM(7),DMB(14)
65270  
65271  
65272       MSTU(123)=1
65273 C..Diquark indices for dimensional variables
65274       IUD1=1
65275       IUU1=2
65276       IUS0=3
65277       ISU0=4
65278       IUS1=5
65279       ISU1=6
65280       ISS1=7
65281  
65282 C.. *** SU(6) factors **
65283 C..Modify with decuplet- (and Sigma/Lambda-) suppression.
65284       PARF(146)=1D0
65285       IF(MSTJ(12).GE.5) PARF(146)=3D0*PARJ(18)/(2D0*PARJ(18)+1D0)
65286       IF(PARJ(18).LT.1D0-1D-5.AND.MSTJ(12).LT.5) CALL PYERRM(9,
65287      &     '(PYKFIN:) PARJ(18)<1 combined with 0<MSTJ(12)<5 option')
65288       DO 100 I=1,6
65289          SU6(I)=PARF(60+I)
65290          SU6(6+I)=SU6(I)*4*PARF(146)/(3*PARF(146)+1)
65291   100 CONTINUE
65292       SU6(8)=SU6(2)*4/(3*PARF(146)+1)
65293       SU6(6)=SU6(6)*(3+PARF(146))/(3*PARF(146)+1)
65294       DO 110 I=1,6
65295          SU6(I)=SU6(I)+PARJ(18)*PARF(70+I)
65296          SU6(6+I)=SU6(6+I)+PARJ(18)*PARF(70+I)
65297   110 CONTINUE
65298  
65299 C..SU(6)max            q       q'     s,c,b
65300       SU6MUD    =MAX(SU6(1) ,       SU6(8) )
65301       SU6M(IUD1)=MAX(SU6(5) ,       SU6(12))
65302       SU6M(ISU0)=MAX(SU6(7) ,SU6(2),SU6MUD )
65303       SU6M(IUU1)=MAX(SU6(3) ,SU6(4),SU6(10))
65304       SU6M(ISU1)=MAX(SU6(11),SU6(6),SU6M(IUD1))
65305       SU6M(IUS0)=SU6M(ISU0)
65306       SU6M(ISS1)=SU6M(IUU1)
65307       SU6M(IUS1)=SU6M(ISU1)
65308  
65309 C..Store SU(6)max, in order UD0,UD1,US0,US1,QQ1
65310       PARF(141)=SU6MUD
65311       PARF(142)=SU6M(IUD1)
65312       PARF(143)=SU6M(ISU0)
65313       PARF(144)=SU6M(ISU1)
65314       PARF(145)=SU6M(ISS1)
65315  
65316 C..diquark SU(6) survival =
65317 C..sum over quark (quark tunnel weight)*(SU(6)).
65318       PUD0=(2D0*SU6(1)+PARJ(2)*SU6(8))
65319       DMB(ISU0)=(SU6(7)+SU6(2)+PARJ(2)*SU6(1))/PUD0
65320       DMB(IUS0)=DMB(ISU0)
65321       DMB(ISS1)=(2D0*SU6(4)+PARJ(2)*SU6(3))/PUD0
65322       DMB(IUU1)=(SU6(3)+SU6(4)+PARJ(2)*SU6(10))/PUD0
65323       DMB(ISU1)=(SU6(11)+SU6(6)+PARJ(2)*SU6(5))/PUD0
65324       DMB(IUS1)=DMB(ISU1)
65325       DMB(IUD1)=(2D0*SU6(5)+PARJ(2)*SU6(12))/PUD0
65326  
65327 C.. *** Tunneling factors for Diquark production***
65328 C.. T: half a curtain pair = sqrt(curtain pair factor)
65329       IF(MSTJ(12).GE.5) THEN
65330          PMUD0=PYMASS(2101)
65331          PMUD1=PYMASS(2103)-PMUD0
65332          PMUS0=PYMASS(3201)-PMUD0
65333          PMUS1=PYMASS(3203)-PMUS0-PMUD0
65334          PMSS1=PYMASS(3303)-PMUS0-PMUD0
65335          QBB(ISU0)=EXP(-(PARJ(9)+PARJ(8))*PMUS0-PARJ(9)*PARF(191))
65336          QBB(IUS0)=EXP(-PARJ(8)*PMUS0)
65337          QBB(ISS1)=EXP(-(PARJ(9)+PARJ(8))*PMSS1)*QBB(ISU0)
65338          QBB(IUU1)=EXP(-PARJ(8)*PMUD1)
65339          QBB(ISU1)=EXP(-(PARJ(9)+PARJ(8))*PMUS1)*QBB(ISU0)
65340          QBB(IUS1)=EXP(-PARJ(8)*PMUS1)*QBB(IUS0)
65341          QBB(IUD1)=QBB(IUU1)
65342       ELSE
65343          PAR2M=SQRT(PARJ(2))
65344          PAR3M=SQRT(PARJ(3))
65345          PAR4M=SQRT(PARJ(4))
65346          QBB(ISU0)=PAR2M*PAR3M
65347          QBB(IUS0)=PAR3M
65348          QBB(ISS1)=PAR2M*PARJ(3)*PAR4M
65349          QBB(IUU1)=PAR4M
65350          QBB(ISU1)=PAR4M*QBB(ISU0)
65351          QBB(IUS1)=PAR4M*QBB(IUS0)
65352          QBB(IUD1)=PAR4M
65353       ENDIF
65354  
65355 C.. tau: spin*(vertex factor)*(T = half-curtain factor)
65356       QBM(ISU0)=QBB(ISU0)
65357       QBM(IUS0)=PARJ(2)*QBB(IUS0)
65358       QBM(ISS1)=PARJ(2)*6D0*QBB(ISS1)
65359       QBM(IUU1)=6D0*QBB(IUU1)
65360       QBM(ISU1)=3D0*QBB(ISU1)
65361       QBM(IUS1)=PARJ(2)*3D0*QBB(IUS1)
65362       QBM(IUD1)=3D0*QBB(IUD1)
65363  
65364 C.. Combine T and tau to diquark weight for q-> B+B+..
65365       DO 120 I=1,7
65366          QBB(I)=QBB(I)*QBM(I)
65367   120 CONTINUE
65368  
65369       IF(MSTJ(12).GE.5)THEN
65370 C..New version: tau  for rank 0 diquark.
65371          DMB(7+ISU0)=EXP(-PARJ(10)*PMUS0)
65372          DMB(7+IUS0)=PARJ(2)*DMB(7+ISU0)
65373          DMB(7+ISS1)=6D0*PARJ(2)*EXP(-PARJ(10)*PMSS1)*DMB(7+ISU0)
65374          DMB(7+IUU1)=6D0*EXP(-PARJ(10)*PMUD1)
65375          DMB(7+ISU1)=3D0*EXP(-PARJ(10)*PMUS1)*DMB(7+ISU0)
65376          DMB(7+IUS1)=PARJ(2)*DMB(7+ISU1)
65377          DMB(7+IUD1)=DMB(7+IUU1)/2D0
65378  
65379 C..New version: curtain flavour ratios.
65380 C.. s/u for q->B+M+...
65381 C.. s/u for rank 0 diquark: su -> ...M+B+...
65382 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
65383          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
65384          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
65385          WU=1D0+DMB(7+IUD1)+DMB(7+IUS0)+DMB(7+IUS1)+DMB(7+IUU1)
65386          PARF(136)=(2D0*(DMB(7+ISU0)+DMB(7+ISU1))+DMB(7+ISS1))/WU
65387          PARF(137)=(DMB(7+ISU0)+DMB(7+ISU1))*
65388      &        (2D0+DMB(7+ISS1)/(2D0*DMB(7+ISU1)))/WU
65389       ELSE
65390 C..Old version: reset unused rank 0 diquark weights and
65391 C..             unused diquark SU(6) survival weights
65392          DO 130 I=1,7
65393             IF(MSTJ(12).LT.3) DMB(I)=1D0
65394             DMB(7+I)=1D0
65395   130    CONTINUE
65396  
65397 C..Old version: Shuffle PARJ(7) into tau
65398          QBM(IUS0)=QBM(IUS0)*PARJ(7)
65399          QBM(ISS1)=QBM(ISS1)*PARJ(7)
65400          QBM(IUS1)=QBM(IUS1)*PARJ(7)
65401  
65402 C..Old version: curtain flavour ratios.
65403 C.. s/u for q->B+M+...
65404 C.. s/u for rank 0 diquark: su -> ...M+B+...
65405 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
65406          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
65407          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
65408          PARF(136)=PARF(135)*PARJ(6)*QBM(ISU0)/QBM(IUS0)
65409          PARF(137)=(1D0+QBM(IUD1))*(2D0+QBM(IUS0))/WU
65410       ENDIF
65411  
65412 C..Combine diquark SU(6) survival, SU(6)max, tau and T into factors for:
65413 C..  rank0 D->M+B+..; D->M+B+..; q->B+M+..; q->B+B..
65414       DO 140 I=1,7
65415          DMB(7+I)=DMB(7+I)*DMB(I)
65416          DMB(I)=DMB(I)*QBM(I)
65417          QBM(I)=QBM(I)*SU6M(I)/SU6MUD
65418          QBB(I)=QBB(I)*SU6M(I)/SU6MUD
65419   140 CONTINUE
65420  
65421 C.. *** Popcorn factors ***
65422  
65423       IF(MSTJ(12).LT.5)THEN
65424 C.. Old version: Resulting popcorn weights.
65425          PARF(138)=PARJ(6)
65426          WS=PARF(135)*PARF(138)
65427          WQ=WU*PARJ(5)/3D0
65428          PARF(132)=WQ*QBM(IUD1)/QBB(IUD1)
65429          PARF(133)=WQ*
65430      &        (QBM(IUS1)/QBB(IUS1)+WS*QBM(ISU1)/QBB(ISU1))/2D0
65431          PARF(134)=WQ*WS*QBM(ISS1)/QBB(ISS1)
65432          PARF(131)=WQ*(1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1)+
65433      &                 WS*(QBM(ISU0)+QBM(ISU1)+QBM(ISS1)/2D0))/
65434      &        (1D0+QBB(IUD1)+QBB(IUU1)+
65435      &        2D0*(QBB(IUS0)+QBB(IUS1))+QBB(ISS1)/2D0)
65436       ELSE
65437 C..New version: Store weights for popcorn mesons,
65438 C..get prel. popcorn weights.
65439          DO 150 IPOS=201,1400
65440             PARF(IPOS)=0D0
65441   150    CONTINUE
65442          DO 160 I=138,140
65443             PARF(I)=0D0
65444   160    CONTINUE
65445          IPOS=200
65446          PARF(193)=PARJ(8)
65447          DO 240 MR=0,7,7
65448            IF(MR.EQ.7) PARF(193)=PARJ(10)
65449            SQWT=2D0*(DMB(MR+IUS0)+DMB(MR+IUS1))/
65450      &          (1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
65451            QQWT=DMB(MR+IUU1)/(1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
65452            DO 230 NMES=0,1
65453              IF(NMES.EQ.1) SQWT=PARJ(2)
65454              DO 220 KFQPOP=1,4
65455                IF(MR.EQ.0.AND.KFQPOP.GT.3) GOTO 220
65456                IF(NMES.EQ.0.AND.KFQPOP.GE.3)THEN
65457                   SQWT=DMB(MR+ISS1)/(DMB(MR+ISU0)+DMB(MR+ISU1))
65458                   QQWT=0.5D0
65459                   IF(MR.EQ.0) PARF(193)=PARJ(8)+PARJ(9)
65460                   IF(KFQPOP.EQ.4) SQWT=SQWT*(1D0/DMB(7+ISU1)+1D0)/2D0
65461                ENDIF
65462                DO 210 KFQOLD =1,5
65463                   IF(MR.EQ.0.AND.KFQOLD.GT.3) GOTO 210
65464                   IF(NMES.EQ.1) THEN
65465                      IF(MR.EQ.0.AND.KFQPOP.EQ.1) GOTO 210
65466                      IF(MR.EQ.7.AND.KFQPOP.NE.1) GOTO 210
65467                   ENDIF
65468                   WTTOT=0D0
65469                   WTFAIL=0D0
65470       DO 190 KMUL=0,5
65471          PJWT=PARJ(12+KMUL)
65472          IF(KMUL.EQ.0) PJWT=1D0-PARJ(14)
65473          IF(KMUL.EQ.1) PJWT=1D0-PARJ(15)-PARJ(16)-PARJ(17)
65474          IF(PJWT.LE.0D0) GOTO 190
65475          IF(PJWT.GT.1D0) PJWT=1D0
65476          IMES=5*KMUL
65477          IMIX=2*KFQOLD+10*KMUL
65478          KFJ=2*KMUL+1
65479          IF(KMUL.EQ.2) KFJ=10003
65480          IF(KMUL.EQ.3) KFJ=10001
65481          IF(KMUL.EQ.4) KFJ=20003
65482          IF(KMUL.EQ.5) KFJ=5
65483          DO 180 KFQVER =1,3
65484             KFLA=MAX(KFQOLD,KFQVER)
65485             KFLB=MIN(KFQOLD,KFQVER)
65486             SWT=PARJ(11+KFLA/3+KFLA/4)
65487             IF(KMUL.EQ.0.OR.KMUL.EQ.2) SWT=1D0-SWT
65488             SWT=SWT*PJWT
65489             QWT=SQWT/(2D0+SQWT)
65490             IF(KFQVER.LT.3)THEN
65491                IF(KFQVER.EQ.KFQPOP) QWT=(1D0-QWT)*QQWT
65492                IF(KFQVER.NE.KFQPOP) QWT=(1D0-QWT)*(1D0-QQWT)
65493             ENDIF
65494             IF(KFQVER.NE.KFQOLD)THEN
65495                IMES=IMES+1
65496                KFM=100*KFLA+10*KFLB+KFJ
65497                PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
65498                PARF(IPOS+IMES)=QWT*SWT*EXP(-PARF(193)*PMM)
65499                WTTOT=WTTOT+PARF(IPOS+IMES)
65500             ELSE
65501                DO 170 ID=3,5
65502                   IF(ID.EQ.3) DWT=1D0-PARF(IMIX-1)
65503                   IF(ID.EQ.4) DWT=PARF(IMIX-1)-PARF(IMIX)
65504                   IF(ID.EQ.5) DWT=PARF(IMIX)
65505                   KFM=110*(ID-2)+KFJ
65506                   PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
65507                   PARF(IPOS+5*KMUL+ID)=QWT*SWT*DWT*EXP(-PARF(193)*PMM)
65508                   IF(KMUL.EQ.0.AND.ID.GT.3) THEN
65509                      WTFAIL=WTFAIL+QWT*SWT*DWT*(1D0-PARJ(21+ID))
65510                      PARF(IPOS+5*KMUL+ID)=
65511      &                    PARF(IPOS+5*KMUL+ID)*PARJ(21+ID)
65512                   ENDIF
65513                   WTTOT=WTTOT+PARF(IPOS+5*KMUL+ID)
65514   170          CONTINUE
65515             ENDIF
65516   180    CONTINUE
65517   190 CONTINUE
65518                   DO 200 IMES=1,30
65519                      PARF(IPOS+IMES)=PARF(IPOS+IMES)/(1D0-WTFAIL)
65520   200             CONTINUE
65521                   IF(MR.EQ.7) PARF(140)=
65522      &                 MAX(PARF(140),WTTOT/(1D0-WTFAIL))
65523                   IF(MR.EQ.0) PARF(139-KFQPOP/3)=
65524      &                 MAX(PARF(139-KFQPOP/3),WTTOT/(1D0-WTFAIL))
65525                   IPOS=IPOS+30
65526   210           CONTINUE
65527   220         CONTINUE
65528   230       CONTINUE
65529   240    CONTINUE
65530          IF(PARF(139).GT.1D-10) PARF(138)=PARF(138)/PARF(139)
65531          MSTU(121)=0
65532  
65533       ENDIF
65534  
65535 C..Recombine diquark weights to flavour and spin ratios
65536       PARF(151)=(2D0*(QBB(ISU0)+QBB(ISU1))+QBB(ISS1))/
65537      &        (1D0+QBB(IUD1)+QBB(IUU1)+QBB(IUS0)+QBB(IUS1))
65538       PARF(152)=2D0*(QBB(IUS0)+QBB(IUS1))/(1D0+QBB(IUD1)+QBB(IUU1))
65539       PARF(153)=QBB(ISS1)/(QBB(ISU0)+QBB(ISU1))
65540       PARF(154)=QBB(IUU1)/(1D0+QBB(IUD1)+QBB(IUU1))
65541       PARF(155)=QBB(ISU1)/QBB(ISU0)
65542       PARF(156)=QBB(IUS1)/QBB(IUS0)
65543       PARF(157)=QBB(IUD1)
65544  
65545       PARF(161)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/
65546      &        (1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1))
65547       PARF(162)=2D0*(QBM(IUS0)+QBM(IUS1))/(1D0+QBM(IUD1)+QBM(IUU1))
65548       PARF(163)=QBM(ISS1)/(QBM(ISU0)+QBM(ISU1))
65549       PARF(164)=QBM(IUU1)/(1D0+QBM(IUD1)+QBM(IUU1))
65550       PARF(165)=QBM(ISU1)/QBM(ISU0)
65551       PARF(166)=QBM(IUS1)/QBM(IUS0)
65552       PARF(167)=QBM(IUD1)
65553  
65554       PARF(171)=(2D0*(DMB(ISU0)+DMB(ISU1))+DMB(ISS1))/
65555      &        (1D0+DMB(IUD1)+DMB(IUU1)+DMB(IUS0)+DMB(IUS1))
65556       PARF(172)=2D0*(DMB(IUS0)+DMB(IUS1))/(1D0+DMB(IUD1)+DMB(IUU1))
65557       PARF(173)=DMB(ISS1)/(DMB(ISU0)+DMB(ISU1))
65558       PARF(174)=DMB(IUU1)/(1D0+DMB(IUD1)+DMB(IUU1))
65559       PARF(175)=DMB(ISU1)/DMB(ISU0)
65560       PARF(176)=DMB(IUS1)/DMB(IUS0)
65561       PARF(177)=DMB(IUD1)
65562  
65563       PARF(185)=DMB(7+ISU1)/DMB(7+ISU0)
65564       PARF(186)=DMB(7+IUS1)/DMB(7+IUS0)
65565       PARF(187)=DMB(7+IUD1)
65566  
65567       RETURN
65568       END
65569  
65570  
65571 C*********************************************************************
65572  
65573 C...PYPTDI
65574 C...Generates transverse momentum according to a Gaussian.
65575  
65576       SUBROUTINE PYPTDI(KFL,PX,PY)
65577  
65578 C...Double precision and integer declarations.
65579       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65580       IMPLICIT INTEGER(I-N)
65581       INTEGER PYK,PYCHGE,PYCOMP
65582 C...Commonblocks.
65583       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65584       SAVE /PYDAT1/
65585  
65586 C...Generate p_T and azimuthal angle, gives p_x and p_y.
65587       KFLA=IABS(KFL)
65588       PT=PARJ(21)*SQRT(-LOG(MAX(1D-10,PYR(0))))
65589       IF(PARJ(23).GT.PYR(0)) PT=PARJ(24)*PT
65590       IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT
65591       IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0D0
65592       PHI=PARU(2)*PYR(0)
65593       PX=PT*COS(PHI)
65594       PY=PT*SIN(PHI)
65595  
65596       RETURN
65597       END
65598  
65599 C*********************************************************************
65600  
65601 C...PYZDIS
65602 C...Generates the longitudinal splitting variable z.
65603  
65604       SUBROUTINE PYZDIS(KFL1,KFL2,PR,Z)
65605  
65606 C...Double precision and integer declarations.
65607       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65608       IMPLICIT INTEGER(I-N)
65609       INTEGER PYK,PYCHGE,PYCOMP
65610 C...Commonblocks.
65611       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65612       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65613       SAVE /PYDAT1/,/PYDAT2/
65614  
65615 C...Check if heavy flavour fragmentation.
65616       KFLA=IABS(KFL1)
65617       KFLB=IABS(KFL2)
65618       KFLH=KFLA
65619       IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10)
65620  
65621 C...Lund symmetric scaling function: determine parameters of shape.
65622       IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR.
65623      &MSTJ(11).GE.4) THEN
65624         FA=PARJ(41)
65625         IF(MSTJ(91).EQ.1) FA=PARJ(43)
65626         IF(KFLB.GE.10) FA=FA+PARJ(45)
65627         FBB=PARJ(42)
65628         IF(MSTJ(91).EQ.1) FBB=PARJ(44)
65629         FB=FBB*PR
65630         FC=1D0
65631         IF(KFLA.GE.10) FC=FC-PARJ(45)
65632         IF(KFLB.GE.10) FC=FC+PARJ(45)
65633         IF(MSTJ(11).GE.4.AND.(KFLH.EQ.4.OR.KFLH.EQ.5)) THEN
65634           FRED=PARJ(46)
65635           IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47)
65636           FC=FC+FRED*FBB*PARF(100+KFLH)**2
65637         ENDIF
65638         MC=1
65639         IF(ABS(FC-1D0).GT.0.01D0) MC=2
65640  
65641 C...Determine position of maximum. Special cases for a = 0 or a = c.
65642         IF(FA.LT.0.02D0) THEN
65643           MA=1
65644           ZMAX=1D0
65645           IF(FC.GT.FB) ZMAX=FB/FC
65646         ELSEIF(ABS(FC-FA).LT.0.01D0) THEN
65647           MA=2
65648           ZMAX=FB/(FB+FC)
65649         ELSE
65650           MA=3
65651           ZMAX=0.5D0*(FB+FC-SQRT((FB-FC)**2+4D0*FA*FB))/(FC-FA)
65652           IF(ZMAX.GT.0.9999D0.AND.FB.GT.100D0) ZMAX=MIN(ZMAX,1D0-FA/FB)
65653         ENDIF
65654  
65655 C...Subdivide z range if distribution very peaked near endpoint.
65656         MMAX=2
65657         IF(ZMAX.LT.0.1D0) THEN
65658           MMAX=1
65659           ZDIV=2.75D0*ZMAX
65660           IF(MC.EQ.1) THEN
65661             FINT=1D0-LOG(ZDIV)
65662           ELSE
65663             ZDIVC=ZDIV**(1D0-FC)
65664             FINT=1D0+(1D0-1D0/ZDIVC)/(FC-1D0)
65665           ENDIF
65666         ELSEIF(ZMAX.GT.0.85D0.AND.FB.GT.1D0) THEN
65667           MMAX=3
65668           FSCB=SQRT(4D0+(FC/FB)**2)
65669           ZDIV=FSCB-1D0/ZMAX-(FC/FB)*LOG(ZMAX*0.5D0*(FSCB+FC/FB))
65670           IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1D0-ZMAX)
65671           ZDIV=MIN(ZMAX,MAX(0D0,ZDIV))
65672           FINT=1D0+FB*(1D0-ZDIV)
65673         ENDIF
65674  
65675 C...Choice of z, preweighted for peaks at low or high z.
65676   100   Z=PYR(0)
65677         FPRE=1D0
65678         IF(MMAX.EQ.1) THEN
65679           IF(FINT*PYR(0).LE.1D0) THEN
65680             Z=ZDIV*Z
65681           ELSEIF(MC.EQ.1) THEN
65682             Z=ZDIV**Z
65683             FPRE=ZDIV/Z
65684           ELSE
65685             Z=(ZDIVC+Z*(1D0-ZDIVC))**(1D0/(1D0-FC))
65686             FPRE=(ZDIV/Z)**FC
65687           ENDIF
65688         ELSEIF(MMAX.EQ.3) THEN
65689           IF(FINT*PYR(0).LE.1D0) THEN
65690             Z=ZDIV+LOG(Z)/FB
65691             FPRE=EXP(FB*(Z-ZDIV))
65692           ELSE
65693             Z=ZDIV+Z*(1D0-ZDIV)
65694           ENDIF
65695         ENDIF
65696  
65697 C...Weighting according to correct formula.
65698         IF(Z.LE.0D0.OR.Z.GE.1D0) GOTO 100
65699         FEXP=FC*LOG(ZMAX/Z)+FB*(1D0/ZMAX-1D0/Z)
65700         IF(MA.GE.2) FEXP=FEXP+FA*LOG((1D0-Z)/(1D0-ZMAX))
65701         FVAL=EXP(MAX(-50D0,MIN(50D0,FEXP)))
65702         IF(FVAL.LT.PYR(0)*FPRE) GOTO 100
65703  
65704 C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c.
65705       ELSE
65706         FC=PARJ(50+MAX(1,KFLH))
65707         IF(MSTJ(91).EQ.1) FC=PARJ(59)
65708   110   Z=PYR(0)
65709         IF(FC.GE.0D0.AND.FC.LE.1D0) THEN
65710           IF(FC.GT.PYR(0)) Z=1D0-Z**(1D0/3D0)
65711         ELSEIF(FC.GT.-1.AND.FC.LT.0D0) THEN
65712           IF(-4D0*FC*Z*(1D0-Z)**2.LT.PYR(0)*((1D0-Z)**2-FC*Z)**2)
65713      &    GOTO 110
65714         ELSE
65715           IF(FC.GT.0D0) Z=1D0-Z**(1D0/FC)
65716           IF(FC.LT.0D0) Z=Z**(-1D0/FC)
65717         ENDIF
65718       ENDIF
65719  
65720       RETURN
65721       END
65722  
65723 C*********************************************************************
65724  
65725 C...PYSHOW
65726 C...Generates timelike parton showers from given partons.
65727  
65728       SUBROUTINE PYSHOW(IP1,IP2,QMAX)
65729  
65730 C...Double precision and integer declarations.
65731       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65732       IMPLICIT INTEGER(I-N)
65733       INTEGER PYK,PYCHGE,PYCOMP
65734 C...Parameter statement to help give large particle numbers.
65735       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
65736      &KEXCIT=4000000,KDIMEN=5000000)
65737       PARAMETER (MAXNUR=1000)
65738 C...Commonblocks.
65739       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
65740       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
65741       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65742       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65743       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
65744       COMMON/PYINT1/MINT(400),VINT(400)
65745       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
65746 C...Local arrays.
65747       DIMENSION PMTH(5,140),PS(5),PMA(100),PMSD(100),IEP(100),IPA(100),
65748      &KFLA(100),KFLD(100),KFL(100),ITRY(100),ISI(100),ISL(100),DP(100),
65749      &DPT(5,4),KSH(0:140),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),
65750      &PHIIIS(2,2),ISII(2),ISSET(2),ISCOL(0:140),ISCHG(0:140),
65751      &IREF(1000)
65752  
65753 C...Check that QMAX not too low.
65754       IF(MSTJ(41).LE.0) THEN
65755         RETURN
65756       ELSEIF(MSTJ(41).EQ.1.OR.MSTJ(41).EQ.11) THEN
65757         IF(QMAX.LE.PARJ(82).AND.IP2.GE.-80) RETURN
65758       ELSE
65759         IF(QMAX.LE.MIN(PARJ(82),PARJ(83),PARJ(90)).AND.IP2.GE.-80)
65760      &  RETURN
65761       ENDIF
65762  
65763 C...Store positions of shower initiating partons.
65764       MPSPD=0
65765       IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN
65766         NPA=1
65767         IPA(1)=IP1
65768       ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)-
65769      &  MSTU(32))) THEN
65770         NPA=2
65771         IPA(1)=IP1
65772         IPA(2)=IP2
65773       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0
65774      &  .AND.IP2.GE.-80) THEN
65775         NPA=IABS(IP2)
65776         DO 100 I=1,NPA
65777           IPA(I)=IP1+I-1
65778   100   CONTINUE
65779       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.
65780      &IP2.EQ.-100) THEN
65781         MPSPD=1
65782         NPA=2
65783         IPA(1)=IP1+6
65784         IPA(2)=IP1+7
65785       ELSE
65786         CALL PYERRM(12,
65787      &  '(PYSHOW:) failed to reconstruct showering system')
65788         IF(MSTU(21).GE.1) RETURN
65789       ENDIF
65790  
65791 C...Send off to PYPTFS for pT-ordered evolution if requested,
65792 C...if at least 2 partons, and without predefined shower branchings.
65793       IF((MSTJ(41).EQ.11.OR.MSTJ(41).EQ.12).AND.NPA.GE.2.AND.
65794      &MPSPD.EQ.0) THEN
65795         NPART=NPA
65796         DO 110 II=1,NPART
65797           IPART(II)=IPA(II)
65798           PTPART(II)=0.5D0*QMAX
65799   110   CONTINUE
65800         CALL PYPTFS(2,0.5D0*QMAX,0D0,PTGEN)
65801         RETURN
65802       ENDIF
65803  
65804 C...Initialization of cutoff masses etc.
65805       DO 120 IFL=0,40
65806         ISCOL(IFL)=0
65807         ISCHG(IFL)=0
65808         KSH(IFL)=0
65809   120 CONTINUE
65810       ISCOL(21)=1
65811       KSH(21)=1
65812       PMTH(1,21)=PYMASS(21)
65813       PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25D0*PARJ(82)**2)
65814       PMTH(3,21)=2D0*PMTH(2,21)
65815       PMTH(4,21)=PMTH(3,21)
65816       PMTH(5,21)=PMTH(3,21)
65817       PMTH(1,22)=PYMASS(22)
65818       PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25D0*PARJ(83)**2)
65819       PMTH(3,22)=2D0*PMTH(2,22)
65820       PMTH(4,22)=PMTH(3,22)
65821       PMTH(5,22)=PMTH(3,22)
65822       PMQTH1=PARJ(82)
65823       IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83))
65824       PMQT1E=MIN(PMQTH1,PARJ(90))
65825       PMQTH2=PMTH(2,21)
65826       IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22))
65827       PMQT2E=MIN(PMQTH2,0.5D0*PARJ(90))
65828       DO 130 IFL=1,5
65829         ISCOL(IFL)=1
65830         IF(MSTJ(41).GE.2) ISCHG(IFL)=1
65831         KSH(IFL)=1
65832         PMTH(1,IFL)=PYMASS(IFL)
65833         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PMQTH1**2)
65834         PMTH(3,IFL)=PMTH(2,IFL)+PMQTH2
65835         PMTH(4,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
65836         PMTH(5,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
65837   130 CONTINUE
65838       DO 140 IFL=11,15,2
65839         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IFL)=1
65840         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) KSH(IFL)=1
65841         PMTH(1,IFL)=PYMASS(IFL)
65842         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(90)**2)
65843         PMTH(3,IFL)=PMTH(2,IFL)+0.5D0*PARJ(90)
65844         PMTH(4,IFL)=PMTH(3,IFL)
65845         PMTH(5,IFL)=PMTH(3,IFL)
65846   140 CONTINUE
65847       PT2MIN=MAX(0.5D0*PARJ(82),1.1D0*PARJ(81))**2
65848       ALAMS=PARJ(81)**2
65849       ALFM=LOG(PT2MIN/ALAMS)
65850  
65851 C...Check on phase space available for emission.
65852       IREJ=0
65853       DO 150 J=1,5
65854         PS(J)=0D0
65855   150 CONTINUE
65856       PM=0D0
65857       KFLA(2)=0
65858       DO 170 I=1,NPA
65859         KFLA(I)=IABS(K(IPA(I),2))
65860         PMA(I)=P(IPA(I),5)
65861 C...Special cutoff masses for initial partons (may be a heavy quark,
65862 C...squark, ..., and need not be on the mass shell).
65863         IR=30+I
65864         IF(NPA.LE.1) IREF(I)=IR
65865         IF(NPA.GE.2) IREF(I+1)=IR
65866         ISCOL(IR)=0
65867         ISCHG(IR)=0
65868         KSH(IR)=0
65869         IF(KFLA(I).LE.8) THEN
65870           ISCOL(IR)=1
65871           IF(MSTJ(41).GE.2) ISCHG(IR)=1
65872         ELSEIF(KFLA(I).EQ.11.OR.KFLA(I).EQ.13.OR.KFLA(I).EQ.15.OR.
65873      &  KFLA(I).EQ.17) THEN
65874           IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IR)=1
65875         ELSEIF(KFLA(I).EQ.21) THEN
65876           ISCOL(IR)=1
65877         ELSEIF((KFLA(I).GE.KSUSY1+1.AND.KFLA(I).LE.KSUSY1+8).OR.
65878      &  (KFLA(I).GE.KSUSY2+1.AND.KFLA(I).LE.KSUSY2+8)) THEN
65879           ISCOL(IR)=1
65880         ELSEIF(KFLA(I).EQ.KSUSY1+21) THEN
65881           ISCOL(IR)=1
65882 C...QUARKONIA+++
65883 C...same for QQ~[3S18]
65884         ELSEIF(MSTP(148).GE.1.AND.(KFLA(I).EQ.9900443.OR.
65885      &  KFLA(I).EQ.9900553)) THEN
65886           ISCOL(IR)=1
65887 C...QUARKONIA---
65888         ENDIF
65889         IF(ISCOL(IR).EQ.1.OR.ISCHG(IR).EQ.1) KSH(IR)=1
65890         PMTH(1,IR)=PMA(I)
65891         IF(ISCOL(IR).EQ.1.AND.ISCHG(IR).EQ.1) THEN
65892           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PMQTH1**2)
65893           PMTH(3,IR)=PMTH(2,IR)+PMQTH2
65894           PMTH(4,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
65895           PMTH(5,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
65896         ELSEIF(ISCOL(IR).EQ.1) THEN
65897           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)
65898           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(82)
65899           PMTH(4,IR)=PMTH(3,IR)
65900           PMTH(5,IR)=PMTH(3,IR)
65901         ELSEIF(ISCHG(IR).EQ.1) THEN
65902           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(90)**2)
65903           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(90)
65904           PMTH(4,IR)=PMTH(3,IR)
65905           PMTH(5,IR)=PMTH(3,IR)
65906         ENDIF
65907         IF(KSH(IR).EQ.1) PMA(I)=PMTH(3,IR)
65908         PM=PM+PMA(I)
65909         IF(KSH(IR).EQ.0.OR.PMA(I).GT.10D0*QMAX) IREJ=IREJ+1
65910         DO 160 J=1,4
65911           PS(J)=PS(J)+P(IPA(I),J)
65912   160   CONTINUE
65913   170 CONTINUE
65914       IF(IREJ.EQ.NPA.AND.IP2.GE.-7) RETURN
65915       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
65916       IF(NPA.EQ.1) PS(5)=PS(4)
65917       IF(PS(5).LE.PM+PMQT1E) RETURN
65918  
65919 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
65920       KFSRCE=0
65921       IF(IP2.LE.0) THEN
65922       ELSEIF(K(IP1,3).EQ.K(IP2,3).AND.K(IP1,3).GT.0) THEN
65923         KFSRCE=IABS(K(K(IP1,3),2))
65924       ELSE
65925         IPAR1=MAX(1,K(IP1,3))
65926         IPAR2=MAX(1,K(IP2,3))
65927         IF(K(IPAR1,3).EQ.K(IPAR2,3).AND.K(IPAR1,3).GT.0)
65928      &       KFSRCE=IABS(K(K(IPAR1,3),2))
65929       ENDIF
65930       ITYPES=0
65931       IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
65932       IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
65933       IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
65934       IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
65935       IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
65936       IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
65937       IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
65938       IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
65939  
65940 C...Identify two primary showerers.
65941       ITYPE1=0
65942       IF(KFLA(1).GE.1.AND.KFLA(1).LE.8) ITYPE1=1
65943       IF(KFLA(1).GE.KSUSY1+1.AND.KFLA(1).LE.KSUSY1+8) ITYPE1=2
65944       IF(KFLA(1).GE.KSUSY2+1.AND.KFLA(1).LE.KSUSY2+8) ITYPE1=2
65945       IF(KFLA(1).GE.21.AND.KFLA(1).LE.24) ITYPE1=3
65946       IF(KFLA(1).GE.32.AND.KFLA(1).LE.34) ITYPE1=3
65947       IF(KFLA(1).EQ.25.OR.(KFLA(1).GE.35.AND.KFLA(1).LE.37)) ITYPE1=4
65948       IF(KFLA(1).GE.KSUSY1+22.AND.KFLA(1).LE.KSUSY1+37) ITYPE1=5
65949       IF(KFLA(1).EQ.KSUSY1+21) ITYPE1=6
65950       ITYPE2=0
65951       IF(KFLA(2).GE.1.AND.KFLA(2).LE.8) ITYPE2=1
65952       IF(KFLA(2).GE.KSUSY1+1.AND.KFLA(2).LE.KSUSY1+8) ITYPE2=2
65953       IF(KFLA(2).GE.KSUSY2+1.AND.KFLA(2).LE.KSUSY2+8) ITYPE2=2
65954       IF(KFLA(2).GE.21.AND.KFLA(2).LE.24) ITYPE2=3
65955       IF(KFLA(2).GE.32.AND.KFLA(2).LE.34) ITYPE2=3
65956       IF(KFLA(2).EQ.25.OR.(KFLA(2).GE.35.AND.KFLA(2).LE.37)) ITYPE2=4
65957       IF(KFLA(2).GE.KSUSY1+22.AND.KFLA(2).LE.KSUSY1+37) ITYPE2=5
65958       IF(KFLA(2).EQ.KSUSY1+21) ITYPE2=6
65959  
65960 C...Order of showerers. Presence of gluino.
65961       ITYPMN=MIN(ITYPE1,ITYPE2)
65962       ITYPMX=MAX(ITYPE1,ITYPE2)
65963       IORD=1
65964       IF(ITYPE1.GT.ITYPE2) IORD=2
65965       IGLUI=0
65966       IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
65967  
65968 C...Check if 3-jet matrix elements to be used.
65969       M3JC=0
65970       ALPHA=0.5D0
65971       IF(NPA.EQ.2.AND.MSTJ(47).GE.1.AND.MPSPD.EQ.0) THEN
65972         IF(MSTJ(38).NE.0) THEN
65973           M3JC=MSTJ(38)
65974           ALPHA=PARJ(80)
65975           MSTJ(38)=0
65976         ELSEIF(MSTJ(47).GE.6) THEN
65977           M3JC=MSTJ(47)
65978         ELSE
65979           ICLASS=1
65980           ICOMBI=4
65981  
65982 C...Vector/axial vector -> q + qbar; q -> q + V.
65983           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
65984      &    ITYPES.EQ.3)) THEN
65985             ICLASS=2
65986             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
65987               ICOMBI=1
65988             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
65989      &      K(IPA(1),2)+K(IPA(2),2).EQ.0)) THEN
65990 C...gamma*/Z0: assume e+e- initial state if unknown.
65991               EI=-1D0
65992               IF(KFSRCE.EQ.23) THEN
65993                 IANNFL=K(K(IP1,3),3)
65994                 IF(IANNFL.NE.0) THEN
65995                   KANNFL=IABS(K(IANNFL,2))
65996                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
65997                 ENDIF
65998               ENDIF
65999               AI=SIGN(1D0,EI+0.1D0)
66000               VI=AI-4D0*EI*PARU(102)
66001               EF=KCHG(KFLA(1),1)/3D0
66002               AF=SIGN(1D0,EF+0.1D0)
66003               VF=AF-4D0*EF*PARU(102)
66004               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
66005               SH=PS(5)**2
66006               SQMZ=PMAS(23,1)**2
66007               SQWZ=PS(5)*PMAS(23,2)
66008               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
66009               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
66010      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
66011               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
66012               ICOMBI=3
66013               ALPHA=VECT/(VECT+AXIV)
66014             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
66015               ICOMBI=4
66016             ENDIF
66017 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
66018           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
66019             ICLASS=2
66020           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
66021      &    ITYPES.EQ.1)) THEN
66022             ICLASS=3
66023  
66024 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
66025           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
66026             ICLASS=4
66027             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
66028               ICOMBI=1
66029             ELSEIF(KFSRCE.EQ.36) THEN
66030               ICOMBI=2
66031             ENDIF
66032           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
66033      &    ITYPES.EQ.1)) THEN
66034             ICLASS=5
66035  
66036 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
66037           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
66038      &    ITYPES.EQ.3)) THEN
66039             ICLASS=6
66040           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
66041      &    ITYPES.EQ.2)) THEN
66042             ICLASS=7
66043           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
66044             ICLASS=8
66045           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
66046      &    ITYPES.EQ.2)) THEN
66047             ICLASS=9
66048  
66049 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
66050           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
66051      &    ITYPES.EQ.5)) THEN
66052             ICLASS=10
66053           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
66054      &    ITYPES.EQ.2)) THEN
66055             ICLASS=11
66056           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
66057      &    ITYPES.EQ.1)) THEN
66058             ICLASS=12
66059  
66060 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
66061           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
66062             ICLASS=13
66063           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
66064      &    ITYPES.EQ.2)) THEN
66065             ICLASS=14
66066           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
66067      &    ITYPES.EQ.1)) THEN
66068             ICLASS=15
66069  
66070 C...g -> ~g + ~g (eikonal approximation).
66071           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
66072             ICLASS=16
66073           ENDIF
66074           M3JC=5*ICLASS+ICOMBI
66075         ENDIF
66076       ENDIF
66077  
66078 C...Find if interference with initial state partons.
66079       MIIS=0
66080       IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2.AND.KFSRCE.EQ.0
66081      &.AND.MPSPD.EQ.0) MIIS=MSTJ(50)
66082       IF(MSTJ(50).GE.4.AND.MSTJ(50).LE.6.AND.NPA.EQ.2.AND.MPSPD.EQ.0)
66083      &MIIS=MSTJ(50)-3
66084       IF(MIIS.NE.0) THEN
66085         DO 190 I=1,2
66086           KCII(I)=0
66087           KCA=PYCOMP(KFLA(I))
66088           IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2))
66089           NIIS(I)=0
66090           IF(KCII(I).NE.0) THEN
66091             DO 180 J=1,2
66092               ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5))
66093               IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND.
66094      &        (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN
66095                 NIIS(I)=NIIS(I)+1
66096                 IIIS(I,NIIS(I))=ICSI
66097               ENDIF
66098   180       CONTINUE
66099           ENDIF
66100   190   CONTINUE
66101         IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0
66102       ENDIF
66103  
66104 C...Boost interfering initial partons to rest frame
66105 C...and reconstruct their polar and azimuthal angles.
66106       IF(MIIS.NE.0) THEN
66107         DO 210 I=1,2
66108           DO 200 J=1,5
66109             K(N+I,J)=K(IPA(I),J)
66110             P(N+I,J)=P(IPA(I),J)
66111             V(N+I,J)=0D0
66112   200     CONTINUE
66113   210   CONTINUE
66114         DO 230 I=3,2+NIIS(1)
66115           DO 220 J=1,5
66116             K(N+I,J)=K(IIIS(1,I-2),J)
66117             P(N+I,J)=P(IIIS(1,I-2),J)
66118             V(N+I,J)=0D0
66119   220     CONTINUE
66120   230   CONTINUE
66121         DO 250 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
66122           DO 240 J=1,5
66123             K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J)
66124             P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J)
66125             V(N+I,J)=0D0
66126   240     CONTINUE
66127   250   CONTINUE
66128         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,0D0,-PS(1)/PS(4),
66129      &  -PS(2)/PS(4),-PS(3)/PS(4))
66130         PHI=PYANGL(P(N+1,1),P(N+1,2))
66131         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,-PHI,0D0,0D0,0D0)
66132         THE=PYANGL(P(N+1,3),P(N+1,1))
66133         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),-THE,0D0,0D0,0D0,0D0)
66134         DO 260 I=3,2+NIIS(1)
66135           THEIIS(1,I-2)=PYANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2))
66136           PHIIIS(1,I-2)=PYANGL(P(N+I,1),P(N+I,2))
66137   260   CONTINUE
66138         DO 270 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
66139           THEIIS(2,I-2-NIIS(1))=PARU(1)-PYANGL(P(N+I,3),
66140      &    SQRT(P(N+I,1)**2+P(N+I,2)**2))
66141           PHIIIS(2,I-2-NIIS(1))=PYANGL(P(N+I,1),P(N+I,2))
66142   270   CONTINUE
66143       ENDIF
66144  
66145 C...Boost 3 or more partons to their rest frame.
66146       IF(NPA.GE.3) CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,-PS(1)/PS(4),
66147      &-PS(2)/PS(4),-PS(3)/PS(4))
66148  
66149 C...Define imagined single initiator of shower for parton system.
66150       NS=N
66151       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
66152         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
66153         IF(MSTU(21).GE.1) RETURN
66154       ENDIF
66155   280 N=NS
66156       IF(NPA.GE.2) THEN
66157         K(N+1,1)=11
66158         K(N+1,2)=21
66159         K(N+1,3)=0
66160         K(N+1,4)=0
66161         K(N+1,5)=0
66162         P(N+1,1)=0D0
66163         P(N+1,2)=0D0
66164         P(N+1,3)=0D0
66165         P(N+1,4)=PS(5)
66166         P(N+1,5)=PS(5)
66167         V(N+1,5)=PS(5)**2
66168         N=N+1
66169         IREF(1)=21
66170       ENDIF
66171  
66172 C...Loop over partons that may branch.
66173       NEP=NPA
66174       IM=NS
66175       IF(NPA.EQ.1) IM=NS-1
66176   290 IM=IM+1
66177       IF(N.GT.NS) THEN
66178         IF(IM.GT.N) GOTO 600
66179         KFLM=IABS(K(IM,2))
66180         IR=IREF(IM-NS)
66181         IF(KSH(IR).EQ.0) GOTO 290
66182         IF(P(IM,5).LT.PMTH(2,IR)) GOTO 290
66183         IGM=K(IM,3)
66184       ELSE
66185         IGM=-1
66186       ENDIF
66187       IF(N+NEP.GT.MSTU(4)-MSTU(32)-10) THEN
66188         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
66189         IF(MSTU(21).GE.1) RETURN
66190       ENDIF
66191  
66192 C...Position of aunt (sister to branching parton).
66193 C...Origin and flavour of daughters.
66194       IAU=0
66195       IF(IGM.GT.0) THEN
66196         IF(K(IM-1,3).EQ.IGM) IAU=IM-1
66197         IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1
66198       ENDIF
66199       IF(IGM.GE.0) THEN
66200         K(IM,4)=N+1
66201         DO 300 I=1,NEP
66202           K(N+I,3)=IM
66203   300   CONTINUE
66204       ELSE
66205         K(N+1,3)=IPA(1)
66206       ENDIF
66207       IF(IGM.LE.0) THEN
66208         DO 310 I=1,NEP
66209           K(N+I,2)=K(IPA(I),2)
66210   310   CONTINUE
66211       ELSEIF(KFLM.NE.21) THEN
66212         K(N+1,2)=K(IM,2)
66213         K(N+2,2)=K(IM,5)
66214         IREF(N+1-NS)=IREF(IM-NS)
66215         IREF(N+2-NS)=IABS(K(N+2,2))
66216       ELSEIF(K(IM,5).EQ.21) THEN
66217         K(N+1,2)=21
66218         K(N+2,2)=21
66219         IREF(N+1-NS)=21
66220         IREF(N+2-NS)=21
66221       ELSE
66222         K(N+1,2)=K(IM,5)
66223         K(N+2,2)=-K(IM,5)
66224         IREF(N+1-NS)=IABS(K(N+1,2))
66225         IREF(N+2-NS)=IABS(K(N+2,2))
66226       ENDIF
66227  
66228 C...Reset flags on daughters and tries made.
66229       DO 320 IP=1,NEP
66230         K(N+IP,1)=3
66231         K(N+IP,4)=0
66232         K(N+IP,5)=0
66233         KFLD(IP)=IABS(K(N+IP,2))
66234         IF(KCHG(PYCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1
66235         ITRY(IP)=0
66236         ISL(IP)=0
66237         ISI(IP)=0
66238         IF(KSH(IREF(N+IP-NS)).EQ.1) ISI(IP)=1
66239   320 CONTINUE
66240       ISLM=0
66241  
66242 C...Maximum virtuality of daughters.
66243       IF(IGM.LE.0) THEN
66244         DO 330 I=1,NPA
66245           IF(NPA.GE.3) P(N+I,4)=P(IPA(I),4)
66246           P(N+I,5)=MIN(QMAX,PS(5))
66247           IR=IREF(N+I-NS)
66248           IF(IP2.LE.-8) P(N+I,5)=MAX(P(N+I,5),2D0*PMTH(3,IR))
66249           IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5)
66250   330   CONTINUE
66251       ELSE
66252         IF(MSTJ(43).LE.2) PEM=V(IM,2)
66253         IF(MSTJ(43).GE.3) PEM=P(IM,4)
66254         P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM)
66255         P(N+2,5)=MIN(P(IM,5),(1D0-V(IM,1))*PEM)
66256         IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22)
66257       ENDIF
66258       DO 340 I=1,NEP
66259         PMSD(I)=P(N+I,5)
66260         IF(ISI(I).EQ.1) THEN
66261           IR=IREF(N+I-NS)
66262           IF(P(N+I,5).LE.PMTH(3,IR)) P(N+I,5)=PMTH(1,IR)
66263         ENDIF
66264         V(N+I,5)=P(N+I,5)**2
66265   340 CONTINUE
66266  
66267 C...Choose one of the daughters for evolution.
66268   350 INUM=0
66269       IF(NEP.EQ.1) INUM=1
66270       DO 360 I=1,NEP
66271         IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I
66272   360 CONTINUE
66273       DO 370 I=1,NEP
66274         IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN
66275           IR=IREF(N+I-NS)
66276           IF(P(N+I,5).GE.PMTH(2,IR)) INUM=I
66277         ENDIF
66278   370 CONTINUE
66279       IF(INUM.EQ.0) THEN
66280         RMAX=0D0
66281         DO 380 I=1,NEP
66282           IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQT2E) THEN
66283             RPM=P(N+I,5)/PMSD(I)
66284             IR=IREF(N+I-NS)
66285             IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,IR)) THEN
66286               RMAX=RPM
66287               INUM=I
66288             ENDIF
66289           ENDIF
66290   380   CONTINUE
66291       ENDIF
66292  
66293 C...Cancel choice of predetermined daughter already treated.
66294       INUM=MAX(1,INUM)
66295       INUMT=INUM
66296       IF(MPSPD.EQ.1.AND.IGM.EQ.0.AND.ITRY(INUMT).GE.1) THEN
66297         IF(K(IP1-1+INUM,4).GT.0) INUM=3-INUM
66298       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2.AND.ITRY(INUMT).GE.1) THEN
66299         IF(KFLD(INUMT).NE.21.AND.K(IP1+2,4).GT.0) INUM=3-INUM
66300         IF(KFLD(INUMT).EQ.21.AND.K(IP1+3,4).GT.0) INUM=3-INUM
66301       ENDIF
66302  
66303 C...Store information on choice of evolving daughter.
66304       IEP(1)=N+INUM
66305       DO 390 I=2,NEP
66306         IEP(I)=IEP(I-1)+1
66307         IF(IEP(I).GT.N+NEP) IEP(I)=N+1
66308   390 CONTINUE
66309       DO 400 I=1,NEP
66310         KFL(I)=IABS(K(IEP(I),2))
66311   400 CONTINUE
66312       ITRY(INUM)=ITRY(INUM)+1
66313       IF(ITRY(INUM).GT.200) THEN
66314         CALL PYERRM(14,'(PYSHOW:) caught in infinite loop')
66315         IF(MSTU(21).GE.1) RETURN
66316       ENDIF
66317       Z=0.5D0
66318       IR=IREF(IEP(1)-NS)
66319       IF(KSH(IR).EQ.0) GOTO 450
66320       IF(P(IEP(1),5).LT.PMTH(2,IR)) GOTO 450
66321  
66322 C...Check if evolution already predetermined for daughter.
66323       IPSPD=0
66324       IF(MPSPD.EQ.1.AND.IGM.EQ.0) THEN
66325         IF(K(IP1-1+INUM,4).GT.0) IPSPD=IP1-1+INUM
66326       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2) THEN
66327         IF(KFL(1).NE.21.AND.K(IP1+2,4).GT.0) IPSPD=IP1+2
66328         IF(KFL(1).EQ.21.AND.K(IP1+3,4).GT.0) IPSPD=IP1+3
66329       ENDIF
66330       IF(INUM.EQ.1.OR.INUM.EQ.2) THEN
66331         ISSET(INUM)=0
66332         IF(IPSPD.NE.0) ISSET(INUM)=1
66333       ENDIF
66334  
66335 C...Select side for interference with initial state partons.
66336       IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN
66337         III=IEP(1)-NS-1
66338         ISII(III)=0
66339         IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN
66340           ISII(III)=1
66341         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN
66342           IF(PYR(0).GT.0.5D0) ISII(III)=1
66343         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN
66344           ISII(III)=1
66345           IF(PYR(0).GT.0.5D0) ISII(III)=2
66346         ENDIF
66347       ENDIF
66348  
66349 C...Calculate allowed z range.
66350       IF(NEP.EQ.1) THEN
66351         PMED=PS(4)
66352       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
66353         PMED=P(IM,5)
66354       ELSE
66355         IF(INUM.EQ.1) PMED=V(IM,1)*PEM
66356         IF(INUM.EQ.2) PMED=(1D0-V(IM,1))*PEM
66357       ENDIF
66358       IF(MOD(MSTJ(43),2).EQ.1) THEN
66359         ZC=PMTH(2,21)/PMED
66360         ZCE=PMTH(2,22)/PMED
66361         IF(ISCOL(IR).EQ.0) ZCE=0.5D0*PARJ(90)/PMED
66362       ELSE
66363         ZC=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTH(2,21)/PMED)**2)))
66364         IF(ZC.LT.1D-6) ZC=(PMTH(2,21)/PMED)**2
66365         PMTMPE=PMTH(2,22)
66366         IF(ISCOL(IR).EQ.0) PMTMPE=0.5D0*PARJ(90)
66367         ZCE=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTMPE/PMED)**2)))
66368         IF(ZCE.LT.1D-6) ZCE=(PMTMPE/PMED)**2
66369       ENDIF
66370       ZC=MIN(ZC,0.491D0)
66371       ZCE=MIN(ZCE,0.49991D0)
66372       IF(((MSTJ(41).EQ.1.AND.ZC.GT.0.49D0).OR.(MSTJ(41).GE.2.AND.
66373      &MIN(ZC,ZCE).GT.0.4999D0)).AND.IPSPD.EQ.0) THEN
66374         P(IEP(1),5)=PMTH(1,IR)
66375         V(IEP(1),5)=P(IEP(1),5)**2
66376         GOTO 450
66377       ENDIF
66378  
66379 C...Integral of Altarelli-Parisi z kernel for QCD.
66380 C...(Includes squark and gluino; with factor N_C/C_F extra for latter).
66381       IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN
66382         FBR=6D0*LOG((1D0-ZC)/ZC)+MSTJ(45)*0.5D0
66383 C...QUARKONIA+++
66384 C...Evolution of QQ~[3S18] state if MSTP(148)=1.
66385       ELSEIF(MSTJ(49).EQ.0.AND.MSTP(149).GE.0.AND.
66386      &       (KFL(1).EQ.9900443.OR.KFL(1).EQ.9900553)) THEN
66387         FBR=6D0*LOG((1D0-ZC)/ZC)
66388 C...QUARKONIA---
66389       ELSEIF(MSTJ(49).EQ.0) THEN
66390         FBR=(8D0/3D0)*LOG((1D0-ZC)/ZC)
66391         IF(IGLUI.EQ.1.AND.IR.GE.31) FBR=FBR*(9D0/4D0)
66392  
66393 C...Integral of Altarelli-Parisi z kernel for scalar gluon.
66394       ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN
66395         FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1D0-2D0*ZC)
66396       ELSEIF(MSTJ(49).EQ.1) THEN
66397         FBR=(1D0-2D0*ZC)/3D0
66398         IF(IGM.EQ.0.AND.M3JC.GE.1) FBR=4D0*FBR
66399  
66400 C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon.
66401       ELSEIF(KFL(1).EQ.21) THEN
66402         FBR=6D0*MSTJ(45)*(0.5D0-ZC)
66403       ELSE
66404         FBR=2D0*LOG((1D0-ZC)/ZC)
66405       ENDIF
66406  
66407 C...Reset QCD probability for colourless.
66408       IF(ISCOL(IR).EQ.0) FBR=0D0
66409  
66410 C...Integral of Altarelli-Parisi kernel for photon emission.
66411       FBRE=0D0
66412       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1) THEN
66413         IF(KFL(1).LE.18) THEN
66414           FBRE=(KCHG(KFL(1),1)/3D0)**2*2D0*LOG((1D0-ZCE)/ZCE)
66415         ENDIF
66416         IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE
66417       ENDIF
66418  
66419 C...Inner veto algorithm starts. Find maximum mass for evolution.
66420   410 PMS=V(IEP(1),5)
66421       IF(IGM.GE.0) THEN
66422         PM2=0D0
66423         DO 420 I=2,NEP
66424           PM=P(IEP(I),5)
66425           IRI=IREF(IEP(I)-NS)
66426           IF(KSH(IRI).EQ.1) PM=PMTH(2,IRI)
66427           PM2=PM2+PM
66428   420   CONTINUE
66429         PMS=MIN(PMS,(P(IM,5)-PM2)**2)
66430       ENDIF
66431  
66432 C...Select mass for daughter in QCD evolution.
66433       B0=27D0/6D0
66434       DO 430 IFF=4,MSTJ(45)
66435         IF(PMS.GT.4D0*PMTH(2,IFF)**2) B0=(33D0-2D0*IFF)/6D0
66436   430 CONTINUE
66437 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
66438       PMSC=MAX(0.5D0*PARJ(82),PMS-PMTH(1,IR)**2)
66439 C...Already predetermined choice.
66440       IF(IPSPD.NE.0) THEN
66441         PMSQCD=P(IPSPD,5)**2
66442       ELSEIF(FBR.LT.1D-3) THEN
66443         PMSQCD=0D0
66444       ELSEIF(MSTJ(44).LE.0) THEN
66445         PMSQCD=PMSC*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/(PARU(111)*FBR)))
66446       ELSEIF(MSTJ(44).EQ.1) THEN
66447         PMSQCD=4D0*ALAMS*(0.25D0*PMSC/ALAMS)**(PYR(0)**(B0/FBR))
66448       ELSE
66449         PMSQCD=PMSC*EXP(MAX(-50D0,ALFM*B0*LOG(PYR(0))/FBR))
66450       ENDIF
66451 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
66452       IF(IPSPD.EQ.0) PMSQCD=PMSQCD+PMTH(1,IR)**2
66453       IF(ZC.GT.0.49D0.OR.PMSQCD.LE.PMTH(4,IR)**2) PMSQCD=PMTH(2,IR)**2
66454       V(IEP(1),5)=PMSQCD
66455       MCE=1
66456  
66457 C...Select mass for daughter in QED evolution.
66458       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1.AND.IPSPD.EQ.0) THEN
66459 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
66460         PMSE=MAX(0.5D0*PARJ(83),PMS-PMTH(1,IR)**2)
66461         IF(FBRE.LT.1D-3) THEN
66462           PMSQED=0D0
66463         ELSE
66464           PMSQED=PMSE*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
66465      &    (PARU(101)*FBRE)))
66466         ENDIF
66467 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
66468         PMSQED=PMSQED+PMTH(1,IR)**2
66469         IF(ZCE.GT.0.4999D0.OR.PMSQED.LE.PMTH(5,IR)**2) PMSQED=
66470      &  PMTH(2,IR)**2
66471         IF(PMSQED.GT.PMSQCD) THEN
66472           V(IEP(1),5)=PMSQED
66473           MCE=2
66474         ENDIF
66475       ENDIF
66476  
66477 C...Check whether daughter mass below cutoff.
66478       P(IEP(1),5)=SQRT(V(IEP(1),5))
66479       IF(P(IEP(1),5).LE.PMTH(3,IR)) THEN
66480         P(IEP(1),5)=PMTH(1,IR)
66481         V(IEP(1),5)=P(IEP(1),5)**2
66482         GOTO 450
66483       ENDIF
66484  
66485 C...Already predetermined choice of z, and flavour in g -> qqbar.
66486       IF(IPSPD.NE.0) THEN
66487         IPSGD1=K(IPSPD,4)
66488         IPSGD2=K(IPSPD,5)
66489         PMSGD1=P(IPSGD1,5)**2
66490         PMSGD2=P(IPSGD2,5)**2
66491         ALAMPS=SQRT(MAX(1D-10,(PMSQCD-PMSGD1-PMSGD2)**2-
66492      &  4D0*PMSGD1*PMSGD2))
66493         Z=0.5D0*(PMSQCD*(2D0*P(IPSGD1,4)/P(IPSPD,4)-1D0)+ALAMPS-
66494      &  PMSGD1+PMSGD2)/ALAMPS
66495         Z=MAX(0.00001D0,MIN(0.99999D0,Z))
66496         IF(KFL(1).NE.21) THEN
66497           K(IEP(1),5)=21
66498         ELSE
66499           K(IEP(1),5)=IABS(K(IPSGD1,2))
66500         ENDIF
66501  
66502 C...Select z value of branching: q -> qgamma.
66503       ELSEIF(MCE.EQ.2) THEN
66504         Z=1D0-(1D0-ZCE)*(ZCE/(1D0-ZCE))**PYR(0)
66505         IF(1D0+Z**2.LT.2D0*PYR(0)) GOTO 410
66506         K(IEP(1),5)=22
66507  
66508 C...QUARKONIA+++
66509 C...Select z value of branching: QQ~[3S18] -> QQ~[3S18]g.
66510       ELSEIF(MSTJ(49).EQ.0.AND.
66511      &       (KFL(1).EQ.9900443.OR.KFL(1).EQ.9900553)) THEN
66512         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
66513 C...Select always the harder 'gluon' if the switch MSTP(149)<=0.
66514         IF(MSTP(149).LE.0.OR.PYR(0).GT.0.5D0) Z=1D0-Z
66515         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 410
66516         K(IEP(1),5)=21
66517 C...QUARKONIA---
66518  
66519 C...Select z value of branching: q -> qg, g -> gg, g -> qqbar.
66520       ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN
66521         Z=1D0-(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
66522 C...Only do z weighting when no ME correction afterwards.
66523         IF(M3JC.EQ.0.AND.1D0+Z**2.LT.2D0*PYR(0)) GOTO 410
66524         K(IEP(1),5)=21
66525       ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*0.5D0.LT.PYR(0)*FBR) THEN
66526         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
66527         IF(PYR(0).GT.0.5D0) Z=1D0-Z
66528         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 410
66529         K(IEP(1),5)=21
66530       ELSEIF(MSTJ(49).NE.1) THEN
66531         Z=PYR(0)
66532         IF(Z**2+(1D0-Z)**2.LT.PYR(0)) GOTO 410
66533         KFLB=1+INT(MSTJ(45)*PYR(0))
66534         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
66535         IF(PMQ.GE.1D0) GOTO 410
66536         IF(MSTJ(44).LE.2.OR.MSTJ(44).EQ.4) THEN
66537           IF(Z.LT.ZC.OR.Z.GT.1D0-ZC) GOTO 410
66538           PMQ0=4D0*PMTH(2,21)**2/V(IEP(1),5)
66539           IF(MOD(MSTJ(43),2).EQ.0.AND.(1D0+0.5D0*PMQ)*SQRT(1D0-PMQ)
66540      &    .LT.PYR(0)*(1D0+0.5D0*PMQ0)*SQRT(1D0-PMQ0)) GOTO 410
66541         ELSE
66542           IF((1D0+0.5D0*PMQ)*SQRT(1D0-PMQ).LT.PYR(0)) GOTO 410
66543         ENDIF
66544         K(IEP(1),5)=KFLB
66545  
66546 C...Ditto for scalar gluon model.
66547       ELSEIF(KFL(1).NE.21) THEN
66548         Z=1D0-SQRT(ZC**2+PYR(0)*(1D0-2D0*ZC))
66549         K(IEP(1),5)=21
66550       ELSEIF(PYR(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN
66551         Z=ZC+(1D0-2D0*ZC)*PYR(0)
66552         K(IEP(1),5)=21
66553       ELSE
66554         Z=ZC+(1D0-2D0*ZC)*PYR(0)
66555         KFLB=1+INT(MSTJ(45)*PYR(0))
66556         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
66557         IF(PMQ.GE.1D0) GOTO 410
66558         K(IEP(1),5)=KFLB
66559       ENDIF
66560  
66561 C...Correct to alpha_s(pT^2) (optionally m^2/4 for g -> q qbar).
66562       IF(MCE.EQ.1.AND.MSTJ(44).GE.2.AND.IPSPD.EQ.0) THEN
66563         IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
66564      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
66565           IF(ALFM/LOG(V(IEP(1),5)*0.25D0/ALAMS).LT.PYR(0)) GOTO 410
66566         ELSE
66567           PT2APP=Z*(1D0-Z)*V(IEP(1),5)
66568           IF(MSTJ(44).GE.4) PT2APP=PT2APP*
66569      &    (1D0-PMTH(1,IR)**2/V(IEP(1),5))**2
66570           IF(PT2APP.LT.PT2MIN) GOTO 410
66571           IF(ALFM/LOG(PT2APP/ALAMS).LT.PYR(0)) GOTO 410
66572         ENDIF
66573       ENDIF
66574  
66575 C...Check if z consistent with chosen m.
66576       IF(KFL(1).EQ.21) THEN
66577         IRGD1=IABS(K(IEP(1),5))
66578         IRGD2=IRGD1
66579       ELSE
66580         IRGD1=IR
66581         IRGD2=IABS(K(IEP(1),5))
66582       ENDIF
66583       IF(NEP.EQ.1) THEN
66584         PED=PS(4)
66585       ELSEIF(NEP.GE.3) THEN
66586         PED=P(IEP(1),4)
66587       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
66588         PED=0.5D0*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5)
66589       ELSE
66590         IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM
66591         IF(IEP(1).EQ.N+2) PED=(1D0-V(IM,1))*PEM
66592       ENDIF
66593       IF(MOD(MSTJ(43),2).EQ.1) THEN
66594         PMQTH3=0.5D0*PARJ(82)
66595         IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
66596         IF(IRGD2.EQ.22.AND.ISCOL(IR).EQ.0) PMQTH3=0.5D0*PARJ(90)
66597         PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(IEP(1),5)
66598         PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(IEP(1),5)
66599         ZD=SQRT(MAX(0D0,(1D0-V(IEP(1),5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
66600      &  4D0*PMQ1*PMQ2)))
66601         ZH=1D0+PMQ1-PMQ2
66602       ELSE
66603         ZD=SQRT(MAX(0D0,1D0-V(IEP(1),5)/PED**2))
66604         ZH=1D0
66605       ENDIF
66606       IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
66607      &(MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
66608       ELSEIF(IPSPD.NE.0) THEN
66609       ELSE
66610         ZL=0.5D0*(ZH-ZD)
66611         ZU=0.5D0*(ZH+ZD)
66612         IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 410
66613       ENDIF
66614       IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1D0-ZL)/MAX(1D-20,ZL*
66615      &(1D0-ZU)))
66616       IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
66617  
66618 C...Width suppression for q -> q + g.
66619       IF(MSTJ(40).NE.0.AND.KFL(1).NE.21.AND.IPSPD.EQ.0) THEN
66620         IF(IGM.EQ.0) THEN
66621           EGLU=0.5D0*PS(5)*(1D0-Z)*(1D0+V(IEP(1),5)/V(NS+1,5))
66622         ELSE
66623           EGLU=PMED*(1D0-Z)
66624         ENDIF
66625         CHI=PARJ(89)**2/(PARJ(89)**2+EGLU**2)
66626         IF(MSTJ(40).EQ.1) THEN
66627           IF(CHI.LT.PYR(0)) GOTO 410
66628         ELSEIF(MSTJ(40).EQ.2) THEN
66629           IF(1D0-CHI.LT.PYR(0)) GOTO 410
66630         ENDIF
66631       ENDIF
66632  
66633 C...Three-jet matrix element correction.
66634       IF(M3JC.GE.1) THEN
66635         WME=1D0
66636         WSHOW=1D0
66637  
66638 C...QED matrix elements: only for massless case so far.
66639         IF(MCE.EQ.2.AND.IGM.EQ.0) THEN
66640           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
66641           X2=1D0-V(IEP(1),5)/V(NS+1,5)
66642           X3=(1D0-X1)+(1D0-X2)
66643           KI1=K(IPA(INUM),2)
66644           KI2=K(IPA(3-INUM),2)
66645           QF1=KCHG(PYCOMP(KI1),1)*ISIGN(1,KI1)/3D0
66646           QF2=KCHG(PYCOMP(KI2),1)*ISIGN(1,KI2)/3D0
66647           WSHOW=QF1**2*(1D0-X1)/X3*(1D0+(X1/(2D0-X2))**2)+
66648      &    QF2**2*(1D0-X2)/X3*(1D0+(X2/(2D0-X1))**2)
66649           WME=(QF1*(1D0-X1)/X3-QF2*(1D0-X2)/X3)**2*(X1**2+X2**2)
66650         ELSEIF(MCE.EQ.2) THEN
66651  
66652 C...QCD matrix elements, including mass effects.
66653         ELSEIF(MSTJ(49).NE.1.AND.K(IEP(1),2).NE.21) THEN
66654           PS1ME=V(IEP(1),5)
66655           PM1ME=PMTH(1,IR)
66656           M3JCC=M3JC
66657           IF(IR.GE.31.AND.IGM.EQ.0) THEN
66658 C...QCD ME: original parton, first branching.
66659             PM2ME=PMTH(1,63-IR)
66660             ECMME=PS(5)
66661           ELSEIF(IR.GE.31) THEN
66662 C...QCD ME: original parton, subsequent branchings.
66663             PM2ME=PMTH(1,63-IR)
66664             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
66665             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
66666           ELSEIF(K(IM,2).EQ.21) THEN
66667 C...QCD ME: secondary partons, first branching.
66668             PM2ME=PM1ME
66669             ZMME=V(IM,1)
66670             IF(IEP(1).GT.IEP(2)) ZMME=1D0-ZMME
66671             PMLME=SQRT(MAX(0D0,(V(IM,5)-PS1ME-PM2ME**2)**2-
66672      &      4D0*PS1ME*PM2ME**2))
66673             PEDME=PEM*(0.5D0*(V(IM,5)-PMLME+PS1ME-PM2ME**2)+PMLME*ZMME)/
66674      &      V(IM,5)
66675             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
66676             M3JCC=66
66677           ELSE
66678 C...QCD ME: secondary partons, subsequent branchings.
66679             PM2ME=PM1ME
66680             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
66681             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
66682             M3JCC=66
66683           ENDIF
66684 C...Construct ME variables.
66685           R1ME=PM1ME/ECMME
66686           R2ME=PM2ME/ECMME
66687           X1=(1D0+PS1ME/ECMME**2-R2ME**2)*(Z+(1D0-Z)*PM1ME**2/PS1ME)
66688           X2=1D0+R2ME**2-PS1ME/ECMME**2
66689 C...Call ME, with right order important for two inequivalent showerers.
66690           IF(IR.EQ.IORD+30) THEN
66691             WME=PYMAEL(M3JCC,X1,X2,R1ME,R2ME,ALPHA)
66692           ELSE
66693             WME=PYMAEL(M3JCC,X2,X1,R2ME,R1ME,ALPHA)
66694           ENDIF
66695 C...Split up total ME when two radiating partons.
66696           ISPRAD=1
66697           IF((M3JCC.GE.16.AND.M3JCC.LE.19).OR.
66698      &    (M3JCC.GE.26.AND.M3JCC.LE.29).OR.
66699      &    (M3JCC.GE.36.AND.M3JCC.LE.39).OR.
66700      &    (M3JCC.GE.46.AND.M3JCC.LE.49).OR.
66701      &    (M3JCC.GE.56.AND.M3JCC.LE.64)) ISPRAD=0
66702           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
66703      &    MAX(1D-10,2D0-X1-X2)
66704 C...Evaluate shower rate to be compared with.
66705           WSHOW=2D0/(MAX(1D-10,2D0-X1-X2)*
66706      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
66707           IF(IGLUI.EQ.1.AND.IR.GE.31) WSHOW=(9D0/4D0)*WSHOW
66708         ELSEIF(MSTJ(49).NE.1) THEN
66709  
66710 C...Toy model scalar theory matrix elements; no mass effects.
66711         ELSE
66712           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
66713           X2=1D0-V(IEP(1),5)/V(NS+1,5)
66714           X3=(1D0-X1)+(1D0-X2)
66715           WSHOW=4D0*X3*((1D0-X1)/(2D0-X2)**2+(1D0-X2)/(2D0-X1)**2)
66716           WME=X3**2
66717           IF(MSTJ(102).GE.2) WME=X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*
66718      &    PARJ(171)
66719         ENDIF
66720  
66721         IF(WME.LT.PYR(0)*WSHOW) GOTO 410
66722       ENDIF
66723  
66724 C...Impose angular ordering by rejection of nonordered emission.
66725       IF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2.AND.IPSPD.EQ.0) THEN
66726         PEMAO=V(IM,1)*P(IM,4)
66727         IF(IEP(1).EQ.N+2) PEMAO=(1D0-V(IM,1))*P(IM,4)
66728         IF(IR.GE.31.AND.MSTJ(42).GE.5) THEN
66729           MAOD=0
66730         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.4
66731      &  .OR.MSTJ(42).EQ.7)) THEN
66732           MAOD=0
66733         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.3
66734      &  .OR.MSTJ(42).EQ.6)) THEN
66735           MAOD=1
66736           PMDAO=PMTH(2,K(IEP(1),5))
66737           THE2ID=Z*(1D0-Z)*PEMAO**2/(V(IEP(1),5)-4D0*PMDAO**2)
66738         ELSE
66739           MAOD=1
66740           THE2ID=Z*(1D0-Z)*PEMAO**2/V(IEP(1),5)
66741           IF(MSTJ(42).GE.3.AND.MSTJ(42).NE.5) THE2ID=THE2ID*
66742      &    (1D0+PMTH(1,IR)**2*(1D0-Z)/(V(IEP(1),5)*Z))**2
66743         ENDIF
66744         MAOM=1
66745         IAOM=IM
66746   440   IF(K(IAOM,5).EQ.22) THEN
66747           IAOM=K(IAOM,3)
66748           IF(K(IAOM,3).LE.NS) MAOM=0
66749           IF(MAOM.EQ.1) GOTO 440
66750         ENDIF
66751         IF(MAOM.EQ.1.AND.MAOD.EQ.1) THEN
66752           THE2IM=V(IAOM,1)*(1D0-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5)
66753           IF(THE2ID.LT.THE2IM) GOTO 410
66754         ENDIF
66755       ENDIF
66756  
66757 C...Impose user-defined maximum angle at first branching.
66758       IF(MSTJ(48).EQ.1.AND.IPSPD.EQ.0) THEN
66759         IF(NEP.EQ.1.AND.IM.EQ.NS) THEN
66760           THE2ID=Z*(1D0-Z)*PS(4)**2/V(IEP(1),5)
66761           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 410
66762         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN
66763           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
66764           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 410
66765         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN
66766           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
66767           IF(PARJ(86)**2*THE2ID.LT.1D0) GOTO 410
66768         ENDIF
66769       ENDIF
66770  
66771 C...Impose angular constraint in first branching from interference
66772 C...with initial state partons.
66773       IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN
66774         THE2D=MAX((1D0-Z)/Z,Z/(1D0-Z))*V(IEP(1),5)/(0.5D0*P(IM,4))**2
66775         IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN
66776           IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 410
66777         ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN
66778           IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 410
66779         ENDIF
66780       ENDIF
66781  
66782 C...End of inner veto algorithm. Check if only one leg evolved so far.
66783   450 V(IEP(1),1)=Z
66784       ISL(1)=0
66785       ISL(2)=0
66786       IF(NEP.EQ.1) GOTO 490
66787       IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 350
66788       DO 460 I=1,NEP
66789         IR=IREF(N+I-NS)
66790         IF(ITRY(I).EQ.0.AND.KSH(IR).EQ.1) THEN
66791           IF(P(N+I,5).GE.PMTH(2,IR)) GOTO 350
66792         ENDIF
66793   460 CONTINUE
66794  
66795 C...Check if chosen multiplet m1,m2,z1,z2 is physical.
66796       IF(NEP.GE.3) THEN
66797         PMSUM=0D0
66798         DO 470 I=1,NEP
66799           PMSUM=PMSUM+P(N+I,5)
66800   470   CONTINUE
66801         IF(PMSUM.GE.PS(5)) GOTO 350
66802       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN
66803         DO 480 I1=N+1,N+2
66804           IRDA=IREF(I1-NS)
66805           IF(KSH(IRDA).EQ.0) GOTO 480
66806           IF(P(I1,5).LT.PMTH(2,IRDA)) GOTO 480
66807           IF(IRDA.EQ.21) THEN
66808             IRGD1=IABS(K(I1,5))
66809             IRGD2=IRGD1
66810           ELSE
66811             IRGD1=IRDA
66812             IRGD2=IABS(K(I1,5))
66813           ENDIF
66814           I2=2*N+3-I1
66815           IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
66816             PED=0.5D0*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5)
66817           ELSE
66818             IF(I1.EQ.N+1) ZM=V(IM,1)
66819             IF(I1.EQ.N+2) ZM=1D0-V(IM,1)
66820             PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2-
66821      &      4D0*V(N+1,5)*V(N+2,5))
66822             PED=PEM*(0.5D0*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/
66823      &      V(IM,5)
66824           ENDIF
66825           IF(MOD(MSTJ(43),2).EQ.1) THEN
66826             PMQTH3=0.5D0*PARJ(82)
66827             IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
66828             IF(IRGD2.EQ.22.AND.ISCOL(IRDA).EQ.0) PMQTH3=0.5D0*PARJ(90)
66829             PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(I1,5)
66830             PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(I1,5)
66831             ZD=SQRT(MAX(0D0,(1D0-V(I1,5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
66832      &      4D0*PMQ1*PMQ2)))
66833             ZH=1D0+PMQ1-PMQ2
66834           ELSE
66835             ZD=SQRT(MAX(0D0,1D0-V(I1,5)/PED**2))
66836             ZH=1D0
66837           ENDIF
66838           IF(IRDA.EQ.21.AND.IRGD1.LT.10.AND.
66839      &    (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
66840           ELSE
66841             ZL=0.5D0*(ZH-ZD)
66842             ZU=0.5D0*(ZH+ZD)
66843             IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
66844      &      ISSET(1).EQ.0) THEN
66845               ISL(1)=1
66846             ELSEIF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
66847      &      ISSET(2).EQ.0) THEN
66848               ISL(2)=1
66849             ENDIF
66850           ENDIF
66851           IF(IRDA.EQ.21) V(I1,4)=LOG(ZU*(1D0-ZL)/MAX(1D-20,
66852      &    ZL*(1D0-ZU)))
66853           IF(IRDA.NE.21) V(I1,4)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
66854   480   CONTINUE
66855         IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN
66856           ISL(3-ISLM)=0
66857           ISLM=3-ISLM
66858         ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN
66859           ZDR1=MAX(0D0,V(N+1,3)/MAX(1D-6,V(N+1,4))-1D0)
66860           ZDR2=MAX(0D0,V(N+2,3)/MAX(1D-6,V(N+2,4))-1D0)
66861           IF(ZDR2.GT.PYR(0)*(ZDR1+ZDR2)) ISL(1)=0
66862           IF(ISL(1).EQ.1) ISL(2)=0
66863           IF(ISL(1).EQ.0) ISLM=1
66864           IF(ISL(2).EQ.0) ISLM=2
66865         ENDIF
66866         IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 350
66867       ENDIF
66868       IRD1=IREF(N+1-NS)
66869       IRD2=IREF(N+2-NS)
66870       IF(IGM.GT.0) THEN
66871         IF(MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE.
66872      &  PMTH(2,IRD1).OR.P(N+2,5).GE.PMTH(2,IRD2))) THEN
66873           PMQ1=V(N+1,5)/V(IM,5)
66874           PMQ2=V(N+2,5)/V(IM,5)
66875           ZD=SQRT(MAX(0D0,(1D0-V(IM,5)/PEM**2)*((1D0-PMQ1-PMQ2)**2-
66876      &    4D0*PMQ1*PMQ2)))
66877           ZH=1D0+PMQ1-PMQ2
66878           ZL=0.5D0*(ZH-ZD)
66879           ZU=0.5D0*(ZH+ZD)
66880           IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 350
66881         ENDIF
66882       ENDIF
66883  
66884 C...Accepted branch. Construct four-momentum for initial partons.
66885   490 MAZIP=0
66886       MAZIC=0
66887       IF(NEP.EQ.1) THEN
66888         P(N+1,1)=0D0
66889         P(N+1,2)=0D0
66890         P(N+1,3)=SQRT(MAX(0D0,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)-
66891      &  P(N+1,5))))
66892         P(N+1,4)=P(IPA(1),4)
66893         V(N+1,2)=P(N+1,4)
66894       ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN
66895         PED1=0.5D0*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5)
66896         P(N+1,1)=0D0
66897         P(N+1,2)=0D0
66898         P(N+1,3)=SQRT(MAX(0D0,(PED1+P(N+1,5))*(PED1-P(N+1,5))))
66899         P(N+1,4)=PED1
66900         P(N+2,1)=0D0
66901         P(N+2,2)=0D0
66902         P(N+2,3)=-P(N+1,3)
66903         P(N+2,4)=P(IM,5)-PED1
66904         V(N+1,2)=P(N+1,4)
66905         V(N+2,2)=P(N+2,4)
66906       ELSEIF(NEP.GE.3) THEN
66907 C...Rescale all momenta for energy conservation.
66908         LOOP=0
66909         PES=0D0
66910         PQS=0D0
66911         DO 510 I=1,NEP
66912           DO 500 J=1,4
66913             P(N+I,J)=P(IPA(I),J)
66914   500     CONTINUE
66915           PES=PES+P(N+I,4)
66916           PQS=PQS+P(N+I,5)**2/P(N+I,4)
66917   510   CONTINUE
66918   520   LOOP=LOOP+1
66919         FAC=(PS(5)-PQS)/(PES-PQS)
66920         PES=0D0
66921         PQS=0D0
66922         DO 540 I=1,NEP
66923           DO 530 J=1,3
66924             P(N+I,J)=FAC*P(N+I,J)
66925   530     CONTINUE
66926           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)
66927           V(N+I,2)=P(N+I,4)
66928           PES=PES+P(N+I,4)
66929           PQS=PQS+P(N+I,5)**2/P(N+I,4)
66930   540   CONTINUE
66931         IF(LOOP.LT.10.AND.ABS(PES-PS(5)).GT.1D-12*PS(5)) GOTO 520
66932  
66933 C...Construct transverse momentum for ordinary branching in shower.
66934       ELSE
66935         ZM=V(IM,1)
66936         LOOPPT=0
66937   550   LOOPPT=LOOPPT+1
66938         PZM=SQRT(MAX(0D0,(PEM+P(IM,5))*(PEM-P(IM,5))))
66939         PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4D0*V(N+1,5)*V(N+2,5)
66940         IF(PZM.LE.0D0) THEN
66941           PTS=0D0
66942         ELSEIF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
66943      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
66944           PTS=PMLS*ZM*(1D0-ZM)/V(IM,5)
66945         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
66946           PTS=(PEM**2*(ZM*(1D0-ZM)*V(IM,5)-(1D0-ZM)*V(N+1,5)-
66947      &    ZM*V(N+2,5))-0.25D0*PMLS)/PZM**2
66948         ELSE
66949           PTS=PMLS*(ZM*(1D0-ZM)*PEM**2/V(IM,5)-0.25D0)/PZM**2
66950         ENDIF
66951         IF(PTS.LT.0D0.AND.LOOPPT.LT.10) THEN
66952           ZM=0.05D0+0.9D0*ZM
66953           GOTO 550
66954         ELSEIF(PTS.LT.0D0) THEN
66955           GOTO 280
66956         ENDIF
66957         PT=SQRT(MAX(0D0,PTS))
66958  
66959 C...Global statistics.
66960         MINT(353)=MINT(353)+1
66961         VINT(353)=VINT(353)+PT
66962         IF (MINT(353).EQ.1) VINT(358)=PT
66963  
66964 C...Find coefficient of azimuthal asymmetry due to gluon polarization.
66965         HAZIP=0D0
66966         IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21
66967      &  .AND.IAU.NE.0) THEN
66968           IF(K(IGM,3).NE.0) MAZIP=1
66969           ZAU=V(IGM,1)
66970           IF(IAU.EQ.IM+1) ZAU=1D0-V(IGM,1)
66971           IF(MAZIP.EQ.0) ZAU=0D0
66972           IF(K(IGM,2).NE.21) THEN
66973             HAZIP=2D0*ZAU/(1D0+ZAU**2)
66974           ELSE
66975             HAZIP=(ZAU/(1D0-ZAU*(1D0-ZAU)))**2
66976           ENDIF
66977           IF(K(N+1,2).NE.21) THEN
66978             HAZIP=HAZIP*(-2D0*ZM*(1D0-ZM))/(1D0-2D0*ZM*(1D0-ZM))
66979           ELSE
66980             HAZIP=HAZIP*(ZM*(1D0-ZM)/(1D0-ZM*(1D0-ZM)))**2
66981           ENDIF
66982         ENDIF
66983  
66984 C...Find coefficient of azimuthal asymmetry due to soft gluon
66985 C...interference.
66986         HAZIC=0D0
66987         IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR.
66988      &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN
66989           IF(K(IGM,3).NE.0) MAZIC=N+1
66990           IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2
66991           IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
66992      &    ZM.GT.0.5D0) MAZIC=N+2
66993           IF(K(IAU,2).EQ.22) MAZIC=0
66994           ZS=ZM
66995           IF(MAZIC.EQ.N+2) ZS=1D0-ZM
66996           ZGM=V(IGM,1)
66997           IF(IAU.EQ.IM-1) ZGM=1D0-V(IGM,1)
66998           IF(MAZIC.EQ.0) ZGM=1D0
66999           IF(MAZIC.NE.0) HAZIC=(P(IM,5)/P(IGM,5))*
67000      &    SQRT((1D0-ZS)*(1D0-ZGM)/(ZS*ZGM))
67001           HAZIC=MIN(0.95D0,HAZIC)
67002         ENDIF
67003       ENDIF
67004  
67005 C...Construct energies for ordinary branching in shower.
67006   560 IF(NEP.EQ.2.AND.IGM.GT.0) THEN
67007         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
67008      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
67009           P(N+1,4)=0.5D0*(PEM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
67010      &    PZM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
67011         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
67012           P(N+1,4)=PEM*V(IM,1)
67013         ELSE
67014           P(N+1,4)=PEM*(0.5D0*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+
67015      &    SQRT(PMLS)*ZM)/V(IM,5)
67016         ENDIF
67017  
67018 C...Already predetermined choice of phi angle or not
67019         PHI=PARU(2)*PYR(0)
67020         IF(MPSPD.EQ.1.AND.IGM.EQ.NS+1) THEN
67021           IPSPD=IP1+IM-NS-2
67022           IF(K(IPSPD,4).GT.0) THEN
67023             IPSGD1=K(IPSPD,4)
67024             IF(IM.EQ.NS+2) THEN
67025               PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
67026             ELSE
67027               PHI=PYANGL(-P(IPSGD1,1),P(IPSGD1,2))
67028             ENDIF
67029           ENDIF
67030         ELSEIF(MPSPD.EQ.1.AND.IGM.EQ.NS+2) THEN
67031           IPSPD=IP1+IM-NS-2
67032           IF(K(IPSPD,4).GT.0) THEN
67033             IPSGD1=K(IPSPD,4)
67034             PHIPSM=PYANGL(P(IPSPD,1),P(IPSPD,2))
67035             THEPSM=PYANGL(P(IPSPD,3),SQRT(P(IPSPD,1)**2+P(IPSPD,2)**2))
67036             CALL PYROBO(IPSGD1,IPSGD1,0D0,-PHIPSM,0D0,0D0,0D0)
67037             CALL PYROBO(IPSGD1,IPSGD1,-THEPSM,0D0,0D0,0D0,0D0)
67038             PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
67039             CALL PYROBO(IPSGD1,IPSGD1,THEPSM,PHIPSM,0D0,0D0,0D0)
67040           ENDIF
67041         ENDIF
67042  
67043 C...Construct momenta for ordinary branching in shower.
67044         P(N+1,1)=PT*COS(PHI)
67045         P(N+1,2)=PT*SIN(PHI)
67046         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
67047      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
67048           P(N+1,3)=0.5D0*(PZM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
67049      &    PEM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
67050         ELSEIF(PZM.GT.0D0) THEN
67051           P(N+1,3)=0.5D0*(V(N+2,5)-V(N+1,5)-V(IM,5)+
67052      &    2D0*PEM*P(N+1,4))/PZM
67053         ELSE
67054           P(N+1,3)=0D0
67055         ENDIF
67056         P(N+2,1)=-P(N+1,1)
67057         P(N+2,2)=-P(N+1,2)
67058         P(N+2,3)=PZM-P(N+1,3)
67059         P(N+2,4)=PEM-P(N+1,4)
67060         IF(MSTJ(43).LE.2) THEN
67061           V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5)
67062           V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5)
67063         ENDIF
67064       ENDIF
67065  
67066 C...Rotate and boost daughters.
67067       IF(IGM.GT.0) THEN
67068         IF(MSTJ(43).LE.2) THEN
67069           BEX=P(IGM,1)/P(IGM,4)
67070           BEY=P(IGM,2)/P(IGM,4)
67071           BEZ=P(IGM,3)/P(IGM,4)
67072           GA=P(IGM,4)/P(IGM,5)
67073           GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1D0+GA)-
67074      &    P(IM,4))
67075         ELSE
67076           BEX=0D0
67077           BEY=0D0
67078           BEZ=0D0
67079           GA=1D0
67080           GABEP=0D0
67081         ENDIF
67082         PTIMB=SQRT((P(IM,1)+GABEP*BEX)**2+(P(IM,2)+GABEP*BEY)**2)
67083         THE=PYANGL(P(IM,3)+GABEP*BEZ,PTIMB)
67084         IF(PTIMB.GT.1D-4) THEN
67085           PHI=PYANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY)
67086         ELSE
67087           PHI=0D0
67088         ENDIF
67089         DO 570 I=N+1,N+2
67090           DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+
67091      &    SIN(THE)*COS(PHI)*P(I,3)
67092           DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+
67093      &    SIN(THE)*SIN(PHI)*P(I,3)
67094           DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3)
67095           DP(4)=P(I,4)
67096           DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3)
67097           DGABP=GA*(GA*DBP/(1D0+GA)+DP(4))
67098           P(I,1)=DP(1)+DGABP*BEX
67099           P(I,2)=DP(2)+DGABP*BEY
67100           P(I,3)=DP(3)+DGABP*BEZ
67101           P(I,4)=GA*(DP(4)+DBP)
67102   570   CONTINUE
67103       ENDIF
67104  
67105 C...Weight with azimuthal distribution, if required.
67106       IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN
67107         DO 580 J=1,3
67108           DPT(1,J)=P(IM,J)
67109           DPT(2,J)=P(IAU,J)
67110           DPT(3,J)=P(N+1,J)
67111   580   CONTINUE
67112         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
67113         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
67114         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
67115         DO 590 J=1,3
67116           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
67117           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
67118   590   CONTINUE
67119         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
67120         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
67121         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
67122           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
67123      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
67124           IF(MAZIP.NE.0) THEN
67125             IF(1D0+HAZIP*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(HAZIP)))
67126      &      GOTO 560
67127           ENDIF
67128           IF(MAZIC.NE.0) THEN
67129             IF(MAZIC.EQ.N+2) CAD=-CAD
67130             IF((1D0-HAZIC)*(1D0-HAZIC*CAD)/(1D0+HAZIC**2-2D0*HAZIC*CAD)
67131      &      .LT.PYR(0)) GOTO 560
67132           ENDIF
67133         ENDIF
67134       ENDIF
67135  
67136 C...Azimuthal anisotropy due to interference with initial state partons.
67137       IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR.
67138      &K(N+2,2).EQ.21)) THEN
67139         III=IM-NS-1
67140         IF(ISII(III).GE.1) THEN
67141           IAZIID=N+1
67142           IF(K(N+1,2).NE.21) IAZIID=N+2
67143           IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
67144      &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2
67145           THEIID=PYANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2))
67146           IF(III.EQ.2) THEIID=PARU(1)-THEIID
67147           PHIIID=PYANGL(P(IAZIID,1),P(IAZIID,2))
67148           HAZII=MIN(0.95D0,THEIID/THEIIS(III,ISII(III)))
67149           CAD=COS(PHIIID-PHIIIS(III,ISII(III)))
67150           PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III)))
67151           IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL
67152           IF((1D0-HAZII)*(1D0-HAZII*CAD)/(1D0+HAZII**2-2D0*HAZII*CAD)
67153      &    .LT.PYR(0)) GOTO 560
67154         ENDIF
67155       ENDIF
67156  
67157 C...Continue loop over partons that may branch, until none left.
67158       IF(IGM.GE.0) K(IM,1)=14
67159       N=N+NEP
67160       NEP=2
67161       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
67162         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
67163         IF(MSTU(21).GE.1) N=NS
67164         IF(MSTU(21).GE.1) RETURN
67165       ENDIF
67166       GOTO 290
67167  
67168 C...Set information on imagined shower initiator.
67169   600 IF(NPA.GE.2) THEN
67170         K(NS+1,1)=11
67171         K(NS+1,2)=94
67172         K(NS+1,3)=IP1
67173         IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2
67174         K(NS+1,4)=NS+2
67175         K(NS+1,5)=NS+1+NPA
67176         IIM=1
67177       ELSE
67178         IIM=0
67179       ENDIF
67180  
67181 C...Reconstruct string drawing information.
67182       DO 610 I=NS+1+IIM,N
67183         KQ=KCHG(PYCOMP(K(I,2)),2)
67184         IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN
67185           K(I,1)=1
67186         ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND.
67187      &    IABS(K(I,2)).LE.18) THEN
67188           K(I,1)=1
67189         ELSEIF(K(I,1).LE.10) THEN
67190           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))
67191           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))
67192         ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN
67193           ID1=MOD(K(I,4),MSTU(5))
67194           IF(KQ.EQ.1.AND.K(I,2).GT.0) ID1=MOD(K(I,4),MSTU(5))+1
67195           IF(KQ.EQ.2.AND.(K(ID1,2).EQ.21.OR.K(ID1+1,2).EQ.21).AND.
67196      &    PYR(0).GT.0.5D0) ID1=MOD(K(I,4),MSTU(5))+1
67197           ID2=2*MOD(K(I,4),MSTU(5))+1-ID1
67198           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
67199           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2
67200           K(ID1,4)=K(ID1,4)+MSTU(5)*I
67201           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
67202           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
67203           K(ID2,5)=K(ID2,5)+MSTU(5)*I
67204         ELSE
67205           ID1=MOD(K(I,4),MSTU(5))
67206           ID2=ID1+1
67207           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
67208           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1
67209           IF(KQ.EQ.1.OR.K(ID1,1).GE.11) THEN
67210             K(ID1,4)=K(ID1,4)+MSTU(5)*I
67211             K(ID1,5)=K(ID1,5)+MSTU(5)*I
67212           ELSE
67213             K(ID1,4)=0
67214             K(ID1,5)=0
67215           ENDIF
67216           K(ID2,4)=0
67217           K(ID2,5)=0
67218         ENDIF
67219   610 CONTINUE
67220  
67221 C...Transformation from CM frame.
67222       IF(NPA.EQ.1) THEN
67223         THE=PYANGL(P(IPA(1),3),SQRT(P(IPA(1),1)**2+P(IPA(1),2)**2))
67224         PHI=PYANGL(P(IPA(1),1),P(IPA(1),2))
67225         MSTU(33)=1
67226         CALL PYROBO(NS+1,N,THE,PHI,0D0,0D0,0D0)
67227       ELSEIF(NPA.EQ.2) THEN
67228         BEX=PS(1)/PS(4)
67229         BEY=PS(2)/PS(4)
67230         BEZ=PS(3)/PS(4)
67231         GA=PS(4)/PS(5)
67232         GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3))
67233      &  /(1D0+GA)-P(IPA(1),4))
67234         THE=PYANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1)
67235      &  +GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2))
67236         PHI=PYANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY)
67237         MSTU(33)=1
67238         CALL PYROBO(NS+1,N,THE,PHI,BEX,BEY,BEZ)
67239       ELSE
67240         CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),
67241      &  PS(3)/PS(4))
67242         MSTU(33)=1
67243         CALL PYROBO(NS+1,N,0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),PS(3)/PS(4))
67244       ENDIF
67245  
67246 C...Decay vertex of shower.
67247       DO 630 I=NS+1,N
67248         DO 620 J=1,5
67249           V(I,J)=V(IP1,J)
67250   620   CONTINUE
67251   630 CONTINUE
67252  
67253 C...Delete trivial shower, else connect initiators.
67254       IF(N.LE.NS+NPA+IIM) THEN
67255         N=NS
67256       ELSE
67257         DO 640 IP=1,NPA
67258           K(IPA(IP),1)=14
67259           K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP
67260           K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP
67261           K(NS+IIM+IP,3)=IPA(IP)
67262           IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1
67263           IF(K(NS+IIM+IP,1).NE.1) THEN
67264             K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4)
67265             K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5)
67266           ENDIF
67267   640   CONTINUE
67268       ENDIF
67269  
67270       RETURN
67271       END
67272  
67273 C*********************************************************************
67274  
67275 C...PYPTFS
67276 C...Generates pT-ordered timelike final-state parton showers.
67277  
67278 C...MODE defines how to find radiators and recoilers.
67279 C... = 0 : based on colour flow between undecayed partons.
67280 C... = 1 : for IPART <= NPARTD only consider primary partons,
67281 C...       whether decayed or not; else as above.
67282 C... = 2 : based on common history, whether decayed or not.
67283  
67284       SUBROUTINE PYPTFS(MODE,PTMAX,PTMIN,PTGEN)
67285  
67286 C...Double precision and integer declarations.
67287       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67288       IMPLICIT INTEGER(I-N)
67289       INTEGER PYK,PYCHGE,PYCOMP
67290 C...Parameter statement to help give large particle numbers.
67291       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
67292      &KEXCIT=4000000,KDIMEN=5000000)
67293 C...Parameter statement for maximum size of showers.
67294       PARAMETER (MAXNUR=1000)
67295 C...Commonblocks.
67296       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
67297       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
67298       COMMON/PYCTAG/NCT,MCT(4000,2)
67299       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67300       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67301       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
67302       COMMON/PYINT1/MINT(400),VINT(400)
67303       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYPARS/,
67304      &/PYINT1/
67305 C...Local arrays.
67306       DIMENSION IPOS(2*MAXNUR),IREC(2*MAXNUR),IFLG(2*MAXNUR),
67307      &ISCOL(2*MAXNUR),ISCHG(2*MAXNUR),PTSCA(2*MAXNUR),IMESAV(2*MAXNUR),
67308      &PT2SAV(2*MAXNUR),ZSAV(2*MAXNUR),SHTSAV(2*MAXNUR),
67309      &MESYS(MAXNUR,0:2),PSUM(5),DPT(5,4)
67310 C...Statement functions.
67311       SHAT(I,J)=(P(I,4)+P(J,4))**2-(P(I,1)+P(J,1))**2-
67312      &(P(I,2)+P(J,2))**2-(P(I,3)+P(J,3))**2
67313  
67314 C...Initial values. Check that valid system.
67315       PTGEN=0D0
67316       IF(MSTJ(41).NE.1.AND.MSTJ(41).NE.2.AND.MSTJ(41).NE.11.AND.
67317      &MSTJ(41).NE.12) RETURN
67318       IF(NPART.LE.0) THEN
67319         CALL PYERRM(2,'(PYPTFS:) showering system too small')
67320         RETURN
67321       ENDIF
67322       PT2CMX=PTMAX**2
67323  
67324 C...Mass thresholds and Lambda for QCD evolution.
67325       PMB=PMAS(5,1)
67326       PMC=PMAS(4,1)
67327       ALAM5=PARJ(81)
67328       ALAM4=ALAM5*(PMB/ALAM5)**(2D0/25D0)
67329       ALAM3=ALAM4*(PMC/ALAM4)**(2D0/27D0)
67330       PMBS=PMB**2
67331       PMCS=PMC**2
67332       ALAM5S=ALAM5**2
67333       ALAM4S=ALAM4**2
67334       ALAM3S=ALAM3**2
67335  
67336 C...Cutoff scale for QCD evolution. Starting pT2.
67337       NFLAV=MAX(0,MIN(5,MSTJ(45)))
67338       PT0C=0.5D0*PARJ(82)
67339       PT2CMN=MAX(PTMIN,PT0C,1.1D0*ALAM3)**2
67340  
67341 C...Parameters for QED evolution.
67342       AEM2PI=PARU(101)/PARU(2)
67343       PT0EQ=0.5D0*PARJ(83)
67344       PT0EL=0.5D0*PARJ(90)
67345
67346 C...Reset. Remove irrelevant colour tags.
67347       NEVOL=0
67348       DO 100 J=1,4
67349         PSUM(J)=0D0
67350   100 CONTINUE
67351       DO 110 I=MINT(84)+1,N
67352         IF(K(I,2).GT.0.AND.K(I,2).LT.6) THEN
67353           K(I,5)=0
67354           MCT(I,2)=0
67355         ENDIF
67356         IF(K(I,2).LT.0.AND.K(I,2).GT.-6) THEN
67357           K(I,4)=0
67358           MCT(I,1)=0
67359         ENDIF
67360   110 CONTINUE
67361       NPARTS=NPART
67362  
67363 C...Begin loop to set up showering partons. Sum four-momenta.
67364       DO 210 IP=1,NPART
67365         I=IPART(IP)
67366         IF(MODE.NE.1.OR.I.GT.NPARTD) THEN
67367           IF(K(I,1).GT.10) GOTO 210
67368         ELSEIF(K(I,3).GT.MINT(84)) THEN
67369           IF(K(I,3).GT.MINT(84)+2) GOTO 210
67370         ELSE
67371           IF(K(K(I,3),3).GT.MINT(83)+6) GOTO 210
67372         ENDIF
67373         DO 120 J=1,4
67374           PSUM(J)=PSUM(J)+P(I,J)
67375   120   CONTINUE
67376  
67377 C...Find colour and charge, but skip diquarks.
67378         IF(IABS(K(I,2)).GT.1000.AND.IABS(K(I,2)).LT.10000) GOTO 210
67379         KCOL=ISIGN(KCHG(PYCOMP(K(I,2)),2),K(I,2))
67380         KCHA=ISIGN(KCHG(PYCOMP(K(I,2)),1),K(I,2))
67381  
67382 C...Either colour or anticolour charge radiates; for gluon both.
67383         DO 160 JSGCOL=1,-1,-2
67384           IF(KCOL.EQ.JSGCOL.OR.KCOL.EQ.2) THEN
67385             JCOL=4+(1-JSGCOL)/2
67386             JCOLR=9-JCOL
67387  
67388 C...Basic info about radiating parton.
67389             NEVOL=NEVOL+1
67390             IPOS(NEVOL)=I
67391             IFLG(NEVOL)=0
67392             ISCOL(NEVOL)=JSGCOL
67393             ISCHG(NEVOL)=0
67394             PTSCA(NEVOL)=PTPART(IP)
67395  
67396 C...Begin search for colour recoiler when MODE = 0 or 1.
67397             IF(MODE.LE.1) THEN
67398 C...Find sister with matching anticolour to the radiating parton.
67399               IROLD=I
67400               IRNEW=K(IROLD,JCOL)/MSTU(5)
67401               MOVE=1
67402  
67403 C...The following will add MCT colour tracing for unprepped events
67404 C...If not done, trace Les Houches colour tags for this dipole
67405 C              IF (MCT(I,JCOL-3).EQ.0) THEN 
67406 C                CALL PYCTTR(I,JCOL,INEW)
67407 C...Clean up mother/daughter 'read' tags set by PYCTTR
67408 C                DO 125 IR=1,N
67409 C                  K(IR,4)=MOD(K(IR,4),MSTU(5)**2)
67410 C                  K(IR,5)=MOD(K(IR,5),MSTU(5)**2)
67411 C 125            CONTINUE
67412 C              ENDIF
67413
67414 C...Skip radiation off loose colour ends.
67415   130         IF(IRNEW.EQ.0) THEN
67416                 NEVOL=NEVOL-1
67417                 GOTO 160
67418  
67419 C...Optionally skip radiation on dipole to beam remnant.
67420               ELSEIF(MSTP(72).LE.1.AND.IRNEW.GT.MINT(53)) THEN
67421                 NEVOL=NEVOL-1
67422                 GOTO 160
67423  
67424 C...For now always skip radiation on dipole to junction.
67425               ELSEIF(K(IRNEW,2).EQ.88) THEN
67426                 NEVOL=NEVOL-1
67427                 GOTO 160
67428  
67429 C...For MODE=1: if reached primary then done.
67430               ELSEIF(MODE.EQ.1.AND.IRNEW.GT.MINT(84)+2.AND.
67431      &        IRNEW.LE.NPARTD) THEN
67432  
67433 C...If sister stable and points back then done.
67434               ELSEIF(MOVE.EQ.1.AND.K(IRNEW,JCOLR)/MSTU(5).EQ.IROLD)
67435      &        THEN
67436                 IF(K(IRNEW,1).LT.10) THEN
67437  
67438 C...If sister unstable then go to her daughter.
67439                 ELSE
67440                   IROLD=IRNEW
67441                   IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
67442                   MOVE=2
67443                   GOTO 130
67444                ENDIF
67445  
67446 C...If found mother then look for aunt.
67447               ELSEIF(MOVE.EQ.1.AND.MOD(K(IRNEW,JCOL),MSTU(5)).EQ.
67448      &        IROLD) THEN
67449                 IROLD=IRNEW
67450                 IRNEW=K(IROLD,JCOL)/MSTU(5)
67451                 GOTO 130
67452  
67453 C...If daughter stable then done.
67454               ELSEIF(MOVE.EQ.2.AND.K(IRNEW,JCOLR)/MSTU(5).EQ.IROLD)
67455      &        THEN
67456                 IF(K(IRNEW,1).LT.10) THEN
67457  
67458 C...If daughter unstable then go to granddaughter.
67459                 ELSE
67460                   IROLD=IRNEW
67461                   IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
67462                   MOVE=2
67463                   GOTO 130
67464                 ENDIF
67465  
67466 C...If daughter points to another daughter then done or move up.
67467               ELSEIF(MOVE.EQ.2.AND.MOD(K(IRNEW,JCOL),MSTU(5)).EQ.
67468      &        IROLD) THEN
67469                 IF(K(IRNEW,1).LT.10) THEN
67470                 ELSE
67471                   IROLD=IRNEW
67472                   IRNEW=K(IRNEW,JCOL)/MSTU(5)
67473                   MOVE=1
67474                   GOTO 130
67475                 ENDIF
67476               ENDIF
67477  
67478 C...Begin search for colour recoiler when MODE = 2.
67479             ELSE
67480               IROLD=I
67481               IRNEW=K(IROLD,JCOL)/MSTU(5)
67482   140         IF(K(IRNEW,JCOLR)/MSTU(5).NE.IROLD) THEN
67483 C...Step up to mother if radiating parton already branched.
67484                 IF(K(IRNEW,2).EQ.K(IROLD,2)) THEN
67485                   IROLD=IRNEW
67486                   IRNEW=K(IROLD,JCOL)/MSTU(5)
67487                   GOTO 140
67488 C...Pick sister by history if no anticolour available.
67489                 ELSE
67490                   IF(IROLD.GT.1.AND.K(IROLD-1,3).EQ.K(IROLD,3)) THEN
67491                     IRNEW=IROLD-1
67492                   ELSEIF(IROLD.LT.N.AND.K(IROLD+1,3).EQ.K(IROLD,3))
67493      &            THEN
67494                     IRNEW=IROLD+1
67495 C...Last resort: pick at random among other primaries.
67496                   ELSE
67497                     ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
67498                     IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
67499                   ENDIF
67500                 ENDIF
67501               ENDIF
67502 C...Trace down if sister branched.
67503   150         IF(K(IRNEW,1).GT.10) THEN
67504                 IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
67505                 GOTO 150
67506               ENDIF
67507             ENDIF
67508  
67509 C...Now found other end of colour dipole.
67510             IREC(NEVOL)=IRNEW
67511           ENDIF
67512   160   CONTINUE
67513  
67514 C...Also electrical charge may radiate; so far only quarks and leptons.
67515         IF((MSTJ(41).EQ.2.OR.MSTJ(41).EQ.12).AND.KCHA.NE.0.AND.
67516      &  IABS(K(I,2)).LE.18) THEN
67517  
67518 C...Basic info about radiating parton.
67519           NEVOL=NEVOL+1
67520           IPOS(NEVOL)=I
67521           IFLG(NEVOL)=0
67522           ISCOL(NEVOL)=0
67523           ISCHG(NEVOL)=KCHA
67524           PTSCA(NEVOL)=PTPART(IP)
67525  
67526 C...Pick nearest (= smallest invariant mass) charged particle
67527 C...as recoiler when MODE = 0 or 1 (but for latter among primaries).
67528           IF(MODE.LE.1) THEN
67529             IRNEW=0
67530             PM2MIN=VINT(2)
67531             DO 170 IP2=1,NPART+N-MINT(53)
67532               IF(IP2.EQ.IP) GOTO 170
67533               IF(IP2.LE.NPART) THEN
67534                 I2=IPART(IP2)
67535                 IF(MODE.NE.1.OR.I2.GT.NPARTD) THEN
67536                   IF(K(I2,1).GT.10) GOTO 170
67537                 ELSEIF(K(I2,3).GT.MINT(84)) THEN
67538                   IF(K(I2,3).GT.MINT(84)+2) GOTO 170
67539                 ELSE
67540                   IF(K(K(I2,3),3).GT.MINT(83)+6) GOTO 170
67541                 ENDIF
67542               ELSE
67543                 I2=MINT(53)+IP2-NPART
67544               ENDIF
67545               IF(KCHG(PYCOMP(K(I2,2)),1).EQ.0) GOTO 170
67546               PM2INV=(P(I,4)+P(I2,4))**2-(P(I,1)+P(I2,1))**2-
67547      &        (P(I,2)+P(I2,2))**2-(P(I,3)+P(I2,3))**2
67548               IF(PM2INV.LT.PM2MIN) THEN
67549                 IRNEW=I2
67550                 PM2MIN=PM2INV
67551               ENDIF
67552   170       CONTINUE
67553             IF(IRNEW.EQ.0) THEN
67554               NEVOL=NEVOL-1
67555               GOTO 210
67556             ENDIF
67557  
67558 C...Begin search for charge recoiler when MODE = 2.
67559           ELSE
67560             IROLD=I
67561 C...Pick sister by history; step up if parton already branched.
67562   180       IF(K(IROLD,3).GT.0.AND.K(K(IROLD,3),2).EQ.K(IROLD,2)) THEN
67563               IROLD=K(IROLD,3)
67564               GOTO 180
67565             ENDIF
67566             IF(IROLD.GT.1.AND.K(IROLD-1,3).EQ.K(IROLD,3)) THEN
67567               IRNEW=IROLD-1
67568             ELSEIF(IROLD.LT.N.AND.K(IROLD+1,3).EQ.K(IROLD,3)) THEN
67569               IRNEW=IROLD+1
67570 C...Last resort: pick at random among other primaries.
67571             ELSE
67572               ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
67573               IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
67574             ENDIF
67575 C...Trace down if sister branched.
67576   190       IF(K(IRNEW,1).GT.10) THEN
67577               DO 200 IR=IRNEW+1,N
67578                 IF(K(IR,3).EQ.IRNEW.AND.K(IR,2).EQ.K(IRNEW,2)) THEN
67579                   IRNEW=IR
67580                   GOTO 190
67581                 ENDIF
67582   200         CONTINUE
67583             ENDIF
67584           ENDIF
67585           IREC(NEVOL)=IRNEW
67586         ENDIF
67587  
67588 C...End loop to set up showering partons. System invariant mass.
67589   210 CONTINUE
67590       IF(NEVOL.LE.0) RETURN
67591       PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
67592  
67593 C...Check if 3-jet matrix elements to be used.
67594       M3JC=0
67595       ALPHA=0.5D0
67596       NMESYS=0
67597       IF(MSTJ(47).GE.1) THEN
67598  
67599 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
67600         KFSRCE=0
67601         IPART1=K(IPART(1),3)
67602         IPART2=K(IPART(2),3)
67603   220   IF(IPART1.EQ.IPART2.AND.IPART1.GT.0) THEN
67604           KFSRCE=IABS(K(IPART1,2))
67605         ELSEIF(IPART1.GT.IPART2.AND.IPART2.GT.0) THEN
67606           IPART1=K(IPART1,3)
67607           GOTO 220
67608         ELSEIF(IPART2.GT.IPART1.AND.IPART1.GT.0) THEN
67609           IPART2=K(IPART2,3)
67610           GOTO 220
67611         ENDIF
67612         ITYPES=0
67613         IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
67614         IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
67615         IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
67616         IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
67617         IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
67618         IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
67619         IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
67620         IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
67621  
67622 C...Identify two primary showerers.
67623         KFLA1=IABS(K(IPART(1),2))
67624         ITYPE1=0
67625         IF(KFLA1.GE.1.AND.KFLA1.LE.8) ITYPE1=1
67626         IF(KFLA1.GE.KSUSY1+1.AND.KFLA1.LE.KSUSY1+8) ITYPE1=2
67627         IF(KFLA1.GE.KSUSY2+1.AND.KFLA1.LE.KSUSY2+8) ITYPE1=2
67628         IF(KFLA1.GE.21.AND.KFLA1.LE.24) ITYPE1=3
67629         IF(KFLA1.GE.32.AND.KFLA1.LE.34) ITYPE1=3
67630         IF(KFLA1.EQ.25.OR.(KFLA1.GE.35.AND.KFLA1.LE.37)) ITYPE1=4
67631         IF(KFLA1.GE.KSUSY1+22.AND.KFLA1.LE.KSUSY1+37) ITYPE1=5
67632         IF(KFLA1.EQ.KSUSY1+21) ITYPE1=6
67633         KFLA2=IABS(K(IPART(2),2))
67634         ITYPE2=0
67635         IF(KFLA2.GE.1.AND.KFLA2.LE.8) ITYPE2=1
67636         IF(KFLA2.GE.KSUSY1+1.AND.KFLA2.LE.KSUSY1+8) ITYPE2=2
67637         IF(KFLA2.GE.KSUSY2+1.AND.KFLA2.LE.KSUSY2+8) ITYPE2=2
67638         IF(KFLA2.GE.21.AND.KFLA2.LE.24) ITYPE2=3
67639         IF(KFLA2.GE.32.AND.KFLA2.LE.34) ITYPE2=3
67640         IF(KFLA2.EQ.25.OR.(KFLA2.GE.35.AND.KFLA2.LE.37)) ITYPE2=4
67641         IF(KFLA2.GE.KSUSY1+22.AND.KFLA2.LE.KSUSY1+37) ITYPE2=5
67642         IF(KFLA2.EQ.KSUSY1+21) ITYPE2=6
67643  
67644 C...Order of showerers. Presence of gluino.
67645         ITYPMN=MIN(ITYPE1,ITYPE2)
67646         ITYPMX=MAX(ITYPE1,ITYPE2)
67647         IORD=1
67648         IF(ITYPE1.GT.ITYPE2) IORD=2
67649         IGLUI=0
67650         IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
67651  
67652 C...Require exactly two primary showerers for ME corrections.
67653         NPRIM=0
67654         IF(IPART1.GT.0) THEN
67655           DO 230 I=1,N
67656             IF(K(I,3).EQ.IPART1.AND.K(I,2).NE.K(IPART1,2)) NPRIM=NPRIM+1
67657   230     CONTINUE
67658         ENDIF
67659         IF(NPRIM.NE.2) THEN
67660  
67661 C...Predetermined and default matrix element kinds.
67662         ELSEIF(MSTJ(38).NE.0) THEN
67663           M3JC=MSTJ(38)
67664           ALPHA=PARJ(80)
67665           MSTJ(38)=0
67666         ELSEIF(MSTJ(47).GE.6) THEN
67667           M3JC=MSTJ(47)
67668         ELSE
67669           ICLASS=1
67670           ICOMBI=4
67671  
67672 C...Vector/axial vector -> q + qbar; q -> q + V.
67673           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
67674      &    ITYPES.EQ.3)) THEN
67675             ICLASS=2
67676             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
67677               ICOMBI=1
67678             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
67679      &      K(IPART(1),2)+K(IPART(2),2).EQ.0)) THEN
67680 C...gamma*/Z0: assume e+e- initial state if unknown.
67681               EI=-1D0
67682               IF(KFSRCE.EQ.23) THEN
67683                 IANNFL=IPART1
67684                 IF(K(IANNFL,2).EQ.23) IANNFL=K(IANNFL,3)
67685                 IF(IANNFL.GT.0) THEN
67686                   IF(K(IANNFL,2).EQ.23) IANNFL=K(IANNFL,3)
67687                 ENDIF
67688                 IF(IANNFL.NE.0) THEN
67689                   KANNFL=IABS(K(IANNFL,2))
67690                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
67691                 ENDIF
67692               ENDIF
67693               AI=SIGN(1D0,EI+0.1D0)
67694               VI=AI-4D0*EI*PARU(102)
67695               EF=KCHG(KFLA1,1)/3D0
67696               AF=SIGN(1D0,EF+0.1D0)
67697               VF=AF-4D0*EF*PARU(102)
67698               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
67699               SH=PSUM(5)**2
67700               SQMZ=PMAS(23,1)**2
67701               SQWZ=PSUM(5)*PMAS(23,2)
67702               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
67703               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
67704      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
67705               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
67706               ICOMBI=3
67707               ALPHA=VECT/(VECT+AXIV)
67708             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
67709               ICOMBI=4
67710             ENDIF
67711 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
67712           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
67713             ICLASS=2
67714           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
67715      &    ITYPES.EQ.1)) THEN
67716             ICLASS=3
67717  
67718 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
67719           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
67720             ICLASS=4
67721             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
67722               ICOMBI=1
67723             ELSEIF(KFSRCE.EQ.36) THEN
67724               ICOMBI=2
67725             ENDIF
67726           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
67727      &    ITYPES.EQ.1)) THEN
67728             ICLASS=5
67729  
67730 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
67731           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
67732      &    ITYPES.EQ.3)) THEN
67733             ICLASS=6
67734           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
67735      &    ITYPES.EQ.2)) THEN
67736             ICLASS=7
67737           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
67738             ICLASS=8
67739           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
67740      &    ITYPES.EQ.2)) THEN
67741             ICLASS=9
67742  
67743 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
67744           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
67745      &    ITYPES.EQ.5)) THEN
67746             ICLASS=10
67747           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
67748      &    ITYPES.EQ.2)) THEN
67749             ICLASS=11
67750           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
67751      &    ITYPES.EQ.1)) THEN
67752             ICLASS=12
67753  
67754 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
67755           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
67756             ICLASS=13
67757           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
67758      &    ITYPES.EQ.2)) THEN
67759             ICLASS=14
67760           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
67761      &    ITYPES.EQ.1)) THEN
67762             ICLASS=15
67763  
67764 C...g -> ~g + ~g (eikonal approximation).
67765           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
67766             ICLASS=16
67767           ENDIF
67768           M3JC=5*ICLASS+ICOMBI
67769         ENDIF
67770  
67771 C...Store pair that together define matrix element treatment.
67772         IF(M3JC.NE.0) THEN
67773           NMESYS=1
67774           MESYS(NMESYS,0)=M3JC
67775           MESYS(NMESYS,1)=IPART(1)
67776           MESYS(NMESYS,2)=IPART(2)
67777         ENDIF
67778  
67779 C...Store qqbar or l+l- pairs for QED radiation.
67780         IF(KFLA1.LE.18.AND.KFLA2.LE.18) THEN
67781           NMESYS=NMESYS+1
67782           MESYS(NMESYS,0)=101
67783           IF(K(IPART(1),2)+K(IPART(2),2).EQ.0) MESYS(NMESYS,0)=102
67784           MESYS(NMESYS,1)=IPART(1)
67785           MESYS(NMESYS,2)=IPART(2)
67786         ENDIF
67787  
67788 C...Store other qqbar/l+l- pairs from g/gamma branchings.
67789         DO 270 I1=1,N
67790           IF(K(I1,1).GT.10.OR.IABS(K(I1,2)).GT.18) GOTO 270
67791           I1M=K(I1,3)
67792   240     IF(I1M.GT.0.AND.K(I1M,2).EQ.K(I1,2)) THEN
67793             I1M=K(I1M,3)
67794             GOTO 240
67795           ENDIF
67796 C...Move up this check to avoid out-of-bounds.
67797           IF(I1M.EQ.0) GOTO 270
67798           IF(K(I1M,2).NE.21.AND.K(I1M,2).NE.22) GOTO 270
67799           DO 260 I2=I1+1,N
67800             IF(K(I2,1).GT.10.OR.K(I2,2)+K(I1,2).NE.0) GOTO 260
67801             I2M=K(I2,3)
67802   250       IF(I2M.GT.0.AND.K(I2M,2).EQ.K(I2,2)) THEN
67803               I2M=K(I2M,3)
67804               GOTO 250
67805             ENDIF
67806             IF(I1M.EQ.I2M.AND.I1M.GT.0) THEN
67807               NMESYS=NMESYS+1
67808               MESYS(NMESYS,0)=66
67809               MESYS(NMESYS,1)=I1
67810               MESYS(NMESYS,2)=I2
67811               NMESYS=NMESYS+1
67812               MESYS(NMESYS,0)=102
67813               MESYS(NMESYS,1)=I1
67814               MESYS(NMESYS,2)=I2
67815             ENDIF
67816   260     CONTINUE
67817   270   CONTINUE
67818       ENDIF
67819  
67820 C..Loopback point for counting number of emissions.
67821       NGEN=0
67822   280 NGEN=NGEN+1
67823  
67824 C...Begin loop to evolve all existing partons, if required.
67825   290 IMX=0
67826       PT2MX=0D0
67827       DO 360 IEVOL=1,NEVOL
67828         IF(IFLG(IEVOL).EQ.0) THEN
67829  
67830 C...Basic info on radiator and recoil.
67831           I=IPOS(IEVOL)
67832           IR=IREC(IEVOL)
67833           SHT=SHAT(I,IR)
67834           PM2I=P(I,5)**2
67835           PM2R=P(IR,5)**2
67836  
67837 C...Invariant mass of "dipole".Starting value for pT evolution.
67838           SHTCOR=(SQRT(SHT)-P(IR,5))**2-PM2I
67839           PT2=MIN(PT2CMX,0.25D0*SHTCOR,PTSCA(IEVOL)**2)
67840  
67841 C...Case of evolution by QCD branching.
67842           IF(ISCOL(IEVOL).NE.0) THEN
67843  
67844 C...Parton-by-parton maximum scale from initial conditions.
67845           IF(MSTP(72).EQ.0) THEN
67846             DO 300 IPRT=1,NPARTS
67847               IF(IR.EQ.IPART(IPRT)) PT2=MIN(PT2,PTPART(IPRT)**2)
67848   300       CONTINUE
67849           ENDIF
67850  
67851 C...If kinematically impossible then do not evolve.
67852             IF(PT2.LT.PT2CMN) THEN
67853               IFLG(IEVOL)=-1
67854               GOTO 360
67855             ENDIF
67856  
67857 C...Check if part of system for which ME corrections should be applied.
67858             IMESYS=0
67859             DO 310 IME=1,NMESYS
67860               IF((I.EQ.MESYS(IME,1).OR.I.EQ.MESYS(IME,2)).AND.
67861      &        MESYS(IME,0).LT.100) IMESYS=IME
67862   310       CONTINUE
67863  
67864 C...Special flag for colour octet states.
67865             MOCT=0
67866             IF(K(I,2).EQ.21) MOCT=1
67867             IF(K(I,2).EQ.KSUSY1+21) MOCT=2
67868  
67869 C...Upper estimate for matrix element weighting and colour factor.
67870 C...Note that g->gg and g->qqbar is split on two sides = "dipoles".
67871             WTPSGL=2D0
67872             COLFAC=4D0/3D0
67873             IF(MOCT.GE.1) COLFAC=3D0/2D0
67874             IF(IGLUI.EQ.1.AND.IMESYS.EQ.1.AND.MOCT.EQ.0) COLFAC=3D0
67875             WTPSQQ=0.5D0*0.5D0*NFLAV
67876  
67877 C...Determine overestimated z range: switch at c and b masses.
67878   320       IZRG=1
67879             PT2MNE=PT2CMN
67880             B0=27D0/6D0
67881             ALAMS=ALAM3S
67882             IF(PT2.GT.1.01D0*PMCS) THEN
67883               IZRG=2
67884               PT2MNE=PMCS
67885               B0=25D0/6D0
67886               ALAMS=ALAM4S
67887             ENDIF
67888             IF(PT2.GT.1.01D0*PMBS) THEN
67889               IZRG=3
67890               PT2MNE=PMBS
67891               B0=23D0/6D0
67892               ALAMS=ALAM5S
67893             ENDIF
67894             ZMNCUT=0.5D0-SQRT(MAX(0D0,0.25D0-PT2MNE/SHTCOR))
67895             IF(ZMNCUT.LT.1D-8) ZMNCUT=PT2MNE/SHTCOR
67896  
67897 C...Find evolution coefficients for q->qg/g->gg and g->qqbar.
67898             EVEMGL=WTPSGL*COLFAC*LOG(1D0/ZMNCUT-1D0)/B0
67899             EVCOEF=EVEMGL
67900             IF(MOCT.EQ.1) THEN
67901               EVEMQQ=WTPSQQ*(1D0-2D0*ZMNCUT)/B0
67902               EVCOEF=EVCOEF+EVEMQQ
67903             ENDIF
67904  
67905 C...Pick pT2 (in overestimated z range).
67906   330       PT2=ALAMS*(PT2/ALAMS)**(PYR(0)**(1D0/EVCOEF))
67907  
67908 C...Loopback if crossed c/b mass thresholds.
67909             IF(IZRG.EQ.3.AND.PT2.LT.PMBS) THEN
67910               PT2=PMBS
67911               GOTO 320
67912             ENDIF
67913             IF(IZRG.EQ.2.AND.PT2.LT.PMCS) THEN
67914               PT2=PMCS
67915               GOTO 320
67916             ENDIF
67917  
67918 C...Finish if below lower cutoff.
67919             IF(PT2.LT.PT2CMN) THEN
67920               IFLG(IEVOL)=-1
67921               GOTO 360
67922             ENDIF
67923  
67924 C...Pick kind of branching: q->qg/g->gg/X->Xg or g->qqbar.
67925             IFLAG=1
67926             IF(MOCT.EQ.1.AND.EVEMGL.LT.PYR(0)*EVCOEF) IFLAG=2
67927  
67928 C...Pick z: dz/(1-z) or dz.
67929             IF(IFLAG.EQ.1) THEN
67930               Z=1D0-ZMNCUT*(1D0/ZMNCUT-1D0)**PYR(0)
67931             ELSE
67932               Z=ZMNCUT+PYR(0)*(1D0-2D0*ZMNCUT)
67933             ENDIF
67934  
67935 C...Loopback if outside allowed range for given pT2.
67936             ZMNNOW=0.5D0-SQRT(MAX(0D0,0.25D0-PT2/SHTCOR))
67937             IF(ZMNNOW.LT.1D-8) ZMNNOW=PT2/SHTCOR
67938             IF(Z.LE.ZMNNOW.OR.Z.GE.1D0-ZMNNOW) GOTO 330
67939             PM2=PM2I+PT2/(Z*(1D0-Z))
67940             IF(Z*(1D0-Z).LE.PM2*SHT/(SHT+PM2-PM2R)**2) GOTO 330
67941  
67942 C...No weighting for primary partons; to be done later on.
67943             IF(IMESYS.GT.0) THEN
67944  
67945 C...Weighting of q->qg/X->Xg branching.
67946             ELSEIF(IFLAG.EQ.1.AND.MOCT.NE.1) THEN
67947               IF(1D0+Z**2.LT.WTPSGL*PYR(0)) GOTO 330
67948  
67949 C...Weighting of g->gg branching.
67950             ELSEIF(IFLAG.EQ.1) THEN
67951               IF(1D0+Z**3.LT.WTPSGL*PYR(0)) GOTO 330
67952  
67953 C...Flavour choice and weighting of g->qqbar branching.
67954             ELSE
67955               KFQ=MIN(5,1+INT(NFLAV*PYR(0)))
67956               PMQ=PMAS(KFQ,1)
67957               ROOTQQ=SQRT(MAX(0D0,1D0-4D0*PMQ**2/PM2))
67958               WTME=ROOTQQ*(Z**2+(1D0-Z)**2)
67959               IF(WTME.LT.PYR(0)) GOTO 330
67960               IFLAG=10+KFQ
67961             ENDIF
67962  
67963 C...Case of evolution by QED branching.
67964           ELSEIF(ISCHG(IEVOL).NE.0) THEN
67965  
67966 C...If kinematically impossible then do not evolve.
67967             PT2EMN=PT0EQ**2
67968             IF(IABS(K(I,2)).GT.10) PT2EMN=PT0EL**2
67969             IF(PT2.LT.PT2EMN) THEN
67970               IFLG(IEVOL)=-1
67971               GOTO 360
67972             ENDIF
67973  
67974 C...Check if part of system for which ME corrections should be applied.
67975            IMESYS=0
67976             DO 340 IME=1,NMESYS
67977               IF((I.EQ.MESYS(IME,1).OR.I.EQ.MESYS(IME,2)).AND.
67978      &        MESYS(IME,0).GT.100) IMESYS=IME
67979   340      CONTINUE
67980  
67981 C...Charge. Matrix element weighting factor.
67982             CHG=ISCHG(IEVOL)/3D0
67983             WTPSGA=2D0
67984  
67985 C...Determine overestimated z range. Find evolution coefficient.
67986             ZMNCUT=0.5D0-SQRT(MAX(0D0,0.25D0-PT2EMN/SHTCOR))
67987             IF(ZMNCUT.LT.1D-8) ZMNCUT=PT2EMN/SHTCOR
67988             EVCOEF=AEM2PI*CHG**2*WTPSGA*LOG(1D0/ZMNCUT-1D0)
67989  
67990 C...Pick pT2 (in overestimated z range).
67991   350       PT2=PT2*PYR(0)**(1D0/EVCOEF)
67992  
67993 C...Finish if below lower cutoff.
67994             IF(PT2.LT.PT2EMN) THEN
67995               IFLG(IEVOL)=-1
67996               GOTO 360
67997             ENDIF
67998  
67999 C...Pick z: dz/(1-z).
68000             Z=1D0-ZMNCUT*(1D0/ZMNCUT-1D0)**PYR(0)
68001  
68002 C...Loopback if outside allowed range for given pT2.
68003             ZMNNOW=0.5D0-SQRT(MAX(0D0,0.25D0-PT2/SHTCOR))
68004             IF(ZMNNOW.LT.1D-8) ZMNNOW=PT2/SHTCOR
68005             IF(Z.LE.ZMNNOW.OR.Z.GE.1D0-ZMNNOW) GOTO 350
68006             PM2=PM2I+PT2/(Z*(1D0-Z))
68007             IF(Z*(1D0-Z).LE.PM2*SHT/(SHT+PM2-PM2R)**2) GOTO 350
68008  
68009 C...Weighting by branching kernel, except if ME weighting later.
68010             IF(IMESYS.EQ.0) THEN
68011               IF(1D0+Z**2.LT.WTPSGA*PYR(0)) GOTO 350
68012             ENDIF
68013             IFLAG=3
68014           ENDIF
68015  
68016 C...Save acceptable branching.
68017           IFLG(IEVOL)=IFLAG
68018           IMESAV(IEVOL)=IMESYS
68019           PT2SAV(IEVOL)=PT2
68020           ZSAV(IEVOL)=Z
68021           SHTSAV(IEVOL)=SHT
68022         ENDIF
68023  
68024 C...Check if branching has highest pT.
68025         IF(IFLG(IEVOL).GE.1.AND.PT2SAV(IEVOL).GT.PT2MX) THEN
68026           IMX=IEVOL
68027           PT2MX=PT2SAV(IEVOL)
68028         ENDIF
68029   360 CONTINUE
68030  
68031 C...Finished if no more branchings to be done.
68032       IF(IMX.EQ.0) GOTO 480
68033  
68034 C...Restore info on hardest branching to be processed.
68035       I=IPOS(IMX)
68036       IR=IREC(IMX)
68037       KCOL=ISCOL(IMX)
68038       KCHA=ISCHG(IMX)
68039       IMESYS=IMESAV(IMX)
68040       PT2=PT2SAV(IMX)
68041       Z=ZSAV(IMX)
68042       SHT=SHTSAV(IMX)
68043       PM2I=P(I,5)**2
68044       PM2R=P(IR,5)**2
68045       PM2=PM2I+PT2/(Z*(1D0-Z))
68046  
68047 C...Special flag for colour octet states.
68048       MOCT=0
68049       IF(K(I,2).EQ.21) MOCT=1
68050       IF(K(I,2).EQ.KSUSY1+21) MOCT=2
68051  
68052 C...Restore further info for g->qqbar branching.
68053       KFQ=0
68054       IF(IFLG(IMX).GT.10) THEN
68055         KFQ=IFLG(IMX)-10
68056         PMQ=PMAS(KFQ,1)
68057         ROOTQQ=SQRT(MAX(0D0,1D0-4D0*PMQ**2/PM2))
68058       ENDIF
68059  
68060 C...For branching g include azimuthal asymmetries from polarization.
68061       ASYPOL=0D0
68062       IF(MOCT.EQ.1.AND.MOD(MSTJ(46),2).EQ.1) THEN
68063 C...Trace grandmother via intermediate recoil copies.
68064         KFGM=0
68065         IM=I
68066   370   IF(K(IM,3).NE.K(IM-1,3).AND.K(IM,3).NE.K(IM+1,3).AND.
68067      &  K(IM,3).GT.0) THEN
68068           IM=K(IM,3)
68069           IF(IM.GT.MINT(84)) GOTO 370
68070         ENDIF
68071         IGM=K(IM,3)
68072         IF(IGM.GT.MINT(84).AND.IGM.LT.IM.AND.IM.LE.I)
68073      &  KFGM=IABS(K(IGM,2))
68074 C...Define approximate energy sharing by identifying aunt.
68075         IAU=IM+1
68076         IF(IAU.GT.N-3.OR.K(IAU,3).NE.IGM) IAU=IM-1
68077         IF(KFGM.NE.0.AND.(KFGM.LE.6.OR.KFGM.EQ.21)) THEN
68078           ZOLD=P(IM,4)/(P(IM,4)+P(IAU,4))
68079 C...Coefficient from gluon production.
68080           IF(KFGM.LE.6) THEN
68081             ASYPOL=2D0*(1D0-ZOLD)/(1D0+(1D0-ZOLD)**2)
68082           ELSE
68083             ASYPOL=((1D0-ZOLD)/(1D0-ZOLD*(1D0-ZOLD)))**2
68084           ENDIF
68085 C...Coefficient from gluon decay.
68086           IF(KFQ.EQ.0) THEN
68087             ASYPOL=ASYPOL*(Z*(1D0-Z)/(1D0-Z*(1D0-Z)))**2
68088           ELSE
68089             ASYPOL=-ASYPOL*2D0*Z*(1D0-Z)/(1D0-2D0*Z*(1D0-Z))
68090           ENDIF
68091         ENDIF
68092       ENDIF
68093  
68094 C...Create new slots for branching products and recoil.
68095       INEW=N+1
68096       IGNEW=N+2
68097       IRNEW=N+3
68098       N=N+3
68099  
68100 C...Set status, flavour and mother of new ones.
68101       K(INEW,1)=K(I,1)
68102       K(IGNEW,1)=3
68103       IF(KCHA.NE.0)  K(IGNEW,1)=1
68104       K(IRNEW,1)=K(IR,1)
68105       IF(KFQ.EQ.0) THEN
68106         K(INEW,2)=K(I,2)
68107         K(IGNEW,2)=21
68108         IF(KCHA.NE.0)  K(IGNEW,2)=22
68109       ELSE
68110         K(INEW,2)=-ISIGN(KFQ,KCOL)
68111         K(IGNEW,2)=-K(INEW,2)
68112       ENDIF
68113       K(IRNEW,2)=K(IR,2)
68114       K(INEW,3)=I
68115       K(IGNEW,3)=I
68116       K(IRNEW,3)=IR
68117  
68118 C...Find rest frame and angles of branching+recoil.
68119       DO 380 J=1,5
68120         P(INEW,J)=P(I,J)
68121         P(IGNEW,J)=0D0
68122         P(IRNEW,J)=P(IR,J)
68123   380 CONTINUE
68124       BETAX=(P(INEW,1)+P(IRNEW,1))/(P(INEW,4)+P(IRNEW,4))
68125       BETAY=(P(INEW,2)+P(IRNEW,2))/(P(INEW,4)+P(IRNEW,4))
68126       BETAZ=(P(INEW,3)+P(IRNEW,3))/(P(INEW,4)+P(IRNEW,4))
68127       CALL PYROBO(INEW,IRNEW,0D0,0D0,-BETAX,-BETAY,-BETAZ)
68128       PHI=PYANGL(P(INEW,1),P(INEW,2))
68129       THETA=PYANGL(P(INEW,3),SQRT(P(INEW,1)**2+P(INEW,2)**2))
68130  
68131 C...Derive kinematics of branching: generics (like g->gg).
68132       DO 390 J=1,4
68133         P(INEW,J)=0D0
68134         P(IRNEW,J)=0D0
68135   390 CONTINUE
68136       PEM=0.5D0*(SHT+PM2-PM2R)/SQRT(SHT)
68137       PZM=0.5D0*SQRT(MAX(0D0,(SHT-PM2-PM2R)**2-4D0*PM2*PM2R)/SHT)
68138       PT2COR=PM2*(PEM**2*Z*(1D0-Z)-0.25D0*PM2)/PZM**2
68139       PTCOR=SQRT(MAX(0D0,PT2COR))
68140       PZN=(PEM**2*Z-0.5D0*PM2)/PZM
68141       PZG=(PEM**2*(1D0-Z)-0.5D0*PM2)/PZM
68142 C...Specific kinematics reduction for q->qg with m_q > 0.
68143       IF(MOCT.NE.1) THEN
68144         PTCOR=(1D0-PM2I/PM2)*PTCOR
68145         PZN=PZN+PM2I*PZG/PM2
68146         PZG=(1D0-PM2I/PM2)*PZG
68147 C...Specific kinematics reduction for g->qqbar with m_q > 0.
68148       ELSEIF(KFQ.NE.0) THEN
68149         P(INEW,5)=PMQ
68150         P(IGNEW,5)=PMQ
68151         PTCOR=ROOTQQ*PTCOR
68152         PZN=0.5D0*((1D0+ROOTQQ)*PZN+(1D0-ROOTQQ)*PZG)
68153         PZG=PZM-PZN
68154       ENDIF
68155  
68156 C...Pick phi and construct kinematics of branching.
68157   400 PHIROT=PARU(2)*PYR(0)
68158       P(INEW,1)=PTCOR*COS(PHIROT)
68159       P(INEW,2)=PTCOR*SIN(PHIROT)
68160       P(INEW,3)=PZN
68161       P(INEW,4)=SQRT(PTCOR**2+P(INEW,3)**2+P(INEW,5)**2)
68162       P(IGNEW,1)=-P(INEW,1)
68163       P(IGNEW,2)=-P(INEW,2)
68164       P(IGNEW,3)=PZG
68165       P(IGNEW,4)=SQRT(PTCOR**2+P(IGNEW,3)**2+P(IGNEW,5)**2)
68166       P(IRNEW,1)=0D0
68167       P(IRNEW,2)=0D0
68168       P(IRNEW,3)=-PZM
68169       P(IRNEW,4)=0.5D0*(SHT+PM2R-PM2)/SQRT(SHT)
68170  
68171 C...Boost branching system to lab frame.
68172       CALL PYROBO(INEW,IRNEW,THETA,PHI,BETAX,BETAY,BETAZ)
68173  
68174 C...Renew choice of phi angle according to polarization asymmetry.
68175       IF(ABS(ASYPOL).GT.1D-3) THEN
68176         DO 410 J=1,3
68177           DPT(1,J)=P(I,J)
68178           DPT(2,J)=P(IAU,J)
68179           DPT(3,J)=P(INEW,J)
68180   410   CONTINUE
68181         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
68182         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
68183         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
68184         DO 420 J=1,3
68185           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
68186           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
68187   420   CONTINUE
68188         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
68189         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
68190         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
68191           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
68192      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
68193           IF(1D0+ASYPOL*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(ASYPOL)))
68194      &    GOTO 400
68195         ENDIF
68196       ENDIF
68197  
68198 C...Matrix element corrections for primary partons when requested.
68199       IF(IMESYS.GT.0) THEN
68200         M3JC=MESYS(IMESYS,0)
68201  
68202 C...Identify recoiling partner and set up three-body kinematics.
68203         IRP=MESYS(IMESYS,1)
68204         IF(IRP.EQ.I) IRP=MESYS(IMESYS,2)
68205         IF(IRP.EQ.IR) IRP=IRNEW
68206         DO 430 J=1,4
68207           PSUM(J)=P(INEW,J)+P(IRP,J)+P(IGNEW,J)
68208   430   CONTINUE
68209         PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
68210      &  PSUM(3)**2))
68211         X1=2D0*(PSUM(4)*P(INEW,4)-PSUM(1)*P(INEW,1)-PSUM(2)*P(INEW,2)-
68212      &  PSUM(3)*P(INEW,3))/PSUM(5)**2
68213         X2=2D0*(PSUM(4)*P(IRP,4)-PSUM(1)*P(IRP,1)-PSUM(2)*P(IRP,2)-
68214      &  PSUM(3)*P(IRP,3))/PSUM(5)**2
68215         X3=2D0-X1-X2
68216         R1ME=P(INEW,5)/PSUM(5)
68217         R2ME=P(IRP,5)/PSUM(5)
68218  
68219 C...Matrix elements for gluon emission.
68220         IF(M3JC.LT.100) THEN
68221  
68222 C...Call ME, with right order important for two inequivalent showerers.
68223           IF(MESYS(IMESYS,IORD).EQ.I) THEN
68224             WME=PYMAEL(M3JC,X1,X2,R1ME,R2ME,ALPHA)
68225           ELSE
68226             WME=PYMAEL(M3JC,X2,X1,R2ME,R1ME,ALPHA)
68227           ENDIF
68228  
68229 C...Split up total ME when two radiating partons.
68230           ISPRAD=1
68231           IF((M3JC.GE.16.AND.M3JC.LE.19).OR.(M3JC.GE.26.AND.M3JC.LE.29)
68232      &    .OR.(M3JC.GE.36.AND.M3JC.LE.39).OR.(M3JC.GE.46.AND.M3JC.LE.49)
68233      &    .OR.(M3JC.GE.56.AND.M3JC.LE.64)) ISPRAD=0
68234           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
68235      &    MAX(1D-10,2D0-X1-X2)
68236  
68237 C...Evaluate shower rate.
68238           WPS=2D0/(MAX(1D-10,2D0-X1-X2)*
68239      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
68240           IF(IGLUI.EQ.1) WPS=(9D0/4D0)*WPS
68241  
68242 C...Matrix elements for photon emission: still rather primitive.
68243         ELSE
68244  
68245 C...For generic charge combination currently only massless expression.
68246           IF(M3JC.EQ.101) THEN
68247             CHG1=KCHG(PYCOMP(K(I,2)),1)*ISIGN(1,K(I,2))/3D0
68248             CHG2=KCHG(PYCOMP(K(IRP,2)),1)*ISIGN(1,K(IRP,2))/3D0
68249             WME=(CHG1*(1D0-X1)/X3-CHG2*(1D0-X2)/X3)**2*(X1**2+X2**2)
68250             WPS=2D0*(CHG1**2*(1D0-X1)/X3+CHG2**2*(1D0-X2)/X3)
68251  
68252 C...For flavour neutral system assume vector source and include masses.
68253           ELSE
68254             WME=PYMAEL(11,X1,X2,R1ME,R2ME,0D0)*MAX(1D-10,
68255      &      1D0+R1ME**2-R2ME**2-X1)/MAX(1D-10,2D0-X1-X2)
68256             WPS=2D0/(MAX(1D-10,2D0-X1-X2)*
68257      &      MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
68258           ENDIF
68259         ENDIF
68260  
68261 C...Perform weighting with W_ME/W_PS.
68262         IF(WME.LT.PYR(0)*WPS) THEN
68263           N=N-3
68264           IFLG(IMX)=0
68265           PT2CMX=PT2
68266           GOTO 290
68267         ENDIF
68268       ENDIF
68269  
68270 C...Now for sure accepted branching. Save highest pT.
68271       IF(NGEN.EQ.1) PTGEN=SQRT(PT2)
68272  
68273 C...Update status for obsolete ones. Bookkkep the moved original parton
68274 C...and new daughter (arbitrary choice for g->gg or g->qqbar).
68275 C...Do not bookkeep radiated photon, since it cannot radiate further.
68276       K(I,1)=K(I,1)+10
68277       K(IR,1)=K(IR,1)+10
68278       DO 440 IP=1,NPART
68279         IF(IPART(IP).EQ.I) IPART(IP)=INEW
68280         IF(IPART(IP).EQ.IR) IPART(IP)=IRNEW
68281   440 CONTINUE
68282       IF(KCHA.EQ.0) THEN
68283         NPART=NPART+1
68284         IPART(NPART)=IGNEW
68285       ENDIF
68286  
68287 C...Initialize colour flow of branching.
68288 C...Use both old and new style colour tags for flexibility.
68289       K(INEW,4)=0
68290       K(IGNEW,4)=0
68291       K(INEW,5)=0
68292       K(IGNEW,5)=0
68293       JCOLP=4+(1-KCOL)/2
68294       JCOLN=9-JCOLP
68295       MCT(INEW,1)=0
68296       MCT(INEW,2)=0
68297       MCT(IGNEW,1)=0
68298       MCT(IGNEW,2)=0
68299       MCT(IRNEW,1)=0
68300       MCT(IRNEW,2)=0
68301  
68302 C...Trivial colour flow for l->lgamma and q->qgamma.
68303       IF(IABS(KCHA).EQ.3) THEN
68304         K(I,4)=INEW
68305         K(I,5)=IGNEW
68306       ELSEIF(KCHA.NE.0) THEN
68307         IF(K(I,4).NE.0) THEN
68308           K(I,4)=K(I,4)+INEW
68309           K(INEW,4)=MSTU(5)*I
68310           MCT(INEW,1)=MCT(I,1)
68311         ENDIF
68312         IF(K(I,5).NE.0) THEN
68313           K(I,5)=K(I,5)+INEW
68314           K(INEW,5)=MSTU(5)*I
68315           MCT(INEW,2)=MCT(I,2)
68316         ENDIF
68317  
68318 C...Set colour flow for q->qg and g->gg.
68319       ELSEIF(KFQ.EQ.0) THEN
68320         K(I,JCOLP)=K(I,JCOLP)+IGNEW
68321         K(IGNEW,JCOLP)=MSTU(5)*I
68322         K(INEW,JCOLP)=MSTU(5)*IGNEW
68323         K(IGNEW,JCOLN)=MSTU(5)*INEW
68324         MCT(IGNEW,JCOLP-3)=MCT(I,JCOLP-3)
68325         NCT=NCT+1
68326         MCT(INEW,JCOLP-3)=NCT
68327         MCT(IGNEW,JCOLN-3)=NCT
68328         IF(MOCT.GE.1) THEN
68329           K(I,JCOLN)=K(I,JCOLN)+INEW
68330           K(INEW,JCOLN)=MSTU(5)*I
68331           MCT(INEW,JCOLN-3)=MCT(I,JCOLN-3)
68332         ENDIF
68333  
68334 C...Set colour flow for g->qqbar.
68335       ELSE
68336         K(I,JCOLN)=K(I,JCOLN)+INEW
68337         K(INEW,JCOLN)=MSTU(5)*I
68338         K(I,JCOLP)=K(I,JCOLP)+IGNEW
68339         K(IGNEW,JCOLP)=MSTU(5)*I
68340         MCT(INEW,JCOLN-3)=MCT(I,JCOLN-3)
68341         MCT(IGNEW,JCOLP-3)=MCT(I,JCOLP-3)
68342       ENDIF
68343  
68344 C...Daughter info for colourless recoiling parton.
68345       IF(K(IR,4).EQ.0.AND.K(IR,5).EQ.0) THEN
68346         K(IR,4)=IRNEW
68347         K(IR,5)=IRNEW
68348         K(IRNEW,4)=0
68349         K(IRNEW,5)=0
68350  
68351 C...Colour of recoiling parton sails through unchanged.
68352       ELSE
68353         IF(K(IR,4).NE.0) THEN
68354           K(IR,4)=K(IR,4)+IRNEW
68355           K(IRNEW,4)=MSTU(5)*IR
68356           MCT(IRNEW,1)=MCT(IR,1)
68357         ENDIF
68358         IF(K(IR,5).NE.0) THEN
68359           K(IR,5)=K(IR,5)+IRNEW
68360           K(IRNEW,5)=MSTU(5)*IR
68361           MCT(IRNEW,2)=MCT(IR,2)
68362         ENDIF
68363       ENDIF
68364  
68365 C...Vertex information trivial.
68366       DO 450 J=1,5
68367         V(INEW,J)=V(I,J)
68368         V(IGNEW,J)=V(I,J)
68369         V(IRNEW,J)=V(IR,J)
68370   450 CONTINUE
68371  
68372 C...Update list of old radiators.
68373         DO 460 IEVOL=1,NEVOL
68374           IF(IPOS(IEVOL).EQ.I.AND.IREC(IEVOL).EQ.IR) THEN
68375             IPOS(IEVOL)=INEW
68376             IF(KCOL.NE.0.AND.ISCOL(IEVOL).EQ.KCOL) IPOS(IEVOL)=IGNEW
68377             IREC(IEVOL)=IRNEW
68378             IFLG(IEVOL)=0
68379           ELSEIF(IPOS(IEVOL).EQ.I) THEN
68380             IPOS(IEVOL)=INEW
68381             IFLG(IEVOL)=0
68382           ELSEIF(IPOS(IEVOL).EQ.IR.AND.IREC(IEVOL).EQ.I) THEN
68383             IPOS(IEVOL)=IRNEW
68384             IREC(IEVOL)=INEW
68385             IF(KCOL.NE.0.AND.ISCOL(IEVOL).NE.KCOL) IREC(IEVOL)=IGNEW
68386             IFLG(IEVOL)=0
68387           ELSEIF(IPOS(IEVOL).EQ.IR) THEN
68388             IPOS(IEVOL)=IRNEW
68389             IFLG(IEVOL)=0
68390           ENDIF
68391 C...Update links of old connected partons.
68392           IF(IREC(IEVOL).EQ.I) THEN
68393             IREC(IEVOL)=INEW
68394             IFLG(IEVOL)=0
68395           ELSEIF(IREC(IEVOL).EQ.IR) THEN
68396             IREC(IEVOL)=IRNEW
68397             IFLG(IEVOL)=0
68398           ENDIF
68399   460   CONTINUE
68400  
68401 C...q->qg or g->gg: create new gluon radiators.
68402       IF(KCOL.NE.0.AND.KFQ.EQ.0) THEN
68403         NEVOL=NEVOL+1
68404         IPOS(NEVOL)=INEW
68405         IREC(NEVOL)=IGNEW
68406         IFLG(NEVOL)=0
68407         ISCOL(NEVOL)=KCOL
68408         ISCHG(NEVOL)=0
68409         PTSCA(NEVOL)=SQRT(PT2)
68410         NEVOL=NEVOL+1
68411         IPOS(NEVOL)=IGNEW
68412         IREC(NEVOL)=INEW
68413         IFLG(NEVOL)=0
68414         ISCOL(NEVOL)=-KCOL
68415         ISCHG(NEVOL)=0
68416         PTSCA(NEVOL)=PTSCA(NEVOL-1)
68417       ENDIF
68418  
68419 C...Update matrix elements parton list and add new for g/gamma->qqbar.
68420       DO 470 IME=1,NMESYS
68421         IF(MESYS(IME,1).EQ.I) MESYS(IME,1)=INEW
68422         IF(MESYS(IME,2).EQ.I) MESYS(IME,2)=INEW
68423         IF(MESYS(IME,1).EQ.IR) MESYS(IME,1)=IRNEW
68424         IF(MESYS(IME,2).EQ.IR) MESYS(IME,2)=IRNEW
68425   470 CONTINUE
68426       IF(KFQ.NE.0) THEN
68427         NMESYS=NMESYS+1
68428         MESYS(NMESYS,0)=66
68429         MESYS(NMESYS,1)=INEW
68430         MESYS(NMESYS,2)=IGNEW
68431         NMESYS=NMESYS+1
68432         MESYS(NMESYS,0)=102
68433         MESYS(NMESYS,1)=INEW
68434         MESYS(NMESYS,2)=IGNEW
68435       ENDIF
68436  
68437 C...Global statistics.
68438       MINT(353)=MINT(353)+1
68439       VINT(353)=VINT(353)+PTCOR
68440       IF (MINT(353).EQ.1) VINT(358)=PTCOR
68441  
68442 C...Loopback for more emissions if enough space.
68443       PT2CMX=PT2
68444       IF(NPART.LT.MAXNUR-1.AND.NEVOL.LT.2*MAXNUR-2.AND.
68445      &NMESYS.LT.MAXNUR-2.AND.N.LT.MSTU(4)-MSTU(32)-5) THEN
68446         GOTO 280
68447       ELSE
68448         CALL PYERRM(11,'(PYPTFS:) no more memory left for shower')
68449       ENDIF
68450  
68451 C...Done.
68452   480 CONTINUE
68453  
68454       RETURN
68455       END
68456  
68457 C*********************************************************************
68458  
68459 C...PYMAEL
68460 C...Auxiliary to PYSHOW and PYPTFS.
68461 C...Matrix elements for gluon (or photon) emission from
68462 C...a two-body state; to be used by the parton shower routine.
68463 C...Here X_i = 2 E_i/E_cm, R_i = m_i/E_cm and
68464 C...1/sigma_0 d(sigma)/d(x_1)d(x_2) =
68465 C...      = (alpha-strong/2 pi) * CF * PYMAEL,
68466 C...i.e. normalization is such that one recovers the familiar
68467 C...(X1**2+X2**2)/((1-X1)*(1-X2)) for the massless case.
68468 C...Coupling structure:
68469 C...NI =  6- 9 : eikonal soft-gluon expression (spin-independent)
68470 C...   = 11-14 : V -> q qbar (V = vector/axial vector colour singlet)
68471 C...   = 16-19 : q -> q V
68472 C...   = 21-24 : S -> q qbar (S = scalar/pseudoscalar colour singlet)
68473 C...   = 26-29 : q -> q S
68474 C...   = 31-34 : V -> ~q ~qbar  (~q = squark)
68475 C...   = 36-39 : ~q -> ~q V
68476 C...   = 41-44 : S -> ~q ~qbar
68477 C...   = 46-49 : ~q -> ~q S
68478 C...   = 51-54 : chi -> q ~qbar (chi = neutralino/chargino)
68479 C...   = 56-59 : ~q -> q chi
68480 C...   = 61-64 : q -> ~q chi
68481 C...   = 66-69 : ~g -> q ~qbar
68482 C...   = 71-74 : ~q -> q ~g
68483 C...   = 76-79 : q -> ~q ~g
68484 C...   = 81-84 : (9/4)*(eikonal) for gg -> ~g ~g
68485 C...Note that the order of the decay products is important.
68486 C...In each set of four, the variants are ordered as:
68487 C...ICOMBI = 1 : pure non-gamma5, i.e. vector/scalar/...
68488 C...       = 2 : pure gamma5, i.e. axial vector/pseudoscalar/....
68489 C...       = 3 : mixture alpha*(ICOMBI=1) + (1-alpha)*(ICOMBI=2)
68490 C...       = 4 : mixture (ICOMBI=1) +- (ICOMBI=2)
68491  
68492       FUNCTION PYMAEL(NI,X1,X2,R1,R2,ALPHA)
68493  
68494 C...Double precision and integer declarations.
68495       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
68496       IMPLICIT INTEGER(I-N)
68497  
68498 C...Check input values. Return zero outside allowed phase space.
68499       PYMAEL=0D0
68500       IF(X1.LE.2D0*R1.OR.X1.GE.1D0+R1**2-R2**2) RETURN
68501       IF(X2.LE.2D0*R2.OR.X2.GE.1D0+R2**2-R1**2) RETURN
68502       IF(X1+X2.LE.1D0+(R1+R2)**2) RETURN
68503       IF((2D0-2D0*X1-2D0*X2+X1*X2+2D0*R1**2+2D0*R2**2)**2.GE.
68504      &(X1**2-4D0*R1**2)*(X2**2-4D0*R2**2)) RETURN
68505       ALPCOR=MAX(0D0,MIN(1D0,ALPHA))
68506  
68507 C...Initial values and flags.
68508       ICLASS=NI/5
68509       ICOMBI=NI-5*ICLASS
68510       ISSET1=0
68511       ISSET2=0
68512       ISSET4=0
68513  
68514 C... Phase space.
68515       PS=SQRT((1D0-(R1+R2)**2)*(1D0-(R1-R2)**2))
68516  
68517 C...Eikonal expression; also acts as default.
68518       IF(ICLASS.LE.1.OR.ICLASS.GE.17.OR.ICOMBI.EQ.0) THEN
68519         RLO=PS
68520         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
68521           ANUM=0D0
68522         ELSEIF(ICOMBI.EQ.2) THEN
68523           ANUM=(2D0-X1-X2)**2
68524         ELSEIF(ICOMBI.EQ.3) THEN
68525           ANUM=ALPCOR*(2D0-X1-X2)**2
68526         ELSE
68527           ANUM=0.5D0*(2D0-X1-X2)**2
68528         ENDIF
68529         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
68530      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
68531      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
68532      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
68533         ICOMBI=0
68534  
68535 C...V -> q qbar (V = gamma*/Z0/W+-/...).
68536       ELSEIF(ICLASS.EQ.2) THEN
68537         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68538         RLO1=PS*(2-R1**2-R1**4+6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
68539         RFO1=-1.D0*(3+6*R1**2+R1**4-6*R1*R2+6*R1**3*R2-2*R2**2
68540      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-3*X1+6*R1*R2*X1
68541      &       +2*R2**2*X1+X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)
68542      &       +6*R1*R2*(2-X1-X2)-R2**2*(2-X1-X2)-2*X1*(2-X1-X2)
68543      &       -5*R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
68544      &       -3*(2-X1-X2)**2-3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2
68545      &       +2*X1*(2-X1-X2)**2+(2-X1-X2)**3-X2)/
68546      &       (-1+R1**2-R2**2+X2)**2
68547         RFO1=RFO1-2*(-3+R1**2-6*R1*R2+6*R1**3*R2+3*R2**2-4*R1**2*R2**2
68548      &       +6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
68549      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)+3*R1*R2*(2-X1
68550      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
68551      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2+R1*R2*(2
68552      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
68553      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68554         RFO1=RFO1-1.D0*(-1+2*R1**2+R1**4+6*R1*R2+6*R1**3*R2-2*R2**2
68555      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-X1-2*R1**2*X1-6*R1*R2*X1
68556      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2
68557      &       -X1-X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*
68558      &       (2-X1-X2)+X2)/(-1-R1**2+R2**2+X1)**2
68559         RFO1=RFO1/2.D0
68560         ISSET1=1
68561         ENDIF
68562         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68563         RLO2=PS*(2-R1**2-R1**4-6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
68564         RFO2=-1*(3+6*R1**2+R1**4+6*R1*R2-6*R1**3*R2-2*R2**2
68565      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-3*X1-6*R1*R2*X1+2*R2**2*X1
68566      &       +X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)-6*R1*R2*(2-X1-X2)
68567      &       -R2**2*(2-X1-X2)-2*X1*(2-X1-X2)-5*R1**2*X1*(2-X1-X2)
68568      &       +R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)-3*(2-X1-X2)**2
68569      &       -3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2+2*X1*(2-X1-X2)**2
68570      &       +(2-X1-X2)**3-X2)/(-1+R1**2-R2**2+X2)**2
68571         RFO2=RFO2-2*(-3+R1**2+6*R1*R2-6*R1**3*R2+3*R2**2-4*R1**2*R2**2
68572      &       -6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
68573      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)-3*R1*R2*(2-X1
68574      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
68575      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2-R1*R2*(2
68576      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
68577      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68578         RFO2=RFO2-1*(-1+2*R1**2+R1**4-6*R1*R2-6*R1**3*R2-2*R2**2
68579      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-X1-2*R1**2*X1+6*R1*R2*X1
68580      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2-X1
68581      &       -X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
68582      &       +X2)/(-1-R1**2+R2**2+X1)**2
68583         RFO2=RFO2/2.D0
68584         ISSET2=1
68585         ENDIF
68586         IF(ICOMBI.EQ.4) THEN
68587         RLO4=PS*(2D0-R1**2-R1**4-R2**2+2D0*R1**2*R2**2-R2**4)/2D0
68588         RFO4=(1-R1**4+6*R1**2*R2**2-R2**4+X1+3*R1**2*X1-9*R2**2*X1
68589      &       -3*X1**2-R1**2*X1**2+3*R2**2*X1**2+X1**3-X2-R1**2*X2
68590      &       +R2**2*X2-R1**2*X1*X2+R2**2*X1*X2+X1**2*X2)/
68591      &       (-1-R1**2+R2**2+X1)**2
68592         RFO4=RFO4
68593      &       -2*(1+R1**2+R2**2-4*R1**2*R2**2+R1**2*X1+2*R2**2*X1-X1**2
68594      &       -R2**2*X1**2+2*R1**2*X2+R2**2*X2-3*X1*X2+X1**2*X2-X2**2
68595      &       -R1**2*X2**2+X1*X2**2)/
68596      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68597         RFO4=RFO4+(1-R1**4+6*R1**2*R2**2-R2**4-X1+R1**2*X1-R2**2*X1+X2
68598      &       -9*R1**2*X2+3*R2**2*X2+R1**2*X1*X2-R2**2*X1*X2-3*X2**2
68599      &       +3*R1**2*X2**2-R2**2*X2**2+X1*X2**2+X2**3)/
68600      &       (-1+R1**2-R2**2+X2)**2
68601         RFO4=RFO4/2.D0
68602         ISSET4=1
68603         ENDIF
68604  
68605 C...q -> q V.
68606       ELSEIF(ICLASS.EQ.3) THEN
68607         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68608         RLO1=PS*(1D0-2D0*R1**2+R1**4+R2**2-6D0*R1*R2**2
68609      &        +R1**2*R2**2-2D0*R2**4)
68610         RFO1=2*(-1+R1-2*R1**2+2*R1**3-R1**4+R1**5-R2**2+R1*R2**2
68611      &       -5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4+2*X1-2*R1*X1
68612      &       +2*R1**2*X1-2*R1**3*X1+2*R2**2*X1+5*R1*R2**2*X1
68613      &       +R1**2*R2**2*X1+2*R2**4*X1-X1**2+R1*X1**2-R2**2*X1**2+3*X2
68614      &       +4*R1**2*X2+R1**4*X2+2*R2**2*X2+2*R1**2*R2**2*X2-4*X1*X2
68615      &       -2*R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-2*X2**2
68616      &       -2*R1**2*X2**2+X1*X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
68617         RFO1=RFO1+(2*R2**2+6*R1*R2**2-6*R1**2*R2**2+6*R1**3*R2**2
68618      &       +2*R2**4+6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
68619      &       -R1**4*X2-3*R2**2*X2-6*R1*R2**2*X2+9*R1**2*R2**2*X2
68620      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
68621      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
68622         RFO1=RFO1+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4
68623      &       +9*X1+10*R1**2*X1+R1**4*X1-3*R2**2*X1+6*R1*R2**2*X1
68624      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
68625      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2+6*R1*R2**2*X2
68626      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
68627      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2
68628      &       +2*R2**2*X2**2+X1*X2**2)/(-2+X1+X2)**2
68629         ISSET1=1
68630         ENDIF
68631         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68632         RLO2=PS*(1D0-2D0*R1**2+R1**4+R2**2+6D0*R1*R2**2
68633      &        +R1**2*R2**2-2D0*R2**4)
68634         RFO2=2*(1+R1+2*R1**2+2*R1**3+R1**4+R1**5+R2**2+R1*R2**2
68635      &       +5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4-2*X1-2*R1*X1
68636      &       -2*R1**2*X1-2*R1**3*X1-2*R2**2*X1+5*R1*R2**2*X1
68637      &       -R1**2*R2**2*X1-2*R2**4*X1+X1**2+R1*X1**2+R2**2*X1**2-3*X2
68638      &       -4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2+4*X1*X2
68639      &       +2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2+2*R1**2*X2**2
68640      &       -X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68641         RFO2=RFO2+(2*R2**2-6*R1*R2**2-6*R1**2*R2**2-6*R1**3*R2**2
68642      &       +2*R2**4-6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
68643      &       -R1**4*X2-3*R2**2*X2+6*R1*R2**2*X2+9*R1**2*R2**2*X2
68644      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
68645      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
68646         RFO2=RFO2+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
68647      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1-6*R1*R2**2*X1
68648      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
68649      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2-6*R1*R2**2*X2
68650      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
68651      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
68652      &       +X1*X2**2)/(-2+X1+X2)**2
68653         ISSET2=1
68654         ENDIF
68655         IF(ICOMBI.EQ.4) THEN
68656         RLO4=PS*(1.D0-2.D0*R1**2+R1**4+R2**2+R1**2*R2**2-2.D0*R2**4)
68657         RFO4=2*(1+2*R1**2+R1**4+R2**2+5*R1**2*R2**2-2*X1-2*R1**2*X1
68658      &       -2*R2**2*X1-R1**2*R2**2*X1-2*R2**4*X1+X1**2+R2**2*X1**2
68659      &       -3*X2-4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2
68660      &       +4*X1*X2+2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2
68661      &       +2*R1**2*X2**2-X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68662         RFO4=RFO4+(2*R2**2-6*R1**2*R2**2+2*R2**4-R2**2*X1+R1**2*R2**2*X1
68663      &       -R2**4*X1+X2-R1**4*X2-3*R2**2*X2+9*R1**2*R2**2*X2
68664      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
68665      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
68666         RFO4=RFO4+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
68667      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1+R1**2*R2**2*X1-2*R2**4*X1
68668      &       -6*X1**2-2*R1**2*X1**2+X1**3+7*X2+8*R1**2*X2+R1**4*X2
68669      &       -7*R2**2*X2+R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
68670      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
68671      &       +X1*X2**2)/(2-X1-X2)**2
68672         ISSET4=1
68673         ENDIF
68674  
68675 C...S -> q qbar    (S = h0/H0/A0/H+-/...).
68676       ELSEIF(ICLASS.EQ.4) THEN
68677         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68678         RLO1=PS*(1D0-R1**2-R2**2-2D0*R1*R2)
68679         RFO1=-(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
68680      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
68681      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
68682      &       -2*(R1**2+R1**4-2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3
68683      &       +R2**4-R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2
68684      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68685      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
68686      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
68687      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68688         ISSET1=1
68689         ENDIF
68690         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68691         RLO2=PS*(1D0-R1**2-R2**2+2D0*R1*R2)
68692         RFO2=-(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
68693      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
68694      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
68695      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
68696      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
68697      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68698      &       +2*(-R1**2-R1**4-2*R1**3*R2-R2**2+6*R1**2*R2**2
68699      &       -2*R1*R2**3-R2**4+R1**2*X1+R1*R2*X1-2*R2**2*X1
68700      &       -2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
68701      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68702         ISSET2=1
68703         ENDIF
68704         IF(ICOMBI.EQ.4) THEN
68705         RLO4=PS*(1D0-R1**2-R2**2)
68706         RFO4=-(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
68707      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
68708      &       -2*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
68709      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
68710      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68711      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1
68712      &       +X2+3*R1**2*X2-R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68713         ISSET4=1
68714         ENDIF
68715  
68716 C...q -> q S.
68717       ELSEIF(ICLASS.EQ.5) THEN
68718         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68719         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
68720         RFO1=(4-4*R1**2+4*R2**2-3*X1-2*R1*X1+R1**2*X1-R2**2*X1-5*X2
68721      &       -2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
68722      &       +2*(3-R1-5*R1**2-R1**3+3*R2**2+R1*R2**2-2*X1-R1*X1
68723      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68724      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
68725      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
68726      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68727      &       (-1+R1**2-R2**2+X2)**2
68728         ISSET1=1
68729         ENDIF
68730         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68731         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
68732         RFO2=(4-4*R1**2+4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2
68733      &       +2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
68734      &       +2*(3+R1-5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1
68735      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68736      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
68737      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
68738      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68739      &       (-1+R1**2-R2**2+X2)**2
68740         ISSET2=1
68741         ENDIF
68742         IF(ICOMBI.EQ.4) THEN
68743         RLO4=PS*(1D0+R1**2-R2**2)
68744         RFO4=(4-4*R1**2+4*R2**2-3*X1+R1**2*X1-R2**2*X1-5*X2+R1**2*X2
68745      &       -R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
68746      &       +2*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2+2*R1**2*X2
68747      &       -R2**2*X2+X1*X2+X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
68748      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
68749      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
68750         ISSET4=1
68751         ENDIF
68752  
68753 C...V -> ~q ~qbar  (~q = squark).
68754       ELSEIF(ICLASS.EQ.6) THEN
68755         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
68756         RFO1=2D0*3D0+(1+R1**2+R2**2-X1)*(4*R1**2-X1**2)/
68757      &       (-1-R1**2+R2**2+X1)**2
68758      &       -2D0*(-1-3*R1**2-R2**2+X1+X1**2/2+X2-X1*X2/2)/
68759      &       (-1-R1**2+R2**2+X1)
68760      &       +(1+R1**2+R2**2-X2)*(4*R2**2-X2**2)
68761      &       /(-1+R1**2-R2**2+X2)**2
68762      &       -2D0*(-1-R1**2-3*R2**2+X1+X2-X1*X2/2+X2**2/2)/
68763      &       (-1+R1**2-R2**2+X2)
68764      &       -(-4*R1**2-4*R1**4-4*R2**2-8*R1**2*R2**2-4*R2**4+2*X1
68765      &       +6*R1**2*X1+6*R2**2*X1-2*X1**2+2*X2+6*R1**2*X2+6*R2**2*X2
68766      &       -4*X1*X2-2*R1**2*X1*X2-2*R2**2*X1*X2+X1**2*X2-2*X2**2
68767      &       +X1*X2**2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68768         ISSET1=1
68769  
68770 C...~q -> ~q V.
68771       ELSEIF(ICLASS.EQ.7) THEN
68772         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
68773         RFO1=16*R2**2+8*(4*R2**2+2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2
68774      &       -2*X2**2)/(3*(-1+R1**2-R2**2+X2))+8*(1+R1**2+R2**2-X2)*
68775      &       (4*R2**2-X2**2)/(3*(-1+R1**2-R2**2+X2)**2)+8*(X1+X2)*
68776      &       (-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
68777      &       +2*R1**2*X1+2*R2**2*X1-X1**2+2*X2+2*R1**2*X2+2*R2**2*X2
68778      &       -2*X1*X2-X2**2)/(3*(-2+X1+X2)**2)+8*(-1-R1**2+R2**2-X1)*
68779      &       (2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2-X2**2)/
68780      &       (3*(-1+R1**2-R2**2+X2)*(-2+X1+X2))+8*(1+2*R1**2+R1**4
68781      &       +2*R2**2-2*R1**2*R2**2+R2**4-2*X1-2*R1**2*X1-4*R2**2*X1
68782      &       +X1**2-3*X2-3*R1**2*X2-3*R2**2*X2+3*X1*X2+2*X2**2)/
68783      &       (3*(-2+X1+X2))
68784         RFO1=3D0*RFO1/8D0
68785         ISSET1=1
68786  
68787 C...S -> ~q ~qbar.
68788       ELSEIF(ICLASS.EQ.8) THEN
68789         RLO1=PS
68790         RFO1=(-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
68791      &       +2*R1**2*X1+2*R2**2*X1-X1**2-R2**2*X1**2+2*X2+2*R1**2*X2
68792      &       +2*R2**2*X2-3*X1*X2-R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-X2**2
68793      &       -R1**2*X2**2+X1*X2**2)/
68794      &       (1+R1**2-R2**2-X1)**2/(-1+R1**2-R2**2+X2)**2
68795         RFO1=2D0*RFO1
68796         ISSET1=1
68797  
68798 C...~q -> ~q S.
68799       ELSEIF(ICLASS.EQ.9) THEN
68800         RLO1=PS
68801         RFO1=(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
68802      &       +(1+R1**2-R2**2+X1)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68803      &       -(X1+X2)/(-2+X1+X2)**2
68804         ISSET1=1
68805  
68806 C...chi -> q ~qbar   (chi = neutralino/chargino).
68807       ELSEIF(ICLASS.EQ.10) THEN
68808         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68809         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
68810         RFO1=(2*R1+X1)*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
68811      &       +2*(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1
68812      &       -R1**2*X1/2-R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
68813      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68814      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
68815      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68816      &       (-1+R1**2-R2**2+X2)**2
68817         ISSET1=1
68818         ENDIF
68819         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68820         RLO2=PS*(1D0-2D0*R1+R1**2-R2**2)
68821         RFO2=(2*R1-X1)*(1+R1**2+R2**2-X1)/(-1-R1**2+R2**2+X1)**2
68822      &       +2*(-1-R1**2+2*R1**3-R2**2+2*R1*R2**2+3*X1/2-R1*X1
68823      &       -R1**2*X1/2-R2**2*X1/2+X2-R1*X2+R1**2*X2-X1*X2/2)/
68824      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68825      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
68826      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68827      &       (-1+R1**2-R2**2+X2)**2
68828         ISSET2=1
68829         ENDIF
68830         IF(ICOMBI.EQ.4) THEN
68831         RLO4=PS*(1+R1**2-R2**2)
68832         RFO4=X1*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
68833      &       +2D0*(-1-R1**2-R2**2+3*X1/2-R1**2*X1/2-R2**2*X1/2
68834      &       +X2+R1**2*X2-X1*X2/2)/
68835      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68836      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
68837      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
68838         ISSET4=1
68839         ENDIF
68840  
68841 C...~q -> q chi.
68842       ELSEIF(ICLASS.EQ.11) THEN
68843         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68844         RLO1=PS*(1D0-(R1+R2)**2)
68845         RFO1=(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
68846      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
68847      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
68848      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68849      &       +(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
68850      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
68851      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68852         ISSET1=1
68853         ENDIF
68854         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68855         RLO2=PS*(1D0-(R1-R2)**2)
68856         RFO2=(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/
68857      &       (-2+X1+X2)**2
68858      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
68859      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
68860      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68861      &       +(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3+R2**4
68862      &       +X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
68863      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68864         ISSET2=1
68865         ENDIF
68866         IF(ICOMBI.EQ.4) THEN
68867         RLO4=PS*(1D0-R1**2-R2**2)
68868         RFO4=(1+R1**2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
68869      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2
68870      &       +3*R1**2*X2-R2**2*X2-X1*X2)/
68871      &       (-1+R1**2-R2**2+X2)**2
68872      &       -(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
68873      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
68874      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
68875         ISSET4=1
68876         ENDIF
68877  
68878 C...q -> ~q chi.
68879       ELSEIF(ICLASS.EQ.12) THEN
68880         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68881         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
68882         RFO1=(2*R2+X2)*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
68883      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1-2*R2*X1+R2**2*X1+X1**2
68884      &       -3*X2-R1**2*X2-2*R2*X2+R2**2*X2+X1*X2)/
68885      &       (-2+X1+X2)**2-2*(-1-R1**2+R2+R1**2*R2-R2**2-R2**3+X1
68886      &       +R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
68887      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
68888         ISSET1=1
68889         END IF
68890         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68891         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
68892         RFO2=(2*R2-X2)*(1+R1**2+R2**2-X2)/(-1+R1**2-R2**2+X2)**2
68893      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1+X1**2
68894      &       -3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
68895      &       (-2+X1+X2)**2-2*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
68896      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
68897      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
68898         ISSET2=1
68899         END IF
68900         IF(ICOMBI.EQ.4) THEN
68901         RLO4=PS*(1D0-R1**2+R2**2)
68902         RFO4=X2*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
68903      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2
68904      &       -3*X2-R1**2*X2+R2**2*X2+X1*X2)/
68905      &       (-2+X1+X2)**2-2*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2
68906      &       +R1**2*X2-X1*X2/2-X2**2/2)/
68907      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
68908         ISSET4=1
68909         END IF
68910  
68911 C...~g -> q ~qbar.
68912       ELSEIF(ICLASS.EQ.13) THEN
68913         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68914         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
68915         RFO1=4*(2*R1+X1)*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)
68916      &       -(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1-R1**2*X1/2
68917      &       -R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/(3*(-1-R1**2+R2**2
68918      &       +X1)*(-1+R1**2-R2**2+X2))-3*(-1+R1-R1**2-R1**3-R2**2
68919      &       +R1*R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
68920      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+3*(4-4*R1**2+4*R2**2-3*X1
68921      &       -2*R1*X1+R1**2*X1-R2**2*X1-5*X2-2*R1*X2+R1**2*X2-R2**2*X2
68922      &       +X1*X2+X2**2)/(-2+X1+X2)**2+3*(3-R1-5*R1**2-R1**3+3*R2**2
68923      &       +R1*R2**2-2*X1-R1*X1+R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2
68924      &       +X1*X2+X2**2)/((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2-2*R1
68925      &       -6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1-R2**2*X1
68926      &       -3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68927      &       (3*(-1+R1**2-R2**2+X2)**2)
68928         RFO1=3D0*RFO1/4D0
68929         ISSET1=1
68930         ENDIF
68931         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68932         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
68933         RFO2=4*(2*R1-X1)*(1+R1**2+R2**2-X1)/(3*(-1-R1**2+R2**2+X1)**2)
68934      &       -3*(-1-R1-R1**2+R1**3-R2**2-R1*R2**2+2*X1+R2**2*X1-X1**2/2
68935      &       +X2-R1*X2+R1**2*X2-X1*X2/2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
68936      &       +(2+2*R1**2-4*R1**3+2*R2**2-4*R1*R2**2-3*X1+2*R1*X1
68937      &       +R1**2*X1+R2**2*X1-2*X2+2*R1*X2-2*R1**2*X2+X1*X2)/
68938      &       (6*(-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+3*(4-4*R1**2
68939      &       +4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2+2*R1*X2
68940      &       +R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2+3*(3+R1
68941      &       -5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1+R1**2*X1-4*X2
68942      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68943      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2+2*R1-6*R1**2+2*R1**3
68944      &       +2*R2**2+2*R1*R2**2-X1+R1**2*X1-R2**2*X1-3*X2-2*R1*X2
68945      &       +3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68946      &       (3*(-1+R1**2-R2**2+X2)**2)
68947         RFO2=3D0*RFO2/4D0
68948         ISSET2=1
68949         ENDIF
68950         IF(ICOMBI.EQ.4) THEN
68951         RLO4=PS*(1D0+R1**2-R2**2)
68952         RFO4=8*X1*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)-6*(-1
68953      &       -R1**2-R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1**2*X2-X1*X2/2)/
68954      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+(2+2*R1**2+2*R2**2-3*X1
68955      &       +R1**2*X1+R2**2*X1-2*X2-2*R1**2*X2+X1*X2)/(3*(-1-R1**2
68956      &       +R2**2+X1)*(-1+R1**2-R2**2+X2))+6*(4-4*R1**2+4*R2**2-3*X1
68957      &       +R1**2*X1-R2**2*X1-5*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68958      &       (-2+X1+X2)**2+6*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2
68959      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68960      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+8*(2-6*R1**2+2*R2**2-X1
68961      &       +R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68962      &       (3*(-1+R1**2-R2**2+X2)**2)
68963         RFO4=3D0*RFO4/8D0
68964         ISSET4=1
68965         ENDIF
68966  
68967 C...~q -> q ~g.
68968       ELSEIF(ICLASS.EQ.14) THEN
68969         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68970         RLO1=PS*(1-R1**2-R2**2-2D0*R1*R2)
68971         RFO1=64*(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
68972      &       -16*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
68973      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
68974      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-16*(R1**2+R1**4
68975      &       -2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3+R2**4
68976      &       -R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2-R2**2*X2
68977      &       -X1*X2)/((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
68978      &       -64*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
68979      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
68980      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
68981      &       +8*(-1+R1**4-2*R1*R2+2*R1**3*R2-2*R2**2-2*R1*R2**3-R2**4
68982      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2-2*R1*R2*X2
68983      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
68984         RFO1=RFO1
68985      &       +8*(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
68986      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
68987      &       +X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
68988         RFO1=9D0*RFO1/64D0
68989         ISSET1=1
68990         ENDIF
68991         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68992         RLO2=PS*(1-R1**2-R2**2+2D0*R1*R2)
68993         RFO2=64*(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
68994      &       -16*(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
68995      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
68996      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-64*(-1+R1**4
68997      &       +2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3+R2**4+X1
68998      &       -R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2-R2**2*X2
68999      &       -X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)+16*(-R1**2-R1**4
69000      &       -2*R1**3*R2-R2**2+6*R1**2*R2**2-2*R1*R2**3-R2**4+R1**2*X1
69001      &       +R1*R2*X1-2*R2**2*X1-2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
69002      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
69003         RFO2=RFO2
69004      &       +8*(-1+R1**4+2*R1*R2-2*R1**3*R2-2*R2**2+2*R1*R2**3-R2**4
69005      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2+2*R1*R2*X2
69006      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
69007      &       +8*(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3
69008      &       +R2**4+X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2
69009      &       -2*R2**2*X2+X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69010         RFO2=9D0*RFO2/64D0
69011         ISSET2=1
69012         ENDIF
69013         IF(ICOMBI.EQ.4) THEN
69014         RLO4=PS*(1-R1**2-R2**2)
69015         RFO4=128*(1+R1**2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)-32*(-1
69016      &       +R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
69017      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
69018      &       -32*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
69019      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
69020      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))-128*(-1+R1**4
69021      &       -6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2
69022      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
69023      &       +16*(-1+R1**4-2*R2**2-R2**4-2*R1**2*X1+2*R2**2*X1+X1**2
69024      &       +X2-3*R1**2*X2+R2**2*X2+X1*X2)/
69025      &       ((-1-R1**2+R2**2+X1)*(-2+X1+ X2))
69026         RFO4=RFO4+16*(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
69027      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
69028      &       (9*(1-R1**2+R2**2-X2)*(-2+X1+X2))
69029         RFO4=9D0*RFO4/128D0
69030         ISSET4=1
69031         ENDIF
69032  
69033 C...q -> ~q ~g.
69034       ELSEIF(ICLASS.EQ.15) THEN
69035         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
69036         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
69037         RFO1=32*(2*R2+X2)*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
69038      &       +8*(-1-R1**2-2*R1**2*R2-R2**2-2*R2**3+X1+R2*X1+R2**2*X1
69039      &       +3*X2/2-R1**2*X2/2+R2*X2-R2**2*X2/2-X1*X2/2)/
69040      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2-2*R2
69041      &       -2*R1**2*R2-6*R2**2-2*R2**3-3*X1-R1**2*X1+2*R2*X1
69042      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
69043      &       (-1-R1**2+R2**2+X1)**2+32*(4+4*R1**2-4*R2**2-5*X1
69044      &       -R1**2*X1-2*R2*X1+R2**2*X1+X1**2-3*X2-R1**2*X2-2*R2*X2
69045      &       +R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
69046         RFO1=RFO1+8*(3+3*R1**2-R2+R1**2*R2-5*R2**2-R2**3-4*X1-R1**2*X1
69047      &       +2*R2**2*X1+X1**2-2*X2-R2*X2+R2**2*X2+X1*X2)/
69048      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+8*(-1-R1**2+R2+R1**2*R2
69049      &       -R2**2-R2**3+X1+R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
69050      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69051         RFO1=9D0*RFO1/32D0
69052         ISSET1=1
69053         END IF
69054         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
69055         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
69056         RFO2=32*(2*R2-X2)*(1+R1**2+R2**2-X2)/(9*(-1+R1**2-R2**2+X2)**2)
69057      &       +8*(-1-R1**2+2*R1**2*R2-R2**2+2*R2**3+X1-R2*X1+R2**2*X1
69058      &       +3*X2/2-R1**2*X2/2-R2*X2-R2**2*X2/2-X1*X2/2)/
69059      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2+2*R2
69060      &       +2*R1**2*R2-6*R2**2+2*R2**3-3*X1-R1**2*X1-2*R2*X1
69061      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
69062      &       (-1-R1**2+R2**2+X1)**2+8*(3+3*R1**2+R2-R1**2*R2-5*R2**2
69063      &       +R2**3-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2*X2+R2**2*X2
69064      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
69065         RFO2=RFO2+32*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1
69066      &       +X1**2-3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
69067      &       (9*(-2+X1+X2)**2)+8*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
69068      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
69069      &       (9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69070         RFO2=9D0*RFO2/32D0
69071         ISSET2=1
69072         END IF
69073         IF(ICOMBI.EQ.4) THEN
69074         RLO4=PS*(1D0-R1**2+R2**2)
69075         RFO4=64*X2*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
69076      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+3*X2/2-R1**2*X2/2
69077      &       -R2**2*X2/2-X1*X2/2)/
69078      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+16*(3+3*R1**2
69079      &       -5*R2**2-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2**2*X2
69080      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
69081      &       +64*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2-3*X2
69082      &       -R1**2*X2+R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
69083         RFO4=RFO4+16*(2+2*R1**2-6*R2**2-3*X1-R1**2*X1+3*R2**2*X1+X1**2
69084      &       -X2-R1**2*X2+R2**2*X2+X1*X2)/(-1-R1**2+R2**2+X1)**2
69085      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
69086      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69087         RFO4=9D0*RFO4/64D0
69088         ISSET4=1
69089         END IF
69090  
69091 C...g -> ~g ~g. Use (9/4)*eikonal. May be changed in the future.
69092       ELSEIF(ICLASS.EQ.16) THEN
69093         RLO=PS
69094         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
69095           ANUM=0D0
69096         ELSEIF(ICOMBI.EQ.2) THEN
69097           ANUM=(2D0-X1-X2)**2
69098         ELSEIF(ICOMBI.EQ.3) THEN
69099           ANUM=ALPCOR*(2D0-X1-X2)**2
69100         ELSE
69101           ANUM=0.5D0*(2D0-X1-X2)**2
69102         ENDIF
69103         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
69104      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
69105      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
69106      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
69107         RFO=9D0*RFO/4D0
69108         ICOMBI=0
69109       ENDIF
69110  
69111 C...Find relevant LO and FO expression.
69112       IF(ICOMBI.EQ.0) THEN
69113       ELSEIF(ICOMBI.EQ.1.AND.ISSET1.EQ.1) THEN
69114         RLO=RLO1
69115         RFO=RFO1
69116       ELSEIF(ICOMBI.EQ.2.AND.ISSET2.EQ.1) THEN
69117         RLO=RLO2
69118         RFO=RFO2
69119       ELSEIF(ICOMBI.EQ.3.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
69120         RLO=ALPCOR*RLO1+(1D0-ALPCOR)*RLO2
69121         RFO=ALPCOR*RFO1+(1D0-ALPCOR)*RFO2
69122       ELSEIF(ISSET4.EQ.1) THEN
69123         RLO=RLO4
69124         RFO=RFO4
69125       ELSEIF(ICOMBI.EQ.4.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
69126         RLO=0.5D0*(RLO1+RLO2)
69127         RFO=0.5D0*(RFO1+RFO2)
69128       ELSEIF(ISSET1.EQ.1) THEN
69129         RLO=RLO1
69130         RFO=RFO1
69131       ELSE
69132         CALL PYERRM(16,'(PYMAEL:) not implemented ME code')
69133         RLO=1D0
69134         RFO=0D0
69135       ENDIF
69136  
69137 C...Output.
69138       PYMAEL=RFO/RLO
69139  
69140       RETURN
69141       END
69142  
69143 C*********************************************************************
69144  
69145 C...PYBOEI
69146 C...Modifies an event so as to approximately take into account
69147 C...Bose-Einstein effects according to a simple phenomenological
69148 C...parametrization.
69149  
69150       SUBROUTINE PYBOEI(NSAV)
69151  
69152 C...Double precision and integer declarations.
69153       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69154       IMPLICIT INTEGER(I-N)
69155       INTEGER PYK,PYCHGE,PYCOMP
69156 C...Parameter statement to help give large particle numbers.
69157       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
69158      &KEXCIT=4000000,KDIMEN=5000000)
69159 C...Commonblocks.
69160       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
69161       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69162       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69163       COMMON/PYINT1/MINT(400),VINT(400)
69164       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/
69165 C...Local arrays and data.
69166       DIMENSION DPS(4),KFBE(9),NBE(0:10),BEI(100),BEI3(100),
69167      &BEIW(100),BEI3W(100)
69168       DATA KFBE/211,-211,111,321,-321,130,310,221,331/
69169 C...Statement function: squared invariant mass.
69170       SDIP(I,J)=((P(I,4)+P(J,4))**2-(P(I,3)+P(J,3))**2-
69171      &(P(I,2)+P(J,2))**2-(P(I,1)+P(J,1))**2)
69172  
69173 C...Boost event to overall CM frame. Calculate CM energy.
69174       IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN
69175       DO 100 J=1,4
69176         DPS(J)=0D0
69177   100 CONTINUE
69178       DO 120 I=1,N
69179         KFA=IABS(K(I,2))
69180         IF(K(I,1).LE.10.AND.((KFA.GT.10.AND.KFA.LE.20).OR.KFA.EQ.22)
69181      &  .AND.K(I,3).GT.0) THEN
69182           KFMA=IABS(K(K(I,3),2))
69183           IF(KFMA.GT.10.AND.KFMA.LE.80) K(I,1)=-K(I,1)
69184         ENDIF
69185         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120
69186         DO 110 J=1,4
69187           DPS(J)=DPS(J)+P(I,J)
69188   110   CONTINUE
69189   120 CONTINUE
69190       CALL PYROBO(0,0,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
69191      &-DPS(3)/DPS(4))
69192       PECM=0D0
69193       DO 130 I=1,N
69194         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4)
69195   130 CONTINUE
69196  
69197 C...Check if we have separated strings
69198  
69199 C...Reserve copy of particles by species at end of record.
69200       IWP=0
69201       IWN=0
69202       NBE(0)=N+MSTU(3)
69203       NMAX=NBE(0)
69204       SMMIN=PECM
69205       DO 190 IBE=1,MIN(10,MSTJ(52)+1)
69206         NBE(IBE)=NBE(IBE-1)
69207         DO 180 I=NSAV+1,N
69208           IF(IBE.EQ.MIN(10,MSTJ(52)+1)) THEN
69209             DO 140 IIBE=1,IBE-1
69210               IF(K(I,2).EQ.KFBE(IIBE)) GOTO 180
69211   140       CONTINUE
69212           ELSE
69213             IF(K(I,2).NE.KFBE(IBE)) GOTO 180
69214           ENDIF
69215           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 180
69216           IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN
69217             CALL PYERRM(11,'(PYBOEI:) no more memory left in PYJETS')
69218             RETURN
69219           ENDIF
69220           NBE(IBE)=NBE(IBE)+1
69221           NMAX=NBE(IBE)
69222           K(NBE(IBE),1)=I
69223           K(NBE(IBE),2)=0
69224           K(NBE(IBE),3)=0
69225           K(NBE(IBE),4)=0
69226           K(NBE(IBE),5)=0
69227           P(NBE(IBE),1)=0.0D0
69228           P(NBE(IBE),2)=0.0D0
69229           P(NBE(IBE),3)=0.0D0
69230           P(NBE(IBE),4)=0.0D0
69231           P(NBE(IBE),5)=0.0D0
69232           SMMIN=MIN(SMMIN,P(I,5))
69233 C...Check if particles comes from different W's or Z's
69234           IF((MSTJ(53).NE.0.OR.MSTJ(56).GT.0).AND.MINT(32).EQ.0) THEN
69235             IM=I
69236   150       IF(K(IM,3).GT.0) THEN
69237               IM=K(IM,3)
69238               IF(ABS(K(IM,2)).NE.24.AND.K(IM,2).NE.23) GOTO 150
69239               K(NBE(IBE),5)=IM
69240               IF(IWP.EQ.0.AND.K(IM,2).EQ.24) IWP=IM
69241               IF(IWN.EQ.0.AND.K(IM,2).EQ.-24) IWN=IM
69242               IF(IWP.EQ.0.AND.K(IM,2).EQ.23) IWP=IM
69243               IF(IWN.EQ.0.AND.K(IM,2).EQ.23.AND.IM.NE.IWP) IWN=IM
69244             ENDIF
69245           ENDIF
69246 C...Check if particles comes from different strings.
69247           IF(PARJ(94).GT.0.0D0) THEN
69248             IM=I
69249   160       IF(K(IM,3).GT.0) THEN
69250               IM=K(IM,3)
69251               IF(K(IM,2).NE.92.AND.K(IM,2).NE.91) GOTO 160
69252               K(NBE(IBE),5)=IM
69253             ENDIF
69254           ENDIF
69255           DO 170 J=1,3
69256             P(NBE(IBE),J)=0D0
69257             V(NBE(IBE),J)=0D0
69258   170     CONTINUE
69259           P(NBE(IBE),5)=-1.0D0
69260   180   CONTINUE
69261   190 CONTINUE
69262       IF(NBE(MIN(9,MSTJ(52)))-NBE(0).LE.1) GOTO 510
69263  
69264 C...Calculate separation between W+ and W- or between two Z0's.
69265 C...No separation if there has been re-connections.
69266       SIGW=PARJ(93)
69267       IF(IWP.GT.0.AND.IWN.GT.0.AND.MSTJ(56).GT.0.AND.MINT(32).EQ.0) THEN
69268         IF(K(IWP,2).EQ.23) THEN
69269           DMW=PMAS(23,1)
69270           DGW=PMAS(23,2)
69271         ELSE
69272           DMW=PMAS(24,1)
69273           DGW=PMAS(24,2)
69274         ENDIF
69275         DMP=P(IWP,5)
69276         DMN=P(IWN,5)
69277         TAUPD=DMP/SQRT((DMP**2-DMW**2)**2+(DGW*(DMP**2)/DMW)**2)
69278         TAUND=DMN/SQRT((DMN**2-DMW**2)**2+(DGW*(DMN**2)/DMW)**2)
69279         TAUP=-TAUPD*LOG(PYR(IDUM))
69280         TAUN=-TAUND*LOG(PYR(IDUM))
69281         DXP=TAUP*PYP(IWP,8)/DMP
69282         DXN=TAUN*PYP(IWN,8)/DMN
69283         DX=DXP+DXN
69284         SIGW=1.0D0/(1.0D0/PARJ(93)+REAL(MSTJ(56))*DX)
69285         IF(PARJ(94).LT.0.0D0) SIGW=1.0D0/(1.0D0/SIGW-1.0D0/PARJ(94))
69286       ENDIF
69287  
69288 C...Add separation between strings.
69289       IF(PARJ(94).GT.0.0D0) THEN
69290         SIGW=1.0D0/(1.0D0/SIGW+1.0D0/PARJ(94))
69291         IWP=-1
69292         IWN=-1
69293       ENDIF
69294  
69295       IF(MSTJ(57).EQ.1.AND.MSTJ(54).LT.0) THEN
69296         DO 220 IBE=1,MIN(9,MSTJ(52))
69297           DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)
69298             Q2MIN=PECM**2
69299             I1=K(I1M,1)
69300             DO 200 I2M=NBE(IBE-1)+1,NBE(IBE)
69301               IF(I2M.EQ.I1M) GOTO 200
69302               I2=K(I2M,1)
69303               Q2=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-
69304      &        (P(I1,2)+P(I2,2))**2-(P(I1,3)+P(I2,3))**2-
69305      &        (P(I1,5)+P(I2,5))**2
69306               IF(Q2.GT.0.0D0.AND.Q2.LT.Q2MIN) THEN
69307                 Q2MIN=Q2
69308               ENDIF
69309   200       CONTINUE
69310             P(I1M,5)=Q2MIN
69311   210     CONTINUE
69312   220   CONTINUE
69313       ENDIF
69314  
69315 C...Tabulate integral for subsequent momentum shift.
69316       DO 400 IBE=1,MIN(9,MSTJ(52))
69317         IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 270
69318         IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2))
69319      &  .LE.1) GOTO 270
69320         IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5),
69321      &  NBE(7)-NBE(6)).LE.1) GOTO 270
69322         IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 270
69323         IF(IBE.EQ.1) PMHQ=2D0*PYMASS(211)
69324         IF(IBE.EQ.4) PMHQ=2D0*PYMASS(321)
69325         IF(IBE.EQ.8) PMHQ=2D0*PYMASS(221)
69326         IF(IBE.EQ.9) PMHQ=2D0*PYMASS(331)
69327         QDEL=0.1D0*MIN(PMHQ,PARJ(93))
69328         QDEL3=0.1D0*MIN(PMHQ,PARJ(93)*3.0D0)
69329         QDELW=0.1D0*MIN(PMHQ,SIGW)
69330         QDEL3W=0.1D0*MIN(PMHQ,SIGW*3.0D0)
69331         IF(MSTJ(51).EQ.1) THEN
69332           NBIN=MIN(100,NINT(9D0*PARJ(93)/QDEL))
69333           NBIN3=MIN(100,NINT(27D0*PARJ(93)/QDEL3))
69334           NBINW=MIN(100,NINT(9D0*SIGW/QDELW))
69335           NBIN3W=MIN(100,NINT(27D0*SIGW/QDEL3W))
69336           BEEX=EXP(0.5D0*QDEL/PARJ(93))
69337           BEEX3=EXP(0.5D0*QDEL3/(3.0D0*PARJ(93)))
69338           BEEXW=EXP(0.5D0*QDELW/SIGW)
69339           BEEX3W=EXP(0.5D0*QDEL3W/(3.0D0*SIGW))
69340           BERT=EXP(-QDEL/PARJ(93))
69341           BERT3=EXP(-QDEL3/(3.0D0*PARJ(93)))
69342           BERTW=EXP(-QDELW/SIGW)
69343           BERT3W=EXP(-QDEL3W/(3.0D0*SIGW))
69344         ELSE
69345           NBIN=MIN(100,NINT(3D0*PARJ(93)/QDEL))
69346           NBIN3=MIN(100,NINT(9D0*PARJ(93)/QDEL3))
69347           NBINW=MIN(100,NINT(3D0*SIGW/QDELW))
69348           NBIN3W=MIN(100,NINT(9D0*SIGW/QDEL3W))
69349         ENDIF
69350         DO 230 IBIN=1,NBIN
69351           QBIN=QDEL*(IBIN-0.5D0)
69352           BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12D0)/SQRT(QBIN**2+PMHQ**2)
69353           IF(MSTJ(51).EQ.1) THEN
69354             BEEX=BEEX*BERT
69355             BEI(IBIN)=BEI(IBIN)*BEEX
69356           ELSE
69357             BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2)
69358           ENDIF
69359           IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1)
69360   230   CONTINUE
69361         DO 240 IBIN=1,NBIN3
69362           QBIN=QDEL3*(IBIN-0.5D0)
69363           BEI3(IBIN)=QDEL3*(QBIN**2+QDEL3**2/12D0)/SQRT(QBIN**2+PMHQ**2)
69364           IF(MSTJ(51).EQ.1) THEN
69365             BEEX3=BEEX3*BERT3
69366             BEI3(IBIN)=BEI3(IBIN)*BEEX3
69367           ELSE
69368             BEI3(IBIN)=BEI3(IBIN)*EXP(-(QBIN/(3.0D0*PARJ(93)))**2)
69369           ENDIF
69370           IF(IBIN.GE.2) BEI3(IBIN)=BEI3(IBIN)+BEI3(IBIN-1)
69371   240   CONTINUE
69372         DO 250 IBIN=1,NBINW
69373           QBIN=QDELW*(IBIN-0.5D0)
69374           BEIW(IBIN)=QDELW*(QBIN**2+QDELW**2/12D0)/SQRT(QBIN**2+PMHQ**2)
69375           IF(MSTJ(51).EQ.1) THEN
69376             BEEXW=BEEXW*BERTW
69377             BEIW(IBIN)=BEIW(IBIN)*BEEXW
69378           ELSE
69379             BEIW(IBIN)=BEIW(IBIN)*EXP(-(QBIN/SIGW)**2)
69380           ENDIF
69381           IF(IBIN.GE.2) BEIW(IBIN)=BEIW(IBIN)+BEIW(IBIN-1)
69382   250   CONTINUE
69383         DO 260 IBIN=1,NBIN3W
69384           QBIN=QDEL3W*(IBIN-0.5D0)
69385           BEI3W(IBIN)=QDEL3W*(QBIN**2+QDEL3W**2/12D0)/
69386      &    SQRT(QBIN**2+PMHQ**2)
69387           IF(MSTJ(51).EQ.1) THEN
69388             BEEX3W=BEEX3W*BERT3W
69389             BEI3W(IBIN)=BEI3W(IBIN)*BEEX3W
69390           ELSE
69391             BEI3W(IBIN)=BEI3W(IBIN)*EXP(-(QBIN/(3.0D0*SIGW))**2)
69392           ENDIF
69393           IF(IBIN.GE.2) BEI3W(IBIN)=BEI3W(IBIN)+BEI3W(IBIN-1)
69394   260   CONTINUE
69395  
69396 C...Loop through particle pairs and find old relative momentum.
69397   270   DO 390 I1M=NBE(IBE-1)+1,NBE(IBE)-1
69398           I1=K(I1M,1)
69399           DO 380 I2M=I1M+1,NBE(IBE)
69400             IF(MSTJ(53).EQ.1.AND.K(I1M,5).NE.K(I2M,5)) GOTO 380
69401             IF(MSTJ(53).EQ.2.AND.K(I1M,5).EQ.K(I2M,5)) GOTO 380
69402             I2=K(I2M,1)
69403             Q2OLD=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+
69404      &      P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2
69405             IF(Q2OLD.LE.0.0D0) GOTO 380
69406             QOLD=SQRT(Q2OLD)
69407  
69408 C...Calculate new relative momentum.
69409             QMOV=0.0D0
69410             QMOV3=0.0D0
69411             QMOVW=0.0D0
69412             QMOV3W=0.0D0
69413             IF(QOLD.LT.1D-3*QDEL) THEN
69414               GOTO 280
69415             ELSEIF(QOLD.LE.QDEL) THEN
69416               QMOV=QOLD/3D0
69417             ELSEIF(QOLD.LT.(NBIN-0.1D0)*QDEL) THEN
69418               RBIN=QOLD/QDEL
69419               IBIN=RBIN
69420               RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1)
69421               QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))*
69422      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
69423             ELSE
69424               QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69425             ENDIF
69426   280       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV))**(2D0/3D0)
69427             IF(QOLD.LT.1D-3*QDEL3) THEN
69428               GOTO 290
69429             ELSEIF(QOLD.LE.QDEL3) THEN
69430               QMOV3=QOLD/3D0
69431             ELSEIF(QOLD.LT.(NBIN3-0.1D0)*QDEL3) THEN
69432               RBIN3=QOLD/QDEL3
69433               IBIN3=RBIN3
69434               RINP3=(RBIN3**3-IBIN3**3)/(3*IBIN3*(IBIN3+1)+1)
69435               QMOV3=(BEI3(IBIN3)+RINP3*(BEI3(IBIN3+1)-BEI3(IBIN3)))*
69436      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
69437             ELSE
69438               QMOV3=BEI3(NBIN3)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69439             ENDIF
69440   290       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3))**(2D0/3D0)
69441             RSCALE=1.0D0
69442             IF(MSTJ(54).EQ.2)
69443      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*PARJ(93)))**2)
69444             IF((IWP.NE.-1.AND.MSTJ(56).LE.0).OR.IWP.EQ.0.OR.IWN.EQ.0.OR.
69445      &      K(I1M,5).EQ.K(I2M,5)) GOTO 320
69446  
69447             IF(QOLD.LT.1D-3*QDELW) THEN
69448               GOTO 300
69449             ELSEIF(QOLD.LE.QDELW) THEN
69450               QMOVW=QOLD/3D0
69451             ELSEIF(QOLD.LT.(NBINW-0.1D0)*QDELW) THEN
69452               RBINW=QOLD/QDELW
69453               IBINW=RBINW
69454               RINPW=(RBINW**3-IBINW**3)/(3*IBINW*(IBINW+1)+1)
69455               QMOVW=(BEIW(IBINW)+RINPW*(BEIW(IBINW+1)-BEIW(IBINW)))*
69456      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
69457             ELSE
69458               QMOVW=BEIW(NBINW)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69459             ENDIF
69460   300       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOVW))**(2D0/3D0)
69461             IF(QOLD.LT.1D-3*QDEL3W) THEN
69462               GOTO 310
69463             ELSEIF(QOLD.LE.QDEL3W) THEN
69464               QMOV3W=QOLD/3D0
69465             ELSEIF(QOLD.LT.(NBIN3W-0.1D0)*QDEL3W) THEN
69466               RBIN3W=QOLD/QDEL3W
69467               IBIN3W=RBIN3W
69468               RINP3W=(RBIN3W**3-IBIN3W**3)/(3*IBIN3W*(IBIN3W+1)+1)
69469               QMOV3W=(BEI3W(IBIN3W)+RINP3W*(BEI3W(IBIN3W+1)-
69470      &        BEI3W(IBIN3W)))*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69471             ELSE
69472               QMOV3W=BEI3W(NBIN3W)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69473             ENDIF
69474   310       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3W))**(2D0/3D0)
69475             IF(MSTJ(54).EQ.2)
69476      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*SIGW))**2)
69477  
69478   320       CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW)
69479             DO 330 J=1,3
69480               P(I1M,J)=P(I1M,J)+P(NMAX+1,J)
69481               P(I2M,J)=P(I2M,J)+P(NMAX+2,J)
69482   330       CONTINUE
69483             IF(MSTJ(54).GE.1) THEN
69484               CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW3)
69485               DO 340 J=1,3
69486                 V(I1M,J)=V(I1M,J)+P(NMAX+1,J)*RSCALE
69487                 V(I2M,J)=V(I2M,J)+P(NMAX+2,J)*RSCALE
69488   340         CONTINUE
69489             ELSEIF(MSTJ(54).LE.-1) THEN
69490               EDEL=P(I1,4)+P(I2,4)-
69491      &        SQRT(MAX(Q2NEW-Q2OLD+(P(I1,4)+P(I2,4))**2,0.0D0))
69492               A2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
69493      &        (P(I1,3)-P(I2,3))**2
69494               WMAX=-1.0D20
69495               MI3=0
69496               MI4=0
69497               S12=SDIP(I1,I2)
69498               SM1=(P(I1,5)+SMMIN)**2
69499               DO 360 I3M=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
69500                 IF(I3M.EQ.I1M.OR.I3M.EQ.I2M) GOTO 360
69501                 IF(MSTJ(53).EQ.1.AND.K(I3M,5).NE.K(I1M,5)) GOTO 360
69502                 IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
69503      &          K(I3M,5).NE.K(I1M,5)) GOTO 360
69504                 I3=K(I3M,1)
69505                 IF(K(I3,2).EQ.K(I1,2)) GOTO 360
69506                 S13=SDIP(I1,I3)
69507                 S23=SDIP(I2,I3)
69508                 SM3=(P(I3,5)+SMMIN)**2
69509                 IF(MSTJ(54).EQ.-2) THEN
69510                   WI=(MIN(S12*SM3,S13*MIN(SM1,SM3),
69511      &            S23*MIN(SM1,SM3))*SM1)
69512                 ELSE
69513                   WI=((P(I1,4)+P(I2,4)+P(I3,4))**2-
69514      &            (P(I1,3)+P(I2,3)+P(I3,3))**2-
69515      &            (P(I1,2)+P(I2,2)+P(I3,2))**2-
69516      &            (P(I1,1)+P(I2,1)+P(I3,1))**2)
69517                 ENDIF
69518                 IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0) THEN
69519                   IF (WMAX*WI.GE.(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2))))
69520      &                 GOTO 360
69521                 ELSE
69522                   IF(WMAX*WI.GE.1.0) GOTO 360
69523                 ENDIF
69524                 DO 350 I4M=I3M+1,NBE(MIN(10,MSTJ(52)+1))
69525                   IF(I4M.EQ.I1M.OR.I4M.EQ.I2M) GOTO 350
69526                   IF(MSTJ(53).EQ.1.AND.K(I4M,5).NE.K(I1M,5)) GOTO 350
69527                   IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
69528      &            K(I4M,5).NE.K(I1M,5)) GOTO 350
69529                   I4=K(I4M,1)
69530                   IF(K(I3,2).EQ.K(I4,2).OR.K(I4,2).EQ.K(I1,2))
69531      &            GOTO 350
69532                   IF((P(I3,4)+P(I4,4)+EDEL)**2.LT.
69533      &            (P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
69534      &            (P(I3,3)+P(I4,3))**2+(P(I3,5)+P(I4,5))**2)
69535      &            GOTO 350
69536                   IF(MSTJ(54).EQ.-2) THEN
69537                     S14=SDIP(I1,I4)
69538                     S24=SDIP(I2,I4)
69539                     S34=SDIP(I3,I4)
69540                     W=S12*MIN(MIN(S23,S24),MIN(S13,S14))*S34
69541                     W=MIN(W,S13*MIN(MIN(S23,S34),S12)*S24)
69542                     W=MIN(W,S14*MIN(MIN(S24,S34),S12)*S23)
69543                     W=MIN(W,MIN(S23,S24)*S13*S14)
69544                     W=1.0D0/W
69545                   ELSE
69546 C...weight=1-cos(theta)/mtot2
69547                     S1234=(P(I1,4)+P(I2,4)+P(I3,4)+P(I4,4))**2-
69548      &              (P(I1,3)+P(I2,3)+P(I3,3)+P(I4,3))**2-
69549      &              (P(I1,2)+P(I2,2)+P(I3,2)+P(I4,2))**2-
69550      &              (P(I1,1)+P(I2,1)+P(I3,1)+P(I4,1))**2
69551                     W=1.0D0/S1234
69552                     IF(W.LE.WMAX) GOTO 350
69553                   ENDIF
69554                   IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0)
69555      &            W=W*(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2)))
69556                   IF(MSTJ(57).EQ.1.AND.P(I4M,5).GT.0)
69557      &            W=W*(1.0D0-EXP(-P(I4M,5)/(PARJ(93)**2)))
69558                   IF(W.LE.WMAX) GOTO 350
69559                   MI3=I3M
69560                   MI4=I4M
69561                   WMAX=W
69562   350           CONTINUE
69563   360         CONTINUE
69564               IF(MI4.EQ.0) GOTO 380
69565               I3=K(MI3,1)
69566               I4=K(MI4,1)
69567               EOLD=P(I3,4)+P(I4,4)
69568               ENEW=EOLD+EDEL
69569               P2=(P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
69570      &        (P(I3,3)+P(I4,3))**2
69571               Q2NEWP=MAX(0.0D0,ENEW**2-P2-(P(I3,5)+P(I4,5))**2)
69572               Q2OLDP=MAX(0.0D0,EOLD**2-P2-(P(I3,5)+P(I4,5))**2)
69573               CALL PYBESQ(I3,I4,NMAX,Q2OLDP,Q2NEWP)
69574               DO 370 J=1,3
69575                 V(MI3,J)=V(MI3,J)+P(NMAX+1,J)
69576                 V(MI4,J)=V(MI4,J)+P(NMAX+2,J)
69577   370         CONTINUE
69578             ENDIF
69579   380     CONTINUE
69580   390   CONTINUE
69581   400 CONTINUE
69582  
69583 C...Shift momenta and recalculate energies.
69584       ESUMP=0.0D0
69585       ESUM=0.0D0
69586       PROD=0.0D0
69587       DO 430 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
69588         I=K(IM,1)
69589         ESUMP=ESUMP+P(I,4)
69590         DO 410 J=1,3
69591           P(I,J)=P(I,J)+P(IM,J)
69592   410   CONTINUE
69593         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
69594         ESUM=ESUM+P(I,4)
69595         DO 420 J=1,3
69596           PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
69597   420   CONTINUE
69598   430 CONTINUE
69599  
69600       PARJ(96)=0.0D0
69601       IF(MSTJ(54).NE.0.AND.PROD.NE.0.0D0) THEN
69602   440   ALPHA=(ESUMP-ESUM)/PROD
69603         PARJ(96)=PARJ(96)+ALPHA
69604         PROD=0.0D0
69605         ESUM=0.0D0
69606         DO 470 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
69607           I=K(IM,1)
69608           DO 450 J=1,3
69609             P(I,J)=P(I,J)+ALPHA*V(IM,J)
69610   450     CONTINUE
69611           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
69612           ESUM=ESUM+P(I,4)
69613           DO 460 J=1,3
69614             PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
69615   460     CONTINUE
69616   470   CONTINUE
69617         IF(PROD.NE.0.0D0.AND.ABS(ESUMP-ESUM)/PECM.GT.0.00001D0)
69618      &  GOTO 440
69619       ENDIF
69620  
69621 C...Rescale all momenta for energy conservation.
69622       PES=0D0
69623       PQS=0D0
69624       DO 480 I=1,N
69625         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 480
69626         PES=PES+P(I,4)
69627         PQS=PQS+P(I,5)**2/P(I,4)
69628   480 CONTINUE
69629       PARJ(95)=PES-PECM
69630       FAC=(PECM-PQS)/(PES-PQS)
69631       DO 500 I=1,N
69632         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 500
69633         DO 490 J=1,3
69634           P(I,J)=FAC*P(I,J)
69635   490   CONTINUE
69636         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
69637   500 CONTINUE
69638  
69639 C...Boost back to correct reference frame.
69640   510 CALL PYROBO(0,0,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4))
69641       DO 520 I=1,N
69642         IF(K(I,1).LT.0) K(I,1)=-K(I,1)
69643   520 CONTINUE
69644  
69645       RETURN
69646       END
69647  
69648 C*********************************************************************
69649  
69650 C...PYBESQ
69651 C...Calculates the momentum shift in a system of two particles assuming
69652 C...the relative momentum squared should be shifted to Q2NEW. NI is the
69653 C...last position occupied in /PYJETS/.
69654  
69655       SUBROUTINE PYBESQ(I1,I2,NI,Q2OLD,Q2NEW)
69656  
69657 C...Double precision and integer declarations.
69658       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69659       IMPLICIT INTEGER(I-N)
69660       INTEGER PYK,PYCHGE,PYCOMP
69661 C...Parameter statement to help give large particle numbers.
69662       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
69663      &KEXCIT=4000000,KDIMEN=5000000)
69664 C...Commonblocks.
69665       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
69666       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69667       SAVE /PYJETS/,/PYDAT1/
69668 C...Local arrays and data.
69669       DIMENSION DP(5)
69670       SAVE HC1
69671  
69672       IF(MSTJ(55).EQ.0) THEN
69673         DQ2=Q2NEW-Q2OLD
69674         DP2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
69675      &  (P(I1,3)-P(I2,3))**2
69676         DP12=P(I1,1)**2+P(I1,2)**2+P(I1,3)**2
69677      &  -P(I2,1)**2-P(I2,2)**2-P(I2,3)**2
69678         SE=P(I1,4)+P(I2,4)
69679         DE=P(I1,4)-P(I2,4)
69680         DQ2SE=DQ2+SE**2
69681         DA=SE*DE*DP12-DP2*DQ2SE
69682         DB=DP2*DQ2SE-DP12**2
69683         HA=(DA+SQRT(MAX(DA**2+DQ2*(DQ2+SE**2-DE**2)*DB,0D0)))/(2D0*DB)
69684         DO 100 J=1,3
69685           PD=HA*(P(I1,J)-P(I2,J))
69686           P(NI+1,J)=PD
69687           P(NI+2,J)=-PD
69688   100   CONTINUE
69689         RETURN
69690       ENDIF
69691  
69692       K(NI+1,1)=1
69693       K(NI+2,1)=1
69694       DO 110 J=1,5
69695         P(NI+1,J)=P(I1,J)
69696         P(NI+2,J)=P(I2,J)
69697         DP(J)=P(I1,J)+P(I2,J)
69698   110 CONTINUE
69699  
69700 C...Boost to cms and rotate first particle to z-axis
69701       CALL PYROBO(NI+1,NI+2,0.0D0,0.0D0,
69702      &-DP(1)/DP(4),-DP(2)/DP(4),-DP(3)/DP(4))
69703       PHI=PYANGL(P(NI+1,1),P(NI+1,2))
69704       THE=PYANGL(P(NI+1,3),SQRT(P(NI+1,1)**2+P(NI+1,2)**2))
69705       S=Q2NEW+(P(I1,5)+P(I2,5))**2
69706       PZ=0.5D0*SQRT(Q2NEW*(S-(P(I1,5)-P(I2,5))**2)/S)
69707       P(NI+1,1)=0.0D0
69708       P(NI+1,2)=0.0D0
69709       P(NI+1,3)=PZ
69710       P(NI+1,4)=SQRT(PZ**2+P(I1,5)**2)
69711       P(NI+2,1)=0.0D0
69712       P(NI+2,2)=0.0D0
69713       P(NI+2,3)=-PZ
69714       P(NI+2,4)=SQRT(PZ**2+P(I2,5)**2)
69715       DP(4)=SQRT(DP(1)**2+DP(2)**2+DP(3)**2+S)
69716       CALL PYROBO(NI+1,NI+2,THE,PHI,
69717      &DP(1)/DP(4),DP(2)/DP(4),DP(3)/DP(4))
69718  
69719       DO 120 J=1,3
69720         P(NI+1,J)=P(NI+1,J)-P(I1,J)
69721         P(NI+2,J)=P(NI+2,J)-P(I2,J)
69722   120 CONTINUE
69723  
69724       RETURN
69725       END
69726  
69727 C*********************************************************************
69728  
69729 C...PYMASS
69730 C...Gives the mass of a particle/parton.
69731  
69732       FUNCTION PYMASS(KF)
69733  
69734 C...Double precision and integer declarations.
69735       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69736       IMPLICIT INTEGER(I-N)
69737       INTEGER PYK,PYCHGE,PYCOMP
69738 C...Commonblocks.
69739       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69740       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69741       SAVE /PYDAT1/,/PYDAT2/
69742  
69743 C...Reset variables. Compressed code. Special case for popcorn diquarks.
69744       PYMASS=0D0
69745       KFA=IABS(KF)
69746       KC=PYCOMP(KF)
69747       IF(KC.EQ.0) THEN
69748         MSTJ(93)=0
69749         RETURN
69750       ENDIF
69751  
69752 C...Guarantee use of constituent masses for internal checks.
69753       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.
69754      &(KFA.LE.10.OR.MOD(KFA/10,10).EQ.0)) THEN
69755         IF(KFA.LE.5) THEN
69756           PYMASS=PARF(100+KFA)
69757           IF(MSTJ(93).EQ.2) PYMASS=MAX(0D0,PYMASS-PARF(121))
69758         ELSEIF(KFA.LE.10) THEN
69759           PYMASS=PMAS(KFA,1)
69760         ELSEIF(MSTJ(93).EQ.1) THEN
69761           PYMASS=PARF(100+MOD(KFA/1000,10))+PARF(100+MOD(KFA/100,10))
69762         ELSE
69763           PYMASS=MAX(0D0,PMAS(KC,1)-PARF(122)-2D0*PARF(112)/3D0)
69764         ENDIF
69765  
69766 C...Other masses can be read directly off table.
69767       ELSE
69768         PYMASS=PMAS(KC,1)
69769       ENDIF
69770  
69771 C...Optional mass broadening according to truncated Breit-Wigner
69772 C...(either in m or in m^2).
69773       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1D-4) THEN
69774         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN
69775           PYMASS=PYMASS+0.5D0*PMAS(KC,2)*TAN((2D0*PYR(0)-1D0)*
69776      &    ATAN(2D0*PMAS(KC,3)/PMAS(KC,2)))
69777         ELSE
69778           PM0=PYMASS
69779           PMLOW=ATAN((MAX(0D0,PM0-PMAS(KC,3))**2-PM0**2)/
69780      &    (PM0*PMAS(KC,2)))
69781           PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2)))
69782           PYMASS=SQRT(MAX(0D0,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+
69783      &    (PMUPP-PMLOW)*PYR(0))))
69784         ENDIF
69785       ENDIF
69786       MSTJ(93)=0
69787  
69788       RETURN
69789       END
69790  
69791 C*********************************************************************
69792  
69793 C...PYMRUN
69794 C...Gives the running, current-algebra mass of a d, u, s, c or b quark,
69795 C...for Higgs couplings. Everything else sent on to PYMASS.
69796  
69797       FUNCTION PYMRUN(KF,Q2)
69798  
69799 C...Double precision and integer declarations.
69800       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69801       IMPLICIT INTEGER(I-N)
69802       INTEGER PYK,PYCHGE,PYCOMP
69803 C...Commonblocks.
69804       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69805       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69806       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
69807       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/
69808  
69809 C...Most masses not handled here.
69810       KFA=IABS(KF)
69811       IF(KFA.EQ.0.OR.KFA.GT.6) THEN
69812         PYMRUN=PYMASS(KF)
69813  
69814 C...Current-algebra masses, but no Q2 dependence.
69815       ELSEIF(MSTP(37).NE.1.OR.MSTP(2).LE.0) THEN
69816         PYMRUN=PARF(90+KFA)
69817  
69818 C...Running current-algebra masses.
69819       ELSE
69820         AS=PYALPS(Q2)
69821         PYMRUN=PARF(90+KFA)*
69822      &  (LOG(MAX(4D0,PARP(37)**2*PARF(90+KFA)**2/PARU(117)**2))/
69823      &  LOG(MAX(4D0,Q2/PARU(117)**2)))**(12D0/(33D0-2D0*MSTU(118)))
69824       ENDIF
69825  
69826       RETURN
69827       END
69828  
69829 C*********************************************************************
69830  
69831 C...PYNAME
69832 C...Gives the particle/parton name as a character string.
69833  
69834       SUBROUTINE PYNAME(KF,CHAU)
69835  
69836 C...Double precision and integer declarations.
69837       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69838       IMPLICIT INTEGER(I-N)
69839       INTEGER PYK,PYCHGE,PYCOMP
69840 C...Commonblocks.
69841       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69842       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69843       COMMON/PYDAT4/CHAF(500,2)
69844       CHARACTER CHAF*16
69845       SAVE /PYDAT1/,/PYDAT2/,/PYDAT4/
69846 C...Local character variable.
69847       CHARACTER CHAU*16
69848  
69849 C...Read out code with distinction particle/antiparticle.
69850       CHAU=' '
69851       KC=PYCOMP(KF)
69852       IF(KC.NE.0) CHAU=CHAF(KC,(3-ISIGN(1,KF))/2)
69853  
69854  
69855       RETURN
69856       END
69857  
69858 C*********************************************************************
69859  
69860 C...PYCHGE
69861 C...Gives three times the charge for a particle/parton.
69862  
69863       FUNCTION PYCHGE(KF)
69864  
69865 C...Double precision and integer declarations.
69866       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69867       IMPLICIT INTEGER(I-N)
69868       INTEGER PYK,PYCHGE,PYCOMP
69869 C...Commonblocks.
69870       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69871       SAVE /PYDAT2/
69872  
69873 C...Read out charge and change sign for antiparticle.
69874       PYCHGE=0
69875       KC=PYCOMP(KF)
69876       IF(KC.NE.0) PYCHGE=KCHG(KC,1)*ISIGN(1,KF)
69877  
69878       RETURN
69879       END
69880  
69881 C*********************************************************************
69882  
69883 C...PYCOMP
69884 C...Compress the standard KF codes for use in mass and decay arrays;
69885 C...also checks whether a given code actually is defined.
69886  
69887       FUNCTION PYCOMP(KF)
69888  
69889 C...Double precision and integer declarations.
69890       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69891       IMPLICIT INTEGER(I-N)
69892       INTEGER PYK,PYCHGE,PYCOMP
69893 C...Commonblocks.
69894       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69895       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69896       SAVE /PYDAT1/,/PYDAT2/
69897 C...Local arrays and saved data.
69898       DIMENSION KFORD(100:500),KCORD(101:500)
69899       SAVE KFORD,KCORD,NFORD,KFLAST,KCLAST
69900  
69901 C...Whenever necessary reorder codes for faster search.
69902       IF(MSTU(20).EQ.0) THEN
69903         NFORD=100
69904         KFORD(100)=0
69905         DO 120 I=101,500
69906           KFA=KCHG(I,4)
69907           IF(KFA.LE.100) GOTO 120
69908           NFORD=NFORD+1
69909           DO 100 I1=NFORD-1,0,-1
69910             IF(KFA.GE.KFORD(I1)) GOTO 110
69911             KFORD(I1+1)=KFORD(I1)
69912             KCORD(I1+1)=KCORD(I1)
69913   100     CONTINUE
69914   110     KFORD(I1+1)=KFA
69915           KCORD(I1+1)=I
69916   120   CONTINUE
69917         MSTU(20)=1
69918         KFLAST=0
69919         KCLAST=0
69920       ENDIF
69921  
69922 C...Fast action if same code as in latest call.
69923       IF(KF.EQ.KFLAST) THEN
69924         PYCOMP=KCLAST
69925         RETURN
69926       ENDIF
69927  
69928 C...Starting values. Remove internal diquark flags.
69929       PYCOMP=0
69930       KFA=IABS(KF)
69931       IF(MOD(KFA/10,10).EQ.0.AND.KFA.LT.100000
69932      &     .AND.MOD(KFA/1000,10).GT.0) KFA=MOD(KFA,10000)
69933  
69934 C...Simple cases: direct translation.
69935       IF(KFA.GT.KFORD(NFORD)) THEN
69936       ELSEIF(KFA.LE.100) THEN
69937         PYCOMP=KFA
69938  
69939 C...Else binary search.
69940       ELSE
69941         IMIN=100
69942         IMAX=NFORD+1
69943   130   IAVG=(IMIN+IMAX)/2
69944         IF(KFORD(IAVG).GT.KFA) THEN
69945           IMAX=IAVG
69946           IF(IMAX.GT.IMIN+1) GOTO 130
69947         ELSEIF(KFORD(IAVG).LT.KFA) THEN
69948           IMIN=IAVG
69949           IF(IMAX.GT.IMIN+1) GOTO 130
69950         ELSE
69951           PYCOMP=KCORD(IAVG)
69952         ENDIF
69953       ENDIF
69954  
69955 C...Check if antiparticle allowed.
69956       IF(PYCOMP.NE.0.AND.KF.LT.0) THEN
69957         IF(KCHG(PYCOMP,3).EQ.0) PYCOMP=0
69958       ENDIF
69959  
69960 C...Save codes for possible future fast action.
69961       KFLAST=KF
69962       KCLAST=PYCOMP
69963  
69964       RETURN
69965       END
69966  
69967 C*********************************************************************
69968  
69969 C...PYERRM
69970 C...Informs user of errors in program execution.
69971  
69972       SUBROUTINE PYERRM(MERR,CHMESS)
69973  
69974 C...Double precision and integer declarations.
69975       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69976       IMPLICIT INTEGER(I-N)
69977       INTEGER PYK,PYCHGE,PYCOMP
69978 C...Commonblocks.
69979       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
69980       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69981       SAVE /PYJETS/,/PYDAT1/
69982 C...Local character variable.
69983       CHARACTER CHMESS*(*)
69984  
69985 C...Write first few warnings, then be silent.
69986       IF(MERR.LE.10) THEN
69987         MSTU(27)=MSTU(27)+1
69988         MSTU(28)=MERR
69989         IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000)
69990      &  MERR,MSTU(31),CHMESS
69991  
69992 C...Write first few errors, then be silent or stop program.
69993       ELSEIF(MERR.LE.20) THEN
69994         IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)+1
69995         MSTU(30)=MSTU(30)+1
69996         MSTU(24)=MERR-10
69997         IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100)
69998      &  MERR-10,MSTU(31),CHMESS
69999         IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN
70000           WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS
70001           WRITE(MSTU(11),5200)
70002           IF(MERR.NE.17) CALL PYLIST(2)
70003           CALL PYSTOP(3)
70004         ENDIF
70005  
70006 C...Stop program in case of irreparable error.
70007       ELSE
70008         WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS
70009         CALL PYSTOP(3)
70010       ENDIF
70011  
70012 C...Formats for output.
70013  5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I9,
70014      &' PYEXEC calls:'/5X,A)
70015  5100 FORMAT(/5X,'Error type',I2,' has occured after',I9,
70016      &' PYEXEC calls:'/5X,A)
70017  5200 FORMAT(5X,'Execution will be stopped after listing of last ',
70018      &'event!')
70019  5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I9,
70020      &' PYEXEC calls:'/5X,A/5X,'Execution will now be stopped!')
70021  
70022       RETURN
70023       END
70024  
70025 C*********************************************************************
70026  
70027 C...PYALEM
70028 C...Calculates the running alpha_electromagnetic.
70029  
70030       FUNCTION PYALEM(Q2)
70031  
70032 C...Double precision and integer declarations.
70033       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70034       IMPLICIT INTEGER(I-N)
70035       INTEGER PYK,PYCHGE,PYCOMP
70036 C...Commonblocks.
70037       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70038       SAVE /PYDAT1/
70039  
70040 C...Calculate real part of photon vacuum polarization.
70041 C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions.
70042 C...For hadrons use parametrization of H. Burkhardt et al.
70043 C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131.
70044       AEMPI=PARU(101)/(3D0*PARU(1))
70045       IF(MSTU(101).LE.0.OR.Q2.LT.2D-6) THEN
70046         RPIGG=0D0
70047       ELSEIF(MSTU(101).EQ.2.AND.Q2.LT.PARU(104)) THEN
70048         RPIGG=0D0
70049       ELSEIF(MSTU(101).EQ.2) THEN
70050         RPIGG=1D0-PARU(101)/PARU(103)
70051       ELSEIF(Q2.LT.0.09D0) THEN
70052         RPIGG=AEMPI*(13.4916D0+LOG(Q2))+0.00835D0*LOG(1D0+Q2)
70053       ELSEIF(Q2.LT.9D0) THEN
70054         RPIGG=AEMPI*(16.3200D0+2D0*LOG(Q2))+
70055      &  0.00238D0*LOG(1D0+3.927D0*Q2)
70056       ELSEIF(Q2.LT.1D4) THEN
70057         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00165D0+
70058      &  0.00299D0*LOG(1D0+Q2)
70059       ELSE
70060         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00221D0+
70061      &  0.00293D0*LOG(1D0+Q2)
70062       ENDIF
70063  
70064 C...Calculate running alpha_em.
70065       PYALEM=PARU(101)/(1D0-RPIGG)
70066       PARU(108)=PYALEM
70067  
70068       RETURN
70069       END
70070  
70071 C*********************************************************************
70072  
70073 C...PYALPS
70074 C...Gives the value of alpha_strong.
70075  
70076       FUNCTION PYALPS(Q2)
70077  
70078 C...Double precision and integer declarations.
70079       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70080       IMPLICIT INTEGER(I-N)
70081       INTEGER PYK,PYCHGE,PYCOMP
70082 C...Commonblocks.
70083       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70084       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
70085       SAVE /PYDAT1/,/PYDAT2/
70086 C...Coefficients for second-order threshold matching.
70087 C...From W.J. Marciano, Phys. Rev. D29 (1984) 580.
70088       DIMENSION STEPDN(6),STEPUP(6)
70089 c      DATA STEPDN/0D0,0D0,(2D0*107D0/2025D0),(2D0*963D0/14375D0),
70090 c     &(2D0*321D0/3703D0),0D0/
70091 c      DATA STEPUP/0D0,0D0,0D0,(-2D0*107D0/1875D0),
70092 c     &(-2D0*963D0/13225D0),(-2D0*321D0/3381D0)/
70093       DATA STEPDN/0D0,0D0,0.10568D0,0.13398D0,0.17337D0,0D0/
70094       DATA STEPUP/0D0,0D0,0D0,-0.11413D0,-0.14563D0,-0.18988D0/
70095  
70096 C...Constant alpha_strong trivial. Pick artificial Lambda.
70097       IF(MSTU(111).LE.0) THEN
70098         PYALPS=PARU(111)
70099         MSTU(118)=MSTU(112)
70100         PARU(117)=0.2D0
70101         IF(Q2.GT.0.04D0) PARU(117)=SQRT(Q2)*EXP(-6D0*PARU(1)/
70102      &  ((33D0-2D0*MSTU(112))*PARU(111)))
70103         PARU(118)=PARU(111)
70104         RETURN
70105       ENDIF
70106  
70107 C...Find effective Q2, number of flavours and Lambda.
70108       Q2EFF=Q2
70109       IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114))
70110       NF=MSTU(112)
70111       ALAM2=PARU(112)**2
70112   100 IF(NF.GT.MAX(3,MSTU(113))) THEN
70113         Q2THR=PARU(113)*PMAS(NF,1)**2
70114         IF(Q2EFF.LT.Q2THR) THEN
70115           NF=NF-1
70116           Q2RAT=Q2THR/ALAM2
70117           ALAM2=ALAM2*Q2RAT**(2D0/(33D0-2D0*NF))
70118           IF(MSTU(111).EQ.2) ALAM2=ALAM2*LOG(Q2RAT)**STEPDN(NF)
70119           GOTO 100
70120         ENDIF
70121       ENDIF
70122   110 IF(NF.LT.MIN(6,MSTU(114))) THEN
70123         Q2THR=PARU(113)*PMAS(NF+1,1)**2
70124         IF(Q2EFF.GT.Q2THR) THEN
70125           NF=NF+1
70126           Q2RAT=Q2THR/ALAM2
70127           ALAM2=ALAM2*Q2RAT**(-2D0/(33D0-2D0*NF))
70128           IF(MSTU(111).EQ.2) ALAM2=ALAM2*LOG(Q2RAT)**STEPUP(NF)
70129           GOTO 110
70130         ENDIF
70131       ENDIF
70132       IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2
70133       PARU(117)=SQRT(ALAM2)
70134  
70135 C...Evaluate first or second order alpha_strong.
70136       B0=(33D0-2D0*NF)/6D0
70137       ALGQ=LOG(MAX(1.0001D0,Q2EFF/ALAM2))
70138       IF(MSTU(111).EQ.1) THEN
70139         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ))
70140       ELSE
70141         B1=(153D0-19D0*NF)/6D0
70142         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1D0-B1*LOG(ALGQ)/
70143      &  (B0**2*ALGQ)))
70144       ENDIF
70145       MSTU(118)=NF
70146       PARU(118)=PYALPS
70147  
70148       RETURN
70149       END
70150  
70151 C*********************************************************************
70152  
70153 C...PYANGL
70154 C...Reconstructs an angle from given x and y coordinates.
70155  
70156       FUNCTION PYANGL(X,Y)
70157  
70158 C...Double precision and integer declarations.
70159       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70160       IMPLICIT INTEGER(I-N)
70161       INTEGER PYK,PYCHGE,PYCOMP
70162 C...Commonblocks.
70163       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70164       SAVE /PYDAT1/
70165  
70166       PYANGL=0D0
70167       R=SQRT(X**2+Y**2)
70168       IF(R.LT.1D-20) RETURN
70169       IF(ABS(X)/R.LT.0.8D0) THEN
70170         PYANGL=SIGN(ACOS(X/R),Y)
70171       ELSE
70172         PYANGL=ASIN(Y/R)
70173         IF(X.LT.0D0.AND.PYANGL.GE.0D0) THEN
70174           PYANGL=PARU(1)-PYANGL
70175         ELSEIF(X.LT.0D0) THEN
70176           PYANGL=-PARU(1)-PYANGL
70177         ENDIF
70178       ENDIF
70179  
70180       RETURN
70181       END
70182  
70183 C*********************************************************************
70184  
70185 C...PYROBO
70186 C...Performs rotations and boosts.
70187  
70188       SUBROUTINE PYROBO(IMI,IMA,THE,PHI,BEX,BEY,BEZ)
70189  
70190 C...Double precision and integer declarations.
70191       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70192       IMPLICIT INTEGER(I-N)
70193       INTEGER PYK,PYCHGE,PYCOMP
70194 C...Commonblocks.
70195       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
70196       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70197       SAVE /PYJETS/,/PYDAT1/
70198 C...Local arrays.
70199       DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4)
70200  
70201 C...Find and check range of rotation/boost.
70202       IMIN=IMI
70203       IF(IMIN.LE.0) IMIN=1
70204       IF(MSTU(1).GT.0) IMIN=MSTU(1)
70205       IMAX=IMA
70206       IF(IMAX.LE.0) IMAX=N
70207       IF(MSTU(2).GT.0) IMAX=MSTU(2)
70208       IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN
70209         CALL PYERRM(11,'(PYROBO:) range outside PYJETS memory')
70210         RETURN
70211       ENDIF
70212  
70213 C...Optional resetting of V (when not set before.)
70214       IF(MSTU(33).NE.0) THEN
70215         DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4))
70216           DO 100 J=1,5
70217             V(I,J)=0D0
70218   100     CONTINUE
70219   110   CONTINUE
70220         MSTU(33)=0
70221       ENDIF
70222  
70223 C...Rotate, typically from z axis to direction (theta,phi).
70224       IF(THE**2+PHI**2.GT.1D-20) THEN
70225         ROT(1,1)=COS(THE)*COS(PHI)
70226         ROT(1,2)=-SIN(PHI)
70227         ROT(1,3)=SIN(THE)*COS(PHI)
70228         ROT(2,1)=COS(THE)*SIN(PHI)
70229         ROT(2,2)=COS(PHI)
70230         ROT(2,3)=SIN(THE)*SIN(PHI)
70231         ROT(3,1)=-SIN(THE)
70232         ROT(3,2)=0D0
70233         ROT(3,3)=COS(THE)
70234         DO 140 I=IMIN,IMAX
70235           IF(K(I,1).LE.0) GOTO 140
70236           DO 120 J=1,3
70237             PR(J)=P(I,J)
70238             VR(J)=V(I,J)
70239   120     CONTINUE
70240           DO 130 J=1,3
70241             P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3)
70242             V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3)
70243   130     CONTINUE
70244   140   CONTINUE
70245       ENDIF
70246  
70247 C...Boost, typically from rest to momentum/energy=beta.
70248       IF(BEX**2+BEY**2+BEZ**2.GT.1D-20) THEN
70249         DBX=BEX
70250         DBY=BEY
70251         DBZ=BEZ
70252         DB=SQRT(DBX**2+DBY**2+DBZ**2)
70253         EPS1=1D0-1D-12
70254         IF(DB.GT.EPS1) THEN
70255 C...Rescale boost vector if too close to unity.
70256           CALL PYERRM(3,'(PYROBO:) boost vector too large')
70257           DBX=DBX*(EPS1/DB)
70258           DBY=DBY*(EPS1/DB)
70259           DBZ=DBZ*(EPS1/DB)
70260           DB=EPS1
70261         ENDIF
70262         DGA=1D0/SQRT(1D0-DB**2)
70263         DO 160 I=IMIN,IMAX
70264           IF(K(I,1).LE.0) GOTO 160
70265           DO 150 J=1,4
70266             DP(J)=P(I,J)
70267             DV(J)=V(I,J)
70268   150     CONTINUE
70269           DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3)
70270           DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4))
70271           P(I,1)=DP(1)+DGABP*DBX
70272           P(I,2)=DP(2)+DGABP*DBY
70273           P(I,3)=DP(3)+DGABP*DBZ
70274           P(I,4)=DGA*(DP(4)+DBP)
70275           DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3)
70276           DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4))
70277           V(I,1)=DV(1)+DGABV*DBX
70278           V(I,2)=DV(2)+DGABV*DBY
70279           V(I,3)=DV(3)+DGABV*DBZ
70280           V(I,4)=DGA*(DV(4)+DBV)
70281   160   CONTINUE
70282       ENDIF
70283  
70284       RETURN
70285       END
70286  
70287 C*********************************************************************
70288  
70289 C...PYEDIT
70290 C...Performs global manipulations on the event record, in particular
70291 C...to exclude unstable or undetectable partons/particles.
70292  
70293       SUBROUTINE PYEDIT(MEDIT)
70294  
70295 C...Double precision and integer declarations.
70296       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70297       IMPLICIT INTEGER(I-N)
70298       INTEGER PYK,PYCHGE,PYCOMP
70299 C...Parameter statement to help give large particle numbers.
70300       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
70301      &KEXCIT=4000000,KDIMEN=5000000)
70302 C...Commonblocks.
70303       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
70304       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70305       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
70306       COMMON/PYCTAG/NCT,MCT(4000,2)
70307       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYCTAG/
70308 C...Local arrays.
70309       DIMENSION NS(2),PTS(2),PLS(2)
70310  
70311 C...Remove unwanted partons/particles.
70312       IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN
70313         IMAX=N
70314         IF(MSTU(2).GT.0) IMAX=MSTU(2)
70315         I1=MAX(1,MSTU(1))-1
70316         DO 110 I=MAX(1,MSTU(1)),IMAX
70317           IF(K(I,1).EQ.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40)) GOTO 110
70318           IF(MEDIT.EQ.1) THEN
70319             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
70320           ELSEIF(MEDIT.EQ.2) THEN
70321             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
70322             KC=PYCOMP(K(I,2))
70323             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
70324      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
70325      &      K(I,2).EQ.KSUSY1+39) GOTO 110
70326           ELSEIF(MEDIT.EQ.3) THEN
70327             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
70328             KC=PYCOMP(K(I,2))
70329             IF(KC.EQ.0) GOTO 110
70330             IF(KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0) GOTO 110
70331           ELSEIF(MEDIT.EQ.5) THEN
70332             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.K(I,1).EQ.52) GOTO 110
70333             KC=PYCOMP(K(I,2))
70334             IF(KC.EQ.0) GOTO 110
70335             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42.AND.
70336      &      KCHG(KC,2).EQ.0) GOTO 110
70337           ENDIF
70338  
70339 C...Pack remaining partons/particles. Origin no longer known.
70340           I1=I1+1
70341           DO 100 J=1,5
70342             K(I1,J)=K(I,J)
70343             P(I1,J)=P(I,J)
70344             V(I1,J)=V(I,J)
70345   100     CONTINUE
70346           K(I1,3)=0
70347   110   CONTINUE
70348         IF(I1.LT.N) MSTU(3)=0
70349         IF(I1.LT.N) MSTU(70)=0
70350         N=I1
70351  
70352 C...Selective removal of class of entries. New position of retained.
70353       ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN
70354         I1=0
70355         DO 120 I=1,N
70356           K(I,3)=MOD(K(I,3),MSTU(5))
70357           IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120
70358           IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120
70359           IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR.
70360      &    K(I,1).EQ.15.OR.K(I,1).EQ.51).AND.K(I,2).NE.94) GOTO 120
70361           IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.
70362      &    K(I,1).EQ.52.OR.K(I,2).EQ.94)) GOTO 120
70363           IF(MEDIT.EQ.15.AND.K(I,1).GE.21.AND.K(I,1).LE.40) GOTO 120
70364           I1=I1+1
70365           K(I,3)=K(I,3)+MSTU(5)*I1
70366   120   CONTINUE
70367  
70368 C...Find new event history information and replace old.
70369         DO 140 I=1,N
70370           IF(K(I,1).LE.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40).OR.
70371      &    K(I,3)/MSTU(5).EQ.0) GOTO 140
70372           ID=I
70373   130     IM=MOD(K(ID,3),MSTU(5))
70374           IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN
70375             IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15.OR.
70376      &      K(IM,1).EQ.51).AND.K(IM,2).NE.94) THEN
70377               ID=IM
70378               GOTO 130
70379             ENDIF
70380           ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN
70381             IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,1).EQ.52.OR.
70382      &      K(IM,2).EQ.94) THEN
70383               ID=IM
70384               GOTO 130
70385             ENDIF
70386           ENDIF
70387           K(I,3)=MSTU(5)*(K(I,3)/MSTU(5))
70388           IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5)
70389           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14.AND.
70390      &      K(I,1).NE.42.AND.K(I,1).NE.52) THEN
70391             IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)=
70392      &      K(K(I,4),3)/MSTU(5)
70393             IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)=
70394      &      K(K(I,5),3)/MSTU(5)
70395           ELSE
70396             KCM=MOD(K(I,4)/MSTU(5),MSTU(5))
70397             IF(KCM.GT.0.AND.KCM.LE.MSTU(4).AND.K(I,1).NE.42.AND.
70398      &      K(I,1).NE.52) KCM=K(KCM,3)/MSTU(5)
70399             KCD=MOD(K(I,4),MSTU(5))
70400             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
70401             K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD
70402             KCM=MOD(K(I,5)/MSTU(5),MSTU(5))
70403             IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5)
70404             KCD=MOD(K(I,5),MSTU(5))
70405             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
70406             K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD
70407           ENDIF
70408   140   CONTINUE
70409  
70410 C...Pack remaining entries.
70411         I1=0
70412         MSTU90=MSTU(90)
70413         MSTU(90)=0
70414         DO 170 I=1,N
70415           IF(K(I,3)/MSTU(5).EQ.0) GOTO 170
70416           I1=I1+1
70417           DO 150 J=1,5
70418             K(I1,J)=K(I,J)
70419             P(I1,J)=P(I,J)
70420             V(I1,J)=V(I,J)
70421   150     CONTINUE
70422 C...Also update LHA1 colour tags
70423           MCT(I1,1)=MCT(I,1)
70424           MCT(I1,2)=MCT(I,2)
70425           K(I1,3)=MOD(K(I1,3),MSTU(5))
70426           DO 160 IZ=1,MSTU90
70427             IF(I.EQ.MSTU(90+IZ)) THEN
70428               MSTU(90)=MSTU(90)+1
70429               MSTU(90+MSTU(90))=I1
70430               PARU(90+MSTU(90))=PARU(90+IZ)
70431             ENDIF
70432   160     CONTINUE
70433   170   CONTINUE
70434         IF(I1.LT.N) MSTU(3)=0
70435         IF(I1.LT.N) MSTU(70)=0
70436         N=I1
70437  
70438 C...Fill in some missing daughter pointers (lost in colour flow).
70439       ELSEIF(MEDIT.EQ.16) THEN
70440         DO 220 I=1,N
70441           IF(K(I,1).LE.10.OR.(K(I,1).GE.21.AND.K(I,1).LE.50)) GOTO 220
70442           IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 220
70443 C...Find daughters who point to mother.
70444           DO 180 I1=I+1,N
70445             IF(K(I1,3).NE.I) THEN
70446             ELSEIF(K(I,4).EQ.0) THEN
70447               K(I,4)=I1
70448             ELSE
70449               K(I,5)=I1
70450             ENDIF
70451   180     CONTINUE
70452           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
70453           IF(K(I,4).NE.0) GOTO 220
70454 C...Find daughters who point to documentation version of mother.
70455           IM=K(I,3)
70456           IF(IM.LE.0.OR.IM.GE.I) GOTO 220
70457           IF(K(IM,1).LE.20.OR.K(IM,1).GT.30) GOTO 220
70458           IF(K(IM,2).NE.K(I,2).OR.ABS(P(IM,5)-P(I,5)).GT.1D-2) GOTO 220
70459           DO 190 I1=I+1,N
70460             IF(K(I1,3).NE.IM) THEN
70461             ELSEIF(K(I,4).EQ.0) THEN
70462               K(I,4)=I1
70463             ELSE
70464               K(I,5)=I1
70465             ENDIF
70466   190     CONTINUE
70467           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
70468           IF(K(I,4).NE.0) GOTO 220
70469 C...Find daughters who point to documentation daughters who,
70470 C...in their turn, point to documentation mother.
70471           ID1=IM
70472           ID2=IM
70473           DO 200 I1=IM+1,I-1
70474             IF(K(I1,3).EQ.IM.AND.K(I1,1).GE.21.AND.K(I1,1).LE.30) THEN
70475               ID2=I1
70476               IF(ID1.EQ.IM) ID1=I1
70477             ENDIF
70478   200     CONTINUE
70479           DO 210 I1=I+1,N
70480             IF(K(I1,3).NE.ID1.AND.K(I1,3).NE.ID2) THEN
70481             ELSEIF(K(I,4).EQ.0) THEN
70482               K(I,4)=I1
70483             ELSE
70484               K(I,5)=I1
70485             ENDIF
70486   210     CONTINUE
70487           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
70488   220   CONTINUE
70489  
70490 C...Save top entries at bottom of PYJETS commonblock.
70491       ELSEIF(MEDIT.EQ.21) THEN
70492         IF(2*N.GE.MSTU(4)) THEN
70493           CALL PYERRM(11,'(PYEDIT:) no more memory left in PYJETS')
70494           RETURN
70495         ENDIF
70496         DO 240 I=1,N
70497           DO 230 J=1,5
70498             K(MSTU(4)-I,J)=K(I,J)
70499             P(MSTU(4)-I,J)=P(I,J)
70500             V(MSTU(4)-I,J)=V(I,J)
70501   230     CONTINUE
70502   240   CONTINUE
70503         MSTU(32)=N
70504  
70505 C...Restore bottom entries of commonblock PYJETS to top.
70506       ELSEIF(MEDIT.EQ.22) THEN
70507         DO 260 I=1,MSTU(32)
70508           DO 250 J=1,5
70509             K(I,J)=K(MSTU(4)-I,J)
70510             P(I,J)=P(MSTU(4)-I,J)
70511             V(I,J)=V(MSTU(4)-I,J)
70512   250     CONTINUE
70513   260   CONTINUE
70514         N=MSTU(32)
70515  
70516 C...Mark primary entries at top of commonblock PYJETS as untreated.
70517       ELSEIF(MEDIT.EQ.23) THEN
70518         I1=0
70519         DO 270 I=1,N
70520           KH=K(I,3)
70521           IF(KH.GE.1) THEN
70522             IF(K(KH,1).GE.21.AND.K(KH,1).LE.30) KH=0
70523           ENDIF
70524           IF(KH.NE.0) GOTO 280
70525           I1=I1+1
70526           IF(K(I,1).GE.11.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10
70527           IF(K(I,1).GE.51.AND.K(I,1).LE.60) K(I,1)=K(I,1)-10
70528   270   CONTINUE
70529   280   N=I1
70530  
70531 C...Place largest axis along z axis and second largest in xy plane.
70532       ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN
70533         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61),1),
70534      &  P(MSTU(61),2)),0D0,0D0,0D0)
70535         CALL PYROBO(1,N+MSTU(3),-PYANGL(P(MSTU(61),3),
70536      &  P(MSTU(61),1)),0D0,0D0,0D0,0D0)
70537         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61)+1,1),
70538      &  P(MSTU(61)+1,2)),0D0,0D0,0D0)
70539         IF(MEDIT.EQ.31) RETURN
70540  
70541 C...Rotate to put slim jet along +z axis.
70542         DO 290 IS=1,2
70543           NS(IS)=0
70544           PTS(IS)=0D0
70545           PLS(IS)=0D0
70546   290   CONTINUE
70547         DO 300 I=1,N
70548           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 300
70549           IF(MSTU(41).GE.2) THEN
70550             KC=PYCOMP(K(I,2))
70551             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
70552      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
70553      &      K(I,2).EQ.KSUSY1+39) GOTO 300
70554             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
70555      &      .EQ.0) GOTO 300
70556           ENDIF
70557           IS=2D0-SIGN(0.5D0,P(I,3))
70558           NS(IS)=NS(IS)+1
70559           PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2)
70560   300   CONTINUE
70561         IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2)
70562      &  CALL PYROBO(1,N+MSTU(3),PARU(1),0D0,0D0,0D0,0D0)
70563  
70564 C...Rotate to put second largest jet into -z,+x quadrant.
70565         DO 310 I=1,N
70566           IF(P(I,3).GE.0D0) GOTO 310
70567           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 310
70568           IF(MSTU(41).GE.2) THEN
70569             KC=PYCOMP(K(I,2))
70570             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
70571      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
70572      &      K(I,2).EQ.KSUSY1+39) GOTO 310
70573             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
70574      &      .EQ.0) GOTO 310
70575           ENDIF
70576           IS=2D0-SIGN(0.5D0,P(I,1))
70577           PLS(IS)=PLS(IS)-P(I,3)
70578   310   CONTINUE
70579         IF(PLS(2).GT.PLS(1)) CALL PYROBO(1,N+MSTU(3),0D0,PARU(1),
70580      &  0D0,0D0,0D0)
70581       ENDIF
70582  
70583       RETURN
70584       END
70585  
70586 C*********************************************************************
70587  
70588 C...PYLIST
70589 C...Gives program heading, or lists an event, or particle
70590 C...data, or current parameter values.
70591  
70592       SUBROUTINE PYLIST(MLIST)
70593  
70594 C...Double precision and integer declarations.
70595       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70596       IMPLICIT INTEGER(I-N)
70597       INTEGER PYK,PYCHGE,PYCOMP
70598 C...Parameter statement to help give large particle numbers.
70599       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
70600      &KEXCIT=4000000,KDIMEN=5000000)
70601  
70602 C...HEPEVT commonblock.
70603       PARAMETER (NMXHEP=4000)
70604       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
70605      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
70606       DOUBLE PRECISION PHEP,VHEP
70607       SAVE /HEPEVT/
70608  
70609 C...User process event common block.
70610       INTEGER MAXNUP
70611       PARAMETER (MAXNUP=500)
70612       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
70613       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
70614       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
70615      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
70616      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
70617       SAVE /HEPEUP/
70618  
70619 C...Commonblocks.
70620       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
70621       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70622       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
70623       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
70624       COMMON/PYCTAG/NCT,MCT(4000,2)
70625       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYCTAG/
70626 C...Local arrays, character variables and data.
70627       CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4
70628       DIMENSION PS(6)
70629       DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/
70630  
70631 C...Initialization printout: version number and date of last change.
70632       IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN
70633         CALL PYLOGO
70634         MSTU(12)=12345
70635         IF(MLIST.EQ.0) RETURN
70636       ENDIF
70637  
70638 C...List event data, including additional lines after N.
70639       IF(MLIST.GE.1.AND.MLIST.LE.4) THEN
70640         IF(MLIST.EQ.1) WRITE(MSTU(11),5100)
70641         IF(MLIST.EQ.2) WRITE(MSTU(11),5200)
70642         IF(MLIST.EQ.3) WRITE(MSTU(11),5300)
70643         IF(MLIST.EQ.4) WRITE(MSTU(11),5400)
70644         LMX=12
70645         IF(MLIST.GE.2) LMX=16
70646         ISTR=0
70647         IMAX=N
70648         IF(MSTU(2).GT.0) IMAX=MSTU(2)
70649         DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3)))
70650           IF(I.GT.IMAX.AND.I.LE.N) GOTO 120
70651           IF(MSTU(15).EQ.0.AND.K(I,1).LE.0) GOTO 120
70652           IF(MSTU(15).EQ.1.AND.K(I,1).LT.0) GOTO 120
70653  
70654 C...Get particle name, pad it and check it is not too long.
70655           CALL PYNAME(K(I,2),CHAP)
70656           LEN=0
70657           DO 100 LEM=1,16
70658             IF(CHAP(LEM:LEM).NE.' ') LEN=LEM
70659   100     CONTINUE
70660           MDL=(K(I,1)+19)/10
70661           LDL=0
70662           IF(MDL.EQ.2.OR.MDL.GE.8) THEN
70663             CHAC=CHAP
70664             IF(LEN.GT.LMX) CHAC(LMX:LMX)='?'
70665           ELSE
70666             LDL=1
70667             IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2
70668             IF(LEN.EQ.0) THEN
70669               CHAC=CHDL(MDL)(1:2*LDL)//' '
70670             ELSE
70671               CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))//
70672      &        CHDL(MDL)(LDL+1:2*LDL)//' '
70673               IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?'
70674             ENDIF
70675           ENDIF
70676  
70677 C...Add information on string connection.
70678           IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12)
70679      &    THEN
70680             KC=PYCOMP(K(I,2))
70681             KCC=0
70682             IF(KC.NE.0) KCC=KCHG(KC,2)
70683             IF(IABS(K(I,2)).EQ.39) THEN
70684               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X'
70685             ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN
70686               ISTR=1
70687               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A'
70688             ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN
70689               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I'
70690             ELSEIF(KCC.NE.0) THEN
70691               ISTR=0
70692               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V'
70693             ENDIF
70694           ENDIF
70695           IF((K(I,1).EQ.41.OR.K(I,1).EQ.51).AND.LEN+2*LDL+3.LE.LMX)
70696      &    CHAC(LMX-1:LMX-1)='I'
70697  
70698 C...Write data for particle/jet.
70699           IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999D0) THEN
70700             WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3),
70701      &      (P(I,J2),J2=1,5)
70702           ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999D0) THEN
70703             WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3),
70704      &      (P(I,J2),J2=1,5)
70705           ELSEIF(MLIST.EQ.1) THEN
70706             WRITE(MSTU(11),5700) I,CHAC(1:12),(K(I,J1),J1=1,3),
70707      &      (P(I,J2),J2=1,5)
70708           ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.
70709      &      K(I,1).EQ.14.OR.K(I,1).EQ.42.OR.K(I,1).EQ.52)) THEN
70710             IF(MLIST.NE.4) WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,3),
70711      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
70712      &      K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000),
70713      &      (P(I,J2),J2=1,5)
70714             IF(MLIST.EQ.4) WRITE(MSTU(11),5900) I,CHAC,(K(I,J1),J1=1,3),
70715      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
70716      &           K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5)
70717      &           ,10000),MCT(I,1),MCT(I,2)
70718           ELSE
70719             IF(MLIST.NE.4) WRITE(MSTU(11),6000) I,CHAC,(K(I,J1),J1=1,5),
70720      &      (P(I,J2),J2=1,5)
70721             IF(MLIST.EQ.4) WRITE(MSTU(11),6100) I,CHAC,(K(I,J1),J1=1,5)
70722      &           ,MCT(I,1),MCT(I,2)
70723           ENDIF
70724           IF(MLIST.EQ.3) WRITE(MSTU(11),6200) (V(I,J),J=1,5)
70725  
70726 C...Insert extra separator lines specified by user.
70727           IF(MSTU(70).GE.1) THEN
70728             ISEP=0
70729             DO 110 J=1,MIN(10,MSTU(70))
70730               IF(I.EQ.MSTU(70+J)) ISEP=1
70731   110       CONTINUE
70732             IF(ISEP.EQ.1) THEN
70733               IF(MLIST.EQ.1) WRITE(MSTU(11),6300)
70734               IF(MLIST.EQ.2.OR.MLIST.EQ.3) WRITE(MSTU(11),6400)
70735               IF(MLIST.EQ.4) WRITE(MSTU(11),6500)
70736             ENDIF
70737           ENDIF
70738   120   CONTINUE
70739  
70740 C...Sum of charges and momenta.
70741         DO 130 J=1,6
70742           PS(J)=PYP(0,J)
70743   130   CONTINUE
70744         IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999D0) THEN
70745           WRITE(MSTU(11),6600) PS(6),(PS(J),J=1,5)
70746         ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999D0) THEN
70747           WRITE(MSTU(11),6700) PS(6),(PS(J),J=1,5)
70748         ELSEIF(MLIST.EQ.1) THEN
70749           WRITE(MSTU(11),6800) PS(6),(PS(J),J=1,5)
70750         ELSEIF(MLIST.LE.3) THEN
70751           WRITE(MSTU(11),6900) PS(6),(PS(J),J=1,5)
70752         ELSE
70753           WRITE(MSTU(11),7000) PS(6)
70754         ENDIF
70755  
70756 C...Simple listing of HEPEVT entries (mainly for test purposes).
70757       ELSEIF(MLIST.EQ.5) THEN
70758         WRITE(MSTU(11),7100)
70759         DO 140 I=1,NHEP
70760           IF(ISTHEP(I).EQ.0) GOTO 140
70761           WRITE(MSTU(11),7200) I,ISTHEP(I),IDHEP(I),JMOHEP(1,I),
70762      &    JMOHEP(2,I),JDAHEP(1,I),JDAHEP(2,I),(PHEP(J,I),J=1,5)
70763   140   CONTINUE
70764  
70765  
70766 C...Simple listing of user-process entries (mainly for test purposes).
70767       ELSEIF(MLIST.EQ.7) THEN
70768         WRITE(MSTU(11),7300)
70769         DO 150 I=1,NUP
70770           WRITE(MSTU(11),7400) I,ISTUP(I),IDUP(I),MOTHUP(1,I),
70771      &    MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5)
70772   150   CONTINUE
70773  
70774 C...Give simple list of KF codes defined in program.
70775       ELSEIF(MLIST.EQ.11) THEN
70776         WRITE(MSTU(11),7500)
70777         DO 160 KF=1,80
70778           CALL PYNAME(KF,CHAP)
70779           CALL PYNAME(-KF,CHAN)
70780           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),7600) KF,CHAP
70781           IF(CHAN.NE.' ') WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70782   160   CONTINUE
70783         DO 190 KFLS=1,3,2
70784           DO 180 KFLA=1,5
70785             DO 170 KFLB=1,KFLA-(3-KFLS)/2
70786               KF=1000*KFLA+100*KFLB+KFLS
70787               CALL PYNAME(KF,CHAP)
70788               CALL PYNAME(-KF,CHAN)
70789               WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70790   170       CONTINUE
70791   180     CONTINUE
70792   190   CONTINUE
70793         DO 220 KMUL=0,5
70794           KFLS=3
70795           IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
70796           IF(KMUL.EQ.5) KFLS=5
70797           KFLR=0
70798           IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1
70799           IF(KMUL.EQ.4) KFLR=2
70800           DO 210 KFLB=1,5
70801             DO 200 KFLC=1,KFLB-1
70802               KF=10000*KFLR+100*KFLB+10*KFLC+KFLS
70803               CALL PYNAME(KF,CHAP)
70804               CALL PYNAME(-KF,CHAN)
70805               WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70806               IF(KF.EQ.311) THEN
70807                 KFK=130
70808                 CALL PYNAME(KFK,CHAP)
70809                 WRITE(MSTU(11),7600) KFK,CHAP
70810                 KFK=310
70811                 CALL PYNAME(KFK,CHAP)
70812                 WRITE(MSTU(11),7600) KFK,CHAP
70813               ENDIF
70814   200       CONTINUE
70815             KF=10000*KFLR+110*KFLB+KFLS
70816             CALL PYNAME(KF,CHAP)
70817             WRITE(MSTU(11),7600) KF,CHAP
70818   210     CONTINUE
70819   220   CONTINUE
70820         KF=100443
70821         CALL PYNAME(KF,CHAP)
70822         WRITE(MSTU(11),7600) KF,CHAP
70823         KF=100553
70824         CALL PYNAME(KF,CHAP)
70825         WRITE(MSTU(11),7600) KF,CHAP
70826         DO 260 KFLSP=1,3
70827           KFLS=2+2*(KFLSP/3)
70828           DO 250 KFLA=1,5
70829             DO 240 KFLB=1,KFLA
70830               DO 230 KFLC=1,KFLB
70831                 IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC))
70832      &          GOTO 230
70833                 IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 230
70834                 IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS
70835                 IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS
70836                 CALL PYNAME(KF,CHAP)
70837                 CALL PYNAME(-KF,CHAN)
70838                 WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70839   230         CONTINUE
70840   240       CONTINUE
70841   250     CONTINUE
70842   260   CONTINUE
70843         DO 270 KC=1,500
70844           KF=KCHG(KC,4)
70845           IF(KF.LT.1000000) GOTO 270
70846           CALL PYNAME(KF,CHAP)
70847           CALL PYNAME(-KF,CHAN)
70848           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),7600) KF,CHAP
70849           IF(CHAN.NE.' ') WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70850   270   CONTINUE
70851  
70852 C...List parton/particle data table. Check whether to be listed.
70853       ELSEIF(MLIST.EQ.12) THEN
70854         WRITE(MSTU(11),7700)
70855         DO 300 KC=1,MSTU(6)
70856           KF=KCHG(KC,4)
70857           IF(KF.EQ.0) GOTO 300
70858           IF(KF.LT.MSTU(1).OR.(MSTU(2).GT.0.AND.KF.GT.MSTU(2)))
70859      &    GOTO 300
70860  
70861 C...Find particle name and mass. Print information.
70862           CALL PYNAME(KF,CHAP)
70863           IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 300
70864           CALL PYNAME(-KF,CHAN)
70865           WRITE(MSTU(11),7800) KF,KC,CHAP,CHAN,(KCHG(KC,J1),J1=1,3),
70866      &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1)
70867  
70868 C...Particle decay: channel number, branching ratios, matrix element,
70869 C...decay products.
70870           DO 290 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
70871             DO 280 J=1,5
70872               CALL PYNAME(KFDP(IDC,J),CHAD(J))
70873   280       CONTINUE
70874             WRITE(MSTU(11),7900) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
70875      &      (CHAD(J),J=1,5)
70876   290     CONTINUE
70877   300   CONTINUE
70878  
70879 C...List parameter value table.
70880       ELSEIF(MLIST.EQ.13) THEN
70881         WRITE(MSTU(11),8000)
70882         DO 310 I=1,200
70883           WRITE(MSTU(11),8100) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I)
70884   310   CONTINUE
70885       ENDIF
70886  
70887 C...Format statements for output on unit MSTU(11) (by default 6).
70888  5100 FORMAT(///28X,'Event listing (summary)'//4X,'I particle/jet KS',
70889      &5X,'KF  orig    p_x      p_y      p_z       E        m'/)
70890  5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet',
70891      &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
70892      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/)
70893  5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j',
70894      &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
70895      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X,
70896      &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/)
70897  5400 FORMAT(///28X,'Event listing (no momenta)'//4X,'I  particle/jet',
70898      &     '  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)',1X
70899      &     ,'   C tag  AC tag'/)
70900  5500 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.3)
70901  5600 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.2)
70902  5700 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.1)
70903  5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),5F13.5)
70904  5900 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),1X,2I8)
70905  6000 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),5F13.5)
70906  6100 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),1X,2I8)
70907  6200 FORMAT(66X,5(1X,F12.3))
70908  6300 FORMAT(1X,78('='))
70909  6400 FORMAT(1X,130('='))
70910  6500 FORMAT(1X,65('='))
70911  6600 FORMAT(19X,'sum:',F6.2,5X,5F9.3)
70912  6700 FORMAT(19X,'sum:',F6.2,5X,5F9.2)
70913  6800 FORMAT(19X,'sum:',F6.2,5X,5F9.1)
70914  6900 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:',
70915      &5F13.5)
70916  7000 FORMAT(19X,'sum charge:',F6.2)
70917  7100 FORMAT(/10X,'Event listing of HEPEVT common block (simplified)'
70918      &//'    I IST    ID   Mothers Daughters    p_x      p_y      p_z',
70919      &'       E        m')
70920  7200 FORMAT(1X,I4,I2,I8,4I5,5F9.3)
70921  7300 FORMAT(/10X,'Event listing of user process at input (simplified)'
70922      &//'   I IST     ID Mothers   Colours    p_x      p_y      p_z',
70923      &'       E        m')
70924  7400 FORMAT(1X,I3,I3,I8,2I4,2I5,5F9.3)
70925  7500 FORMAT(///20X,'List of KF codes in program'/)
70926  7600 FORMAT(4X,I9,4X,A16,6X,I9,4X,A16)
70927  7700 FORMAT(///30X,'Particle/parton data table'//8X,'KF',5X,'KC',4X,
70928      &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X,
70929      &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off',
70930      &1X,'ME',3X,'Br.rat.',4X,'decay products')
70931  7800 FORMAT(/1X,I9,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5),
70932      &1X,1P,E13.5,3X,I2)
70933  7900 FORMAT(10X,I4,2X,I3,2X,I3,2X,F10.6,4X,5A16)
70934  8000 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)',
70935      &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)')
70936  8100 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5)
70937  
70938       RETURN
70939       END
70940  
70941 C*********************************************************************
70942  
70943 C...PYLOGO
70944 C...Writes a logo for the program.
70945  
70946       SUBROUTINE PYLOGO
70947  
70948 C...Double precision and integer declarations.
70949       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70950       IMPLICIT INTEGER(I-N)
70951       INTEGER PYK,PYCHGE,PYCOMP
70952 C...Parameter for length of information block.
70953       PARAMETER (IREFER=21)
70954 C...Commonblocks.
70955       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70956       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
70957       SAVE /PYDAT1/,/PYPARS/
70958 C...Local arrays and character variables.
70959       INTEGER IDATI(6)
70960       CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(2*IREFER)*36, LINE*79,
70961      &VERS*1, SUBV*3, DATE*2, YEAR*4, HOUR*2, MINU*2, SECO*2
70962  
70963 C...Data on months, logo, titles, and references.
70964       DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep',
70965      &'Oct','Nov','Dec'/
70966       DATA (LOGO(J),J=1,19)/
70967      &'            *......*            ',
70968      &'       *:::!!:::::::::::*       ',
70969      &'    *::::::!!::::::::::::::*    ',
70970      &'  *::::::::!!::::::::::::::::*  ',
70971      &' *:::::::::!!:::::::::::::::::* ',
70972      &' *:::::::::!!:::::::::::::::::* ',
70973      &'  *::::::::!!::::::::::::::::*! ',
70974      &'    *::::::!!::::::::::::::* !! ',
70975      &'    !! *:::!!:::::::::::*    !! ',
70976      &'    !!     !* -><- *         !! ',
70977      &'    !!     !!                !! ',
70978      &'    !!     !!                !! ',
70979      &'    !!                       !! ',
70980      &'    !!        lh             !! ',
70981      &'    !!                       !! ',
70982      &'    !!                 hh    !! ',
70983      &'    !!    ll                 !! ',
70984      &'    !!                       !! ',
70985      &'    !!                          '/
70986       DATA (LOGO(J),J=20,38)/
70987      &'Welcome to the Lund Monte Carlo!',
70988      &'                                ',
70989      &'PPP  Y   Y TTTTT H   H III   A  ',
70990      &'P  P  Y Y    T   H   H  I   A A ',
70991      &'PPP    Y     T   HHHHH  I  AAAAA',
70992      &'P      Y     T   H   H  I  A   A',
70993      &'P      Y     T   H   H III A   A',
70994      &'                                ',
70995      &'This is PYTHIA version x.xxx    ',
70996      &'Last date of change: xx xxx 200x',
70997      &'                                ',
70998      &'Now is xx xxx 200x at xx:xx:xx  ',
70999      &'                                ',
71000      &'Disclaimer: this program comes  ',
71001      &'without any guarantees. Beware  ',
71002      &'of errors and use common sense  ',
71003      &'when interpreting results.      ',
71004      &'                                ',
71005      &'Copyright T. Sjostrand (2007)   '/
71006       DATA (REFER(J),J=1,14)/
71007      &'An archive of program versions and d',
71008      &'ocumentation is found on the web:   ',
71009      &'http://www.thep.lu.se/~torbjorn/Pyth',
71010      &'ia.html                             ',
71011      &'                                    ',
71012      &'                                    ',
71013      &'When you cite this program, the offi',
71014      &'cial reference is to the 6.4 manual:',
71015      &'T. Sjostrand, S. Mrenna and P. Skand',
71016      &'s, JHEP05 (2006) 026                ',
71017      &'(LU TP 06-13, FERMILAB-PUB-06-052-CD',
71018      &'-T) [hep-ph/0603175].               ',
71019      &'                                    ',
71020      &'                                    '/
71021       DATA (REFER(J),J=15,32)/
71022      &'Also remember that the program, to a',
71023      &' large extent, represents original  ',
71024      &'physics research. Other publications',
71025      &' of special relevance to your       ',
71026      &'studies may therefore deserve separa',
71027      &'te mention.                         ',
71028      &'                                    ',
71029      &'                                    ',
71030      &'Main author: Torbjorn Sjostrand; CER',
71031      &'N/PH, CH-1211 Geneva, Switzerland,  ',
71032      &'  and Department of Theoretical Phys',
71033      &'ics, Lund University, Lund, Sweden; ',
71034      &'  phone: + 41 - 22 - 767 82 27; e-ma',
71035      &'il: torbjorn@thep.lu.se             ',
71036      &'Author: Stephen Mrenna; Computing Di',
71037      &'vision, GDS Group,                  ',
71038      &'  Fermi National Accelerator Laborat',
71039      &'ory, MS 234, Batavia, IL 60510, USA;'/
71040       DATA (REFER(J),J=33,2*IREFER)/
71041      &'  phone: + 1 - 630 - 840 - 2556; e-m',
71042      &'ail: mrenna@fnal.gov                ',
71043      &'Author: Peter Skands; Theoretical Ph',
71044      &'ysics Department,                   ',
71045      &'  Fermi National Accelerator Laborat',
71046      &'ory, MS 106, Batavia, IL 60510, USA;',
71047      &'  and CERN/PH, CH-1211 Geneva, Switz',
71048      &'erland;                             ',
71049      &'  phone: + 41 - 22 - 767 24 59; e-ma',
71050      &'il: skands@fnal.gov                 '/
71051  
71052 C...Check that PYDATA linked.
71053       IF(MSTP(183)/10.NE.199.AND.MSTP(183)/10.NE.200) THEN
71054         WRITE(*,'(1X,A)')
71055      &  'Error: PYDATA has not been linked.'
71056         WRITE(*,'(1X,A)') 'Execution stopped!'
71057         CALL PYSTOP(8)
71058  
71059 C...Write current version number and current date+time.
71060       ELSE
71061         WRITE(VERS,'(I1)') MSTP(181)
71062         LOGO(28)(24:24)=VERS
71063         WRITE(SUBV,'(I3)') MSTP(182)
71064         LOGO(28)(26:28)=SUBV
71065         IF(MSTP(182).LT.100) LOGO(28)(26:26)='0'
71066         WRITE(DATE,'(I2)') MSTP(185)
71067         LOGO(29)(22:23)=DATE
71068         LOGO(29)(25:27)=MONTH(MSTP(184))
71069         WRITE(YEAR,'(I4)') MSTP(183)
71070         LOGO(29)(29:32)=YEAR
71071         CALL PYTIME(IDATI)
71072         IF(IDATI(1).LE.0) THEN
71073           LOGO(31)='                                '
71074         ELSE
71075           WRITE(DATE,'(I2)') IDATI(3)
71076           LOGO(31)(8:9)=DATE
71077           LOGO(31)(11:13)=MONTH(MAX(1,MIN(12,IDATI(2))))
71078           WRITE(YEAR,'(I4)') IDATI(1)
71079           LOGO(31)(15:18)=YEAR
71080           WRITE(HOUR,'(I2)') IDATI(4)
71081           LOGO(31)(23:24)=HOUR
71082           WRITE(MINU,'(I2)') IDATI(5)
71083           LOGO(31)(26:27)=MINU
71084           IF(IDATI(5).LT.10) LOGO(31)(26:26)='0'
71085           WRITE(SECO,'(I2)') IDATI(6)
71086           LOGO(31)(29:30)=SECO
71087           IF(IDATI(6).LT.10) LOGO(31)(29:29)='0'
71088         ENDIF
71089       ENDIF
71090  
71091 C...Loop over lines in header. Define page feed and side borders.
71092       DO 100 ILIN=1,29+IREFER
71093         LINE=' '
71094         IF(ILIN.EQ.1) THEN
71095           LINE(1:1)='1'
71096         ELSE
71097           LINE(2:3)='**'
71098           LINE(78:79)='**'
71099         ENDIF
71100  
71101 C...Separator lines and logos.
71102         IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.GE.28+IREFER) THEN
71103           LINE(4:77)='***********************************************'//
71104      &    '***************************'
71105         ELSEIF(ILIN.GE.6.AND.ILIN.LE.24) THEN
71106           LINE(6:37)=LOGO(ILIN-5)
71107           LINE(44:75)=LOGO(ILIN+14)
71108         ELSEIF(ILIN.GE.26.AND.ILIN.LE.25+IREFER) THEN
71109           LINE(5:40)=REFER(2*ILIN-51)
71110           LINE(41:76)=REFER(2*ILIN-50)
71111         ENDIF
71112  
71113 C...Write lines to appropriate unit.
71114         WRITE(MSTU(11),'(A79)') LINE
71115   100 CONTINUE
71116  
71117       RETURN
71118       END
71119  
71120 C*********************************************************************
71121  
71122 C...PYUPDA
71123 C...Facilitates the updating of particle and decay data
71124 C...by allowing it to be done in an external file.
71125  
71126       SUBROUTINE PYUPDA(MUPDA,LFN)
71127  
71128 C...Double precision and integer declarations.
71129       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71130       IMPLICIT INTEGER(I-N)
71131       INTEGER PYK,PYCHGE,PYCOMP
71132 C...Commonblocks.
71133       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71134       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71135       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
71136       COMMON/PYDAT4/CHAF(500,2)
71137       CHARACTER CHAF*16
71138       COMMON/PYINT4/MWID(500),WIDS(500,5)
71139       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYINT4/
71140 C...Local arrays, character variables and data.
71141       CHARACTER CHINL*120,CHKF*9,CHVAR(22)*9,CHLIN*72,
71142      &CHBLK(20)*72,CHOLD*16,CHTMP*16,CHNEW*16,CHCOM*24
71143       DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','KCHG(I,4)',
71144      &'PMAS(I,1)','PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)',
71145      &'MDCY(I,2)','MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ',
71146      &'KFDP(I,1)','KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)',
71147      &'CHAF(I,1)','CHAF(I,2)','MWID(I)  '/
71148  
71149 C...Write header if not yet done.
71150       IF(MSTU(12).NE.12345) CALL PYLIST(0)
71151  
71152 C...Write information on file for editing.
71153       IF(MUPDA.EQ.1) THEN
71154         DO 110 KC=1,500
71155           WRITE(LFN,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
71156      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
71157      &    MWID(KC),MDCY(KC,1)
71158           DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
71159             WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
71160      &      (KFDP(IDC,J),J=1,5)
71161   100     CONTINUE
71162   110   CONTINUE
71163  
71164 C...Read complete set of information from edited file or
71165 C...read partial set of new or updated information from edited file.
71166       ELSEIF(MUPDA.EQ.2.OR.MUPDA.EQ.3) THEN
71167  
71168 C...Reset counters.
71169         KCC=100
71170         NDC=0
71171         CHKF='         '
71172         IF(MUPDA.EQ.2) THEN
71173           DO 120 I=1,MSTU(6)
71174             KCHG(I,4)=0
71175   120     CONTINUE
71176         ELSE
71177           DO 130 KC=1,MSTU(6)
71178             IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
71179             NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
71180   130     CONTINUE
71181         ENDIF
71182  
71183 C...Begin of loop: read new line; unknown whether particle or
71184 C...decay data.
71185   140   READ(LFN,5200,END=190) CHINL
71186  
71187 C...Identify particle code and whether already defined  (for MUPDA=3).
71188         IF(CHINL(2:10).NE.'         ') THEN
71189           CHKF=CHINL(2:10)
71190           READ(CHKF,5300) KF
71191           IF(MUPDA.EQ.2) THEN
71192             IF(KF.LE.100) THEN
71193               KC=KF
71194             ELSE
71195               KCC=KCC+1
71196               KC=KCC
71197             ENDIF
71198           ELSE
71199             KCREP=0
71200             IF(KF.LE.100) THEN
71201               KCREP=KF
71202             ELSE
71203               DO 150 KCR=101,KCC
71204                 IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
71205   150         CONTINUE
71206             ENDIF
71207 C...Remove duplicate old decay data.
71208             IF(KCREP.NE.0.AND.MDCY(KCREP,3).GT.0) THEN
71209               IDCREP=MDCY(KCREP,2)
71210               NDCREP=MDCY(KCREP,3)
71211               DO 160 I=1,KCC
71212                 IF(MDCY(I,2).GT.IDCREP) MDCY(I,2)=MDCY(I,2)-NDCREP
71213   160         CONTINUE
71214               DO 180 I=IDCREP,NDC-NDCREP
71215                 MDME(I,1)=MDME(I+NDCREP,1)
71216                 MDME(I,2)=MDME(I+NDCREP,2)
71217                 BRAT(I)=BRAT(I+NDCREP)
71218                 DO 170 J=1,5
71219                   KFDP(I,J)=KFDP(I+NDCREP,J)
71220   170           CONTINUE
71221   180         CONTINUE
71222               NDC=NDC-NDCREP
71223               KC=KCREP
71224             ELSEIF(KCREP.NE.0) THEN
71225               KC=KCREP
71226             ELSE
71227               KCC=KCC+1
71228               KC=KCC
71229             ENDIF
71230           ENDIF
71231  
71232 C...Study line with particle data.
71233           IF(KC.GT.MSTU(6)) CALL PYERRM(27,
71234      &    '(PYUPDA:) Particle arrays full by KF ='//CHKF)
71235           READ(CHINL,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
71236      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
71237      &    MWID(KC),MDCY(KC,1)
71238           MDCY(KC,2)=0
71239           MDCY(KC,3)=0
71240  
71241 C...Study line with decay data.
71242         ELSE
71243           NDC=NDC+1
71244           IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
71245      &    '(PYUPDA:) Decay data arrays full by KF ='//CHKF)
71246           IF(MDCY(KC,2).EQ.0) MDCY(KC,2)=NDC
71247           MDCY(KC,3)=MDCY(KC,3)+1
71248           READ(CHINL,5100) MDME(NDC,1),MDME(NDC,2),BRAT(NDC),
71249      &    (KFDP(NDC,J),J=1,5)
71250         ENDIF
71251  
71252 C...End of loop; ensure that PYCOMP tables are updated.
71253         GOTO 140
71254   190   CONTINUE
71255         MSTU(20)=0
71256  
71257 C...Perform possible tests that new information is consistent.
71258         DO 220 KC=1,MSTU(6)
71259           KF=KCHG(KC,4)
71260           IF(KF.EQ.0) GOTO 220
71261           WRITE(CHKF,5300) KF
71262           IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3),
71263      &    PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0) CALL PYERRM(17,
71264      &    '(PYUPDA:) Mass/width/life/(# channels) wrong for KF ='//CHKF)
71265           BRSUM=0D0
71266           DO 210 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
71267             IF(MDME(IDC,2).GT.80) GOTO 210
71268             KQ=KCHG(KC,1)
71269             PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
71270             MERR=0
71271             DO 200 J=1,5
71272               KP=KFDP(IDC,J)
71273               IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
71274                 IF(KP.EQ.81) KQ=0
71275               ELSEIF(PYCOMP(KP).EQ.0) THEN
71276                 MERR=3
71277               ELSE
71278                 KQ=KQ-PYCHGE(KP)
71279                 KPC=PYCOMP(KP)
71280                 PMS=PMS-PMAS(KPC,1)
71281                 IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
71282      &          PMAS(KPC,3))
71283               ENDIF
71284   200       CONTINUE
71285             IF(KQ.NE.0) MERR=MAX(2,MERR)
71286             IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
71287      &      MERR=MAX(1,MERR)
71288             IF(MERR.EQ.3) CALL PYERRM(17,
71289      &      '(PYUPDA:) Unknown particle code in decay of KF ='//CHKF)
71290             IF(MERR.EQ.2) CALL PYERRM(17,
71291      &      '(PYUPDA:) Charge not conserved in decay of KF ='//CHKF)
71292             IF(MERR.EQ.1) CALL PYERRM(7,
71293      &      '(PYUPDA:) Kinematically unallowed decay of KF ='//CHKF)
71294             BRSUM=BRSUM+BRAT(IDC)
71295   210     CONTINUE
71296           WRITE(CHTMP,5500) BRSUM
71297           IF(ABS(BRSUM).GT.0.0005D0.AND.ABS(BRSUM-1D0).GT.0.0005D0)
71298      &    CALL PYERRM(7,'(PYUPDA:) Sum of branching ratios is '//
71299      &    CHTMP(9:16)//' for KF ='//CHKF)
71300   220   CONTINUE
71301  
71302 C...Write DATA statements for inclusion in program.
71303       ELSEIF(MUPDA.EQ.4) THEN
71304  
71305 C...Find out how many codes and decay channels are actually used.
71306         KCC=0
71307         NDC=0
71308         DO 230 I=1,MSTU(6)
71309           IF(KCHG(I,4).NE.0) THEN
71310             KCC=I
71311             NDC=MAX(NDC,MDCY(I,2)+MDCY(I,3)-1)
71312           ENDIF
71313   230   CONTINUE
71314  
71315 C...Initialize writing of DATA statements for inclusion in program.
71316         DO 300 IVAR=1,22
71317           NDIM=MSTU(6)
71318           IF(IVAR.GE.12.AND.IVAR.LE.19) NDIM=MSTU(7)
71319           NLIN=1
71320           CHLIN=' '
71321           CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/'
71322           LLIN=35
71323           CHOLD='START'
71324  
71325 C...Loop through variables for conversion to characters.
71326           DO 280 IDIM=1,NDIM
71327             IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1)
71328             IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2)
71329             IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3)
71330             IF(IVAR.EQ.4) WRITE(CHTMP,5400) KCHG(IDIM,4)
71331             IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,1)
71332             IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,2)
71333             IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,3)
71334             IF(IVAR.EQ.8) WRITE(CHTMP,5500) PMAS(IDIM,4)
71335             IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,1)
71336             IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,2)
71337             IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDCY(IDIM,3)
71338             IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,1)
71339             IF(IVAR.EQ.13) WRITE(CHTMP,5400) MDME(IDIM,2)
71340             IF(IVAR.EQ.14) WRITE(CHTMP,5600) BRAT(IDIM)
71341             IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,1)
71342             IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,2)
71343             IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,3)
71344             IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,4)
71345             IF(IVAR.EQ.19) WRITE(CHTMP,5400) KFDP(IDIM,5)
71346             IF(IVAR.EQ.20) CHTMP=CHAF(IDIM,1)
71347             IF(IVAR.EQ.21) CHTMP=CHAF(IDIM,2)
71348             IF(IVAR.EQ.22) WRITE(CHTMP,5400) MWID(IDIM)
71349  
71350 C...Replace variables beyond what is properly defined.
71351             IF(IVAR.LE.4) THEN
71352               IF(IDIM.GT.KCC) CHTMP='               0'
71353             ELSEIF(IVAR.LE.8) THEN
71354               IF(IDIM.GT.KCC) CHTMP='             0.0'
71355             ELSEIF(IVAR.LE.11) THEN
71356               IF(IDIM.GT.KCC) CHTMP='               0'
71357             ELSEIF(IVAR.LE.13) THEN
71358               IF(IDIM.GT.NDC) CHTMP='               0'
71359             ELSEIF(IVAR.LE.14) THEN
71360               IF(IDIM.GT.NDC) CHTMP='             0.0'
71361             ELSEIF(IVAR.LE.19) THEN
71362               IF(IDIM.GT.NDC) CHTMP='               0'
71363             ELSEIF(IVAR.LE.21) THEN
71364               IF(IDIM.GT.KCC) CHTMP='                '
71365             ELSE
71366               IF(IDIM.GT.KCC) CHTMP='               0'
71367             ENDIF
71368  
71369 C...Length of variable, trailing decimal zeros, quotation marks.
71370             LLOW=1
71371             LHIG=1
71372             DO 240 LL=1,16
71373               IF(CHTMP(17-LL:17-LL).NE.' ') LLOW=17-LL
71374               IF(CHTMP(LL:LL).NE.' ') LHIG=LL
71375   240       CONTINUE
71376             CHNEW=CHTMP(LLOW:LHIG)//' '
71377             LNEW=1+LHIG-LLOW
71378             IF((IVAR.GE.5.AND.IVAR.LE.8).OR.IVAR.EQ.14) THEN
71379               LNEW=LNEW+1
71380   250         LNEW=LNEW-1
71381               IF(LNEW.GE.2.AND.CHNEW(LNEW:LNEW).EQ.'0') GOTO 250
71382               IF(CHNEW(LNEW:LNEW).EQ.'.') LNEW=LNEW-1
71383               IF(LNEW.EQ.0) THEN
71384                 CHNEW(1:3)='0D0'
71385                 LNEW=3
71386               ELSE
71387                 CHNEW(LNEW+1:LNEW+2)='D0'
71388                 LNEW=LNEW+2
71389               ENDIF
71390             ELSEIF(IVAR.EQ.20.OR.IVAR.EQ.21) THEN
71391               DO 260 LL=LNEW,1,-1
71392                 IF(CHNEW(LL:LL).EQ.'''') THEN
71393                   CHTMP=CHNEW
71394                   CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11)
71395                   LNEW=LNEW+1
71396                 ENDIF
71397   260         CONTINUE
71398               LNEW=MIN(14,LNEW)
71399               CHTMP=CHNEW
71400               CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//''''
71401               LNEW=LNEW+2
71402             ENDIF
71403  
71404 C...Form composite character string, often including repetition counter.
71405             IF(CHNEW.NE.CHOLD) THEN
71406               NRPT=1
71407               CHOLD=CHNEW
71408               CHCOM=CHNEW
71409               LCOM=LNEW
71410             ELSE
71411               LRPT=LNEW+1
71412               IF(NRPT.GE.2) LRPT=LNEW+3
71413               IF(NRPT.GE.10) LRPT=LNEW+4
71414               IF(NRPT.GE.100) LRPT=LNEW+5
71415               IF(NRPT.GE.1000) LRPT=LNEW+6
71416               LLIN=LLIN-LRPT
71417               NRPT=NRPT+1
71418               WRITE(CHTMP,5400) NRPT
71419               LRPT=1
71420               IF(NRPT.GE.10) LRPT=2
71421               IF(NRPT.GE.100) LRPT=3
71422               IF(NRPT.GE.1000) LRPT=4
71423               CHCOM(1:LRPT+1+LNEW)=CHTMP(17-LRPT:16)//'*'//CHNEW(1:LNEW)
71424               LCOM=LRPT+1+LNEW
71425             ENDIF
71426  
71427 C...Add characters to end of line, to new line (after storing old line),
71428 C...or to new block of lines (after writing old block).
71429             IF(LLIN+LCOM.LE.70) THEN
71430               CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//','
71431               LLIN=LLIN+LCOM+1
71432             ELSEIF(NLIN.LE.19) THEN
71433               CHLIN(LLIN+1:72)=' '
71434               CHBLK(NLIN)=CHLIN
71435               NLIN=NLIN+1
71436               CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//','
71437               LLIN=6+LCOM+1
71438             ELSE
71439               CHLIN(LLIN:72)='/'//' '
71440               CHBLK(NLIN)=CHLIN
71441               WRITE(CHTMP,5400) IDIM-NRPT
71442               CHBLK(1)(30:33)=CHTMP(13:16)
71443               DO 270 ILIN=1,NLIN
71444                 WRITE(LFN,5700) CHBLK(ILIN)
71445   270         CONTINUE
71446               NLIN=1
71447               CHLIN=' '
71448               CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//
71449      &        ',I=    ,    )/'//CHCOM(1:LCOM)//','
71450               WRITE(CHTMP,5400) IDIM-NRPT+1
71451               CHLIN(25:28)=CHTMP(13:16)
71452               LLIN=35+LCOM+1
71453             ENDIF
71454   280     CONTINUE
71455  
71456 C...Write final block of lines.
71457           CHLIN(LLIN:72)='/'//' '
71458           CHBLK(NLIN)=CHLIN
71459           WRITE(CHTMP,5400) NDIM
71460           CHBLK(1)(30:33)=CHTMP(13:16)
71461           DO 290 ILIN=1,NLIN
71462             WRITE(LFN,5700) CHBLK(ILIN)
71463   290     CONTINUE
71464   300   CONTINUE
71465       ENDIF
71466  
71467 C...Formats for reading and writing particle data.
71468  5000 FORMAT(1X,I9,2X,A16,2X,A16,3I3,3F12.5,1P,E13.5,2I3)
71469  5100 FORMAT(10X,2I5,F12.6,5I10)
71470  5200 FORMAT(A120)
71471  5300 FORMAT(I9)
71472  5400 FORMAT(I16)
71473  5500 FORMAT(F16.5)
71474  5600 FORMAT(F16.6)
71475  5700 FORMAT(A72)
71476  
71477       RETURN
71478       END
71479  
71480 C*********************************************************************
71481  
71482 C...PYK
71483 C...Provides various integer-valued event related data.
71484  
71485       FUNCTION PYK(I,J)
71486  
71487 C...Double precision and integer declarations.
71488       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71489       IMPLICIT INTEGER(I-N)
71490       INTEGER PYK,PYCHGE,PYCOMP
71491 C...Commonblocks.
71492       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71493       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71494       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71495       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
71496  
71497 C...Default value. For I=0 number of entries, number of stable entries
71498 C...or 3 times total charge.
71499       PYK=0
71500       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
71501       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN
71502         PYK=N
71503       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN
71504         DO 100 I1=1,N
71505           IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+1
71506           IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+
71507      &    PYCHGE(K(I1,2))
71508   100   CONTINUE
71509       ELSEIF(I.EQ.0) THEN
71510  
71511 C...For I > 0 direct readout of K matrix or charge.
71512       ELSEIF(J.LE.5) THEN
71513         PYK=K(I,J)
71514       ELSEIF(J.EQ.6) THEN
71515         PYK=PYCHGE(K(I,2))
71516  
71517 C...Status (existing/fragmented/decayed), parton/hadron separation.
71518       ELSEIF(J.LE.8) THEN
71519         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PYK=1
71520         IF(J.EQ.8) PYK=PYK*K(I,2)
71521       ELSEIF(J.LE.12) THEN
71522         KFA=IABS(K(I,2))
71523         KC=PYCOMP(KFA)
71524         KQ=0
71525         IF(KC.NE.0) KQ=KCHG(KC,2)
71526         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) PYK=K(I,2)
71527         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) PYK=K(I,2)
71528         IF(J.EQ.11) PYK=KC
71529         IF(J.EQ.12) PYK=KQ*ISIGN(1,K(I,2))
71530  
71531 C...Heaviest flavour in hadron/diquark.
71532       ELSEIF(J.EQ.13) THEN
71533         KFA=IABS(K(I,2))
71534         PYK=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10)
71535         IF(KFA.LT.10) PYK=KFA
71536         IF(MOD(KFA/1000,10).NE.0) PYK=MOD(KFA/1000,10)
71537         PYK=PYK*ISIGN(1,K(I,2))
71538  
71539 C...Particle history: generation, ancestor, rank.
71540       ELSEIF(J.LE.15) THEN
71541         I2=I
71542         I1=I
71543   110   PYK=PYK+1
71544         I2=I1
71545         I1=K(I1,3)
71546         IF(I1.GT.0) THEN
71547           IF(K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110
71548         ENDIF
71549         IF(J.EQ.15) PYK=I2
71550       ELSEIF(J.EQ.16) THEN
71551         KFA=IABS(K(I,2))
71552         IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.
71553      &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN
71554           I1=I
71555   120     I2=I1
71556           I1=K(I1,3)
71557           IF(I1.GT.0) THEN
71558             KFAM=IABS(K(I1,2))
71559             ILP=1
71560             IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
71561             IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93)
71562      &      ILP=0
71563             IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
71564             IF(ILP.EQ.1) GOTO 120
71565           ENDIF
71566           IF(K(I1,1).EQ.12) THEN
71567             DO 130 I3=I1+1,I2
71568               IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
71569      &        .AND.K(I3,2).NE.93) PYK=PYK+1
71570   130       CONTINUE
71571           ELSE
71572             I3=I2
71573   140       PYK=PYK+1
71574             I3=I3+1
71575             IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140
71576           ENDIF
71577         ENDIF
71578  
71579 C...Particle coming from collapsing jet system or not.
71580       ELSEIF(J.EQ.17) THEN
71581         I1=I
71582   150   PYK=PYK+1
71583         I3=I1
71584         I1=K(I1,3)
71585         I0=MAX(1,I1)
71586         KC=PYCOMP(K(I0,2))
71587         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN
71588           IF(PYK.EQ.1) PYK=-1
71589           IF(PYK.GT.1) PYK=0
71590           RETURN
71591         ENDIF
71592         IF(KCHG(KC,2).EQ.0) GOTO 150
71593         IF(K(I1,1).NE.12) PYK=0
71594         IF(K(I1,1).NE.12) RETURN
71595         I2=I1
71596   160   I2=I2+1
71597         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160
71598         K3M=K(I3-1,3)
71599         IF(K3M.GE.I1.AND.K3M.LE.I2) PYK=0
71600         K3P=K(I3+1,3)
71601         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) PYK=0
71602  
71603 C...Number of decay products. Colour flow.
71604       ELSEIF(J.EQ.18) THEN
71605         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) PYK=MAX(0,K(I,5)-K(I,4)+1)
71606         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) PYK=0
71607       ELSEIF(J.LE.22) THEN
71608         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN
71609         IF(J.EQ.19) PYK=MOD(K(I,4)/MSTU(5),MSTU(5))
71610         IF(J.EQ.20) PYK=MOD(K(I,5)/MSTU(5),MSTU(5))
71611         IF(J.EQ.21) PYK=MOD(K(I,4),MSTU(5))
71612         IF(J.EQ.22) PYK=MOD(K(I,5),MSTU(5))
71613       ELSE
71614       ENDIF
71615  
71616       RETURN
71617       END
71618  
71619 C*********************************************************************
71620  
71621 C...PYP
71622 C...Provides various real-valued event related data.
71623  
71624       FUNCTION PYP(I,J)
71625  
71626 C...Double precision and integer declarations.
71627       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71628       IMPLICIT INTEGER(I-N)
71629       INTEGER PYK,PYCHGE,PYCOMP
71630 C...Commonblocks.
71631       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71632       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71633       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71634       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
71635 C...Local array.
71636       DIMENSION PSUM(4)
71637  
71638 C...Set default value. For I = 0 sum of momenta or charges,
71639 C...or invariant mass of system.
71640       PYP=0D0
71641       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
71642       ELSEIF(I.EQ.0.AND.J.LE.4) THEN
71643         DO 100 I1=1,N
71644           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+P(I1,J)
71645   100   CONTINUE
71646       ELSEIF(I.EQ.0.AND.J.EQ.5) THEN
71647         DO 120 J1=1,4
71648           PSUM(J1)=0D0
71649           DO 110 I1=1,N
71650             IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+
71651      &      P(I1,J1)
71652   110     CONTINUE
71653   120   CONTINUE
71654         PYP=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
71655       ELSEIF(I.EQ.0.AND.J.EQ.6) THEN
71656         DO 130 I1=1,N
71657           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+PYCHGE(K(I1,2))/3D0
71658   130   CONTINUE
71659       ELSEIF(I.EQ.0) THEN
71660  
71661 C...Direct readout of P matrix.
71662       ELSEIF(J.LE.5) THEN
71663         PYP=P(I,J)
71664  
71665 C...Charge, total momentum, transverse momentum, transverse mass.
71666       ELSEIF(J.LE.12) THEN
71667         IF(J.EQ.6) PYP=PYCHGE(K(I,2))/3D0
71668         IF(J.EQ.7.OR.J.EQ.8) PYP=P(I,1)**2+P(I,2)**2+P(I,3)**2
71669         IF(J.EQ.9.OR.J.EQ.10) PYP=P(I,1)**2+P(I,2)**2
71670         IF(J.EQ.11.OR.J.EQ.12) PYP=P(I,5)**2+P(I,1)**2+P(I,2)**2
71671         IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PYP=SQRT(PYP)
71672  
71673 C...Theta and phi angle in radians or degrees.
71674       ELSEIF(J.LE.16) THEN
71675         IF(J.LE.14) PYP=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
71676         IF(J.GE.15) PYP=PYANGL(P(I,1),P(I,2))
71677         IF(J.EQ.14.OR.J.EQ.16) PYP=PYP*180D0/PARU(1)
71678  
71679 C...True rapidity, rapidity with pion mass, pseudorapidity.
71680       ELSEIF(J.LE.19) THEN
71681         PMR=0D0
71682         IF(J.EQ.17) PMR=P(I,5)
71683         IF(J.EQ.18) PMR=PYMASS(211)
71684         PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
71685         PYP=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
71686      &  1D20)),P(I,3))
71687  
71688 C...Energy and momentum fractions (only to be used in CM frame).
71689       ELSEIF(J.LE.25) THEN
71690         IF(J.EQ.20) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21)
71691         IF(J.EQ.21) PYP=2D0*P(I,3)/PARU(21)
71692         IF(J.EQ.22) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21)
71693         IF(J.EQ.23) PYP=2D0*P(I,4)/PARU(21)
71694         IF(J.EQ.24) PYP=(P(I,4)+P(I,3))/PARU(21)
71695         IF(J.EQ.25) PYP=(P(I,4)-P(I,3))/PARU(21)
71696       ENDIF
71697  
71698       RETURN
71699       END
71700  
71701 C*********************************************************************
71702  
71703 C...PYSPHE
71704 C...Performs sphericity tensor analysis to give sphericity,
71705 C...aplanarity and the related event axes.
71706  
71707       SUBROUTINE PYSPHE(SPH,APL)
71708  
71709 C...Double precision and integer declarations.
71710       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71711       IMPLICIT INTEGER(I-N)
71712       INTEGER PYK,PYCHGE,PYCOMP
71713 C...Parameter statement to help give large particle numbers.
71714       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
71715      &KEXCIT=4000000,KDIMEN=5000000)
71716 C...Commonblocks.
71717       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71718       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71719       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71720       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
71721 C...Local arrays.
71722       DIMENSION SM(3,3),SV(3,3)
71723  
71724 C...Calculate matrix to be diagonalized.
71725       NP=0
71726       DO 110 J1=1,3
71727         DO 100 J2=J1,3
71728           SM(J1,J2)=0D0
71729   100   CONTINUE
71730   110 CONTINUE
71731       PS=0D0
71732       DO 140 I=1,N
71733         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
71734         IF(MSTU(41).GE.2) THEN
71735           KC=PYCOMP(K(I,2))
71736           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
71737      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
71738      &    K(I,2).EQ.KSUSY1+39) GOTO 140
71739           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
71740      &    GOTO 140
71741         ENDIF
71742         NP=NP+1
71743         PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
71744         PWT=1D0
71745         IF(ABS(PARU(41)-2D0).GT.0.001D0) PWT=
71746      &  MAX(1D-10,PA)**(PARU(41)-2D0)
71747         DO 130 J1=1,3
71748           DO 120 J2=J1,3
71749             SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2)
71750   120     CONTINUE
71751   130   CONTINUE
71752         PS=PS+PWT*PA**2
71753   140 CONTINUE
71754  
71755 C...Very low multiplicities (0 or 1) not considered.
71756       IF(NP.LE.1) THEN
71757         CALL PYERRM(8,'(PYSPHE:) too few particles for analysis')
71758         SPH=-1D0
71759         APL=-1D0
71760         RETURN
71761       ENDIF
71762       DO 160 J1=1,3
71763         DO 150 J2=J1,3
71764           SM(J1,J2)=SM(J1,J2)/PS
71765   150   CONTINUE
71766   160 CONTINUE
71767  
71768 C...Find eigenvalues to matrix (third degree equation).
71769       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
71770      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
71771       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
71772      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
71773      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
71774       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
71775       P(N+1,4)=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
71776       P(N+3,4)=1D0/3D0+SQRT(-SQ)*MIN(2D0*SP,-SQRT(3D0*(1D0-SP**2))-SP)
71777       P(N+2,4)=1D0-P(N+1,4)-P(N+3,4)
71778       IF(P(N+2,4).LT.1D-5) THEN
71779         CALL PYERRM(8,'(PYSPHE:) all particles back-to-back')
71780         SPH=-1D0
71781         APL=-1D0
71782         RETURN
71783       ENDIF
71784  
71785 C...Find first and last eigenvector by solving equation system.
71786       DO 240 I=1,3,2
71787         DO 180 J1=1,3
71788           SV(J1,J1)=SM(J1,J1)-P(N+I,4)
71789           DO 170 J2=J1+1,3
71790             SV(J1,J2)=SM(J1,J2)
71791             SV(J2,J1)=SM(J1,J2)
71792   170     CONTINUE
71793   180   CONTINUE
71794         SMAX=0D0
71795         DO 200 J1=1,3
71796           DO 190 J2=1,3
71797             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190
71798             JA=J1
71799             JB=J2
71800             SMAX=ABS(SV(J1,J2))
71801   190     CONTINUE
71802   200   CONTINUE
71803         SMAX=0D0
71804         DO 220 J3=JA+1,JA+2
71805           J1=J3-3*((J3-1)/3)
71806           RL=SV(J1,JB)/SV(JA,JB)
71807           DO 210 J2=1,3
71808             SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2)
71809             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210
71810             JC=J1
71811             SMAX=ABS(SV(J1,J2))
71812   210     CONTINUE
71813   220   CONTINUE
71814         JB1=JB+1-3*(JB/3)
71815         JB2=JB+2-3*((JB+1)/3)
71816         P(N+I,JB1)=-SV(JC,JB2)
71817         P(N+I,JB2)=SV(JC,JB1)
71818         P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/
71819      &  SV(JA,JB)
71820         PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2)
71821         SGN=(-1D0)**INT(PYR(0)+0.5D0)
71822         DO 230 J=1,3
71823           P(N+I,J)=SGN*P(N+I,J)/PA
71824   230   CONTINUE
71825   240 CONTINUE
71826  
71827 C...Middle axis orthogonal to other two. Fill other codes.
71828       SGN=(-1D0)**INT(PYR(0)+0.5D0)
71829       P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2))
71830       P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3))
71831       P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1))
71832       DO 260 I=1,3
71833         K(N+I,1)=31
71834         K(N+I,2)=95
71835         K(N+I,3)=I
71836         K(N+I,4)=0
71837         K(N+I,5)=0
71838         P(N+I,5)=0D0
71839         DO 250 J=1,5
71840           V(I,J)=0D0
71841   250   CONTINUE
71842   260 CONTINUE
71843  
71844 C...Calculate sphericity and aplanarity. Select storing option.
71845       SPH=1.5D0*(P(N+2,4)+P(N+3,4))
71846       APL=1.5D0*P(N+3,4)
71847       MSTU(61)=N+1
71848       MSTU(62)=NP
71849       IF(MSTU(43).LE.1) MSTU(3)=3
71850       IF(MSTU(43).GE.2) N=N+3
71851  
71852       RETURN
71853       END
71854  
71855 C*********************************************************************
71856  
71857 C...PYTHRU
71858 C...Performs thrust analysis to give thrust, oblateness
71859 C...and the related event axes.
71860  
71861       SUBROUTINE PYTHRU(THR,OBL)
71862  
71863 C...Double precision and integer declarations.
71864       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71865       IMPLICIT INTEGER(I-N)
71866       INTEGER PYK,PYCHGE,PYCOMP
71867 C...Parameter statement to help give large particle numbers.
71868       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
71869      &KEXCIT=4000000,KDIMEN=5000000)
71870 C...Commonblocks.
71871       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71872       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71873       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71874       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
71875 C...Local arrays.
71876       DIMENSION TDI(3),TPR(3)
71877  
71878 C...Take copy of particles that are to be considered in thrust analysis.
71879       NP=0
71880       PS=0D0
71881       DO 100 I=1,N
71882         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
71883         IF(MSTU(41).GE.2) THEN
71884           KC=PYCOMP(K(I,2))
71885           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
71886      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
71887      &    K(I,2).EQ.KSUSY1+39) GOTO 100
71888           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
71889      &    GOTO 100
71890         ENDIF
71891         IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN
71892           CALL PYERRM(11,'(PYTHRU:) no more memory left in PYJETS')
71893           THR=-2D0
71894           OBL=-2D0
71895           RETURN
71896         ENDIF
71897         NP=NP+1
71898         K(N+NP,1)=23
71899         P(N+NP,1)=P(I,1)
71900         P(N+NP,2)=P(I,2)
71901         P(N+NP,3)=P(I,3)
71902         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
71903         P(N+NP,5)=1D0
71904         IF(ABS(PARU(42)-1D0).GT.0.001D0) P(N+NP,5)=
71905      &  P(N+NP,4)**(PARU(42)-1D0)
71906         PS=PS+P(N+NP,4)*P(N+NP,5)
71907   100 CONTINUE
71908  
71909 C...Very low multiplicities (0 or 1) not considered.
71910       IF(NP.LE.1) THEN
71911         CALL PYERRM(8,'(PYTHRU:) too few particles for analysis')
71912         THR=-1D0
71913         OBL=-1D0
71914         RETURN
71915       ENDIF
71916  
71917 C...Loop over thrust and major. T axis along z direction in latter case.
71918       DO 320 ILD=1,2
71919         IF(ILD.EQ.2) THEN
71920           K(N+NP+1,1)=31
71921           PHI=PYANGL(P(N+NP+1,1),P(N+NP+1,2))
71922           MSTU(33)=1
71923           CALL PYROBO(N+1,N+NP+1,0D0,-PHI,0D0,0D0,0D0)
71924           THE=PYANGL(P(N+NP+1,3),P(N+NP+1,1))
71925           CALL PYROBO(N+1,N+NP+1,-THE,0D0,0D0,0D0,0D0)
71926         ENDIF
71927  
71928 C...Find and order particles with highest p (pT for major).
71929         DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4
71930           P(ILF,4)=0D0
71931   110   CONTINUE
71932         DO 160 I=N+1,N+NP
71933           IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2)
71934           DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1
71935             IF(P(I,4).LE.P(ILF,4)) GOTO 140
71936             DO 120 J=1,5
71937               P(ILF+1,J)=P(ILF,J)
71938   120       CONTINUE
71939   130     CONTINUE
71940           ILF=N+NP+3
71941   140     DO 150 J=1,5
71942             P(ILF+1,J)=P(I,J)
71943   150     CONTINUE
71944   160   CONTINUE
71945  
71946 C...Find and order initial axes with highest thrust (major).
71947         DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15
71948           P(ILG,4)=0D0
71949   170   CONTINUE
71950         NC=2**(MIN(MSTU(44),NP)-1)
71951         DO 250 ILC=1,NC
71952           DO 180 J=1,3
71953             TDI(J)=0D0
71954   180     CONTINUE
71955           DO 200 ILF=1,MIN(MSTU(44),NP)
71956             SGN=P(N+NP+ILF+3,5)
71957             IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN
71958             DO 190 J=1,4-ILD
71959               TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J)
71960   190       CONTINUE
71961   200     CONTINUE
71962           TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2
71963           DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1
71964             IF(TDS.LE.P(ILG,4)) GOTO 230
71965             DO 210 J=1,4
71966               P(ILG+1,J)=P(ILG,J)
71967   210       CONTINUE
71968   220     CONTINUE
71969           ILG=N+NP+MSTU(44)+4
71970   230     DO 240 J=1,3
71971             P(ILG+1,J)=TDI(J)
71972   240     CONTINUE
71973           P(ILG+1,4)=TDS
71974   250   CONTINUE
71975  
71976 C...Iterate direction of axis until stable maximum.
71977         P(N+NP+ILD,4)=0D0
71978         ILG=0
71979   260   ILG=ILG+1
71980         THP=0D0
71981   270   THPS=THP
71982         DO 280 J=1,3
71983           IF(THP.LE.1D-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J)
71984           IF(THP.GT.1D-10) TDI(J)=TPR(J)
71985           TPR(J)=0D0
71986   280   CONTINUE
71987         DO 300 I=N+1,N+NP
71988           SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3))
71989           DO 290 J=1,4-ILD
71990             TPR(J)=TPR(J)+SGN*P(I,J)
71991   290     CONTINUE
71992   300   CONTINUE
71993         THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS
71994         IF(THP.GE.THPS+PARU(48)) GOTO 270
71995  
71996 C...Save good axis. Try new initial axis until a number of tries agree.
71997         IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260
71998         IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN
71999           IAGR=0
72000           SGN=(-1D0)**INT(PYR(0)+0.5D0)
72001           DO 310 J=1,3
72002             P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP)
72003   310     CONTINUE
72004           P(N+NP+ILD,4)=THP
72005           P(N+NP+ILD,5)=0D0
72006         ENDIF
72007         IAGR=IAGR+1
72008         IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260
72009   320 CONTINUE
72010  
72011 C...Find minor axis and value by orthogonality.
72012       SGN=(-1D0)**INT(PYR(0)+0.5D0)
72013       P(N+NP+3,1)=-SGN*P(N+NP+2,2)
72014       P(N+NP+3,2)=SGN*P(N+NP+2,1)
72015       P(N+NP+3,3)=0D0
72016       THP=0D0
72017       DO 330 I=N+1,N+NP
72018         THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2))
72019   330 CONTINUE
72020       P(N+NP+3,4)=THP/PS
72021       P(N+NP+3,5)=0D0
72022  
72023 C...Fill axis information. Rotate back to original coordinate system.
72024       DO 350 ILD=1,3
72025         K(N+ILD,1)=31
72026         K(N+ILD,2)=96
72027         K(N+ILD,3)=ILD
72028         K(N+ILD,4)=0
72029         K(N+ILD,5)=0
72030         DO 340 J=1,5
72031           P(N+ILD,J)=P(N+NP+ILD,J)
72032           V(N+ILD,J)=0D0
72033   340   CONTINUE
72034   350 CONTINUE
72035       CALL PYROBO(N+1,N+3,THE,PHI,0D0,0D0,0D0)
72036  
72037 C...Calculate thrust and oblateness. Select storing option.
72038       THR=P(N+1,4)
72039       OBL=P(N+2,4)-P(N+3,4)
72040       MSTU(61)=N+1
72041       MSTU(62)=NP
72042       IF(MSTU(43).LE.1) MSTU(3)=3
72043       IF(MSTU(43).GE.2) N=N+3
72044  
72045       RETURN
72046       END
72047  
72048 C*********************************************************************
72049  
72050 C...PYCLUS
72051 C...Subdivides the particle content of an event into jets/clusters.
72052  
72053       SUBROUTINE PYCLUS(NJET)
72054  
72055 C...Double precision and integer declarations.
72056       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72057       IMPLICIT INTEGER(I-N)
72058       INTEGER PYK,PYCHGE,PYCOMP
72059 C...Parameter statement to help give large particle numbers.
72060       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72061      &KEXCIT=4000000,KDIMEN=5000000)
72062 C...Commonblocks.
72063       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72064       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72065       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72066       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
72067 C...Local arrays and saved variables.
72068       DIMENSION PS(5)
72069       SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM
72070  
72071 C...Functions: distance measure in pT, (pseudo)mass or Durham pT.
72072       R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
72073      &P(I1,3)*P(I2,3))*2D0*P(I1,5)*P(I2,5)/(0.0001D0+P(I1,5)+P(I2,5))**2
72074       R2M(I1,I2)=2D0*P(I1,4)*P(I2,4)*(1D0-(P(I1,1)*P(I2,1)+P(I1,2)*
72075      &P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5)))
72076       R2D(I1,I2)=2D0*MIN(P(I1,4),P(I2,4))**2*(1D0-(P(I1,1)*P(I2,1)+
72077      &P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5)))
72078  
72079 C...If first time, reset. If reentering, skip preliminaries.
72080       IF(MSTU(48).LE.0) THEN
72081         NP=0
72082         DO 100 J=1,5
72083           PS(J)=0D0
72084   100   CONTINUE
72085         PSS=0D0
72086         PIMASS=PMAS(PYCOMP(211),1)
72087       ELSE
72088         NJET=NSAV
72089         IF(MSTU(43).GE.2) N=N-NJET
72090         DO 110 I=N+1,N+NJET
72091           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72092   110   CONTINUE
72093         IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
72094           R2ACC=PARU(44)**2
72095         ELSE
72096           R2ACC=PARU(45)*PS(5)**2
72097         ENDIF
72098         NLOOP=0
72099         GOTO 300
72100       ENDIF
72101  
72102 C...Find which particles are to be considered in cluster search.
72103       DO 140 I=1,N
72104         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
72105         IF(MSTU(41).GE.2) THEN
72106           KC=PYCOMP(K(I,2))
72107           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72108      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72109      &    K(I,2).EQ.KSUSY1+39) GOTO 140
72110           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
72111      &    GOTO 140
72112         ENDIF
72113         IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN
72114           CALL PYERRM(11,'(PYCLUS:) no more memory left in PYJETS')
72115           NJET=-1
72116           RETURN
72117         ENDIF
72118  
72119 C...Take copy of these particles, with space left for jets later on.
72120         NP=NP+1
72121         K(N+NP,3)=I
72122         DO 120 J=1,5
72123           P(N+NP,J)=P(I,J)
72124   120   CONTINUE
72125         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
72126         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
72127         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
72128         P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72129         DO 130 J=1,4
72130           PS(J)=PS(J)+P(N+NP,J)
72131   130   CONTINUE
72132         PSS=PSS+P(N+NP,5)
72133   140 CONTINUE
72134       DO 160 I=N+1,N+NP
72135         K(I+NP,3)=K(I,3)
72136         DO 150 J=1,5
72137           P(I+NP,J)=P(I,J)
72138   150   CONTINUE
72139   160 CONTINUE
72140       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
72141  
72142 C...Very low multiplicities not considered.
72143       IF(NP.LT.MSTU(47)) THEN
72144         CALL PYERRM(8,'(PYCLUS:) too few particles for analysis')
72145         NJET=-1
72146         RETURN
72147       ENDIF
72148  
72149 C...Find precluster configuration. If too few jets, make harder cuts.
72150       NLOOP=0
72151       IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
72152         R2ACC=PARU(44)**2
72153       ELSE
72154         R2ACC=PARU(45)*PS(5)**2
72155       ENDIF
72156       RINIT=1.25D0*PARU(43)
72157       IF(NP.LE.MSTU(47)+2) RINIT=0D0
72158   170 RINIT=0.8D0*RINIT
72159       NPRE=0
72160       NREM=NP
72161       DO 180 I=N+NP+1,N+2*NP
72162         K(I,4)=0
72163   180 CONTINUE
72164  
72165 C...Sum up small momentum region. Jet if enough absolute momentum.
72166       IF(MSTU(46).LE.2) THEN
72167         DO 190 J=1,4
72168           P(N+1,J)=0D0
72169   190   CONTINUE
72170         DO 210 I=N+NP+1,N+2*NP
72171           IF(P(I,5).GT.2D0*RINIT) GOTO 210
72172           NREM=NREM-1
72173           K(I,4)=1
72174           DO 200 J=1,4
72175             P(N+1,J)=P(N+1,J)+P(I,J)
72176   200     CONTINUE
72177   210   CONTINUE
72178         P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
72179         IF(P(N+1,5).GT.2D0*RINIT) NPRE=1
72180         IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
72181         IF(NREM.EQ.0) GOTO 170
72182       ENDIF
72183  
72184 C...Find fastest remaining particle.
72185   220 NPRE=NPRE+1
72186       PMAX=0D0
72187       DO 230 I=N+NP+1,N+2*NP
72188         IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230
72189         IMAX=I
72190         PMAX=P(I,5)
72191   230 CONTINUE
72192       DO 240 J=1,5
72193         P(N+NPRE,J)=P(IMAX,J)
72194   240 CONTINUE
72195       NREM=NREM-1
72196       K(IMAX,4)=NPRE
72197  
72198 C...Sum up precluster around it according to pT separation.
72199       IF(MSTU(46).LE.2) THEN
72200         DO 260 I=N+NP+1,N+2*NP
72201           IF(K(I,4).NE.0) GOTO 260
72202           R2=R2T(I,IMAX)
72203           IF(R2.GT.RINIT**2) GOTO 260
72204           NREM=NREM-1
72205           K(I,4)=NPRE
72206           DO 250 J=1,4
72207             P(N+NPRE,J)=P(N+NPRE,J)+P(I,J)
72208   250     CONTINUE
72209   260   CONTINUE
72210         P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
72211  
72212 C...Sum up precluster around it according to mass or
72213 C...Durham pT separation.
72214       ELSE
72215   270   IMIN=0
72216         R2MIN=RINIT**2
72217         DO 280 I=N+NP+1,N+2*NP
72218           IF(K(I,4).NE.0) GOTO 280
72219           IF(MSTU(46).LE.4) THEN
72220             R2=R2M(I,N+NPRE)
72221           ELSE
72222             R2=R2D(I,N+NPRE)
72223           ENDIF
72224           IF(R2.GE.R2MIN) GOTO 280
72225           IMIN=I
72226           R2MIN=R2
72227   280   CONTINUE
72228         IF(IMIN.NE.0) THEN
72229           DO 290 J=1,4
72230             P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J)
72231   290     CONTINUE
72232           P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
72233           NREM=NREM-1
72234           K(IMIN,4)=NPRE
72235           GOTO 270
72236         ENDIF
72237       ENDIF
72238  
72239 C...Check if more preclusters to be found. Start over if too few.
72240       IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
72241       IF(NREM.GT.0) GOTO 220
72242       NJET=NPRE
72243  
72244 C...Reassign all particles to nearest jet. Sum up new jet momenta.
72245   300 TSAV=0D0
72246       PSJT=0D0
72247   310 IF(MSTU(46).LE.1) THEN
72248         DO 330 I=N+1,N+NJET
72249           DO 320 J=1,4
72250             V(I,J)=0D0
72251   320     CONTINUE
72252   330   CONTINUE
72253         DO 360 I=N+NP+1,N+2*NP
72254           R2MIN=PSS**2
72255           DO 340 IJET=N+1,N+NJET
72256             IF(P(IJET,5).LT.RINIT) GOTO 340
72257             R2=R2T(I,IJET)
72258             IF(R2.GE.R2MIN) GOTO 340
72259             IMIN=IJET
72260             R2MIN=R2
72261   340     CONTINUE
72262           K(I,4)=IMIN-N
72263           DO 350 J=1,4
72264             V(IMIN,J)=V(IMIN,J)+P(I,J)
72265   350     CONTINUE
72266   360   CONTINUE
72267         PSJT=0D0
72268         DO 380 I=N+1,N+NJET
72269           DO 370 J=1,4
72270             P(I,J)=V(I,J)
72271   370     CONTINUE
72272           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72273           PSJT=PSJT+P(I,5)
72274   380   CONTINUE
72275       ENDIF
72276  
72277 C...Find two closest jets.
72278       R2MIN=2D0*MAX(R2ACC,PS(5)**2)
72279       DO 400 ITRY1=N+1,N+NJET-1
72280         DO 390 ITRY2=ITRY1+1,N+NJET
72281           IF(MSTU(46).LE.2) THEN
72282             R2=R2T(ITRY1,ITRY2)
72283           ELSEIF(MSTU(46).LE.4) THEN
72284             R2=R2M(ITRY1,ITRY2)
72285           ELSE
72286             R2=R2D(ITRY1,ITRY2)
72287           ENDIF
72288           IF(R2.GE.R2MIN) GOTO 390
72289           IMIN1=ITRY1
72290           IMIN2=ITRY2
72291           R2MIN=R2
72292   390   CONTINUE
72293   400 CONTINUE
72294  
72295 C...If allowed, join two closest jets and start over.
72296       IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN
72297         IREC=MIN(IMIN1,IMIN2)
72298         IDEL=MAX(IMIN1,IMIN2)
72299         DO 410 J=1,4
72300           P(IREC,J)=P(IMIN1,J)+P(IMIN2,J)
72301   410   CONTINUE
72302         P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2)
72303         DO 430 I=IDEL+1,N+NJET
72304           DO 420 J=1,5
72305             P(I-1,J)=P(I,J)
72306   420     CONTINUE
72307   430   CONTINUE
72308         IF(MSTU(46).GE.2) THEN
72309           DO 440 I=N+NP+1,N+2*NP
72310             IORI=N+K(I,4)
72311             IF(IORI.EQ.IDEL) K(I,4)=IREC-N
72312             IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1
72313   440     CONTINUE
72314         ENDIF
72315         NJET=NJET-1
72316         GOTO 300
72317  
72318 C...Divide up broad jet if empty cluster in list of final ones.
72319       ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN
72320         DO 450 I=N+1,N+NJET
72321           K(I,5)=0
72322   450   CONTINUE
72323         DO 460 I=N+NP+1,N+2*NP
72324           K(N+K(I,4),5)=K(N+K(I,4),5)+1
72325   460   CONTINUE
72326         IEMP=0
72327         DO 470 I=N+1,N+NJET
72328           IF(K(I,5).EQ.0) IEMP=I
72329   470   CONTINUE
72330         IF(IEMP.NE.0) THEN
72331           NLOOP=NLOOP+1
72332           ISPL=0
72333           R2MAX=0D0
72334           DO 480 I=N+NP+1,N+2*NP
72335             IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480
72336             IJET=N+K(I,4)
72337             R2=R2T(I,IJET)
72338             IF(R2.LE.R2MAX) GOTO 480
72339             ISPL=I
72340             R2MAX=R2
72341   480     CONTINUE
72342           IF(ISPL.NE.0) THEN
72343             IJET=N+K(ISPL,4)
72344             DO 490 J=1,4
72345               P(IEMP,J)=P(ISPL,J)
72346               P(IJET,J)=P(IJET,J)-P(ISPL,J)
72347   490       CONTINUE
72348             P(IEMP,5)=P(ISPL,5)
72349             P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2)
72350             IF(NLOOP.LE.2) GOTO 300
72351           ENDIF
72352         ENDIF
72353       ENDIF
72354  
72355 C...If generalized thrust has not yet converged, continue iteration.
72356       IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48))
72357      &THEN
72358         TSAV=PSJT/PSS
72359         GOTO 310
72360       ENDIF
72361  
72362 C...Reorder jets according to energy.
72363       DO 510 I=N+1,N+NJET
72364         DO 500 J=1,5
72365           V(I,J)=P(I,J)
72366   500   CONTINUE
72367   510 CONTINUE
72368       DO 540 INEW=N+1,N+NJET
72369         PEMAX=0D0
72370         DO 520 ITRY=N+1,N+NJET
72371           IF(V(ITRY,4).LE.PEMAX) GOTO 520
72372           IMAX=ITRY
72373           PEMAX=V(ITRY,4)
72374   520   CONTINUE
72375         K(INEW,1)=31
72376         K(INEW,2)=97
72377         K(INEW,3)=INEW-N
72378         K(INEW,4)=0
72379         DO 530 J=1,5
72380           P(INEW,J)=V(IMAX,J)
72381   530   CONTINUE
72382         V(IMAX,4)=-1D0
72383         K(IMAX,5)=INEW
72384   540 CONTINUE
72385  
72386 C...Clean up particle-jet assignments and jet information.
72387       DO 550 I=N+NP+1,N+2*NP
72388         IORI=K(N+K(I,4),5)
72389         K(I,4)=IORI-N
72390         IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N
72391         K(IORI,4)=K(IORI,4)+1
72392   550 CONTINUE
72393       IEMP=0
72394       PSJT=0D0
72395       DO 570 I=N+1,N+NJET
72396         K(I,5)=0
72397         PSJT=PSJT+P(I,5)
72398         P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0D0))
72399         DO 560 J=1,5
72400           V(I,J)=0D0
72401   560   CONTINUE
72402         IF(K(I,4).EQ.0) IEMP=I
72403   570 CONTINUE
72404  
72405 C...Select storing option. Output variables. Check for failure.
72406       MSTU(61)=N+1
72407       MSTU(62)=NP
72408       MSTU(63)=NPRE
72409       PARU(61)=PS(5)
72410       PARU(62)=PSJT/PSS
72411       PARU(63)=SQRT(R2MIN)
72412       IF(NJET.LE.1) PARU(63)=0D0
72413       IF(IEMP.NE.0) THEN
72414         CALL PYERRM(8,'(PYCLUS:) failed to reconstruct as requested')
72415         NJET=-1
72416         RETURN
72417       ENDIF
72418       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
72419       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
72420       NSAV=NJET
72421  
72422       RETURN
72423       END
72424  
72425 C*********************************************************************
72426  
72427 C...PYCELL
72428 C...Provides a simple way of jet finding in eta-phi-ET coordinates,
72429 C...as used for calorimeters at hadron colliders.
72430  
72431       SUBROUTINE PYCELL(NJET)
72432  
72433 C...Double precision and integer declarations.
72434       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72435       IMPLICIT INTEGER(I-N)
72436       INTEGER PYK,PYCHGE,PYCOMP
72437 C...Parameter statement to help give large particle numbers.
72438       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72439      &KEXCIT=4000000,KDIMEN=5000000)
72440 C...Commonblocks.
72441       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72442       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72443       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72444       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
72445  
72446 C...Loop over all particles. Find cell that was hit by given particle.
72447       PTLRAT=1D0/SINH(PARU(51))**2
72448       NP=0
72449       NC=N
72450       DO 110 I=1,N
72451         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
72452         IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110
72453         IF(MSTU(41).GE.2) THEN
72454           KC=PYCOMP(K(I,2))
72455           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72456      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72457      &    K(I,2).EQ.KSUSY1+39) GOTO 110
72458           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
72459      &    GOTO 110
72460         ENDIF
72461         NP=NP+1
72462         PT=SQRT(P(I,1)**2+P(I,2)**2)
72463         ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3))
72464         IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5D0*
72465      &  (ETA/PARU(51)+1D0))))
72466         PHI=PYANGL(P(I,1),P(I,2))
72467         IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5D0*
72468      &  (PHI/PARU(1)+1D0))))
72469         IETPH=MSTU(52)*IETA+IPHI
72470  
72471 C...Add to cell already hit, or book new cell.
72472         DO 100 IC=N+1,NC
72473           IF(IETPH.EQ.K(IC,3)) THEN
72474             K(IC,4)=K(IC,4)+1
72475             P(IC,5)=P(IC,5)+PT
72476             GOTO 110
72477           ENDIF
72478   100   CONTINUE
72479         IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN
72480           CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
72481           NJET=-2
72482           RETURN
72483         ENDIF
72484         NC=NC+1
72485         K(NC,3)=IETPH
72486         K(NC,4)=1
72487         K(NC,5)=2
72488         P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51))
72489         P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52))
72490         P(NC,5)=PT
72491   110 CONTINUE
72492  
72493 C...Smear true bin content by calorimeter resolution.
72494       IF(MSTU(53).GE.1) THEN
72495         DO 130 IC=N+1,NC
72496           PEI=P(IC,5)
72497           IF(MSTU(53).EQ.2) PEI=P(IC,5)*COSH(P(IC,1))
72498   120     PEF=PEI+PARU(55)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0)))*PEI)*
72499      &    COS(PARU(2)*PYR(0))
72500           IF(PEF.LT.0D0.OR.PEF.GT.PARU(56)*PEI) GOTO 120
72501           P(IC,5)=PEF
72502           IF(MSTU(53).EQ.2) P(IC,5)=PEF/COSH(P(IC,1))
72503   130   CONTINUE
72504       ENDIF
72505  
72506 C...Remove cells below threshold.
72507       IF(PARU(58).GT.0D0) THEN
72508         NCC=NC
72509         NC=N
72510         DO 140 IC=N+1,NCC
72511           IF(P(IC,5).GT.PARU(58)) THEN
72512             NC=NC+1
72513             K(NC,3)=K(IC,3)
72514             K(NC,4)=K(IC,4)
72515             K(NC,5)=K(IC,5)
72516             P(NC,1)=P(IC,1)
72517             P(NC,2)=P(IC,2)
72518             P(NC,5)=P(IC,5)
72519           ENDIF
72520   140   CONTINUE
72521       ENDIF
72522  
72523 C...Find initiator cell: the one with highest pT of not yet used ones.
72524       NJ=NC
72525   150 ETMAX=0D0
72526       DO 160 IC=N+1,NC
72527         IF(K(IC,5).NE.2) GOTO 160
72528         IF(P(IC,5).LE.ETMAX) GOTO 160
72529         ICMAX=IC
72530         ETA=P(IC,1)
72531         PHI=P(IC,2)
72532         ETMAX=P(IC,5)
72533   160 CONTINUE
72534       IF(ETMAX.LT.PARU(52)) GOTO 220
72535       IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN
72536         CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
72537         NJET=-2
72538         RETURN
72539       ENDIF
72540       K(ICMAX,5)=1
72541       NJ=NJ+1
72542       K(NJ,4)=0
72543       K(NJ,5)=1
72544       P(NJ,1)=ETA
72545       P(NJ,2)=PHI
72546       P(NJ,3)=0D0
72547       P(NJ,4)=0D0
72548       P(NJ,5)=0D0
72549  
72550 C...Sum up unused cells within required distance of initiator.
72551       DO 170 IC=N+1,NC
72552         IF(K(IC,5).EQ.0) GOTO 170
72553         IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170
72554         DPHIA=ABS(P(IC,2)-PHI)
72555         IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170
72556         PHIC=P(IC,2)
72557         IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI)
72558         IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170
72559         K(IC,5)=-K(IC,5)
72560         K(NJ,4)=K(NJ,4)+K(IC,4)
72561         P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1)
72562         P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC
72563         P(NJ,5)=P(NJ,5)+P(IC,5)
72564   170 CONTINUE
72565  
72566 C...Reject cluster below minimum ET, else accept.
72567       IF(P(NJ,5).LT.PARU(53)) THEN
72568         NJ=NJ-1
72569         DO 180 IC=N+1,NC
72570           IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5)
72571   180   CONTINUE
72572       ELSEIF(MSTU(54).LE.2) THEN
72573         P(NJ,3)=P(NJ,3)/P(NJ,5)
72574         P(NJ,4)=P(NJ,4)/P(NJ,5)
72575         IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2),
72576      &  P(NJ,4))
72577         DO 190 IC=N+1,NC
72578           IF(K(IC,5).LT.0) K(IC,5)=0
72579   190   CONTINUE
72580       ELSE
72581         DO 200 J=1,4
72582           P(NJ,J)=0D0
72583   200   CONTINUE
72584         DO 210 IC=N+1,NC
72585           IF(K(IC,5).GE.0) GOTO 210
72586           P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2))
72587           P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2))
72588           P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1))
72589           P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1))
72590           K(IC,5)=0
72591   210   CONTINUE
72592       ENDIF
72593       GOTO 150
72594  
72595 C...Arrange clusters in falling ET sequence.
72596   220 DO 250 I=1,NJ-NC
72597         ETMAX=0D0
72598         DO 230 IJ=NC+1,NJ
72599           IF(K(IJ,5).EQ.0) GOTO 230
72600           IF(P(IJ,5).LT.ETMAX) GOTO 230
72601           IJMAX=IJ
72602           ETMAX=P(IJ,5)
72603   230   CONTINUE
72604         K(IJMAX,5)=0
72605         K(N+I,1)=31
72606         K(N+I,2)=98
72607         K(N+I,3)=I
72608         K(N+I,4)=K(IJMAX,4)
72609         K(N+I,5)=0
72610         DO 240 J=1,5
72611           P(N+I,J)=P(IJMAX,J)
72612           V(N+I,J)=0D0
72613   240   CONTINUE
72614   250 CONTINUE
72615       NJET=NJ-NC
72616  
72617 C...Convert to massless or massive four-vectors.
72618       IF(MSTU(54).EQ.2) THEN
72619         DO 260 I=N+1,N+NJET
72620           ETA=P(I,3)
72621           P(I,1)=P(I,5)*COS(P(I,4))
72622           P(I,2)=P(I,5)*SIN(P(I,4))
72623           P(I,3)=P(I,5)*SINH(ETA)
72624           P(I,4)=P(I,5)*COSH(ETA)
72625           P(I,5)=0D0
72626   260   CONTINUE
72627       ELSEIF(MSTU(54).GE.3) THEN
72628         DO 270 I=N+1,N+NJET
72629           P(I,5)=SQRT(MAX(0D0,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2))
72630   270   CONTINUE
72631       ENDIF
72632  
72633 C...Information about storage.
72634       MSTU(61)=N+1
72635       MSTU(62)=NP
72636       MSTU(63)=NC-N
72637       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
72638       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
72639  
72640       RETURN
72641       END
72642  
72643 C*********************************************************************
72644  
72645 C...PYJMAS
72646 C...Determines, approximately, the two jet masses that minimize
72647 C...the sum m_H^2 + m_L^2, a la Clavelli and Wyler.
72648  
72649       SUBROUTINE PYJMAS(PMH,PML)
72650  
72651 C...Double precision and integer declarations.
72652       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72653       IMPLICIT INTEGER(I-N)
72654       INTEGER PYK,PYCHGE,PYCOMP
72655 C...Parameter statement to help give large particle numbers.
72656       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72657      &KEXCIT=4000000,KDIMEN=5000000)
72658 C...Commonblocks.
72659       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72660       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72661       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72662       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
72663 C...Local arrays.
72664       DIMENSION SM(3,3),SAX(3),PS(3,5)
72665  
72666 C...Reset.
72667       NP=0
72668       DO 120 J1=1,3
72669         DO 100 J2=J1,3
72670           SM(J1,J2)=0D0
72671   100   CONTINUE
72672         DO 110 J2=1,4
72673           PS(J1,J2)=0D0
72674   110   CONTINUE
72675   120 CONTINUE
72676       PSS=0D0
72677       PIMASS=PMAS(PYCOMP(211),1)
72678  
72679 C...Take copy of particles that are to be considered in mass analysis.
72680       DO 170 I=1,N
72681         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170
72682         IF(MSTU(41).GE.2) THEN
72683           KC=PYCOMP(K(I,2))
72684           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72685      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72686      &    K(I,2).EQ.KSUSY1+39) GOTO 170
72687           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
72688      &    GOTO 170
72689         ENDIF
72690         IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN
72691           CALL PYERRM(11,'(PYJMAS:) no more memory left in PYJETS')
72692           PMH=-2D0
72693           PML=-2D0
72694           RETURN
72695         ENDIF
72696         NP=NP+1
72697         DO 130 J=1,5
72698           P(N+NP,J)=P(I,J)
72699   130   CONTINUE
72700         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
72701         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
72702         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
72703  
72704 C...Fill information in sphericity tensor and total momentum vector.
72705         DO 150 J1=1,3
72706           DO 140 J2=J1,3
72707             SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2)
72708   140     CONTINUE
72709   150   CONTINUE
72710         PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72711         DO 160 J=1,4
72712           PS(3,J)=PS(3,J)+P(N+NP,J)
72713   160   CONTINUE
72714   170 CONTINUE
72715  
72716 C...Very low multiplicities (0 or 1) not considered.
72717       IF(NP.LE.1) THEN
72718         CALL PYERRM(8,'(PYJMAS:) too few particles for analysis')
72719         PMH=-1D0
72720         PML=-1D0
72721         RETURN
72722       ENDIF
72723       PARU(61)=SQRT(MAX(0D0,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-
72724      &PS(3,3)**2))
72725  
72726 C...Find largest eigenvalue to matrix (third degree equation).
72727       DO 190 J1=1,3
72728         DO 180 J2=J1,3
72729           SM(J1,J2)=SM(J1,J2)/PSS
72730   180   CONTINUE
72731   190 CONTINUE
72732       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
72733      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
72734       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
72735      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
72736      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
72737       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
72738       SMA=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
72739  
72740 C...Find largest eigenvector by solving equation system.
72741       DO 210 J1=1,3
72742         SM(J1,J1)=SM(J1,J1)-SMA
72743         DO 200 J2=J1+1,3
72744           SM(J2,J1)=SM(J1,J2)
72745   200   CONTINUE
72746   210 CONTINUE
72747       SMAX=0D0
72748       DO 230 J1=1,3
72749         DO 220 J2=1,3
72750           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220
72751           JA=J1
72752           JB=J2
72753           SMAX=ABS(SM(J1,J2))
72754   220   CONTINUE
72755   230 CONTINUE
72756       SMAX=0D0
72757       DO 250 J3=JA+1,JA+2
72758         J1=J3-3*((J3-1)/3)
72759         RL=SM(J1,JB)/SM(JA,JB)
72760         DO 240 J2=1,3
72761           SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2)
72762           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240
72763           JC=J1
72764           SMAX=ABS(SM(J1,J2))
72765   240   CONTINUE
72766   250 CONTINUE
72767       JB1=JB+1-3*(JB/3)
72768       JB2=JB+2-3*((JB+1)/3)
72769       SAX(JB1)=-SM(JC,JB2)
72770       SAX(JB2)=SM(JC,JB1)
72771       SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB)
72772  
72773 C...Divide particles into two initial clusters by hemisphere.
72774       DO 270 I=N+1,N+NP
72775         PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3)
72776         IS=1
72777         IF(PSAX.LT.0D0) IS=2
72778         K(I,3)=IS
72779         DO 260 J=1,4
72780           PS(IS,J)=PS(IS,J)+P(I,J)
72781   260   CONTINUE
72782   270 CONTINUE
72783       PMS=MAX(1D-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+
72784      &MAX(1D-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)
72785  
72786 C...Reassign one particle at a time; find maximum decrease of m^2 sum.
72787   280 PMD=0D0
72788       IM=0
72789       DO 290 J=1,4
72790         PS(3,J)=PS(1,J)-PS(2,J)
72791   290 CONTINUE
72792       DO 300 I=N+1,N+NP
72793         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)
72794         IF(K(I,3).EQ.1) PMDI=2D0*(P(I,5)**2-PPS)
72795         IF(K(I,3).EQ.2) PMDI=2D0*(P(I,5)**2+PPS)
72796         IF(PMDI.LT.PMD) THEN
72797           PMD=PMDI
72798           IM=I
72799         ENDIF
72800   300 CONTINUE
72801  
72802 C...Loop back if significant reduction in sum of m^2.
72803       IF(PMD.LT.-PARU(48)*PMS) THEN
72804         PMS=PMS+PMD
72805         IS=K(IM,3)
72806         DO 310 J=1,4
72807           PS(IS,J)=PS(IS,J)-P(IM,J)
72808           PS(3-IS,J)=PS(3-IS,J)+P(IM,J)
72809   310   CONTINUE
72810         K(IM,3)=3-IS
72811         GOTO 280
72812       ENDIF
72813  
72814 C...Final masses and output.
72815       MSTU(61)=N+1
72816       MSTU(62)=NP
72817       PS(1,5)=SQRT(MAX(0D0,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2))
72818       PS(2,5)=SQRT(MAX(0D0,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2))
72819       PMH=MAX(PS(1,5),PS(2,5))
72820       PML=MIN(PS(1,5),PS(2,5))
72821  
72822       RETURN
72823       END
72824  
72825 C*********************************************************************
72826  
72827 C...PYFOWO
72828 C...Calculates the first few Fox-Wolfram moments.
72829  
72830       SUBROUTINE PYFOWO(H10,H20,H30,H40)
72831  
72832 C...Double precision and integer declarations.
72833       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72834       IMPLICIT INTEGER(I-N)
72835       INTEGER PYK,PYCHGE,PYCOMP
72836 C...Parameter statement to help give large particle numbers.
72837       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72838      &KEXCIT=4000000,KDIMEN=5000000)
72839 C...Commonblocks.
72840       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72841       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72842       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72843       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
72844  
72845 C...Copy momenta for particles and calculate H0.
72846       NP=0
72847       H0=0D0
72848       HD=0D0
72849       DO 110 I=1,N
72850         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
72851         IF(MSTU(41).GE.2) THEN
72852           KC=PYCOMP(K(I,2))
72853           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72854      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72855      &    K(I,2).EQ.KSUSY1+39) GOTO 110
72856           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
72857      &    GOTO 110
72858         ENDIF
72859         IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN
72860           CALL PYERRM(11,'(PYFOWO:) no more memory left in PYJETS')
72861           H10=-1D0
72862           H20=-1D0
72863           H30=-1D0
72864           H40=-1D0
72865           RETURN
72866         ENDIF
72867         NP=NP+1
72868         DO 100 J=1,3
72869           P(N+NP,J)=P(I,J)
72870   100   CONTINUE
72871         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72872         H0=H0+P(N+NP,4)
72873         HD=HD+P(N+NP,4)**2
72874   110 CONTINUE
72875       H0=H0**2
72876  
72877 C...Very low multiplicities (0 or 1) not considered.
72878       IF(NP.LE.1) THEN
72879         CALL PYERRM(8,'(PYFOWO:) too few particles for analysis')
72880         H10=-1D0
72881         H20=-1D0
72882         H30=-1D0
72883         H40=-1D0
72884         RETURN
72885       ENDIF
72886  
72887 C...Calculate H1 - H4.
72888       H10=0D0
72889       H20=0D0
72890       H30=0D0
72891       H40=0D0
72892       DO 130 I1=N+1,N+NP
72893         DO 120 I2=I1+1,N+NP
72894           CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
72895      &    (P(I1,4)*P(I2,4))
72896           H10=H10+P(I1,4)*P(I2,4)*CTHE
72897           H20=H20+P(I1,4)*P(I2,4)*(1.5D0*CTHE**2-0.5D0)
72898           H30=H30+P(I1,4)*P(I2,4)*(2.5D0*CTHE**3-1.5D0*CTHE)
72899           H40=H40+P(I1,4)*P(I2,4)*(4.375D0*CTHE**4-3.75D0*CTHE**2+
72900      &    0.375D0)
72901   120   CONTINUE
72902   130 CONTINUE
72903  
72904 C...Calculate H1/H0 - H4/H0. Output.
72905       MSTU(61)=N+1
72906       MSTU(62)=NP
72907       H10=(HD+2D0*H10)/H0
72908       H20=(HD+2D0*H20)/H0
72909       H30=(HD+2D0*H30)/H0
72910       H40=(HD+2D0*H40)/H0
72911  
72912       RETURN
72913       END
72914  
72915 C*********************************************************************
72916  
72917 C...PYTABU
72918 C...Evaluates various properties of an event, with statistics
72919 C...accumulated during the course of the run and
72920 C...printed at the end.
72921  
72922       SUBROUTINE PYTABU(MTABU)
72923  
72924 C...Double precision and integer declarations.
72925       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72926       IMPLICIT INTEGER(I-N)
72927       INTEGER PYK,PYCHGE,PYCOMP
72928 C...Parameter statement to help give large particle numbers.
72929       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72930      &KEXCIT=4000000,KDIMEN=5000000)
72931 C...Commonblocks.
72932       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72933       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72934       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72935       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
72936       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
72937 C...Local arrays, character variables, saved variables and data.
72938       DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4),
72939      &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4),
72940      &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25),
72941      &KFDM(8),KFDC(200,0:8),NPDC(200)
72942       SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS,
72943      &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA,
72944      &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC
72945       CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12
72946       DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/,
72947      &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0D0/,FM2FM/120*0D0/,
72948      &NEVEE/0/,FE1EC/50*0D0/,FE2EC/50*0D0/,FE1EA/25*0D0/,FE2EA/25*0D0/,
72949      &NEVDC/0/,NKFDC/0/,NREDC/0/
72950  
72951 C...Reset statistics on initial parton state.
72952       IF(MTABU.EQ.10) THEN
72953         NEVIS=0
72954         NKFIS=0
72955  
72956 C...Identify and order flavour content of initial state.
72957       ELSEIF(MTABU.EQ.11) THEN
72958         NEVIS=NEVIS+1
72959         KFM1=2*IABS(MSTU(161))
72960         IF(MSTU(161).GT.0) KFM1=KFM1-1
72961         KFM2=2*IABS(MSTU(162))
72962         IF(MSTU(162).GT.0) KFM2=KFM2-1
72963         KFMN=MIN(KFM1,KFM2)
72964         KFMX=MAX(KFM1,KFM2)
72965         DO 100 I=1,NKFIS
72966           IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN
72967             IKFIS=-I
72968             GOTO 110
72969           ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND.
72970      &      KFMX.LT.KFIS(I,2))) THEN
72971             IKFIS=I
72972             GOTO 110
72973           ENDIF
72974   100   CONTINUE
72975         IKFIS=NKFIS+1
72976   110   IF(IKFIS.LT.0) THEN
72977           IKFIS=-IKFIS
72978         ELSE
72979           IF(NKFIS.GE.100) RETURN
72980           DO 130 I=NKFIS,IKFIS,-1
72981             KFIS(I+1,1)=KFIS(I,1)
72982             KFIS(I+1,2)=KFIS(I,2)
72983             DO 120 J=0,10
72984               NPIS(I+1,J)=NPIS(I,J)
72985   120       CONTINUE
72986   130     CONTINUE
72987           NKFIS=NKFIS+1
72988           KFIS(IKFIS,1)=KFMN
72989           KFIS(IKFIS,2)=KFMX
72990           DO 140 J=0,10
72991             NPIS(IKFIS,J)=0
72992   140     CONTINUE
72993         ENDIF
72994         NPIS(IKFIS,0)=NPIS(IKFIS,0)+1
72995  
72996 C...Count number of partons in initial state.
72997         NP=0
72998         DO 160 I=1,N
72999           IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN
73000           ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN
73001           ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0)
73002      &      THEN
73003           ELSE
73004             IM=I
73005   150       IM=K(IM,3)
73006             IF(IM.LE.0.OR.IM.GT.N) THEN
73007               NP=NP+1
73008             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
73009               NP=NP+1
73010             ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN
73011             ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10)
73012      &        .NE.0) THEN
73013             ELSE
73014               GOTO 150
73015             ENDIF
73016           ENDIF
73017   160   CONTINUE
73018         NPCO=MAX(NP,1)
73019         IF(NP.GE.6) NPCO=6
73020         IF(NP.GE.8) NPCO=7
73021         IF(NP.GE.11) NPCO=8
73022         IF(NP.GE.16) NPCO=9
73023         IF(NP.GE.26) NPCO=10
73024         NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1
73025         MSTU(62)=NP
73026  
73027 C...Write statistics on initial parton state.
73028       ELSEIF(MTABU.EQ.12) THEN
73029         FAC=1D0/MAX(1,NEVIS)
73030         WRITE(MSTU(11),5000) NEVIS
73031         DO 170 I=1,NKFIS
73032           KFMN=KFIS(I,1)
73033           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
73034           KFM1=(KFMN+1)/2
73035           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
73036           CALL PYNAME(KFM1,CHAU)
73037           CHIS(1)=CHAU(1:12)
73038           IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?'
73039           KFMX=KFIS(I,2)
73040           IF(KFIS(I,1).EQ.0) KFMX=0
73041           KFM2=(KFMX+1)/2
73042           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
73043           CALL PYNAME(KFM2,CHAU)
73044           CHIS(2)=CHAU(1:12)
73045           IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?'
73046           WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0),
73047      &    (NPIS(I,J)/DBLE(NPIS(I,0)),J=1,10)
73048   170   CONTINUE
73049  
73050 C...Copy statistics on initial parton state into /PYJETS/.
73051       ELSEIF(MTABU.EQ.13) THEN
73052         FAC=1D0/MAX(1,NEVIS)
73053         DO 190 I=1,NKFIS
73054           KFMN=KFIS(I,1)
73055           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
73056           KFM1=(KFMN+1)/2
73057           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
73058           KFMX=KFIS(I,2)
73059           IF(KFIS(I,1).EQ.0) KFMX=0
73060           KFM2=(KFMX+1)/2
73061           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
73062           K(I,1)=32
73063           K(I,2)=99
73064           K(I,3)=KFM1
73065           K(I,4)=KFM2
73066           K(I,5)=NPIS(I,0)
73067           DO 180 J=1,5
73068             P(I,J)=FAC*NPIS(I,J)
73069             V(I,J)=FAC*NPIS(I,J+5)
73070   180     CONTINUE
73071   190   CONTINUE
73072         N=NKFIS
73073         DO 200 J=1,5
73074           K(N+1,J)=0
73075           P(N+1,J)=0D0
73076           V(N+1,J)=0D0
73077   200   CONTINUE
73078         K(N+1,1)=32
73079         K(N+1,2)=99
73080         K(N+1,5)=NEVIS
73081         MSTU(3)=1
73082  
73083 C...Reset statistics on number of particles/partons.
73084       ELSEIF(MTABU.EQ.20) THEN
73085         NEVFS=0
73086         NPRFS=0
73087         NFIFS=0
73088         NCHFS=0
73089         NKFFS=0
73090  
73091 C...Identify whether particle/parton is primary or not.
73092       ELSEIF(MTABU.EQ.21) THEN
73093         NEVFS=NEVFS+1
73094         MSTU(62)=0
73095         DO 260 I=1,N
73096           IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260
73097           MSTU(62)=MSTU(62)+1
73098           KC=PYCOMP(K(I,2))
73099           MPRI=0
73100           IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN
73101             MPRI=1
73102           ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN
73103             MPRI=1
73104           ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN
73105             MPRI=1
73106           ELSEIF(KC.EQ.0) THEN
73107           ELSEIF(K(K(I,3),1).EQ.13) THEN
73108             IM=K(K(I,3),3)
73109             IF(IM.LE.0.OR.IM.GT.N) THEN
73110               MPRI=1
73111             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
73112               MPRI=1
73113             ENDIF
73114           ELSEIF(KCHG(KC,2).EQ.0) THEN
73115             KCM=PYCOMP(K(K(I,3),2))
73116             IF(KCM.NE.0) THEN
73117               IF(KCHG(KCM,2).NE.0) MPRI=1
73118             ENDIF
73119           ENDIF
73120           IF(KC.NE.0.AND.MPRI.EQ.1) THEN
73121             IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1
73122           ENDIF
73123           IF(K(I,1).LE.10) THEN
73124             NFIFS=NFIFS+1
73125             IF(PYCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1
73126           ENDIF
73127  
73128 C...Fill statistics on number of particles/partons in event.
73129           KFA=IABS(K(I,2))
73130           KFS=3-ISIGN(1,K(I,2))-MPRI
73131           DO 210 IP=1,NKFFS
73132             IF(KFA.EQ.KFFS(IP)) THEN
73133               IKFFS=-IP
73134               GOTO 220
73135             ELSEIF(KFA.LT.KFFS(IP)) THEN
73136               IKFFS=IP
73137               GOTO 220
73138             ENDIF
73139   210     CONTINUE
73140           IKFFS=NKFFS+1
73141   220     IF(IKFFS.LT.0) THEN
73142             IKFFS=-IKFFS
73143           ELSE
73144             IF(NKFFS.GE.400) RETURN
73145             DO 240 IP=NKFFS,IKFFS,-1
73146               KFFS(IP+1)=KFFS(IP)
73147               DO 230 J=1,4
73148                 NPFS(IP+1,J)=NPFS(IP,J)
73149   230         CONTINUE
73150   240       CONTINUE
73151             NKFFS=NKFFS+1
73152             KFFS(IKFFS)=KFA
73153             DO 250 J=1,4
73154               NPFS(IKFFS,J)=0
73155   250       CONTINUE
73156           ENDIF
73157           NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1
73158   260   CONTINUE
73159  
73160 C...Write statistics on particle/parton composition of events.
73161       ELSEIF(MTABU.EQ.22) THEN
73162         FAC=1D0/MAX(1,NEVFS)
73163         WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS
73164         DO 270 I=1,NKFFS
73165           CALL PYNAME(KFFS(I),CHAU)
73166           KC=PYCOMP(KFFS(I))
73167           MDCYF=0
73168           IF(KC.NE.0) MDCYF=MDCY(KC,1)
73169           WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4),
73170      &    FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4))
73171   270   CONTINUE
73172  
73173 C...Copy particle/parton composition information into /PYJETS/.
73174       ELSEIF(MTABU.EQ.23) THEN
73175         FAC=1D0/MAX(1,NEVFS)
73176         DO 290 I=1,NKFFS
73177           K(I,1)=32
73178           K(I,2)=99
73179           K(I,3)=KFFS(I)
73180           K(I,4)=0
73181           K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)
73182           DO 280 J=1,4
73183             P(I,J)=FAC*NPFS(I,J)
73184             V(I,J)=0D0
73185   280     CONTINUE
73186           P(I,5)=FAC*K(I,5)
73187           V(I,5)=0D0
73188   290   CONTINUE
73189         N=NKFFS
73190         DO 300 J=1,5
73191           K(N+1,J)=0
73192           P(N+1,J)=0D0
73193           V(N+1,J)=0D0
73194   300   CONTINUE
73195         K(N+1,1)=32
73196         K(N+1,2)=99
73197         K(N+1,5)=NEVFS
73198         P(N+1,1)=FAC*NPRFS
73199         P(N+1,2)=FAC*NFIFS
73200         P(N+1,3)=FAC*NCHFS
73201         MSTU(3)=1
73202  
73203 C...Reset factorial moments statistics.
73204       ELSEIF(MTABU.EQ.30) THEN
73205         NEVFM=0
73206         NMUFM=0
73207         DO 330 IM=1,3
73208           DO 320 IB=1,10
73209             DO 310 IP=1,4
73210               FM1FM(IM,IB,IP)=0D0
73211               FM2FM(IM,IB,IP)=0D0
73212   310       CONTINUE
73213   320     CONTINUE
73214   330   CONTINUE
73215  
73216 C...Find particles to include, with (pion,pseudo)rapidity and azimuth.
73217       ELSEIF(MTABU.EQ.31) THEN
73218         NEVFM=NEVFM+1
73219         NLOW=N+MSTU(3)
73220         NUPP=NLOW
73221         DO 410 I=1,N
73222           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410
73223           IF(MSTU(41).GE.2) THEN
73224             KC=PYCOMP(K(I,2))
73225             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
73226      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
73227      &      K(I,2).EQ.KSUSY1+39) GOTO 410
73228             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
73229      &      PYCHGE(K(I,2)).EQ.0) GOTO 410
73230           ENDIF
73231           PMR=0D0
73232           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
73233           IF(MSTU(42).GE.2) PMR=P(I,5)
73234           PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
73235           YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
73236      &    1D20)),P(I,3))
73237           IF(ABS(YETA).GT.PARU(57)) GOTO 410
73238           PHI=PYANGL(P(I,1),P(I,2))
73239           IYETA=512D0*(YETA+PARU(57))/(2D0*PARU(57))
73240           IYETA=MAX(0,MIN(511,IYETA))
73241           IPHI=512D0*(PHI+PARU(1))/PARU(2)
73242           IPHI=MAX(0,MIN(511,IPHI))
73243           IYEP=0
73244           DO 340 IB=0,9
73245             IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2))
73246   340     CONTINUE
73247  
73248 C...Order particles in (pseudo)rapidity and/or azimuth.
73249           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
73250             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
73251             RETURN
73252           ENDIF
73253           NUPP=NUPP+1
73254           IF(NUPP.EQ.NLOW+1) THEN
73255             K(NUPP,1)=IYETA
73256             K(NUPP,2)=IPHI
73257             K(NUPP,3)=IYEP
73258           ELSE
73259             DO 350 I1=NUPP-1,NLOW+1,-1
73260               IF(IYETA.GE.K(I1,1)) GOTO 360
73261               K(I1+1,1)=K(I1,1)
73262   350       CONTINUE
73263   360       K(I1+1,1)=IYETA
73264             DO 370 I1=NUPP-1,NLOW+1,-1
73265               IF(IPHI.GE.K(I1,2)) GOTO 380
73266               K(I1+1,2)=K(I1,2)
73267   370       CONTINUE
73268   380       K(I1+1,2)=IPHI
73269             DO 390 I1=NUPP-1,NLOW+1,-1
73270               IF(IYEP.GE.K(I1,3)) GOTO 400
73271               K(I1+1,3)=K(I1,3)
73272   390       CONTINUE
73273   400       K(I1+1,3)=IYEP
73274           ENDIF
73275   410   CONTINUE
73276         K(NUPP+1,1)=2**10
73277         K(NUPP+1,2)=2**10
73278         K(NUPP+1,3)=4**10
73279  
73280 C...Calculate sum of factorial moments in event.
73281         DO 480 IM=1,3
73282           DO 430 IB=1,10
73283             DO 420 IP=1,4
73284               FEVFM(IB,IP)=0D0
73285   420       CONTINUE
73286   430     CONTINUE
73287           DO 450 IB=1,10
73288             IF(IM.LE.2) IBIN=2**(10-IB)
73289             IF(IM.EQ.3) IBIN=4**(10-IB)
73290             IAGR=K(NLOW+1,IM)/IBIN
73291             NAGR=1
73292             DO 440 I=NLOW+2,NUPP+1
73293               ICUT=K(I,IM)/IBIN
73294               IF(ICUT.EQ.IAGR) THEN
73295                 NAGR=NAGR+1
73296               ELSE
73297                 IF(NAGR.EQ.1) THEN
73298                 ELSEIF(NAGR.EQ.2) THEN
73299                   FEVFM(IB,1)=FEVFM(IB,1)+2D0
73300                 ELSEIF(NAGR.EQ.3) THEN
73301                   FEVFM(IB,1)=FEVFM(IB,1)+6D0
73302                   FEVFM(IB,2)=FEVFM(IB,2)+6D0
73303                 ELSEIF(NAGR.EQ.4) THEN
73304                   FEVFM(IB,1)=FEVFM(IB,1)+12D0
73305                   FEVFM(IB,2)=FEVFM(IB,2)+24D0
73306                   FEVFM(IB,3)=FEVFM(IB,3)+24D0
73307                 ELSE
73308                   FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1D0)
73309                   FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1D0)*(NAGR-2D0)
73310                   FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
73311      &            (NAGR-3D0)
73312                   FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
73313      &            (NAGR-3D0)*(NAGR-4D0)
73314                 ENDIF
73315                 IAGR=ICUT
73316                 NAGR=1
73317               ENDIF
73318   440       CONTINUE
73319   450     CONTINUE
73320  
73321 C...Add results to total statistics.
73322           DO 470 IB=10,1,-1
73323             DO 460 IP=1,4
73324               IF(FEVFM(1,IP).LT.0.5D0) THEN
73325                 FEVFM(IB,IP)=0D0
73326               ELSEIF(IM.LE.2) THEN
73327                 FEVFM(IB,IP)=2D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
73328               ELSE
73329                 FEVFM(IB,IP)=4D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
73330               ENDIF
73331               FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP)
73332               FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2
73333   460       CONTINUE
73334   470     CONTINUE
73335   480   CONTINUE
73336         NMUFM=NMUFM+(NUPP-NLOW)
73337         MSTU(62)=NUPP-NLOW
73338  
73339 C...Write accumulated statistics on factorial moments.
73340       ELSEIF(MTABU.EQ.32) THEN
73341         FAC=1D0/MAX(1,NEVFM)
73342         IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta'
73343         IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi'
73344         IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  '
73345         DO 510 IM=1,3
73346           WRITE(MSTU(11),5500)
73347           DO 500 IB=1,10
73348             BYETA=2D0*PARU(57)
73349             IF(IM.NE.2) BYETA=BYETA/2**(IB-1)
73350             BPHI=PARU(2)
73351             IF(IM.NE.1) BPHI=BPHI/2**(IB-1)
73352             IF(IM.LE.2) BNAVE=FAC*NMUFM/DBLE(2**(IB-1))
73353             IF(IM.EQ.3) BNAVE=FAC*NMUFM/DBLE(4**(IB-1))
73354             DO 490 IP=1,4
73355               FMOMA(IP)=FAC*FM1FM(IM,IB,IP)
73356               FMOMS(IP)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
73357      &        FMOMA(IP)**2)))
73358   490       CONTINUE
73359             WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP),
73360      &      IP=1,4)
73361   500     CONTINUE
73362   510   CONTINUE
73363  
73364 C...Copy statistics on factorial moments into /PYJETS/.
73365       ELSEIF(MTABU.EQ.33) THEN
73366         FAC=1D0/MAX(1,NEVFM)
73367         DO 540 IM=1,3
73368           DO 530 IB=1,10
73369             I=10*(IM-1)+IB
73370             K(I,1)=32
73371             K(I,2)=99
73372             K(I,3)=1
73373             IF(IM.NE.2) K(I,3)=2**(IB-1)
73374             K(I,4)=1
73375             IF(IM.NE.1) K(I,4)=2**(IB-1)
73376             K(I,5)=0
73377             P(I,1)=2D0*PARU(57)/K(I,3)
73378             V(I,1)=PARU(2)/K(I,4)
73379             DO 520 IP=1,4
73380               P(I,IP+1)=FAC*FM1FM(IM,IB,IP)
73381               V(I,IP+1)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
73382      &        P(I,IP+1)**2)))
73383   520       CONTINUE
73384   530     CONTINUE
73385   540   CONTINUE
73386         N=30
73387         DO 550 J=1,5
73388           K(N+1,J)=0
73389           P(N+1,J)=0D0
73390           V(N+1,J)=0D0
73391   550   CONTINUE
73392         K(N+1,1)=32
73393         K(N+1,2)=99
73394         K(N+1,5)=NEVFM
73395         MSTU(3)=1
73396  
73397 C...Reset statistics on Energy-Energy Correlation.
73398       ELSEIF(MTABU.EQ.40) THEN
73399         NEVEE=0
73400         DO 560 J=1,25
73401           FE1EC(J)=0D0
73402           FE2EC(J)=0D0
73403           FE1EC(51-J)=0D0
73404           FE2EC(51-J)=0D0
73405           FE1EA(J)=0D0
73406           FE2EA(J)=0D0
73407   560   CONTINUE
73408  
73409 C...Find particles to include, with proper assumed mass.
73410       ELSEIF(MTABU.EQ.41) THEN
73411         NEVEE=NEVEE+1
73412         NLOW=N+MSTU(3)
73413         NUPP=NLOW
73414         ECM=0D0
73415         DO 570 I=1,N
73416           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570
73417           IF(MSTU(41).GE.2) THEN
73418             KC=PYCOMP(K(I,2))
73419             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
73420      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
73421      &      K(I,2).EQ.KSUSY1+39) GOTO 570
73422             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
73423      &      PYCHGE(K(I,2)).EQ.0) GOTO 570
73424           ENDIF
73425           PMR=0D0
73426           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
73427           IF(MSTU(42).GE.2) PMR=P(I,5)
73428           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
73429             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
73430             RETURN
73431           ENDIF
73432           NUPP=NUPP+1
73433           P(NUPP,1)=P(I,1)
73434           P(NUPP,2)=P(I,2)
73435           P(NUPP,3)=P(I,3)
73436           P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
73437           P(NUPP,5)=MAX(1D-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2))
73438           ECM=ECM+P(NUPP,4)
73439   570   CONTINUE
73440         IF(NUPP.EQ.NLOW) RETURN
73441  
73442 C...Analyze Energy-Energy Correlation in event.
73443         FAC=(2D0/ECM**2)*50D0/PARU(1)
73444         DO 580 J=1,50
73445           FEVEE(J)=0D0
73446   580   CONTINUE
73447         DO 600 I1=NLOW+2,NUPP
73448           DO 590 I2=NLOW+1,I1-1
73449             CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
73450      &      (P(I1,5)*P(I2,5))
73451             THE=ACOS(MAX(-1D0,MIN(1D0,CTHE)))
73452             ITHE=MAX(1,MIN(50,1+INT(50D0*THE/PARU(1))))
73453             FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4)
73454   590     CONTINUE
73455   600   CONTINUE
73456         DO 610 J=1,25
73457           FE1EC(J)=FE1EC(J)+FEVEE(J)
73458           FE2EC(J)=FE2EC(J)+FEVEE(J)**2
73459           FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J)
73460           FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2
73461           FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J))
73462           FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2
73463   610   CONTINUE
73464         MSTU(62)=NUPP-NLOW
73465  
73466 C...Write statistics on Energy-Energy Correlation.
73467       ELSEIF(MTABU.EQ.42) THEN
73468         FAC=1D0/MAX(1,NEVEE)
73469         WRITE(MSTU(11),5700) NEVEE
73470         DO 620 J=1,25
73471           FEEC1=FAC*FE1EC(J)
73472           FEES1=SQRT(MAX(0D0,FAC*(FAC*FE2EC(J)-FEEC1**2)))
73473           FEEC2=FAC*FE1EC(51-J)
73474           FEES2=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-J)-FEEC2**2)))
73475           FEECA=FAC*FE1EA(J)
73476           FEESA=SQRT(MAX(0D0,FAC*(FAC*FE2EA(J)-FEECA**2)))
73477           WRITE(MSTU(11),5800) 3.6D0*(J-1),3.6D0*J,FEEC1,FEES1,
73478      &    FEEC2,FEES2,FEECA,FEESA
73479   620   CONTINUE
73480  
73481 C...Copy statistics on Energy-Energy Correlation into /PYJETS/.
73482       ELSEIF(MTABU.EQ.43) THEN
73483         FAC=1D0/MAX(1,NEVEE)
73484         DO 630 I=1,25
73485           K(I,1)=32
73486           K(I,2)=99
73487           K(I,3)=0
73488           K(I,4)=0
73489           K(I,5)=0
73490           P(I,1)=FAC*FE1EC(I)
73491           V(I,1)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(I)-P(I,1)**2)))
73492           P(I,2)=FAC*FE1EC(51-I)
73493           V(I,2)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-I)-P(I,2)**2)))
73494           P(I,3)=FAC*FE1EA(I)
73495           V(I,3)=SQRT(MAX(0D0,FAC*(FAC*FE2EA(I)-P(I,3)**2)))
73496           P(I,4)=PARU(1)*(I-1)/50D0
73497           P(I,5)=PARU(1)*I/50D0
73498           V(I,4)=3.6D0*(I-1)
73499           V(I,5)=3.6D0*I
73500   630   CONTINUE
73501         N=25
73502         DO 640 J=1,5
73503           K(N+1,J)=0
73504           P(N+1,J)=0D0
73505           V(N+1,J)=0D0
73506   640   CONTINUE
73507         K(N+1,1)=32
73508         K(N+1,2)=99
73509         K(N+1,5)=NEVEE
73510         MSTU(3)=1
73511  
73512 C...Reset statistics on decay channels.
73513       ELSEIF(MTABU.EQ.50) THEN
73514         NEVDC=0
73515         NKFDC=0
73516         NREDC=0
73517  
73518 C...Identify and order flavour content of final state.
73519       ELSEIF(MTABU.EQ.51) THEN
73520         NEVDC=NEVDC+1
73521         NDS=0
73522         DO 670 I=1,N
73523           IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670
73524           NDS=NDS+1
73525           IF(NDS.GT.8) THEN
73526             NREDC=NREDC+1
73527             RETURN
73528           ENDIF
73529           KFM=2*IABS(K(I,2))
73530           IF(K(I,2).LT.0) KFM=KFM-1
73531           DO 650 IDS=NDS-1,1,-1
73532             IIN=IDS+1
73533             IF(KFM.LT.KFDM(IDS)) GOTO 660
73534             KFDM(IDS+1)=KFDM(IDS)
73535   650     CONTINUE
73536           IIN=1
73537   660     KFDM(IIN)=KFM
73538   670   CONTINUE
73539  
73540 C...Find whether old or new final state.
73541         DO 690 IDC=1,NKFDC
73542           IF(NDS.LT.KFDC(IDC,0)) THEN
73543             IKFDC=IDC
73544             GOTO 700
73545           ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN
73546             DO 680 I=1,NDS
73547               IF(KFDM(I).LT.KFDC(IDC,I)) THEN
73548                 IKFDC=IDC
73549                 GOTO 700
73550               ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN
73551                 GOTO 690
73552               ENDIF
73553   680       CONTINUE
73554             IKFDC=-IDC
73555             GOTO 700
73556           ENDIF
73557   690   CONTINUE
73558         IKFDC=NKFDC+1
73559   700   IF(IKFDC.LT.0) THEN
73560           IKFDC=-IKFDC
73561         ELSEIF(NKFDC.GE.200) THEN
73562           NREDC=NREDC+1
73563           RETURN
73564         ELSE
73565           DO 720 IDC=NKFDC,IKFDC,-1
73566             NPDC(IDC+1)=NPDC(IDC)
73567             DO 710 I=0,8
73568               KFDC(IDC+1,I)=KFDC(IDC,I)
73569   710       CONTINUE
73570   720     CONTINUE
73571           NKFDC=NKFDC+1
73572           KFDC(IKFDC,0)=NDS
73573           DO 730 I=1,NDS
73574             KFDC(IKFDC,I)=KFDM(I)
73575   730     CONTINUE
73576           NPDC(IKFDC)=0
73577         ENDIF
73578         NPDC(IKFDC)=NPDC(IKFDC)+1
73579  
73580 C...Write statistics on decay channels.
73581       ELSEIF(MTABU.EQ.52) THEN
73582         FAC=1D0/MAX(1,NEVDC)
73583         WRITE(MSTU(11),5900) NEVDC
73584         DO 750 IDC=1,NKFDC
73585           DO 740 I=1,KFDC(IDC,0)
73586             KFM=KFDC(IDC,I)
73587             KF=(KFM+1)/2
73588             IF(2*KF.NE.KFM) KF=-KF
73589             CALL PYNAME(KF,CHAU)
73590             CHDC(I)=CHAU(1:12)
73591             IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?'
73592   740     CONTINUE
73593           WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0))
73594   750   CONTINUE
73595         IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC
73596  
73597 C...Copy statistics on decay channels into /PYJETS/.
73598       ELSEIF(MTABU.EQ.53) THEN
73599         FAC=1D0/MAX(1,NEVDC)
73600         DO 780 IDC=1,NKFDC
73601           K(IDC,1)=32
73602           K(IDC,2)=99
73603           K(IDC,3)=0
73604           K(IDC,4)=0
73605           K(IDC,5)=KFDC(IDC,0)
73606           DO 760 J=1,5
73607             P(IDC,J)=0D0
73608             V(IDC,J)=0D0
73609   760     CONTINUE
73610           DO 770 I=1,KFDC(IDC,0)
73611             KFM=KFDC(IDC,I)
73612             KF=(KFM+1)/2
73613             IF(2*KF.NE.KFM) KF=-KF
73614             IF(I.LE.5) P(IDC,I)=KF
73615             IF(I.GE.6) V(IDC,I-5)=KF
73616   770     CONTINUE
73617           V(IDC,5)=FAC*NPDC(IDC)
73618   780   CONTINUE
73619         N=NKFDC
73620         DO 790 J=1,5
73621           K(N+1,J)=0
73622           P(N+1,J)=0D0
73623           V(N+1,J)=0D0
73624   790   CONTINUE
73625         K(N+1,1)=32
73626         K(N+1,2)=99
73627         K(N+1,5)=NEVDC
73628         V(N+1,5)=FAC*NREDC
73629         MSTU(3)=1
73630       ENDIF
73631  
73632 C...Format statements for output on unit MSTU(11) (default 6).
73633  5000 FORMAT(///20X,'Event statistics - initial state'/
73634      &20X,'based on an analysis of ',I6,' events'//
73635      &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ',
73636      &'according to fragmenting system multiplicity'/
73637      &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5',
73638      &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/)
73639  5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4)
73640  5200 FORMAT(///20X,'Event statistics - final state'/
73641      &20X,'based on an analysis of ',I7,' events'//
73642      &5X,'Mean primary multiplicity =',F10.4/
73643      &5X,'Mean final   multiplicity =',F10.4/
73644      &5X,'Mean charged multiplicity =',F10.4//
73645      &5X,'Number of particles produced per event (directly and via ',
73646      &'decays/branchings)'/
73647      &8X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles',
73648      &8X,'Total'/35X,'prim        seco        prim        seco'/)
73649  5300 FORMAT(1X,I9,4X,A16,I2,5(1X,F11.6))
73650  5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/
73651      &20X,'based on an analysis of ',I6,' events'//
73652      &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>',
73653      &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  '))
73654  5500 FORMAT(10X)
73655  5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4))
73656  5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/
73657      &20X,'based on an analysis of ',I6,' events'//
73658      &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X,
73659      &'EECA(theta)'/2X,'in degrees ',3('      value    error')/)
73660  5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4))
73661  5900 FORMAT(///20X,'Decay channel analysis - final state'/
73662      &20X,'based on an analysis of ',I6,' events'//
73663      &2X,'Probability',10X,'Complete final state'/)
73664  6000 FORMAT(2X,F9.5,5X,8(A12,1X))
73665  6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ',
73666      &'or table overflow)')
73667  
73668       RETURN
73669       END
73670  
73671 C*********************************************************************
73672  
73673 C...PYEEVT
73674 C...Handles the generation of an e+e- annihilation jet event.
73675  
73676       SUBROUTINE PYEEVT(KFL,ECM)
73677  
73678 C...Double precision and integer declarations.
73679       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73680       IMPLICIT INTEGER(I-N)
73681       INTEGER PYK,PYCHGE,PYCOMP
73682 C...Commonblocks.
73683       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
73684       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73685       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
73686       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
73687  
73688 C...Check input parameters.
73689       IF(MSTU(12).NE.12345) CALL PYLIST(0)
73690       IF(KFL.LT.0.OR.KFL.GT.8) THEN
73691         CALL PYERRM(16,'(PYEEVT:) called with unknown flavour code')
73692         IF(MSTU(21).GE.1) RETURN
73693       ENDIF
73694       IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02D0*PARF(100+MAX(1,KFL))
73695       IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02D0*PMAS(KFL,1)
73696       IF(ECM.LT.ECMMIN) THEN
73697         CALL PYERRM(16,'(PYEEVT:) called with too small CM energy')
73698         IF(MSTU(21).GE.1) RETURN
73699       ENDIF
73700  
73701 C...Check consistency of MSTJ options set.
73702       IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
73703         CALL PYERRM(6,
73704      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(110) = 1')
73705         MSTJ(110)=1
73706       ENDIF
73707       IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
73708         CALL PYERRM(6,
73709      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(111) = 0')
73710         MSTJ(111)=0
73711       ENDIF
73712  
73713 C...Initialize alpha_strong and total cross-section.
73714       MSTU(111)=MSTJ(108)
73715       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
73716      &MSTU(111)=1
73717       PARU(112)=PARJ(121)
73718       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
73719       IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE.
73720      &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL PYXTEE(KFL,ECM,
73721      &XTOT)
73722       IF(MSTJ(116).GE.3) MSTJ(116)=1
73723       PARJ(171)=0D0
73724  
73725 C...Add initial e+e- to event record (documentation only).
73726       NTRY=0
73727   100 NTRY=NTRY+1
73728       IF(NTRY.GT.100) THEN
73729         CALL PYERRM(14,'(PYEEVT:) caught in an infinite loop')
73730         RETURN
73731       ENDIF
73732       MSTU(24)=0
73733       NC=0
73734       IF(MSTJ(115).GE.2) THEN
73735         NC=NC+2
73736         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
73737         K(NC-1,1)=21
73738         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
73739         K(NC,1)=21
73740       ENDIF
73741  
73742 C...Radiative photon (in initial state).
73743       MK=0
73744       ECMC=ECM
73745       IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL PYRADK(ECM,MK,PAK,
73746      &THEK,PHIK,ALPK)
73747       IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2D0*PAK))
73748       IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN
73749         NC=NC+1
73750         CALL PY1ENT(NC,22,PAK,THEK,PHIK)
73751         K(NC,3)=MIN(MSTJ(115)/2,1)
73752       ENDIF
73753  
73754 C...Virtual exchange boson (gamma or Z0).
73755       IF(MSTJ(115).GE.3) THEN
73756         NC=NC+1
73757         KF=22
73758         IF(MSTJ(102).EQ.2) KF=23
73759         MSTU10=MSTU(10)
73760         MSTU(10)=1
73761         P(NC,5)=ECMC
73762         CALL PY1ENT(NC,KF,ECMC,0D0,0D0)
73763         K(NC,1)=21
73764         K(NC,3)=1
73765         MSTU(10)=MSTU10
73766       ENDIF
73767  
73768 C...Choice of flavour and jet configuration.
73769       CALL PYXKFL(KFL,ECM,ECMC,KFLC)
73770       IF(KFLC.EQ.0) GOTO 100
73771       CALL PYXJET(ECMC,NJET,CUT)
73772       KFLN=21
73773       IF(NJET.EQ.4) CALL PYX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4,
73774      &X12,X14)
73775       IF(NJET.EQ.3) CALL PYX3JT(NJET,CUT,KFLC,ECMC,X1,X3)
73776       IF(NJET.EQ.2) MSTJ(120)=1
73777  
73778 C...Fill jet configuration and origin.
73779       IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL PY2ENT(NC+1,KFLC,-KFLC,ECMC)
73780       IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL PY2ENT(-(NC+1),KFLC,-KFLC,
73781      &ECMC)
73782       IF(NJET.EQ.3) CALL PY3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3)
73783       IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,
73784      &-KFLC,ECMC,X1,X2,X4,X12,X14)
73785       IF(NJET.EQ.4.AND.KFLN.NE.21) CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,
73786      &-KFLC,ECMC,X1,X2,X4,X12,X14)
73787       IF(MSTU(24).NE.0) GOTO 100
73788       DO 110 IP=NC+1,N
73789         K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1)
73790   110 CONTINUE
73791  
73792 C...Angular orientation according to matrix element.
73793       IF(MSTJ(106).EQ.1) THEN
73794         CALL PYXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI)
73795         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
73796         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
73797       ENDIF
73798  
73799 C...Rotation and boost from radiative photon.
73800       IF(MK.EQ.1) THEN
73801         DBEK=-PAK/(ECM-PAK)
73802         NMIN=NC+1-MSTJ(115)/3
73803         CALL PYROBO(NMIN,N,0D0,-PHIK,0D0,0D0,0D0)
73804         CALL PYROBO(NMIN,N,ALPK,0D0,DBEK*SIN(THEK),0D0,DBEK*COS(THEK))
73805         CALL PYROBO(NMIN,N,0D0,PHIK,0D0,0D0,0D0)
73806       ENDIF
73807  
73808 C...Generate parton shower. Rearrange along strings and check.
73809       IF(MSTJ(101).EQ.5) THEN
73810         CALL PYSHOW(N-1,N,ECMC)
73811         MSTJ14=MSTJ(14)
73812         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
73813         IF(MSTJ(105).GE.0) MSTU(28)=0
73814         CALL PYPREP(0)
73815         MSTJ(14)=MSTJ14
73816         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
73817       ENDIF
73818  
73819 C...Fragmentation/decay generation. Information for PYTABU.
73820       IF(MSTJ(105).EQ.1) CALL PYEXEC
73821       MSTU(161)=KFLC
73822       MSTU(162)=-KFLC
73823  
73824       RETURN
73825       END
73826  
73827 C*********************************************************************
73828  
73829 C...PYXTEE
73830 C...Calculates total cross-section, including initial state
73831 C...radiation effects.
73832  
73833       SUBROUTINE PYXTEE(KFL,ECM,XTOT)
73834  
73835 C...Double precision and integer declarations.
73836       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73837       IMPLICIT INTEGER(I-N)
73838       INTEGER PYK,PYCHGE,PYCOMP
73839 C...Commonblocks.
73840       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73841       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
73842       SAVE /PYDAT1/,/PYDAT2/
73843  
73844 C...Status, (optimized) Q^2 scale, alpha_strong.
73845       PARJ(151)=ECM
73846       MSTJ(119)=10*MSTJ(102)+KFL
73847       IF(MSTJ(111).EQ.0) THEN
73848         Q2R=ECM**2
73849       ELSEIF(MSTU(111).EQ.0) THEN
73850         PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
73851      &  ((33D0-2D0*MSTU(112))*PARU(111)))))
73852         Q2R=PARJ(168)*ECM**2
73853       ELSE
73854         PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
73855      &  (2D0*PARU(112)/ECM)**2))
73856         Q2R=PARJ(168)*ECM**2
73857       ENDIF
73858       ALSPI=PYALPS(Q2R)/PARU(1)
73859  
73860 C...QCD corrections factor in R.
73861       IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN
73862         RQCD=1D0
73863       ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN
73864         RQCD=1D0+ALSPI
73865       ELSEIF(MSTJ(109).EQ.0) THEN
73866         RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
73867         IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+(33D0-2D0*MSTU(112))/12D0*
73868      &  LOG(PARJ(168))*ALSPI**2)
73869       ELSEIF(IABS(MSTJ(101)).EQ.1) THEN
73870         RQCD=1D0+(3D0/4D0)*ALSPI
73871       ELSE
73872         RQCD=1D0+(3D0/4D0)*ALSPI-(3D0/32D0+0.519D0*MSTU(118))*ALSPI**2
73873       ENDIF
73874  
73875 C...Calculate Z0 width if default value not acceptable.
73876       IF(MSTJ(102).GE.3) THEN
73877         RVA=3D0*(3D0+(4D0*PARU(102)-1D0)**2)+6D0*RQCD*(2D0+
73878      &  (1D0-8D0*PARU(102)/3D0)**2+(4D0*PARU(102)/3D0-1D0)**2)
73879         DO 100 KFLC=5,6
73880           VQ=1D0
73881           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-
73882      &    (2D0*PYMASS(KFLC)/ ECM)**2))
73883           IF(KFLC.EQ.5) VF=4D0*PARU(102)/3D0-1D0
73884           IF(KFLC.EQ.6) VF=1D0-8D0*PARU(102)/3D0
73885           RVA=RVA+3D0*RQCD*(0.5D0*VQ*(3D0-VQ**2)*VF**2+VQ**3)
73886   100   CONTINUE
73887         PARJ(124)=PARU(101)*PARJ(123)*RVA/(48D0*PARU(102)*
73888      &  (1D0-PARU(102)))
73889       ENDIF
73890  
73891 C...Calculate propagator and related constants for QFD case.
73892       POLL=1D0-PARJ(131)*PARJ(132)
73893       IF(MSTJ(102).GE.2) THEN
73894         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
73895         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
73896         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
73897         VE=4D0*PARU(102)-1D0
73898         SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131))
73899         SF1W=SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
73900         HF1I=SFI*SF1I
73901         HF1W=SFW*SF1W
73902       ENDIF
73903  
73904 C...Loop over different flavours: charge, velocity.
73905       RTOT=0D0
73906       RQQ=0D0
73907       RQV=0D0
73908       RVA=0D0
73909       DO 110 KFLC=1,MAX(MSTJ(104),KFL)
73910         IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110
73911         MSTJ(93)=1
73912         PMQ=PYMASS(KFLC)
73913         IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 110
73914         QF=KCHG(KFLC,1)/3D0
73915         VQ=1D0
73916         IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1D0-(2D0*PMQ/ECM)**2)
73917  
73918 C...Calculate R and sum of charges for QED or QFD case.
73919         RQQ=RQQ+3D0*QF**2*POLL
73920         IF(MSTJ(102).LE.1) THEN
73921           RTOT=RTOT+3D0*0.5D0*VQ*(3D0-VQ**2)*QF**2*POLL
73922         ELSE
73923           VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
73924           RQV=RQV-6D0*QF*VF*SF1I
73925           RVA=RVA+3D0*(VF**2+1D0)*SF1W
73926           RTOT=RTOT+3D0*(0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-
73927      &    2D0*QF*VF*HF1I+VF**2*HF1W)+VQ**3*HF1W)
73928         ENDIF
73929   110 CONTINUE
73930       RSUM=RQQ
73931       IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA
73932  
73933 C...Calculate cross-section, including QCD corrections.
73934       PARJ(141)=RQQ
73935       PARJ(142)=RTOT
73936       PARJ(143)=RTOT*RQCD
73937       PARJ(144)=PARJ(143)
73938       PARJ(145)=PARJ(141)*86.8D0/ECM**2
73939       PARJ(146)=PARJ(142)*86.8D0/ECM**2
73940       PARJ(147)=PARJ(143)*86.8D0/ECM**2
73941       PARJ(148)=PARJ(147)
73942       PARJ(157)=RSUM*RQCD
73943       PARJ(158)=0D0
73944       PARJ(159)=0D0
73945       XTOT=PARJ(147)
73946       IF(MSTJ(107).LE.0) RETURN
73947  
73948 C...Virtual cross-section.
73949       XKL=PARJ(135)
73950       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
73951       ALE=2D0*LOG(ECM/PYMASS(11))-1D0
73952       SIGV=ALE/3D0+2D0*LOG(ECM**2/(PYMASS(13)*PYMASS(15)))/3D0-4D0/3D0+
73953      &1.526D0*LOG(ECM**2/0.932D0)
73954  
73955 C...Soft and hard radiative cross-section in QED case.
73956       IF(MSTJ(102).LE.1) THEN
73957         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+2D0*SIGV
73958         SIGS=ALE*(2D0*LOG(XKL)-LOG(1D0-XKL)-XKL)
73959         SIGH=ALE*(2D0*LOG(XKU/XKL)-LOG((1D0-XKU)/(1D0-XKL))-(XKU-XKL))
73960  
73961 C...Soft and hard radiative cross-section in QFD case.
73962       ELSE
73963         SZM=1D0-(PARJ(123)/ECM)**2
73964         SZW=PARJ(123)*PARJ(124)/ECM**2
73965         PARJ(161)=-RQQ/RSUM
73966         PARJ(162)=-(RQQ+RQV+RVA)/RSUM
73967         PARJ(163)=(RQV*(1D0-0.5D0*SZM-SFI)+RVA*(1.5D0-SZM-SFW))/RSUM
73968         PARJ(164)=(RQV*SZW**2*(1D0-2D0*SFW)+RVA*(2D0*SFI+SZW**2-
73969      &  4D0+3D0*SZM-SZM**2))/(SZW*RSUM)
73970         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+((2D0*RQQ+SFI*RQV)/
73971      &  RSUM)*SIGV+(SZW*SFW*RQV/RSUM)*PARU(1)*20D0/9D0
73972         SIGS=ALE*(2D0*LOG(XKL)+PARJ(161)*LOG(1D0-XKL)+PARJ(162)*XKL+
73973      &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+
73974      &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW)))
73975         SIGH=ALE*(2D0*LOG(XKU/XKL)+PARJ(161)*LOG((1D0-XKU)/
73976      &  (1D0-XKL))+PARJ(162)*(XKU-XKL)+PARJ(163)*
73977      &  LOG(((XKU-SZM)**2+SZW**2)/((XKL-SZM)**2+SZW**2))+
73978      &  PARJ(164)*(ATAN((XKU-SZM)/SZW)-ATAN((XKL-SZM)/SZW)))
73979       ENDIF
73980  
73981 C...Total cross-section and fraction of hard photon events.
73982       PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH)
73983       PARJ(157)=RSUM*(1D0+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD
73984       PARJ(144)=PARJ(157)
73985       PARJ(148)=PARJ(144)*86.8D0/ECM**2
73986       XTOT=PARJ(148)
73987  
73988       RETURN
73989       END
73990  
73991 C*********************************************************************
73992  
73993 C...PYRADK
73994 C...Generates initial state photon radiation.
73995  
73996       SUBROUTINE PYRADK(ECM,MK,PAK,THEK,PHIK,ALPK)
73997  
73998 C...Double precision and integer declarations.
73999       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74000       IMPLICIT INTEGER(I-N)
74001       INTEGER PYK,PYCHGE,PYCOMP
74002 C...Commonblocks.
74003       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74004       SAVE /PYDAT1/
74005  
74006 C...Function: cumulative hard photon spectrum in QFD case.
74007       FXK(XX)=2D0*LOG(XX)+PARJ(161)*LOG(1D0-XX)+PARJ(162)*XX+
74008      &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW)
74009  
74010 C...Determine whether radiative photon or not.
74011       MK=0
74012       PAK=0D0
74013       IF(PARJ(160).LT.PYR(0)) RETURN
74014       MK=1
74015  
74016 C...Photon energy range. Find photon momentum in QED case.
74017       XKL=PARJ(135)
74018       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
74019       IF(MSTJ(102).LE.1) THEN
74020   100   XK=1D0/(1D0+(1D0/XKL-1D0)*((1D0/XKU-1D0)/(1D0/XKL-1D0))**PYR(0))
74021         IF(1D0+(1D0-XK)**2.LT.2D0*PYR(0)) GOTO 100
74022  
74023 C...Ditto in QFD case, by numerical inversion of integrated spectrum.
74024       ELSE
74025         SZM=1D0-(PARJ(123)/ECM)**2
74026         SZW=PARJ(123)*PARJ(124)/ECM**2
74027         FXKL=FXK(XKL)
74028         FXKU=FXK(XKU)
74029         FXKD=1D-4*(FXKU-FXKL)
74030         FXKR=FXKL+PYR(0)*(FXKU-FXKL)
74031         NXK=0
74032   110   NXK=NXK+1
74033         XK=0.5D0*(XKL+XKU)
74034         FXKV=FXK(XK)
74035         IF(FXKV.GT.FXKR) THEN
74036           XKU=XK
74037           FXKU=FXKV
74038         ELSE
74039           XKL=XK
74040           FXKL=FXKV
74041         ENDIF
74042         IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110
74043         XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL)
74044       ENDIF
74045       PAK=0.5D0*ECM*XK
74046  
74047 C...Photon polar and azimuthal angle.
74048       PME=2D0*(PYMASS(11)/ECM)**2
74049   120 CTHM=PME*(2D0/PME)**PYR(0)
74050       IF(1D0-(XK**2*CTHM*(1D0-0.5D0*CTHM)+2D0*(1D0-XK)*PME/MAX(PME,
74051      &CTHM*(1D0-0.5D0*CTHM)))/(1D0+(1D0-XK)**2).LT.PYR(0)) GOTO 120
74052       CTHE=1D0-CTHM
74053       IF(PYR(0).GT.0.5D0) CTHE=-CTHE
74054       STHE=SQRT(MAX(0D0,(CTHM-PME)*(2D0-CTHM)))
74055       THEK=PYANGL(CTHE,STHE)
74056       PHIK=PARU(2)*PYR(0)
74057  
74058 C...Rotation angle for hadronic system.
74059       SGN=1D0
74060       IF(0.5D0*(2D0-XK*(1D0-CTHE))**2/((2D0-XK)**2+(XK*CTHE)**2).GT.
74061      &PYR(0)) SGN=-1D0
74062       ALPK=ASIN(SGN*STHE*(XK-SGN*(2D0*SQRT(1D0-XK)-2D0+XK)*CTHE)/
74063      &(2D0-XK*(1D0-SGN*CTHE)))
74064  
74065       RETURN
74066       END
74067  
74068 C*********************************************************************
74069  
74070 C...PYXKFL
74071 C...Selects flavour for produced qqbar pair.
74072  
74073       SUBROUTINE PYXKFL(KFL,ECM,ECMC,KFLC)
74074  
74075 C...Double precision and integer declarations.
74076       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74077       IMPLICIT INTEGER(I-N)
74078       INTEGER PYK,PYCHGE,PYCOMP
74079 C...Commonblocks.
74080       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74081       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74082       SAVE /PYDAT1/,/PYDAT2/
74083  
74084 C...Calculate maximum weight in QED or QFD case.
74085       IF(MSTJ(102).LE.1) THEN
74086         RFMAX=4D0/9D0
74087       ELSE
74088         POLL=1D0-PARJ(131)*PARJ(132)
74089         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
74090         SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
74091         SFI=SFW*(1D0-(PARJ(123)/ECMC)**2)
74092         VE=4D0*PARU(102)-1D0
74093         HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
74094         HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
74095         RFMAX=MAX(4D0/9D0*POLL-4D0/3D0*(1D0-8D0*PARU(102)/3D0)*HF1I+
74096      &  ((1D0-8D0*PARU(102)/3D0)**2+1D0)*HF1W,1D0/9D0*POLL+2D0/3D0*
74097      &  (-1D0+4D0*PARU(102)/3D0)*HF1I+((-1D0+4D0*PARU(102)/3D0)**2+
74098      &  1D0)*HF1W)
74099       ENDIF
74100  
74101 C...Choose flavour. Gives charge and velocity.
74102       NTRY=0
74103   100 NTRY=NTRY+1
74104       IF(NTRY.GT.100) THEN
74105         CALL PYERRM(14,'(PYXKFL:) caught in an infinite loop')
74106         KFLC=0
74107         RETURN
74108       ENDIF
74109       KFLC=KFL
74110       IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*PYR(0))
74111       MSTJ(93)=1
74112       PMQ=PYMASS(KFLC)
74113       IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 100
74114       QF=KCHG(KFLC,1)/3D0
74115       VQ=1D0
74116       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-(2D0*PMQ/ECMC)**2))
74117  
74118 C...Calculate weight in QED or QFD case.
74119       IF(MSTJ(102).LE.1) THEN
74120         RF=QF**2
74121         RFV=0.5D0*VQ*(3D0-VQ**2)*QF**2
74122       ELSE
74123         VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
74124         RF=QF**2*POLL-2D0*QF*VF*HF1I+(VF**2+1D0)*HF1W
74125         RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+VF**2*HF1W)+
74126      &  VQ**3*HF1W
74127         IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
74128       ENDIF
74129  
74130 C...Weighting or new event (radiative photon). Cross-section update.
74131       IF(KFL.LE.0.AND.RF.LT.PYR(0)*RFMAX) GOTO 100
74132       PARJ(158)=PARJ(158)+1D0
74133       IF(ECMC.LT.2D0*PMQ+PARJ(127).OR.RFV.LT.PYR(0)*RF) KFLC=0
74134       IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100
74135       IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1D0
74136       PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158)
74137       PARJ(148)=PARJ(144)*86.8D0/ECM**2
74138  
74139       RETURN
74140       END
74141  
74142 C*********************************************************************
74143  
74144 C...PYXJET
74145 C...Selects number of jets in matrix element approach.
74146  
74147       SUBROUTINE PYXJET(ECM,NJET,CUT)
74148  
74149 C...Double precision and integer declarations.
74150       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74151       IMPLICIT INTEGER(I-N)
74152       INTEGER PYK,PYCHGE,PYCOMP
74153 C...Commonblocks.
74154       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74155       SAVE /PYDAT1/
74156 C...Local array and data.
74157       DIMENSION ZHUT(5)
74158       DATA ZHUT/3.0922D0, 6.2291D0, 7.4782D0, 7.8440D0, 8.2560D0/
74159  
74160 C...Trivial result for two-jets only, including parton shower.
74161       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
74162         CUT=0D0
74163  
74164 C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R.
74165       ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN
74166         CF=4D0/3D0
74167         IF(MSTJ(109).EQ.2) CF=1D0
74168         IF(MSTJ(111).EQ.0) THEN
74169           Q2=ECM**2
74170           Q2R=ECM**2
74171         ELSEIF(MSTU(111).EQ.0) THEN
74172           PARJ(169)=MIN(1D0,PARJ(129))
74173           Q2=PARJ(169)*ECM**2
74174           PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
74175      &    ((33D0-2D0*MSTU(112))*PARU(111)))))
74176           Q2R=PARJ(168)*ECM**2
74177         ELSE
74178           PARJ(169)=MIN(1D0,MAX(PARJ(129),(2D0*PARU(112)/ECM)**2))
74179           Q2=PARJ(169)*ECM**2
74180           PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
74181      &    (2D0*PARU(112)/ECM)**2))
74182           Q2R=PARJ(168)*ECM**2
74183         ENDIF
74184  
74185 C...alpha_strong for R and R itself.
74186         ALSPI=(3D0/4D0)*CF*PYALPS(Q2R)/PARU(1)
74187         IF(IABS(MSTJ(101)).EQ.1) THEN
74188           RQCD=1D0+ALSPI
74189         ELSEIF(MSTJ(109).EQ.0) THEN
74190           RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
74191           IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+
74192      &    (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(168))*ALSPI**2)
74193         ELSE
74194           RQCD=1D0+ALSPI-(3D0/32D0+0.519D0*MSTU(118))*(4D0*ALSPI/3D0)**2
74195         ENDIF
74196  
74197 C...alpha_strong for jet rate. Initial value for y cut.
74198         ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
74199         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2)
74200         IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0))
74201      &  CUT=MAX(CUT,EXP(-SQRT(0.75D0/ALSPI))/2D0)
74202         IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
74203  
74204 C...Parametrization of first order three-jet cross-section.
74205   100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25D0) THEN
74206           PARJ(152)=0D0
74207         ELSE
74208           PARJ(152)=(2D0*ALSPI/3D0)*((3D0-6D0*CUT+2D0*LOG(CUT))*
74209      &    LOG(CUT/(1D0-2D0*CUT))+(2.5D0+1.5D0*CUT-6.571D0)*
74210      &    (1D0-3D0*CUT)+5.833D0*(1D0-3D0*CUT)**2-3.894D0*
74211      &    (1D0-3D0*CUT)**3+1.342D0*(1D0-3D0*CUT)**4)/RQCD
74212           IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2))
74213      &    PARJ(152)=0D0
74214         ENDIF
74215  
74216 C...Parametrization of second order three-jet cross-section.
74217         IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR.
74218      &  CUT.GE.0.25D0) THEN
74219           PARJ(153)=0D0
74220         ELSEIF(MSTJ(110).LE.1) THEN
74221           CT=LOG(1D0/CUT-2D0)
74222           PARJ(153)=ALSPI**2*CT**2*(2.419D0+0.5989D0*CT+0.6782D0*CT**2-
74223      &    0.2661D0*CT**3+0.01159D0*CT**4)/RQCD
74224  
74225 C...Interpolation in second/first order ratio for Zhu parametrization.
74226         ELSEIF(MSTJ(110).EQ.2) THEN
74227           IZA=0
74228           DO 110 IY=1,5
74229             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
74230   110     CONTINUE
74231           IF(IZA.NE.0) THEN
74232             ZHURAT=ZHUT(IZA)
74233           ELSE
74234             IZ=100D0*CUT
74235             ZHURAT=ZHUT(IZ)+(100D0*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ))
74236           ENDIF
74237           PARJ(153)=ALSPI*PARJ(152)*ZHURAT
74238         ENDIF
74239  
74240 C...Shift in second order three-jet cross-section with optimized Q^2.
74241         IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3
74242      &  .AND.CUT.LT.0.25D0) PARJ(153)=PARJ(153)+
74243      &  (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(169))*ALSPI*PARJ(152)
74244  
74245 C...Parametrization of second order four-jet cross-section.
74246         IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125D0) THEN
74247           PARJ(154)=0D0
74248         ELSE
74249           CT=LOG(1D0/CUT-5D0)
74250           IF(CUT.LE.0.018D0) THEN
74251             XQQGG=6.349D0-4.330D0*CT+0.8304D0*CT**2
74252             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(3.035D0-2.091D0*CT+
74253      &      0.4059D0*CT**2)
74254             XQQQQ=1.25D0*(-0.1080D0+0.01486D0*CT+0.009364D0*CT**2)
74255             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
74256           ELSE
74257             XQQGG=-0.09773D0+0.2959D0*CT-0.2764D0*CT**2+0.08832D0*CT**3
74258             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(-0.04079D0+
74259      &      0.1340D0*CT-0.1326D0*CT**2+0.04365D0*CT**3)
74260             XQQQQ=1.25D0*(0.003661D0-0.004888D0*CT-0.001081D0*CT**2+
74261      &      0.002093D0*CT**3)
74262             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
74263           ENDIF
74264           PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD
74265           PARJ(155)=XQQQQ/(XQQGG+XQQQQ)
74266         ENDIF
74267  
74268 C...If negative three-jet rate, change y' optimization parameter.
74269         IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0D0.AND.
74270      &  PARJ(169).LT.0.99D0) THEN
74271           PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
74272           Q2=PARJ(169)*ECM**2
74273           ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
74274           GOTO 100
74275         ENDIF
74276  
74277 C...If too high cross-section, use harder cuts, or fail.
74278         IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN
74279           IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0.AND.MSTJ(111).EQ.1.AND.
74280      &    PARJ(169).LT.0.99D0) THEN
74281             PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
74282             Q2=PARJ(169)*ECM**2
74283             ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
74284             GOTO 100
74285           ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0) THEN
74286             CALL PYERRM(26,
74287      &      '(PYXJET:) no allowed y cut value for Zhu parametrization')
74288           ENDIF
74289           CUT=0.26D0*(4D0*CUT)**(PARJ(152)+PARJ(153)+
74290      &    PARJ(154))**(-1D0/3D0)
74291           IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
74292           GOTO 100
74293         ENDIF
74294  
74295 C...Scalar gluon (first order only).
74296       ELSE
74297         ALSPI=PYALPS(ECM**2)/PARU(1)
74298         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3D0/ALSPI))
74299         PARJ(152)=0D0
74300         IF(CUT.LT.0.25D0) PARJ(152)=(ALSPI/3D0)*((1D0-2D0*CUT)*
74301      &  LOG((1D0-2D0*CUT)/CUT)+0.5D0*(9D0*CUT**2-1D0))
74302         PARJ(153)=0D0
74303         PARJ(154)=0D0
74304       ENDIF
74305  
74306 C...Select number of jets.
74307       PARJ(150)=CUT
74308       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
74309         NJET=2
74310       ELSEIF(MSTJ(101).LE.0) THEN
74311         NJET=MIN(4,2-MSTJ(101))
74312       ELSE
74313         RNJ=PYR(0)
74314         NJET=2
74315         IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3
74316         IF(PARJ(154).GT.RNJ) NJET=4
74317       ENDIF
74318  
74319       RETURN
74320       END
74321  
74322 C*********************************************************************
74323  
74324 C...PYX3JT
74325 C...Selects the kinematical variables of three-jet events.
74326  
74327       SUBROUTINE PYX3JT(NJET,CUT,KFL,ECM,X1,X2)
74328  
74329 C...Double precision and integer declarations.
74330       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74331       IMPLICIT INTEGER(I-N)
74332       INTEGER PYK,PYCHGE,PYCOMP
74333 C...Commonblocks.
74334       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74335       SAVE /PYDAT1/
74336 C...Local array.
74337       DIMENSION ZHUP(5,12)
74338  
74339 C...Coefficients of Zhu second order parametrization.
74340       DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/
74341      &18.29D0,  89.56D0,  4.541D0,  -52.09D0, -109.8D0,  24.90D0,
74342      &11.63D0,  3.683D0,  17.50D0,0.002440D0, -1.362D0,-0.3537D0,
74343      &11.42D0,  6.299D0, -22.55D0,  -8.915D0,  59.25D0, -5.855D0,
74344      &-32.85D0, -1.054D0, -16.90D0,0.006489D0,-0.8156D0,0.01095D0,
74345      &7.847D0, -3.964D0, -35.83D0,   1.178D0,  29.39D0, 0.2806D0,
74346      &47.82D0, -12.36D0, -56.72D0, 0.04054D0,-0.4365D0, 0.6062D0,
74347      &5.441D0, -56.89D0, -50.27D0,   15.13D0,  114.3D0, -18.19D0,
74348      &97.05D0, -1.890D0, -139.9D0, 0.08153D0,-0.4984D0, 0.9439D0,
74349      &-17.65D0,  51.44D0, -58.32D0,   70.95D0, -255.7D0, -78.99D0,
74350      &476.9D0,  29.65D0, -239.3D0,  0.4745D0, -1.174D0,  6.081D0/
74351  
74352 C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick).
74353       DILOG(X)=X+X**2/4D0+X**3/9D0+X**4/16D0+X**5/25D0+X**6/36D0+
74354      &X**7/49D0
74355  
74356 C...Event type. Mass effect factors and other common constants.
74357       MSTJ(120)=2
74358       MSTJ(121)=0
74359       PMQ=PYMASS(KFL)
74360       QME=(2D0*PMQ/ECM)**2
74361       IF(MSTJ(109).NE.1) THEN
74362         CUTL=LOG(CUT)
74363         CUTD=LOG(1D0/CUT-2D0)
74364         IF(MSTJ(109).EQ.0) THEN
74365           CF=4D0/3D0
74366           CN=3D0
74367           TR=2D0
74368           WTMX=MIN(20D0,37D0-6D0*CUTD)
74369           IF(MSTJ(110).EQ.2) WTMX=2D0*(7.5D0+80D0*CUT)
74370         ELSE
74371           CF=1D0
74372           CN=0D0
74373           TR=12D0
74374           WTMX=0D0
74375         ENDIF
74376  
74377 C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight.
74378         ALS2PI=PARU(118)/PARU(2)
74379         WTOPT=0D0
74380         IF(MSTJ(111).EQ.1) WTOPT=(33D0-2D0*MSTU(112))/6D0*
74381      &  LOG(PARJ(169))*ALS2PI
74382         WTMAX=MAX(0D0,1D0+WTOPT+ALS2PI*WTMX)
74383  
74384 C...Choose three-jet events in allowed region.
74385   100   NJET=3
74386   110   Y13L=CUTL+CUTD*PYR(0)
74387         Y23L=CUTL+CUTD*PYR(0)
74388         Y13=EXP(Y13L)
74389         Y23=EXP(Y23L)
74390         Y12=1D0-Y13-Y23
74391         IF(Y12.LE.CUT) GOTO 110
74392         IF(Y13**2+Y23**2+2D0*Y12.LE.2D0*PYR(0)) GOTO 110
74393  
74394 C...Second order corrections.
74395         IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN
74396           Y12L=LOG(Y12)
74397           Y13M=LOG(1D0-Y13)
74398           Y23M=LOG(1D0-Y23)
74399           Y12M=LOG(1D0-Y12)
74400           IF(Y13.LE.0.5D0) Y13I=DILOG(Y13)
74401           IF(Y13.GE.0.5D0) Y13I=1.644934D0-Y13L*Y13M-DILOG(1D0-Y13)
74402           IF(Y23.LE.0.5D0) Y23I=DILOG(Y23)
74403           IF(Y23.GE.0.5D0) Y23I=1.644934D0-Y23L*Y23M-DILOG(1D0-Y23)
74404           IF(Y12.LE.0.5D0) Y12I=DILOG(Y12)
74405           IF(Y12.GE.0.5D0) Y12I=1.644934D0-Y12L*Y12M-DILOG(1D0-Y12)
74406           WT1=(Y13**2+Y23**2+2D0*Y12)/(Y13*Y23)
74407           WT2=CF*(-2D0*(CUTL-Y12L)**2-3D0*CUTL-1D0+3.289868D0+
74408      &    2D0*(2D0*CUTL-Y12L)*CUT/Y12)+
74409      &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-
74410      &    11D0*CUTL/6D0+67D0/18D0+1.644934D0-(2D0*CUTL-Y12L)*CUT/Y12+
74411      &    (2D0*CUTL-Y13L)*CUT/Y13+(2D0*CUTL-Y23L)*CUT/Y23)+
74412      &    TR*(2D0*CUTL/3D0-10D0/9D0)+
74413      &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+
74414      &    Y13L*(4D0*Y12**2+2D0*Y12*Y13+4D0*Y12*Y23+Y13*Y23)/
74415      &    (Y12+Y23)**2+Y23L*(4D0*Y12**2+2D0*Y12*Y23+4D0*Y12*Y13+
74416      &    Y13*Y23)/(Y12+Y13)**2)/WT1+
74417      &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+(CN-2D0*CF)*
74418      &    ((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L*
74419      &    Y23M+1.644934D0-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)*
74420      &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934D0-Y12I-Y13I)/
74421      &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))-
74422      &    2D0*Y12L*Y12**2/(Y13+Y23)**2-4D0*Y12L*Y12/(Y13+Y23))/WT1-
74423      &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934D0-Y13I-Y23I)
74424           IF(1D0+WTOPT+ALS2PI*WT2.LE.0D0) MSTJ(121)=1
74425           IF(1D0+WTOPT+ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
74426           PARJ(156)=(WTOPT+ALS2PI*WT2)/(1D0+WTOPT+ALS2PI*WT2)
74427  
74428         ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN
74429 C...Second order corrections; Zhu parametrization of ERT.
74430           ZX=(Y23-Y13)**2
74431           ZY=1D0-Y12
74432           IZA=0
74433           DO 120 IY=1,5
74434             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
74435   120     CONTINUE
74436           IF(IZA.NE.0) THEN
74437             IZ=IZA
74438             WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
74439      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
74440      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
74441      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
74442           ELSE
74443             IZ=100D0*CUT
74444             WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
74445      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
74446      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
74447      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
74448             IZ=IZ+1
74449             WTU=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
74450      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
74451      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
74452      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
74453             WT2=WTL+(WTU-WTL)*(100D0*CUT+1D0-IZ)
74454           ENDIF
74455           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.0D0) MSTJ(121)=1
74456           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
74457           PARJ(156)=(WTOPT+2D0*ALS2PI*WT2)/(1D0+WTOPT+2D0*ALS2PI*WT2)
74458         ENDIF
74459  
74460 C...Impose mass cuts (gives two jets). For fixed jet number new try.
74461         X1=1D0-Y23
74462         X2=1D0-Y13
74463         X3=1D0-Y12
74464         IF(4D0*Y23*Y13*Y12/X3**2.LE.QME) NJET=2
74465         IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+
74466      &  0.5D0*QME**2+(0.5D0*QME+0.25D0*QME**2)*((1D0-X2)/(1D0-X1)+
74467      &  (1D0-X1)/(1D0-X2)).GT.(X1**2+X2**2)*PYR(0)) NJET=2
74468         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100
74469  
74470 C...Scalar gluon model (first order only, no mass effects).
74471       ELSE
74472   130   NJET=3
74473   140   X3=SQRT(4D0*CUT**2+PYR(0)*((1D0-CUT)**2-4D0*CUT**2))
74474         IF(LOG((X3-CUT)/CUT).LE.PYR(0)*LOG((1D0-2D0*CUT)/CUT)) GOTO 140
74475         YD=SIGN(2D0*CUT*((X3-CUT)/CUT)**PYR(0)-X3,PYR(0)-0.5D0)
74476         X1=1D0-0.5D0*(X3+YD)
74477         X2=1D0-0.5D0*(X3-YD)
74478         IF(4D0*(1D0-X1)*(1D0-X2)*(1D0-X3)/X3**2.LE.QME) NJET=2
74479         IF(MSTJ(102).GE.2) THEN
74480           IF(X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*PARJ(171).LT.
74481      &    X3**2*PYR(0)) NJET=2
74482         ENDIF
74483         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130
74484       ENDIF
74485  
74486       RETURN
74487       END
74488  
74489 C*********************************************************************
74490  
74491 C...PYX4JT
74492 C...Selects the kinematical variables of four-jet events.
74493  
74494       SUBROUTINE PYX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14)
74495  
74496 C...Double precision and integer declarations.
74497       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74498       IMPLICIT INTEGER(I-N)
74499       INTEGER PYK,PYCHGE,PYCOMP
74500 C...Commonblocks.
74501       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74502       SAVE /PYDAT1/
74503 C...Local arrays.
74504       DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4)
74505  
74506 C...Common constants. Colour factors for QCD and Abelian gluon theory.
74507       PMQ=PYMASS(KFL)
74508       QME=(2D0*PMQ/ECM)**2
74509       CT=LOG(1D0/CUT-5D0)
74510       IF(MSTJ(109).EQ.0) THEN
74511         CF=4D0/3D0
74512         CN=3D0
74513         TR=2.5D0
74514       ELSE
74515         CF=1D0
74516         CN=0D0
74517         TR=15D0
74518       ENDIF
74519  
74520 C...Choice of process (qqbargg or qqbarqqbar).
74521   100 NJET=4
74522       IT=1
74523       IF(PARJ(155).GT.PYR(0)) IT=2
74524       IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2
74525       IF(IT.EQ.1) WTMX=0.7D0/CUT**2
74526       IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6D0/CUT**2
74527       IF(IT.EQ.2) WTMX=0.1125D0*CF*TR/CUT**2
74528       ID=1
74529  
74530 C...Sample the five kinematical variables (for qqgg preweighted in y34).
74531   110 Y134=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
74532       Y234=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
74533       IF(IT.EQ.1) Y34=(1D0-5D0*CUT)*EXP(-CT*PYR(0))
74534       IF(IT.EQ.2) Y34=CUT+(1D0-6D0*CUT)*PYR(0)
74535       IF(Y34.LE.Y134+Y234-1D0.OR.Y34.GE.Y134*Y234) GOTO 110
74536       VT=PYR(0)
74537       CP=COS(PARU(1)*PYR(0))
74538       Y14=(Y134-Y34)*VT
74539       Y13=Y134-Y14-Y34
74540       VB=Y34*(1D0-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34))
74541       Y24=0.5D0*(Y234-Y34)*(1D0-4D0*SQRT(MAX(0D0,VT*(1D0-VT)*
74542      &VB*(1D0-VB)))*CP-(1D0-2D0*VT)*(1D0-2D0*VB))
74543       Y23=Y234-Y34-Y24
74544       Y12=1D0-Y134-Y23-Y24
74545       IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110
74546       Y123=Y12+Y13+Y23
74547       Y124=Y12+Y14+Y24
74548  
74549 C...Calculate matrix elements for qqgg or qqqq process.
74550       IC=0
74551       WTTOT=0D0
74552   120 IC=IC+1
74553       IF(IT.EQ.1) THEN
74554         WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3D0*Y12*Y23*Y34+
74555      &  3D0*Y12*Y14*Y34+4D0*Y12**2*Y34-Y13*Y23*Y24+2D0*Y12*Y23*Y24-
74556      &  Y13*Y14*Y24-2D0*Y12*Y13*Y24+2D0*Y12**2*Y24+Y14*Y23**2+2D0*Y12*
74557      &  Y23**2+Y14**2*Y23+4D0*Y12*Y14*Y23+4D0*Y12**2*Y23+2D0*Y12*Y14**2+
74558      &  2D0*Y12*Y13*Y14+4D0*Y12**2*Y14+2D0*Y12**2*Y13+2D0*Y12**3)/
74559      &  (2D0*Y13*Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-
74560      &  Y14*Y23+Y12*Y13)/(Y13*Y134**2)+2D0*Y23*(1D0-Y13)/
74561      &  (Y13*Y134*Y24)+Y34/(2D0*Y13*Y24)
74562         WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2D0*Y12*
74563      &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1D0+Y34)*Y124/(Y134*Y234*Y14*
74564      &  Y24)-(2D0*Y13*Y24+Y14**2+Y13*Y23+2D0*Y12*Y13)/(Y13*Y134*Y14)+
74565      &  Y12*Y123*Y124/(2D0*Y13*Y14*Y23*Y24)
74566         WTC(IC)=-(5D0*Y12*Y34**2+2D0*Y12*Y24*Y34+2D0*Y12*Y23*Y34+
74567      &  2D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+4D0*Y12**2*Y34-Y13*Y24**2+
74568      &  Y14*Y23*Y24+Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-
74569      &  3D0*Y12*Y13*Y24-Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-
74570      &  3D0*Y12*Y14*Y23-Y12*Y13*Y23)/(4D0*Y134*Y234*Y34**2)+
74571      &  (3D0*Y12*Y34**2-3D0*Y13*Y24*Y34+3D0*Y12*Y24*Y34+
74572      &  3D0*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6D0*Y12*Y14*Y34+
74573      &  2D0*Y12*Y13*Y34-2D0*Y12**2*Y34+Y14*Y23*Y24-3D0*Y13*Y23*Y24-
74574      &  2D0*Y13*Y14*Y24+4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+
74575      &  3D0*Y14*Y23**2+2D0*Y14**2*Y23+2D0*Y14**2*Y12+
74576      &  2D0*Y12**2*Y14+6D0*Y12*Y14*Y23-2D0*Y12*Y13**2-
74577      &  2D0*Y12**2*Y13)/(4D0*Y13*Y134*Y234*Y34)
74578         WTC(IC)=WTC(IC)+(2D0*Y12*Y34**2-2D0*Y13*Y24*Y34+Y12*Y24*Y34+
74579      &  4D0*Y13*Y23*Y34+4D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+2D0*Y12**2*Y34-
74580      &  Y13*Y24**2+3D0*Y14*Y23*Y24+4D0*Y13*Y23*Y24-2D0*Y13*Y14*Y24+
74581      &  4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+2D0*Y14*Y23**2+4D0*Y13*Y23**2+
74582      &  2D0*Y13*Y14*Y23+2D0*Y12*Y14*Y23+4D0*Y12*Y13*Y23+2D0*Y12*Y14**2+
74583      &  4D0*Y12**2*Y13+4D0*Y12*Y13*Y14+2D0*Y12**2*Y14)/
74584      &  (4D0*Y13*Y134*Y24*Y34)-(Y12*Y34**2-2D0*Y14*Y24*Y34-
74585      &  2D0*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23*Y34+Y12*Y14*Y34+
74586      &  2D0*Y12*Y13*Y34-2D0*Y14**2*Y24-4D0*Y13*Y14*Y24-
74587      &  4D0*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-
74588      &  Y12*Y13**2)/(2D0*Y13*Y34*Y134**2)+(Y12*Y34**2-
74589      &  4D0*Y14*Y24*Y34-2D0*Y13*Y24*Y34-2D0*Y14*Y23*Y34-
74590      &  4D0*Y13*Y23*Y34-4D0*Y12*Y14*Y34-4D0*Y12*Y13*Y34-
74591      &  2D0*Y13*Y14*Y24+2D0*Y13**2*Y24+2D0*Y14**2*Y23-
74592      &  2D0*Y13*Y14*Y23-Y12*Y14**2-6D0*Y12*Y13*Y14-
74593      &  Y12*Y13**2)/(4D0*Y34**2*Y134**2)
74594         WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5D0*CN)*WTB(IC)+
74595      &  CN*WTC(IC))/8D0
74596       ELSE
74597         WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2D0*Y12*
74598      &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2*
74599      &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12*
74600      &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14*
74601      &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+
74602      &  Y13*Y14*Y24+2D0*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+
74603      &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24*
74604      &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24-
74605      &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123)
74606         WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13*
74607      &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23*
74608      &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13*
74609      &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+
74610      &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+
74611      &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134*
74612      &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14*
74613      &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124)
74614         WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5D0*CN)*WTE(IC))/16D0
74615       ENDIF
74616  
74617 C...Permutations of momenta in matrix element. Weighting.
74618   130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN
74619         YSAV=Y13
74620         Y13=Y14
74621         Y14=YSAV
74622         YSAV=Y23
74623         Y23=Y24
74624         Y24=YSAV
74625         YSAV=Y123
74626         Y123=Y124
74627         Y124=YSAV
74628       ENDIF
74629       IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN
74630         YSAV=Y13
74631         Y13=Y23
74632         Y23=YSAV
74633         YSAV=Y14
74634         Y14=Y24
74635         Y24=YSAV
74636         YSAV=Y134
74637         Y134=Y234
74638         Y234=YSAV
74639       ENDIF
74640       IF(IC.LE.3) GOTO 120
74641       IF(ID.EQ.1.AND.WTTOT.LT.PYR(0)*WTMX) GOTO 110
74642       IC=5
74643  
74644 C...qqgg events: string configuration and event type.
74645       IF(IT.EQ.1) THEN
74646         IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN
74647           PARJ(156)=Y34*(2D0*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4D0*(WTC(1)+
74648      &    WTC(2)+WTC(3)+WTC(4)))/(9D0*WTTOT)
74649           IF(WTA(2)+WTA(4)+2D0*(WTC(2)+WTC(4)).GT.PYR(0)*(WTA(1)+WTA(2)+
74650      &    WTA(3)+WTA(4)+2D0*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2
74651           IF(ID.EQ.2) GOTO 130
74652         ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN
74653           PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8D0*WTTOT)
74654           IF(WTA(2)+WTA(4).GT.PYR(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2
74655           IF(ID.EQ.2) GOTO 130
74656         ENDIF
74657         MSTJ(120)=3
74658         IF(MSTJ(109).EQ.0.AND.0.5D0*Y34*(WTC(1)+WTC(2)+WTC(3)+
74659      &  WTC(4)).GT.PYR(0)*WTTOT) MSTJ(120)=4
74660         KFLN=21
74661  
74662 C...Mass cuts. Kinematical variables out.
74663         IF(Y12.LE.CUT+QME) NJET=2
74664         IF(NJET.EQ.2) GOTO 150
74665         Q12=0.5D0*(1D0-SQRT(1D0-QME/Y12))
74666         X1=1D0-(1D0-Q12)*Y234-Q12*Y134
74667         X4=1D0-(1D0-Q12)*Y134-Q12*Y234
74668         X2=1D0-Y124
74669         X12=(1D0-Q12)*Y13+Q12*Y23
74670         X14=Y12-0.5D0*QME
74671         IF(Y134*Y234/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
74672  
74673 C...qqbarqqbar events: string configuration, choose new flavour.
74674       ELSE
74675         IF(ID.EQ.1) THEN
74676           WTR=PYR(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4))
74677           IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2
74678           IF(WTR.LT.WTD(3)+WTD(4)) ID=3
74679           IF(WTR.LT.WTD(4)) ID=4
74680           IF(ID.GE.2) GOTO 130
74681         ENDIF
74682         MSTJ(120)=5
74683         PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16D0*WTTOT)
74684   140   KFLN=1+INT(5D0*PYR(0))
74685         IF(KFLN.NE.KFL.AND.0.2D0*PARJ(156).LE.PYR(0)) GOTO 140
74686         IF(KFLN.EQ.KFL.AND.1D0-0.8D0*PARJ(156).LE.PYR(0)) GOTO 140
74687         IF(KFLN.GT.MSTJ(104)) NJET=2
74688         PMQN=PYMASS(KFLN)
74689         QMEN=(2D0*PMQN/ECM)**2
74690  
74691 C...Mass cuts. Kinematical variables out.
74692         IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1D0*QMEN) NJET=2
74693         IF(NJET.EQ.2) GOTO 150
74694         Q24=0.5D0*(1D0-SQRT(1D0-QME/Y24))
74695         Q13=0.5D0*(1D0-SQRT(1D0-QMEN/Y13))
74696         X1=1D0-(1D0-Q24)*Y123-Q24*Y134
74697         X4=1D0-(1D0-Q24)*Y134-Q24*Y123
74698         X2=1D0-(1D0-Q13)*Y234-Q13*Y124
74699         X12=(1D0-Q24)*((1D0-Q13)*Y14+Q13*Y34)+Q24*((1D0-Q13)*Y12+
74700      &  Q13*Y23)
74701         X14=Y24-0.5D0*QME
74702         X34=(1D0-Q24)*((1D0-Q13)*Y23+Q13*Y12)+Q24*((1D0-Q13)*Y34+
74703      &  Q13*Y14)
74704         IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE.
74705      &  (PARJ(127)+PMQ+PMQN)**2) NJET=2
74706         IF(Y123*Y134/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
74707       ENDIF
74708   150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100
74709  
74710       RETURN
74711       END
74712  
74713 C*********************************************************************
74714  
74715 C...PYXDIF
74716 C...Gives the angular orientation of events.
74717  
74718       SUBROUTINE PYXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI)
74719  
74720 C...Double precision and integer declarations.
74721       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74722       IMPLICIT INTEGER(I-N)
74723       INTEGER PYK,PYCHGE,PYCOMP
74724 C...Commonblocks.
74725       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74726       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74727       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74728       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74729  
74730 C...Charge. Factors depending on polarization for QED case.
74731       QF=KCHG(KFL,1)/3D0
74732       POLL=1D0-PARJ(131)*PARJ(132)
74733       POLD=PARJ(132)-PARJ(131)
74734       IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN
74735         HF1=POLL
74736         HF2=0D0
74737         HF3=PARJ(133)**2
74738         HF4=0D0
74739  
74740 C...Factors depending on flavour, energy and polarization for QFD case.
74741       ELSE
74742         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
74743         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
74744         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
74745         AE=-1D0
74746         VE=4D0*PARU(102)-1D0
74747         AF=SIGN(1D0,QF)
74748         VF=AF-4D0*QF*PARU(102)
74749         HF1=QF**2*POLL-2D0*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+
74750      &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2D0*VE*AE*POLD)
74751         HF2=-2D0*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2D0*VF*AF*SFW*SFF**2*
74752      &  (2D0*VE*AE*POLL-(VE**2+AE**2)*POLD)
74753         HF3=PARJ(133)**2*(QF**2-2D0*QF*VF*SFI*SFF*VE+(VF**2+AF**2)*
74754      &  SFW*SFF**2*(VE**2-AE**2))
74755         HF4=-PARJ(133)**2*2D0*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)*
74756      &  SFF*AE
74757       ENDIF
74758  
74759 C...Mass factor. Differential cross-sections for two-jet events.
74760       SQ2=SQRT(2D0)
74761       QME=0D0
74762       IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND.
74763      &MSTJ(109).NE.1) QME=(2D0*PYMASS(KFL)/ECM)**2
74764       IF(NJET.EQ.2) THEN
74765         SIGU=4D0*SQRT(1D0-QME)
74766         SIGL=2D0*QME*SQRT(1D0-QME)
74767         SIGT=0D0
74768         SIGI=0D0
74769         SIGA=0D0
74770         SIGP=4D0
74771  
74772 C...Kinematical variables. Reduce four-jet event to three-jet one.
74773       ELSE
74774         IF(NJET.EQ.3) THEN
74775           X1=2D0*P(NC+1,4)/ECM
74776           X2=2D0*P(NC+3,4)/ECM
74777         ELSE
74778           ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+
74779      &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2)
74780           X1=2D0*P(NC+1,4)/ECMR
74781           X2=2D0*P(NC+4,4)/ECMR
74782         ENDIF
74783  
74784 C...Differential cross-sections for three-jet (or reduced four-jet).
74785         XQ=(1D0-X1)/(1D0-X2)
74786         CT12=(X1*X2-2D0*X1-2D0*X2+2D0+QME)/SQRT((X1**2-QME)*(X2**2-QME))
74787         ST12=SQRT(1D0-CT12**2)
74788         IF(MSTJ(109).NE.1) THEN
74789           SIGU=2D0*X1**2+X2**2*(1D0+CT12**2)-QME*(3D0+CT12**2-X1-X2)-
74790      &    QME*X1/XQ+0.5D0*QME*((X2**2-QME)*ST12**2-2D0*X2)*XQ
74791           SIGL=(X2*ST12)**2-QME*(3D0-CT12**2-2.5D0*(X1+X2)+X1*X2+QME)+
74792      &    0.5D0*QME*(X1**2-X1-QME)/XQ+0.5D0*QME*((X2**2-QME)*CT12**2-
74793      &    X2)*XQ
74794           SIGT=0.5D0*(X2**2-QME-0.5D0*QME*(X2**2-QME)/XQ)*ST12**2
74795           SIGI=((1D0-0.5D0*QME*XQ)*(X2**2-QME)*ST12*CT12+
74796      &    QME*(1D0-X1-X2+0.5D0*X1*X2+0.5D0*QME)*ST12/CT12)/SQ2
74797           SIGA=X2**2*ST12/SQ2
74798           SIGP=2D0*(X1**2-X2**2*CT12)
74799  
74800 C...Differential cross-sect for scalar gluons (no mass effects).
74801         ELSE
74802           X3=2D0-X1-X2
74803           XT=X2*ST12
74804           CT13=SQRT(MAX(0D0,1D0-(XT/X3)**2))
74805           SIGU=(1D0-PARJ(171))*(X3**2-0.5D0*XT**2)+
74806      &    PARJ(171)*(X3**2-0.5D0*XT**2-4D0*(1D0-X1)*(1D0-X2)**2/X1)
74807           SIGL=(1D0-PARJ(171))*0.5D0*XT**2+
74808      &    PARJ(171)*0.5D0*(1D0-X1)**2*XT**2
74809           SIGT=(1D0-PARJ(171))*0.25D0*XT**2+
74810      &    PARJ(171)*0.25D0*XT**2*(1D0-2D0*X1)
74811           SIGI=-(0.5D0/SQ2)*((1D0-PARJ(171))*XT*X3*CT13+
74812      &    PARJ(171)*XT*((1D0-2D0*X1)*X3*CT13-X1*(X1-X2)))
74813           SIGA=(0.25D0/SQ2)*XT*(2D0*(1D0-X1)-X1*X3)
74814           SIGP=X3**2-2D0*(1D0-X1)*(1D0-X2)/X1
74815         ENDIF
74816       ENDIF
74817  
74818 C...Upper bounds for differential cross-section.
74819       HF1A=ABS(HF1)
74820       HF2A=ABS(HF2)
74821       HF3A=ABS(HF3)
74822       HF4A=ABS(HF4)
74823       SIGMAX=(2D0*HF1A+HF3A+HF4A)*ABS(SIGU)+2D0*(HF1A+HF3A+HF4A)*
74824      &ABS(SIGL)+2D0*(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGT)+2D0*SQ2*
74825      &(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGI)+4D0*SQ2*HF2A*ABS(SIGA)+
74826      &2D0*HF2A*ABS(SIGP)
74827  
74828 C...Generate angular orientation according to differential cross-sect.
74829   100 CHI=PARU(2)*PYR(0)
74830       CTHE=2D0*PYR(0)-1D0
74831       PHI=PARU(2)*PYR(0)
74832       CCHI=COS(CHI)
74833       SCHI=SIN(CHI)
74834       C2CHI=COS(2D0*CHI)
74835       S2CHI=SIN(2D0*CHI)
74836       THE=ACOS(CTHE)
74837       STHE=SIN(THE)
74838       C2PHI=COS(2D0*(PHI-PARJ(134)))
74839       S2PHI=SIN(2D0*(PHI-PARJ(134)))
74840       SIG=((1D0+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+
74841      &2D0*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+
74842      &2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*C2CHI*C2PHI-2D0*CTHE*S2CHI*
74843      &S2PHI)*HF3-((1D0+CTHE**2)*C2CHI*S2PHI+2D0*CTHE*S2CHI*C2PHI)*HF4)*
74844      &SIGT-2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*(CTHE*CCHI*C2PHI-
74845      &SCHI*S2PHI)*HF3+2D0*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+
74846      &4D0*SQ2*STHE*CCHI*HF2*SIGA+2D0*CTHE*HF2*SIGP
74847       IF(SIG.LT.SIGMAX*PYR(0)) GOTO 100
74848  
74849       RETURN
74850       END
74851  
74852 C*********************************************************************
74853  
74854 C...PYONIA
74855 C...Generates Upsilon and toponium decays into three gluons
74856 C...or two gluons and a photon.
74857  
74858       SUBROUTINE PYONIA(KFL,ECM)
74859  
74860 C...Double precision and integer declarations.
74861       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74862       IMPLICIT INTEGER(I-N)
74863       INTEGER PYK,PYCHGE,PYCOMP
74864 C...Commonblocks.
74865       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74866       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74867       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74868       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74869  
74870 C...Printout. Check input parameters.
74871       IF(MSTU(12).NE.12345) CALL PYLIST(0)
74872       IF(KFL.LT.0.OR.KFL.GT.8) THEN
74873         CALL PYERRM(16,'(PYONIA:) called with unknown flavour code')
74874         IF(MSTU(21).GE.1) RETURN
74875       ENDIF
74876       IF(ECM.LT.PARJ(127)+2.02D0*PARF(101)) THEN
74877         CALL PYERRM(16,'(PYONIA:) called with too small CM energy')
74878         IF(MSTU(21).GE.1) RETURN
74879       ENDIF
74880  
74881 C...Initial e+e- and onium state (optional).
74882       NC=0
74883       IF(MSTJ(115).GE.2) THEN
74884         NC=NC+2
74885         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
74886         K(NC-1,1)=21
74887         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
74888         K(NC,1)=21
74889       ENDIF
74890       KFLC=IABS(KFL)
74891       IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN
74892         NC=NC+1
74893         KF=110*KFLC+3
74894         MSTU10=MSTU(10)
74895         MSTU(10)=1
74896         P(NC,5)=ECM
74897         CALL PY1ENT(NC,KF,ECM,0D0,0D0)
74898         K(NC,1)=21
74899         K(NC,3)=1
74900         MSTU(10)=MSTU10
74901       ENDIF
74902  
74903 C...Choose x1 and x2 according to matrix element.
74904       NTRY=0
74905   100 X1=PYR(0)
74906       X2=PYR(0)
74907       X3=2D0-X1-X2
74908       IF(X3.GE.1D0.OR.((1D0-X1)/(X2*X3))**2+((1D0-X2)/(X1*X3))**2+
74909      &((1D0-X3)/(X1*X2))**2.LE.2D0*PYR(0)) GOTO 100
74910       NTRY=NTRY+1
74911       NJET=3
74912       IF(MSTJ(101).LE.4) CALL PY3ENT(NC+1,21,21,21,ECM,X1,X3)
74913       IF(MSTJ(101).GE.5) CALL PY3ENT(-(NC+1),21,21,21,ECM,X1,X3)
74914  
74915 C...Photon-gluon-gluon events. Small system modifications. Jet origin.
74916       MSTU(111)=MSTJ(108)
74917       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
74918      &MSTU(111)=1
74919       PARU(112)=PARJ(121)
74920       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
74921       QF=0D0
74922       IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3D0
74923       RGAM=7.2D0*QF**2*PARU(101)/PYALPS(ECM**2)
74924       MK=0
74925       ECMC=ECM
74926       IF(PYR(0).GT.RGAM/(1D0+RGAM)) THEN
74927         IF(1D0-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125)))
74928      &  NJET=2
74929         IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL PY2ENT(NC+1,21,21,ECM)
74930         IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL PY2ENT(-(NC+1),21,21,ECM)
74931       ELSE
74932         MK=1
74933         ECMC=SQRT(1D0-X1)*ECM
74934         IF(ECMC.LT.2D0*PARJ(127)) GOTO 100
74935         K(NC+1,1)=1
74936         K(NC+1,2)=22
74937         K(NC+1,4)=0
74938         K(NC+1,5)=0
74939         IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3)
74940         IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3)
74941         IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2)
74942         IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2)
74943         NJET=2
74944         IF(ECMC.LT.4D0*PARJ(127)) THEN
74945           MSTU10=MSTU(10)
74946           MSTU(10)=1
74947           P(NC+2,5)=ECMC
74948           CALL PY1ENT(NC+2,83,0.5D0*(X2+X3)*ECM,PARU(1),0D0)
74949           MSTU(10)=MSTU10
74950           NJET=0
74951         ENDIF
74952       ENDIF
74953       DO 110 IP=NC+1,N
74954         K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1)
74955   110 CONTINUE
74956  
74957 C...Differential cross-sections. Upper limit for cross-section.
74958       IF(MSTJ(106).EQ.1) THEN
74959         SQ2=SQRT(2D0)
74960         HF1=1D0-PARJ(131)*PARJ(132)
74961         HF3=PARJ(133)**2
74962         CT13=(X1*X3-2D0*X1-2D0*X3+2D0)/(X1*X3)
74963         ST13=SQRT(1D0-CT13**2)
74964         SIGL=0.5D0*X3**2*((1D0-X2)**2+(1D0-X3)**2)*ST13**2
74965         SIGU=(X1*(1D0-X1))**2+(X2*(1D0-X2))**2+(X3*(1D0-X3))**2-SIGL
74966         SIGT=0.5D0*SIGL
74967         SIGI=(SIGL*CT13/ST13+0.5D0*X1*X3*(1D0-X2)**2*ST13)/SQ2
74968         SIGMAX=(2D0*HF1+HF3)*ABS(SIGU)+2D0*(HF1+HF3)*ABS(SIGL)+2D0*(HF1+
74969      &  2D0*HF3)*ABS(SIGT)+2D0*SQ2*(HF1+2D0*HF3)*ABS(SIGI)
74970  
74971 C...Angular orientation of event.
74972   120   CHI=PARU(2)*PYR(0)
74973         CTHE=2D0*PYR(0)-1D0
74974         PHI=PARU(2)*PYR(0)
74975         CCHI=COS(CHI)
74976         SCHI=SIN(CHI)
74977         C2CHI=COS(2D0*CHI)
74978         S2CHI=SIN(2D0*CHI)
74979         THE=ACOS(CTHE)
74980         STHE=SIN(THE)
74981         C2PHI=COS(2D0*(PHI-PARJ(134)))
74982         S2PHI=SIN(2D0*(PHI-PARJ(134)))
74983         SIG=((1D0+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2D0*(STHE**2*HF1-
74984      &  STHE**2*C2PHI*HF3)*SIGL+2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*
74985      &  C2CHI*C2PHI-2D0*CTHE*S2CHI*S2PHI)*HF3)*SIGT-
74986      &  2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*
74987      &  (CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI
74988         IF(SIG.LT.SIGMAX*PYR(0)) GOTO 120
74989         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
74990         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
74991       ENDIF
74992  
74993 C...Generate parton shower. Rearrange along strings and check.
74994       IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN
74995         CALL PYSHOW(NC+MK+1,-NJET,ECMC)
74996         MSTJ14=MSTJ(14)
74997         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
74998         IF(MSTJ(105).GE.0) MSTU(28)=0
74999         CALL PYPREP(0)
75000         MSTJ(14)=MSTJ14
75001         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
75002       ENDIF
75003  
75004 C...Generate fragmentation. Information for PYTABU:
75005       IF(MSTJ(105).EQ.1) CALL PYEXEC
75006       MSTU(161)=110*KFLC+3
75007       MSTU(162)=0
75008  
75009       RETURN
75010       END
75011  
75012 C*********************************************************************
75013  
75014 C...PYBOOK
75015 C...Books a histogram.
75016  
75017       SUBROUTINE PYBOOK(ID,TITLE,NX,XL,XU)
75018  
75019 C...Double precision declaration.
75020       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75021       IMPLICIT INTEGER(I-N)
75022 C...Commonblock.
75023       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75024       SAVE /PYBINS/
75025 C...Local character variables.
75026       CHARACTER TITLE*(*), TITFX*60
75027  
75028 C...Check that input is sensible. Find initial address in memory.
75029       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
75030      &'(PYBOOK:) not allowed histogram number')
75031       IF(NX.LE.0.OR.NX.GT.100) CALL PYERRM(28,
75032      &'(PYBOOK:) not allowed number of bins')
75033       IF(XL.GE.XU) CALL PYERRM(28,
75034      &'(PYBOOK:) x limits in wrong order')
75035       INDX(ID)=IHIST(4)
75036       IHIST(4)=IHIST(4)+28+NX
75037       IF(IHIST(4).GT.IHIST(2)) CALL PYERRM(28,
75038      &'(PYBOOK:) out of histogram space')
75039       IS=INDX(ID)
75040  
75041 C...Store histogram size and reset contents.
75042       BIN(IS+1)=NX
75043       BIN(IS+2)=XL
75044       BIN(IS+3)=XU
75045       BIN(IS+4)=(XU-XL)/NX
75046       CALL PYNULL(ID)
75047  
75048 C...Store title by conversion to integer to double precision.
75049       TITFX=TITLE//' '
75050       DO 100 IT=1,20
75051         BIN(IS+8+NX+IT)=256**2*ICHAR(TITFX(3*IT-2:3*IT-2))+
75052      &  256*ICHAR(TITFX(3*IT-1:3*IT-1))+ICHAR(TITFX(3*IT:3*IT))
75053   100 CONTINUE
75054  
75055       RETURN
75056       END
75057  
75058 C*********************************************************************
75059  
75060 C...PYFILL
75061 C...Fills entry in histogram.
75062  
75063       SUBROUTINE PYFILL(ID,X,W)
75064  
75065 C...Double precision declaration.
75066       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75067       IMPLICIT INTEGER(I-N)
75068 C...Commonblock.
75069       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75070       SAVE /PYBINS/
75071  
75072 C...Find initial address in memory. Increase number of entries.
75073       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
75074      &'(PYFILL:) not allowed histogram number')
75075       IS=INDX(ID)
75076       IF(IS.EQ.0) CALL PYERRM(28,
75077      &'(PYFILL:) filling unbooked histogram')
75078       BIN(IS+5)=BIN(IS+5)+1D0
75079  
75080 C...Find bin in x, including under/overflow, and fill.
75081       IF(X.LT.BIN(IS+2)) THEN
75082         BIN(IS+6)=BIN(IS+6)+W
75083       ELSEIF(X.GE.BIN(IS+3)) THEN
75084         BIN(IS+8)=BIN(IS+8)+W
75085       ELSE
75086         BIN(IS+7)=BIN(IS+7)+W
75087         IX=(X-BIN(IS+2))/BIN(IS+4)
75088         IX=MAX(0,MIN(NINT(BIN(IS+1))-1,IX))
75089         BIN(IS+9+IX)=BIN(IS+9+IX)+W
75090       ENDIF
75091  
75092       RETURN
75093       END
75094  
75095 C*********************************************************************
75096  
75097 C...PYFACT
75098 C...Multiplies histogram contents by factor.
75099  
75100       SUBROUTINE PYFACT(ID,F)
75101  
75102 C...Double precision declaration.
75103       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75104       IMPLICIT INTEGER(I-N)
75105 C...Commonblock.
75106       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75107       SAVE /PYBINS/
75108  
75109 C...Find initial address in memory. Multiply all contents bins.
75110       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
75111      &'(PYFACT:) not allowed histogram number')
75112       IS=INDX(ID)
75113       IF(IS.EQ.0) CALL PYERRM(28,
75114      &'(PYFACT:) scaling unbooked histogram')
75115       DO 100 IX=IS+6,IS+8+NINT(BIN(IS+1))
75116         BIN(IX)=F*BIN(IX)
75117   100 CONTINUE
75118  
75119       RETURN
75120       END
75121  
75122 C*********************************************************************
75123  
75124 C...PYOPER
75125 C...Performs operations between histograms.
75126  
75127       SUBROUTINE PYOPER(ID1,OPER,ID2,ID3,F1,F2)
75128  
75129 C...Double precision declaration.
75130       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75131       IMPLICIT INTEGER(I-N)
75132 C...Commonblock.
75133       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75134       SAVE /PYBINS/
75135 C...Character variable.
75136       CHARACTER OPER*(*)
75137  
75138 C...Find initial addresses in memory, and histogram size.
75139       IF(ID1.LE.0.OR.ID1.GT.IHIST(1)) CALL PYERRM(28,
75140      &'(PYFACT:) not allowed histogram number')
75141       IS1=INDX(ID1)
75142       IS2=INDX(MIN(IHIST(1),MAX(1,ID2)))
75143       IS3=INDX(MIN(IHIST(1),MAX(1,ID3)))
75144       NX=NINT(BIN(IS3+1))
75145       IF(OPER.EQ.'M'.AND.ID3.EQ.0) NX=NINT(BIN(IS2+1))
75146  
75147 C...Update info on number of histogram entries.
75148       IF(OPER.EQ.'+'.OR.OPER.EQ.'-'.OR.OPER.EQ.'*'.OR.OPER.EQ.'/') THEN
75149         BIN(IS3+5)=BIN(IS1+5)+BIN(IS2+5)
75150       ELSEIF(OPER.EQ.'A'.OR.OPER.EQ.'S'.OR.OPER.EQ.'L') THEN
75151         BIN(IS3+5)=BIN(IS1+5)
75152       ENDIF
75153  
75154 C...Operations on pair of histograms: addition, subtraction,
75155 C...multiplication, division.
75156       IF(OPER.EQ.'+') THEN
75157         DO 100 IX=6,8+NX
75158           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2*BIN(IS2+IX)
75159   100   CONTINUE
75160       ELSEIF(OPER.EQ.'-') THEN
75161         DO 110 IX=6,8+NX
75162           BIN(IS3+IX)=F1*BIN(IS1+IX)-F2*BIN(IS2+IX)
75163   110   CONTINUE
75164       ELSEIF(OPER.EQ.'*') THEN
75165         DO 120 IX=6,8+NX
75166           BIN(IS3+IX)=F1*BIN(IS1+IX)*F2*BIN(IS2+IX)
75167   120   CONTINUE
75168       ELSEIF(OPER.EQ.'/') THEN
75169         DO 130 IX=6,8+NX
75170           FA2=F2*BIN(IS2+IX)
75171           IF(ABS(FA2).LE.1D-20) THEN
75172             BIN(IS3+IX)=0D0
75173           ELSE
75174             BIN(IS3+IX)=F1*BIN(IS1+IX)/FA2
75175           ENDIF
75176   130   CONTINUE
75177  
75178 C...Operations on single histogram: multiplication+addition,
75179 C...square root+addition, logarithm+addition.
75180       ELSEIF(OPER.EQ.'A') THEN
75181         DO 140 IX=6,8+NX
75182           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2
75183   140   CONTINUE
75184       ELSEIF(OPER.EQ.'S') THEN
75185         DO 150 IX=6,8+NX
75186           BIN(IS3+IX)=F1*SQRT(MAX(0D0,BIN(IS1+IX)))+F2
75187   150   CONTINUE
75188       ELSEIF(OPER.EQ.'L') THEN
75189         ZMIN=1D20
75190         DO 160 IX=9,8+NX
75191           IF(BIN(IS1+IX).LT.ZMIN.AND.BIN(IS1+IX).GT.1D-20)
75192      &    ZMIN=0.8D0*BIN(IS1+IX)
75193   160   CONTINUE
75194         DO 170 IX=6,8+NX
75195           BIN(IS3+IX)=F1*LOG10(MAX(ZMIN,BIN(IS1+IX)))+F2
75196   170   CONTINUE
75197  
75198 C...Operation on two or three histograms: average and
75199 C...standard deviation.
75200       ELSEIF(OPER.EQ.'M') THEN
75201         DO 180 IX=6,8+NX
75202           IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
75203             BIN(IS2+IX)=0D0
75204           ELSE
75205             BIN(IS2+IX)=BIN(IS2+IX)/BIN(IS1+IX)
75206           ENDIF
75207           IF(ID3.NE.0) THEN
75208             IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
75209               BIN(IS3+IX)=0D0
75210             ELSE
75211               BIN(IS3+IX)=SQRT(MAX(0D0,BIN(IS3+IX)/BIN(IS1+IX)-
75212      &        BIN(IS2+IX)**2))
75213             ENDIF
75214           ENDIF
75215           BIN(IS1+IX)=F1*BIN(IS1+IX)
75216   180   CONTINUE
75217       ENDIF
75218  
75219       RETURN
75220       END
75221  
75222 C*********************************************************************
75223  
75224 C...PYHIST
75225 C...Prints and resets all histograms.
75226  
75227       SUBROUTINE PYHIST
75228  
75229 C...Double precision declaration.
75230       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75231       IMPLICIT INTEGER(I-N)
75232 C...Commonblock.
75233       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75234       SAVE /PYBINS/
75235  
75236 C...Loop over histograms, print and reset used ones.
75237       DO 100 ID=1,IHIST(1)
75238         IS=INDX(ID)
75239         IF(IS.NE.0.AND.NINT(BIN(IS+5)).GT.0) THEN
75240           CALL PYPLOT(ID)
75241           CALL PYNULL(ID)
75242         ENDIF
75243   100 CONTINUE
75244  
75245       RETURN
75246       END
75247  
75248 C*********************************************************************
75249  
75250 C...PYPLOT
75251 C...Prints a histogram (but does not reset it).
75252  
75253       SUBROUTINE PYPLOT(ID)
75254  
75255 C...Double precision declaration.
75256       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75257       IMPLICIT INTEGER(I-N)
75258 C...Commonblocks.
75259       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75260       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75261       SAVE /PYDAT1/,/PYBINS/
75262 C...Local arrays and character variables.
75263       DIMENSION IDATI(6), IROW(100), IFRA(100), DYAC(10)
75264       CHARACTER TITLE*60, OUT*100, CHA(0:11)*1
75265  
75266 C...Steps in histogram scale. Character sequence.
75267       DATA DYAC/.04,.05,.06,.08,.10,.12,.15,.20,.25,.30/
75268       DATA CHA/'0','1','2','3','4','5','6','7','8','9','X','-'/
75269  
75270 C...Find initial address in memory; skip if empty histogram.
75271       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
75272       IS=INDX(ID)
75273       IF(IS.EQ.0) RETURN
75274       IF(NINT(BIN(IS+5)).LE.0) THEN
75275         WRITE(MSTU(11),5000) ID
75276         RETURN
75277       ENDIF
75278  
75279 C...Number of histogram lines and x bins.
75280       LIN=IHIST(3)-18
75281       NX=NINT(BIN(IS+1))
75282  
75283 C...Extract title by conversion from double precision via integer.
75284       DO 100 IT=1,20
75285         IEQ=NINT(BIN(IS+8+NX+IT))
75286         TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//CHAR(MOD(IEQ,256**2)/256)
75287      &  //CHAR(MOD(IEQ,256))
75288   100 CONTINUE
75289  
75290 C...Find time; print title.
75291       CALL PYTIME(IDATI)
75292       IF(IDATI(1).GT.0) THEN
75293         WRITE(MSTU(11),5100) ID, TITLE, (IDATI(J),J=1,5)
75294       ELSE
75295         WRITE(MSTU(11),5200) ID, TITLE
75296       ENDIF
75297  
75298 C...Find minimum and maximum bin content.
75299       YMIN=BIN(IS+9)
75300       YMAX=BIN(IS+9)
75301       DO 110 IX=IS+10,IS+8+NX
75302         IF(BIN(IX).LT.YMIN) YMIN=BIN(IX)
75303         IF(BIN(IX).GT.YMAX) YMAX=BIN(IX)
75304   110 CONTINUE
75305  
75306 C...Determine scale and step size for y axis.
75307       IF(YMAX-YMIN.GT.LIN*DYAC(1)*1D-9) THEN
75308         IF(YMIN.GT.0D0.AND.YMIN.LT.0.1D0*YMAX) YMIN=0D0
75309         IF(YMAX.LT.0D0.AND.YMAX.GT.0.1D0*YMIN) YMAX=0D0
75310         IPOT=INT(LOG10(YMAX-YMIN)+10D0)-10
75311         IF(YMAX-YMIN.LT.LIN*DYAC(1)*10D0**IPOT) IPOT=IPOT-1
75312         IF(YMAX-YMIN.GT.LIN*DYAC(10)*10D0**IPOT) IPOT=IPOT+1
75313         DELY=DYAC(1)
75314         DO 120 IDEL=1,9
75315           IF(YMAX-YMIN.GE.LIN*DYAC(IDEL)*10D0**IPOT) DELY=DYAC(IDEL+1)
75316   120   CONTINUE
75317         DY=DELY*10D0**IPOT
75318  
75319 C...Convert bin contents to integer form; fractional fill in top row.
75320         DO 130 IX=1,NX
75321           CTA=ABS(BIN(IS+8+IX))/DY
75322           IROW(IX)=SIGN(CTA+0.95D0,BIN(IS+8+IX))
75323           IFRA(IX)=10D0*(CTA+1.05D0-DBLE(INT(CTA+0.95D0)))
75324   130   CONTINUE
75325         IRMI=SIGN(ABS(YMIN)/DY+0.95D0,YMIN)
75326         IRMA=SIGN(ABS(YMAX)/DY+0.95D0,YMAX)
75327  
75328 C...Print histogram row by row.
75329         DO 150 IR=IRMA,IRMI,-1
75330           IF(IR.EQ.0) GOTO 150
75331           OUT=' '
75332           DO 140 IX=1,NX
75333             IF(IR.EQ.IROW(IX)) OUT(IX:IX)=CHA(IFRA(IX))
75334             IF(IR*(IROW(IX)-IR).GT.0) OUT(IX:IX)=CHA(10)
75335   140     CONTINUE
75336           WRITE(MSTU(11),5300) IR*DELY, IPOT, OUT
75337   150   CONTINUE
75338  
75339 C...Print sign and value of bin contents.
75340         IPOT=INT(LOG10(MAX(YMAX,-YMIN))+10.0001D0)-10
75341         OUT=' '
75342         DO 160 IX=1,NX
75343           IF(BIN(IS+8+IX).LT.-10D0**(IPOT-4)) OUT(IX:IX)=CHA(11)
75344           IROW(IX)=NINT(10D0**(3-IPOT)*ABS(BIN(IS+8+IX)))
75345   160   CONTINUE
75346         WRITE(MSTU(11),5400) OUT
75347         DO 180 IR=4,1,-1
75348           DO 170 IX=1,NX
75349             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
75350   170     CONTINUE
75351           WRITE(MSTU(11),5500) IPOT+IR-4, OUT
75352   180   CONTINUE
75353  
75354 C...Print sign and value of lower bin edge.
75355         IPOT=INT(LOG10(MAX(-BIN(IS+2),BIN(IS+3)-BIN(IS+4)))+
75356      &  10.0001D0)-10
75357         OUT=' '
75358         DO 190 IX=1,NX
75359           IF(BIN(IS+2)+(IX-1)*BIN(IS+4).LT.-10D0**(IPOT-3))
75360      &    OUT(IX:IX)=CHA(11)
75361           IROW(IX)=NINT(10D0**(2-IPOT)*ABS(BIN(IS+2)+(IX-1)*BIN(IS+4)))
75362   190   CONTINUE
75363         WRITE(MSTU(11),5600) OUT
75364         DO 210 IR=3,1,-1
75365           DO 200 IX=1,NX
75366             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
75367   200     CONTINUE
75368           WRITE(MSTU(11),5500) IPOT+IR-3, OUT
75369   210   CONTINUE
75370       ENDIF
75371  
75372 C...Calculate and print statistics.
75373       CSUM=0D0
75374       CXSUM=0D0
75375       CXXSUM=0D0
75376       DO 220 IX=1,NX
75377         CTA=ABS(BIN(IS+8+IX))
75378         X=BIN(IS+2)+(IX-0.5D0)*BIN(IS+4)
75379         CSUM=CSUM+CTA
75380         CXSUM=CXSUM+CTA*X
75381         CXXSUM=CXXSUM+CTA*X**2
75382   220 CONTINUE
75383       XMEAN=CXSUM/MAX(CSUM,1D-20)
75384       XRMS=SQRT(MAX(0D0,CXXSUM/MAX(CSUM,1D-20)-XMEAN**2))
75385       WRITE(MSTU(11),5700) NINT(BIN(IS+5)),XMEAN,BIN(IS+6),
75386      &BIN(IS+2),BIN(IS+7),XRMS,BIN(IS+8),BIN(IS+3)
75387  
75388 C...Formats for output.
75389  5000 FORMAT(/5X,'Histogram no',I5,' : no entries')
75390  5100 FORMAT('1'/5X,'Histogram no',I5,6X,A60,5X,I4,'-',I2,'-',I2,1X,
75391      &I2,':',I2/)
75392  5200 FORMAT('1'/5X,'Histogram no',I5,6X,A60/)
75393  5300 FORMAT(2X,F7.2,'*10**',I2,3X,A100)
75394  5400 FORMAT(/8X,'Contents',3X,A100)
75395  5500 FORMAT(9X,'*10**',I2,3X,A100)
75396  5600 FORMAT(/8X,'Low edge',3X,A100)
75397  5700 FORMAT(/5X,'Entries  =',I12,1P,6X,'Mean =',D12.4,6X,'Underflow ='
75398      &,D12.4,6X,'Low edge  =',D12.4/5X,'All chan =',D12.4,6X,
75399      &'Rms  =',D12.4,6X,'Overflow  =',D12.4,6X,'High edge =',D12.4)
75400  
75401       RETURN
75402       END
75403  
75404 C*********************************************************************
75405  
75406 C...PYNULL
75407 C...Resets bin contents of a histogram.
75408  
75409       SUBROUTINE PYNULL(ID)
75410  
75411 C...Double precision declaration.
75412       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75413       IMPLICIT INTEGER(I-N)
75414 C...Commonblock.
75415       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75416       SAVE /PYBINS/
75417  
75418       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
75419       IS=INDX(ID)
75420       IF(IS.EQ.0) RETURN
75421       DO 100 IX=IS+5,IS+8+NINT(BIN(IS+1))
75422         BIN(IX)=0D0
75423   100 CONTINUE
75424  
75425       RETURN
75426       END
75427  
75428 C*********************************************************************
75429  
75430 C...PYDUMP
75431 C...Dumps histogram contents on file for reading by other program.
75432 C...Can also read back own dump.
75433  
75434       SUBROUTINE PYDUMP(MDUMP,LFN,NHI,IHI)
75435  
75436 C...Double precision declaration.
75437       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75438       IMPLICIT INTEGER(I-N)
75439 C...Commonblock.
75440       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75441       SAVE /PYBINS/
75442 C...Local arrays and character variables.
75443       DIMENSION IHI(*),ISS(100),VAL(5)
75444       CHARACTER TITLE*60,FORMAT*13
75445  
75446 C...Dump all histograms that have been booked,
75447 C...including titles and ranges, one after the other.
75448       IF(MDUMP.EQ.1) THEN
75449  
75450 C...Loop over histograms and find which are wanted and booked.
75451         IF(NHI.LE.0) THEN
75452           NW=IHIST(1)
75453         ELSE
75454           NW=NHI
75455         ENDIF
75456         DO 130 IW=1,NW
75457           IF(NHI.EQ.0) THEN
75458             ID=IW
75459           ELSE
75460             ID=IHI(IW)
75461           ENDIF
75462           IS=INDX(ID)
75463           IF(IS.NE.0) THEN
75464  
75465 C...Write title, histogram size, filling statistics.
75466             NX=NINT(BIN(IS+1))
75467             DO 100 IT=1,20
75468               IEQ=NINT(BIN(IS+8+NX+IT))
75469               TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//
75470      &        CHAR(MOD(IEQ,256**2)/256)//CHAR(MOD(IEQ,256))
75471   100       CONTINUE
75472             WRITE(LFN,5100) ID,TITLE
75473             WRITE(LFN,5200) NX,BIN(IS+2),BIN(IS+3)
75474             WRITE(LFN,5300) NINT(BIN(IS+5)),BIN(IS+6),BIN(IS+7),
75475      &      BIN(IS+8)
75476  
75477  
75478 C...Write histogram contents, in groups of five.
75479             DO 120 IXG=1,(NX+4)/5
75480               DO 110 IXV=1,5
75481                 IX=5*IXG+IXV-5
75482                 IF(IX.LE.NX) THEN
75483                   VAL(IXV)=BIN(IS+8+IX)
75484                 ELSE
75485                   VAL(IXV)=0D0
75486                 ENDIF
75487   110         CONTINUE
75488               WRITE(LFN,5400) (VAL(IXV),IXV=1,5)
75489   120       CONTINUE
75490  
75491 C...Go to next histogram; finish.
75492           ELSEIF(NHI.GT.0) THEN
75493             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
75494           ENDIF
75495   130   CONTINUE
75496  
75497 C...Read back in histograms dumped MDUMP=1.
75498       ELSEIF(MDUMP.EQ.2) THEN
75499  
75500 C...Read histogram number, title and range, and book.
75501   140   READ(LFN,5100,END=170) ID,TITLE
75502         READ(LFN,5200) NX,XL,XU
75503         CALL PYBOOK(ID,TITLE,NX,XL,XU)
75504         IS=INDX(ID)
75505  
75506 C...Read filling statistics.
75507         READ(LFN,5300) NENTRY,BIN(IS+6),BIN(IS+7),BIN(IS+8)
75508         BIN(IS+5)=DBLE(NENTRY)
75509  
75510 C...Read histogram contents, in groups of five.
75511         DO 160 IXG=1,(NX+4)/5
75512           READ(LFN,5400) (VAL(IXV),IXV=1,5)
75513           DO 150 IXV=1,5
75514             IX=5*IXG+IXV-5
75515             IF(IX.LE.NX) BIN(IS+8+IX)=VAL(IXV)
75516   150     CONTINUE
75517   160   CONTINUE
75518  
75519 C...Go to next histogram; finish.
75520         GOTO 140
75521   170   CONTINUE
75522  
75523 C...Write histogram contents in column format,
75524 C...convenient e.g. for GNUPLOT input.
75525       ELSEIF(MDUMP.EQ.3) THEN
75526  
75527 C...Find addresses to wanted histograms.
75528         NSS=0
75529         IF(NHI.LE.0) THEN
75530           NW=IHIST(1)
75531         ELSE
75532           NW=NHI
75533         ENDIF
75534         DO 180 IW=1,NW
75535           IF(NHI.EQ.0) THEN
75536             ID=IW
75537           ELSE
75538             ID=IHI(IW)
75539           ENDIF
75540           IS=INDX(ID)
75541           IF(IS.NE.0.AND.NSS.LT.100) THEN
75542             NSS=NSS+1
75543             ISS(NSS)=IS
75544           ELSEIF(NSS.GE.100) THEN
75545             CALL PYERRM(8,'(PYDUMP:) too many histograms requested')
75546           ELSEIF(NHI.GT.0) THEN
75547             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
75548           ENDIF
75549   180   CONTINUE
75550  
75551 C...Check that they have common number of x bins. Fix format.
75552         NX=NINT(BIN(ISS(1)+1))
75553         DO 190 IW=2,NSS
75554           IF(NINT(BIN(ISS(IW)+1)).NE.NX) THEN
75555             CALL PYERRM(8,'(PYDUMP:) different number of bins')
75556             RETURN
75557           ENDIF
75558   190   CONTINUE
75559         FORMAT='(1P,000E12.4)'
75560         WRITE(FORMAT(5:7),'(I3)') NSS+1
75561  
75562 C...Write histogram contents; first column x values.
75563         DO 200 IX=1,NX
75564           X=BIN(ISS(1)+2)+(IX-0.5D0)*BIN(ISS(1)+4)
75565           WRITE(LFN,FORMAT) X, (BIN(ISS(IW)+8+IX),IW=1,NSS)
75566   200   CONTINUE
75567  
75568       ENDIF
75569  
75570 C...Formats for output.
75571  5100 FORMAT(I5,5X,A60)
75572  5200 FORMAT(I5,1P,2D12.4)
75573  5300 FORMAT(I12,1P,3D12.4)
75574  5400 FORMAT(1P,5D12.4)
75575  
75576       RETURN
75577       END
75578  
75579 C*********************************************************************
75580  
75581 C...PYSTOP
75582 C...Allows users to handle STOP statemens
75583  
75584       SUBROUTINE PYSTOP(MCOD)
75585  
75586 C...Double precision and integer declarations.
75587       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75588       IMPLICIT INTEGER(I-N)
75589       INTEGER PYK,PYCHGE,PYCOMP
75590 C...Commonblocks.
75591       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75592       SAVE /PYDAT1/
75593
75594  
75595 C...Write message, then stop
75596       WRITE(MSTU(11),5000) MCOD
75597       STOP
75598
75599  
75600 C...Formats for output.
75601  5000 FORMAT(/5X,'PYSTOP called with code: ',I4)
75602       RETURN
75603       END
75604  
75605 C*********************************************************************
75606  
75607 C...PYKCUT
75608 C...Dummy routine, which the user can replace in order to make cuts on
75609 C...the kinematics on the parton level before the matrix elements are
75610 C...evaluated and the event is generated. The cross-section estimates
75611 C...will automatically take these cuts into account, so the given
75612 C...values are for the allowed phase space region only. MCUT=0 means
75613 C...that the event has passed the cuts, MCUT=1 that it has failed.
75614  
75615       SUBROUTINE PYKCUT(MCUT)
75616  
75617 C...Double precision and integer declarations.
75618       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75619       IMPLICIT INTEGER(I-N)
75620       INTEGER PYK,PYCHGE,PYCOMP
75621 C...Commonblocks.
75622       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75623       COMMON/PYINT1/MINT(400),VINT(400)
75624       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
75625       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
75626  
75627 C...Set default value (accepting event) for MCUT.
75628       MCUT=0
75629  
75630 C...Read out subprocess number.
75631       ISUB=MINT(1)
75632       ISTSB=ISET(ISUB)
75633  
75634 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
75635       TAU=VINT(21)
75636       YST=VINT(22)
75637       CTH=0D0
75638       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
75639       TAUP=0D0
75640       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
75641  
75642 C...Calculate x_1, x_2, x_F.
75643       IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN
75644         X1=SQRT(TAU)*EXP(YST)
75645         X2=SQRT(TAU)*EXP(-YST)
75646       ELSE
75647         X1=SQRT(TAUP)*EXP(YST)
75648         X2=SQRT(TAUP)*EXP(-YST)
75649       ENDIF
75650       XF=X1-X2
75651  
75652 C...Calculate shat, that, uhat, p_T^2.
75653       SHAT=TAU*VINT(2)
75654       SQM3=VINT(63)
75655       SQM4=VINT(64)
75656       RM3=SQM3/SHAT
75657       RM4=SQM4/SHAT
75658       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
75659       RPTS=4D0*VINT(71)**2/SHAT
75660       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
75661       RM34=2D0*RM3*RM4
75662       RSQM=1D0+RM34
75663       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
75664       THAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
75665       UHAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
75666       PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2))
75667  
75668 C...Decisions by user to be put here.
75669  
75670 C...Stop program if this routine is ever called.
75671 C...You should not copy these lines to your own routine.
75672       WRITE(MSTU(11),5000)
75673       CALL PYSTOP(6)
75674  
75675 C...Format for error printout.
75676  5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
75677      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
75678      &1X,'Execution stopped!')
75679  
75680       RETURN
75681       END
75682  
75683 C*********************************************************************
75684  
75685 C...PYEVWT
75686 C...Dummy routine, which the user can replace in order to multiply the
75687 C...standard PYTHIA differential cross-section by a process- and
75688 C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds
75689 C...to generation of weighted events, with weight 1/WTXS, while for
75690 C...MSTP(142)=2 it corresponds to a modification of the underlying
75691 C...physics.
75692  
75693       SUBROUTINE PYEVWT(WTXS)
75694  
75695 C...Double precision and integer declarations.
75696       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75697       IMPLICIT INTEGER(I-N)
75698       INTEGER PYK,PYCHGE,PYCOMP
75699 C...Commonblocks.
75700       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75701       COMMON/PYINT1/MINT(400),VINT(400)
75702       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
75703       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
75704  
75705 C...Set default weight for WTXS.
75706       WTXS=1D0
75707  
75708 C...Read out subprocess number.
75709       ISUB=MINT(1)
75710       ISTSB=ISET(ISUB)
75711  
75712 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
75713       TAU=VINT(21)
75714       YST=VINT(22)
75715       CTH=0D0
75716       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
75717       TAUP=0D0
75718       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
75719  
75720 C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2.
75721       X1=VINT(41)
75722       X2=VINT(42)
75723       XF=X1-X2
75724       SHAT=VINT(44)
75725       THAT=VINT(45)
75726       UHAT=VINT(46)
75727       PT2=VINT(48)
75728  
75729 C...Modifications by user to be put here.
75730  
75731 C...Stop program if this routine is ever called.
75732 C...You should not copy these lines to your own routine.
75733       WRITE(MSTU(11),5000)
75734       CALL PYSTOP(4)
75735  
75736 C...Format for error printout.
75737  5000 FORMAT(1X,'Error: you did not link your PYEVWT routine ',
75738      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
75739      &1X,'Execution stopped!')
75740  
75741       RETURN
75742       END
75743  
75744 C*********************************************************************
75745  
75746 C...UPINIT
75747 C...Dummy routine, to be replaced by a user implementing external
75748 C...processes. Is supposed to fill the HEPRUP commonblock with info
75749 C...on incoming beams and allowed processes.
75750
75751 C...New example: handles a standard Les Houches Events File.
75752
75753       SUBROUTINE UPINIT
75754  
75755 C...Double precision and integer declarations.
75756       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75757       IMPLICIT INTEGER(I-N)
75758  
75759 C...PYTHIA commonblock: only used to provide read unit MSTP(161).
75760       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75761       SAVE /PYPARS/
75762  
75763 C...User process initialization commonblock.
75764       INTEGER MAXPUP
75765       PARAMETER (MAXPUP=100)
75766       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
75767       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
75768       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
75769      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
75770      &LPRUP(MAXPUP)
75771       SAVE /HEPRUP/
75772
75773 C...Lines to read in assumed never longer than 200 characters. 
75774       PARAMETER (MAXLEN=200)
75775       CHARACTER*(MAXLEN) STRING
75776
75777 C...Format for reading lines.
75778       CHARACTER*6 STRFMT
75779       STRFMT='(A000)'
75780       WRITE(STRFMT(3:5),'(I3)') MAXLEN
75781
75782 C...Loop until finds line beginning with "<init>" or "<init ". 
75783   100 READ(MSTP(161),STRFMT,END=130,ERR=130) STRING
75784       IBEG=0
75785   110 IBEG=IBEG+1
75786 C...Allow indentation.
75787       IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-5) GOTO 110 
75788       IF(STRING(IBEG:IBEG+5).NE.'<init>'.AND.
75789      &STRING(IBEG:IBEG+5).NE.'<init ') GOTO 100
75790
75791 C...Read first line of initialization info.
75792       READ(MSTP(161),*,END=130,ERR=130) IDBMUP(1),IDBMUP(2),EBMUP(1),
75793      &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
75794
75795 C...Read NPRUP subsequent lines with information on each process.
75796       DO 120 IPR=1,NPRUP
75797         READ(MSTP(161),*,END=130,ERR=130) XSECUP(IPR),XERRUP(IPR),
75798      &  XMAXUP(IPR),LPRUP(IPR)
75799   120 CONTINUE
75800       RETURN
75801
75802 C...Error exit: give up if initalization does not work.
75803   130 WRITE(*,*) ' Failed to read LHEF initialization information.'
75804       WRITE(*,*) ' Event generation will be stopped.'
75805       CALL PYSTOP(12)
75806  
75807       RETURN
75808       END
75809
75810 C...Old example: handles a simple Pythia 6.4 initialization file.
75811  
75812 c      SUBROUTINE UPINIT
75813  
75814 C...Double precision and integer declarations.
75815 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75816 c      IMPLICIT INTEGER(I-N)
75817  
75818 C...Commonblocks.
75819 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75820 c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75821 c      SAVE /PYDAT1/,/PYPARS/
75822  
75823 C...User process initialization commonblock.
75824 c      INTEGER MAXPUP
75825 c      PARAMETER (MAXPUP=100)
75826 c      INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
75827 c      DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
75828 c      COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
75829 c     &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
75830 c     &LPRUP(MAXPUP)
75831 c      SAVE /HEPRUP/
75832  
75833 C...Read info from file.
75834 c      IF(MSTP(161).GT.0) THEN
75835 c        READ(MSTP(161),*,END=110,ERR=110) IDBMUP(1),IDBMUP(2),EBMUP(1),
75836 c     &  EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
75837 c        DO 100 IPR=1,NPRUP
75838 c          READ(MSTP(161),*,END=110,ERR=110) XSECUP(IPR),XERRUP(IPR),
75839 c     &    XMAXUP(IPR),LPRUP(IPR)
75840 c  100   CONTINUE
75841 c        RETURN
75842 C...Error or prematurely reached end of file.
75843 c  110   WRITE(MSTU(11),5000)
75844 c        STOP
75845  
75846 C...Else not implemented.
75847 c      ELSE
75848 c        WRITE(MSTU(11),5100)
75849 c        STOP
75850 c      ENDIF
75851  
75852 C...Format for error printout.
75853 c 5000 FORMAT(1X,'Error: UPINIT routine failed to read information'/
75854 c     &1X,'Execution stopped!')
75855 c 5100 FORMAT(1X,'Error: You have not implemented UPINIT routine'/
75856 c     &1X,'Dummy routine in PYTHIA file called instead.'/
75857 c     &1X,'Execution stopped!')
75858  
75859 c      RETURN
75860 c      END
75861  
75862 C*********************************************************************
75863  
75864 C...UPEVNT
75865 C...Dummy routine, to be replaced by a user implementing external
75866 C...processes. Depending on cross section model chosen, it either has
75867 C...to generate a process of the type IDPRUP requested, or pick a type
75868 C...itself and generate this event. The event is to be stored in the
75869 C...HEPEUP commonblock, including (often) an event weight.
75870
75871 C...New example: handles a standard Les Houches Events File.
75872
75873       SUBROUTINE UPEVNT
75874  
75875 C...Double precision and integer declarations.
75876       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75877       IMPLICIT INTEGER(I-N)
75878  
75879 C...PYTHIA commonblock: only used to provide read unit MSTP(162).
75880       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75881       SAVE /PYPARS/
75882  
75883 C...User process event common block.
75884       INTEGER MAXNUP
75885       PARAMETER (MAXNUP=500)
75886       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
75887       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
75888       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
75889      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
75890      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
75891       SAVE /HEPEUP/
75892
75893 C...Lines to read in assumed never longer than 200 characters. 
75894       PARAMETER (MAXLEN=200)
75895       CHARACTER*(MAXLEN) STRING
75896
75897 C...Format for reading lines.
75898       CHARACTER*6 STRFMT
75899       STRFMT='(A000)'
75900       WRITE(STRFMT(3:5),'(I3)') MAXLEN
75901
75902 C...Loop until finds line beginning with "<event>" or "<event ". 
75903   100 READ(MSTP(162),STRFMT,END=130,ERR=130) STRING
75904       IBEG=0
75905   110 IBEG=IBEG+1
75906 C...Allow indentation.
75907       IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-6) GOTO 110 
75908       IF(STRING(IBEG:IBEG+6).NE.'<event>'.AND.
75909      &STRING(IBEG:IBEG+6).NE.'<event ') GOTO 100
75910
75911 C...Read first line of event info.
75912       READ(MSTP(162),*,END=130,ERR=130) NUP,IDPRUP,XWGTUP,SCALUP,
75913      &AQEDUP,AQCDUP
75914
75915 C...Read NUP subsequent lines with information on each particle.
75916       DO 120 I=1,NUP
75917         READ(MSTP(162),*,END=130,ERR=130) IDUP(I),ISTUP(I),
75918      &  MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),
75919      &  (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I)
75920   120 CONTINUE
75921       RETURN
75922
75923 C...Error exit, typically when no more events.
75924   130 WRITE(*,*) ' Failed to read LHEF event information.'
75925       WRITE(*,*) ' Will assume end of file has been reached.'
75926       NUP=0
75927       MSTI(51)=1
75928  
75929       RETURN
75930       END
75931
75932 C...Old example: handles a simple Pythia 6.4 event file.
75933  
75934 c      SUBROUTINE UPEVNT
75935  
75936 C...Double precision and integer declarations.
75937 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75938 c      IMPLICIT INTEGER(I-N)
75939  
75940 C...Commonblocks.
75941 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75942 c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75943 c      SAVE /PYDAT1/,/PYPARS/
75944  
75945 C...User process event common block.
75946 c      INTEGER MAXNUP
75947 c      PARAMETER (MAXNUP=500)
75948 c      INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
75949 c      DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
75950 c      COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
75951 c     &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
75952 c     &VTIMUP(MAXNUP),SPINUP(MAXNUP)
75953 c      SAVE /HEPEUP/
75954  
75955 C...Read info from file.
75956 c      IF(MSTP(162).GT.0) THEN
75957 c        READ(MSTP(162),*,END=110,ERR=110) NUP,IDPRUP,XWGTUP,SCALUP,
75958 c     &  AQEDUP,AQCDUP
75959 c        DO 100 I=1,NUP
75960 c          READ(MSTP(162),*,END=110,ERR=110) IDUP(I),ISTUP(I),
75961 c     &    MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),
75962 c     &    (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I)
75963 c  100   CONTINUE
75964 c        RETURN
75965 C...Special when reached end of file or other error.
75966 c  110   NUP=0
75967  
75968 C...Else not implemented.
75969 c      ELSE
75970 c        WRITE(MSTU(11),5000)
75971 c        STOP
75972 c      ENDIF
75973  
75974 C...Format for error printout.
75975 c 5000 FORMAT(1X,'Error: You have not implemented UPEVNT routine'/
75976 c     &1X,'Dummy routine in PYTHIA file called instead.'/
75977 c     &1X,'Execution stopped!')
75978  
75979 c      RETURN
75980 c      END
75981  
75982 C*********************************************************************
75983  
75984 C...UPVETO
75985 C...Dummy routine, to be replaced by user, to veto event generation
75986 C...on the parton level, after parton showers but before multiple
75987 C...interactions, beam remnants and hadronization is added.
75988 C...If resonances like W, Z, top, Higgs and SUSY particles are handed
75989 C...undecayed from UPEVNT, or are generated by PYTHIA, they will also
75990 C...be undecayed at this stage; if decayed their decay products will
75991 C...have been allowed to shower.
75992  
75993 C...All partons at the end of the shower phase are stored in the
75994 C...HEPEVT commonblock. The interesting information is
75995 C...NHEP = the number of such partons, in entries 1 <= i <= NHEP,
75996 C...IDHEP(I) = the particle ID code according to PDG conventions,
75997 C...PHEP(J,I) = the (p_x, p_y, p_z, E, m) of the particle.
75998 C...All ISTHEP entries are 1, while the rest is zeroed.
75999  
76000 C...The user decision is to be conveyed by the IVETO value.
76001 C...IVETO = 0 : retain current event and generate in full;
76002 C...      = 1 : abort generation of current event and move to next.
76003  
76004       SUBROUTINE UPVETO(IVETO)
76005  
76006 C...HEPEVT commonblock.
76007       PARAMETER (NMXHEP=4000)
76008       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
76009      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
76010       DOUBLE PRECISION PHEP,VHEP
76011       SAVE /HEPEVT/
76012  
76013 C...Next few lines allow you to see what info PYVETO extracted from
76014 C...the full event record for the first two events.
76015 C...Delete if you don't want it.
76016       DATA NLIST/0/
76017       SAVE NLIST
76018       IF(NLIST.LE.2) THEN
76019         WRITE(*,*) ' Full event record at time of UPVETO call:'
76020         CALL PYLIST(1)
76021         WRITE(*,*) ' Part of event record made available to UPVETO:'
76022         CALL PYLIST(5)
76023         NLIST=NLIST+1
76024       ENDIF
76025  
76026 C...Make decision here.
76027       IVETO = 0
76028  
76029       RETURN
76030       END
76031  
76032 C*********************************************************************
76033  
76034 C*********************************************************************
76035  
76036 C...SUGRA
76037 C...Dummy routine, to be removed when ISAJET (ISASUSY) is to be linked.
76038  
76039       SUBROUTINE SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODL)
76040        IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76041       IMPLICIT INTEGER(I-N)
76042       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
76043       INTEGER IMODL
76044 C...Commonblocks.
76045       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76046       SAVE /PYDAT1/
76047  
76048 C...Stop program if this routine is ever called.
76049       WRITE(MSTU(11),5000)
76050       CALL PYSTOP(110)
76051  
76052 C...Format for error printout.
76053  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
76054      &1X,'Dummy routine SUGRA in PYTHIA file called instead.'/
76055      &1X,'Execution stopped!')
76056  
76057       RETURN
76058       END
76059  
76060 C*********************************************************************
76061  
76062 C...VISAJE
76063 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
76064  
76065       FUNCTION VISAJE()
76066       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76067       IMPLICIT INTEGER(I-N)
76068       CHARACTER*40 VISAJE
76069  
76070 C...Commonblocks.
76071       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76072       SAVE /PYDAT1/
76073  
76074 C...Assign default value.
76075       VISAJE='Undefined'
76076  
76077 C...Stop program if this routine is ever called.
76078       WRITE(MSTU(11),5000)
76079       CALL PYSTOP(110)
76080  
76081 C...Format for error printout.
76082  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
76083      &1X,'Dummy function VISAJE in PYTHIA file called instead.'/
76084      &1X,'Execution stopped!')
76085  
76086       RETURN
76087       END
76088  
76089 C*********************************************************************
76090  
76091 C...SSMSSM
76092 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
76093  
76094       SUBROUTINE SSMSSM(RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,
76095      &RDUM8,RDUM9,RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,
76096      &RDUM17,RDUM18,RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25,
76097      &IDUM1,IDUM2)
76098       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76099       IMPLICIT INTEGER(I-N)
76100       REAL RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,RDUM8,RDUM9,
76101      &RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,RDUM17,RDUM18,
76102      &RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25
76103 C...Commonblocks.
76104       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76105       SAVE /PYDAT1/
76106  
76107 C...Stop program if this routine is ever called.
76108       WRITE(MSTU(11),5000)
76109       CALL PYSTOP(110)
76110  
76111 C...Format for error printout.
76112  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
76113      &1X,'Dummy routine SSMSSM in PYTHIA file called instead.'/
76114      &1X,'Execution stopped!')
76115       RETURN
76116       END
76117  
76118 C*********************************************************************
76119  
76120 C...FHSETFLAGS
76121 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
76122  
76123       SUBROUTINE FHSETFLAGS(IERR,IMSP,IFR,ITBR,IHMX,IP2A,ILP,ITR,IBR)
76124       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76125       IMPLICIT INTEGER(I-N)
76126 Cmssmpart = 4     # full MSSM [recommended]
76127 Cfieldren = 0     # MSbar field ren. [strongly recommended]
76128 Ctanbren =  0     # MSbar TB-ren. [strongly recommended]
76129 Chiggsmix = 2     # 2x2 (h0-HH) mixing in the neutral Higgs sector
76130 Cp2approx = 0     # no approximation [recommended]
76131 Clooplevel= 2     # include 2-loop corrections
76132 Ctl_running_mt= 1 # running top mass in 2-loop corrections [recommended]
76133 Ctl_bot_resum = 1 # resummed MB in 2-loop corrections [recommended]
76134  
76135 C...Commonblocks.
76136       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76137       SAVE /PYDAT1/
76138  
76139 C...Stop program if this routine is ever called.
76140       WRITE(MSTU(11),5000)
76141       CALL PYSTOP(103)
76142  
76143 C...Format for error printout.
76144  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
76145      &1X,'Dummy routine FHSETFLAGS in PYTHIA file called instead.'/
76146      &1X,'Execution stopped!')
76147       RETURN
76148       END
76149  
76150 C*********************************************************************
76151  
76152 C...FHSETPARA
76153 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
76154  
76155       SUBROUTINE FHSETPARA(IER,SCF,DMT,DMB,DMW,DMZ,DTANB,DMA,DMH,DM3L,
76156      &     DM3E,DM3Q,DM3U,DM3D,DM2L,DM2E,DM2Q,DM2U, DM2D,DM1L,DM1E,DM1Q,
76157      &     DM1U,DM1D,DMU,AE33,AU33,AD33,AE22,AU22,AD22,AE11,AU11,AD11,
76158      &     DM1,DM2,DM3,RLT,RLB,QTAU,QT,QB)
76159       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76160       IMPLICIT INTEGER(I-N)
76161  
76162       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
76163       DOUBLE COMPLEX DMU,
76164      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
76165      &     DM1, DM2, DM3
76166
76167 C...Commonblocks.
76168       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76169       SAVE /PYDAT1/
76170  
76171 C...Stop program if this routine is ever called.
76172       WRITE(MSTU(11),5000)
76173       CALL PYSTOP(103)
76174  
76175 C...Format for error printout.
76176  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
76177      &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/
76178      &1X,'Execution stopped!')
76179       RETURN
76180       END
76181  
76182 C*********************************************************************
76183  
76184 C...FHHIGGSCORR
76185 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
76186  
76187       SUBROUTINE FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS)
76188       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76189       IMPLICIT INTEGER(I-N)
76190  
76191 C...FeynHiggs variables
76192       DOUBLE PRECISION RMHIGG(4)
76193       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
76194       DOUBLE COMPLEX DMU,
76195      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
76196      &     DM1, DM2, DM3
76197
76198 C...Commonblocks.
76199       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76200       SAVE /PYDAT1/
76201  
76202 C...Stop program if this routine is ever called.
76203       WRITE(MSTU(11),5000)
76204       CALL PYSTOP(103)
76205  
76206 C...Format for error printout.
76207  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
76208      &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/
76209      &1X,'Execution stopped!')
76210       RETURN
76211       END
76212   
76213 C*********************************************************************
76214  
76215 C...PYTAUD
76216 C...Dummy routine, to be replaced by user, to handle the decay of a
76217 C...polarized tau lepton.
76218 C...Input:
76219 C...ITAU is the position where the decaying tau is stored in /PYJETS/.
76220 C...IORIG is the position where the mother of the tau is stored;
76221 C...     is 0 when the mother is not stored.
76222 C...KFORIG is the flavour of the mother of the tau;
76223 C...     is 0 when the mother is not known.
76224 C...Note that IORIG=0 does not necessarily imply KFORIG=0;
76225 C...     e.g. in B hadron semileptonic decays the W  propagator
76226 C...     is not explicitly stored but the W code is still unambiguous.
76227 C...Output:
76228 C...NDECAY is the number of decay products in the current tau decay.
76229 C...These decay products should be added to the /PYJETS/ common block,
76230 C...in positions N+1 through N+NDECAY. For each product I you must
76231 C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2),
76232 C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically.
76233  
76234       SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
76235  
76236 C...Double precision and integer declarations.
76237       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76238       IMPLICIT INTEGER(I-N)
76239       INTEGER PYK,PYCHGE,PYCOMP
76240 C...Commonblocks.
76241       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
76242       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76243       SAVE /PYJETS/,/PYDAT1/
76244  
76245 C...Stop program if this routine is ever called.
76246 C...You should not copy these lines to your own routine.
76247       NDECAY=ITAU+IORIG+KFORIG
76248       WRITE(MSTU(11),5000)
76249       CALL PYSTOP(10)
76250  
76251 C...Format for error printout.
76252  5000 FORMAT(1X,'Error: you did not link your PYTAUD routine ',
76253      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
76254      &1X,'Execution stopped!')
76255  
76256       RETURN
76257       END
76258  
76259 C*********************************************************************
76260  
76261 C...PYTIME
76262 C...Finds current date and time.
76263 C...Since this task is not standardized in Fortran 77, the routine
76264 C...is dummy, to be replaced by the user. Examples are given for
76265 C...the Fortran 90 routine and DEC Fortran 77, and what to do if
76266 C...you do not have access to suitable routines.
76267  
76268       SUBROUTINE PYTIME(IDATI)
76269  
76270 C...Double precision and integer declarations.
76271       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76272       IMPLICIT INTEGER(I-N)
76273       INTEGER PYK,PYCHGE,PYCOMP
76274       CHARACTER*8 ATIME
76275 C...Local array.
76276       INTEGER IDATI(6),IDTEMP(3),IVAL(8)
76277  
76278 C...Example 0: if you do not have suitable routines.
76279       DO 100 J=1,6
76280       IDATI(J)=0
76281   100 CONTINUE
76282  
76283 C...Example 1: Fortran 90 routine.
76284 C      CALL DATE_AND_TIME(VALUES=IVAL)
76285 C      IDATI(1)=IVAL(1)
76286 C      IDATI(2)=IVAL(2)
76287 C      IDATI(3)=IVAL(3)
76288 C      IDATI(4)=IVAL(5)
76289 C      IDATI(5)=IVAL(6)
76290 C      IDATI(6)=IVAL(7)
76291  
76292 C...Example 2: DEC Fortran 77. AIX.
76293 C      CALL IDATE(IMON,IDAY,IYEAR)
76294 C      IDATI(1)=IYEAR
76295 C      IDATI(2)=IMON
76296 C      IDATI(3)=IDAY
76297 C      CALL ITIME(IHOUR,IMIN,ISEC)
76298 C      IDATI(4)=IHOUR
76299 C      IDATI(5)=IMIN
76300 C      IDATI(6)=ISEC
76301  
76302 C...Example 3: DEC Fortran, IRIX, IRIX64.
76303 C      CALL IDATE(IMON,IDAY,IYEAR)
76304 C      IDATI(1)=IYEAR
76305 C      IDATI(2)=IMON
76306 C      IDATI(3)=IDAY
76307 C      CALL TIME(ATIME)
76308 C      IHOUR=0
76309 C      IMIN=0
76310 C      ISEC=0
76311 C      READ(ATIME(1:2),'(I2)') IHOUR
76312 C      READ(ATIME(4:5),'(I2)') IMIN
76313 C      READ(ATIME(7:8),'(I2)') ISEC
76314 C      IDATI(4)=IHOUR
76315 C      IDATI(5)=IMIN
76316 C      IDATI(6)=ISEC
76317  
76318 C...Example 4: GNU LINUX libU77, SunOS.
76319 C      CALL IDATE(IDTEMP)
76320 C      IDATI(1)=IDTEMP(3)
76321 C      IDATI(2)=IDTEMP(2)
76322 C      IDATI(3)=IDTEMP(1)
76323 C      CALL ITIME(IDTEMP)
76324 C      IDATI(4)=IDTEMP(1)
76325 C      IDATI(5)=IDTEMP(2)
76326 C      IDATI(6)=IDTEMP(3)
76327  
76328 C...Common code to ensure right century.
76329       IDATI(1)=2000+MOD(IDATI(1),100)
76330  
76331       RETURN
76332       END