]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Removing PYTHIA
authoralibrary <alibrary@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 16 Apr 2003 09:05:23 +0000 (09:05 +0000)
committeralibrary <alibrary@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 16 Apr 2003 09:05:23 +0000 (09:05 +0000)
137 files changed:
PYTHIA/doc/jetset74.lis [deleted file]
PYTHIA/dummypythia.F [deleted file]
PYTHIA/jetset/klu.F [deleted file]
PYTHIA/jetset/lu1ent.F [deleted file]
PYTHIA/jetset/lu2ent.F [deleted file]
PYTHIA/jetset/lu3ent.F [deleted file]
PYTHIA/jetset/lu4ent.F [deleted file]
PYTHIA/jetset/luboei.F [deleted file]
PYTHIA/jetset/lucell.F [deleted file]
PYTHIA/jetset/luchge.F [deleted file]
PYTHIA/jetset/luclus.F [deleted file]
PYTHIA/jetset/lucomp.F [deleted file]
PYTHIA/jetset/ludata.F [deleted file]
PYTHIA/jetset/ludecy.F [deleted file]
PYTHIA/jetset/luedit.F [deleted file]
PYTHIA/jetset/lueevt.F [deleted file]
PYTHIA/jetset/luerrm.F [deleted file]
PYTHIA/jetset/luexec.F [deleted file]
PYTHIA/jetset/lufowo.F [deleted file]
PYTHIA/jetset/lugive.F [deleted file]
PYTHIA/jetset/luhepc.F [deleted file]
PYTHIA/jetset/luindf.F [deleted file]
PYTHIA/jetset/lujmas.F [deleted file]
PYTHIA/jetset/lujoin.F [deleted file]
PYTHIA/jetset/lukfdi.F [deleted file]
PYTHIA/jetset/lulist.F [deleted file]
PYTHIA/jetset/lulogo.F [deleted file]
PYTHIA/jetset/luname.F [deleted file]
PYTHIA/jetset/luonia.F [deleted file]
PYTHIA/jetset/luprep.F [deleted file]
PYTHIA/jetset/luptdi.F [deleted file]
PYTHIA/jetset/luradk.F [deleted file]
PYTHIA/jetset/lurobo.F [deleted file]
PYTHIA/jetset/lushow.F [deleted file]
PYTHIA/jetset/lusphe.F [deleted file]
PYTHIA/jetset/lustrf.F [deleted file]
PYTHIA/jetset/lutabu.F [deleted file]
PYTHIA/jetset/lutaud.F [deleted file]
PYTHIA/jetset/lutest.F [deleted file]
PYTHIA/jetset/luthru.F [deleted file]
PYTHIA/jetset/luupda.F [deleted file]
PYTHIA/jetset/lux3jt.F [deleted file]
PYTHIA/jetset/lux4jt.F [deleted file]
PYTHIA/jetset/luxdif.F [deleted file]
PYTHIA/jetset/luxjet.F [deleted file]
PYTHIA/jetset/luxkfl.F [deleted file]
PYTHIA/jetset/luxtot.F [deleted file]
PYTHIA/jetset/luzdis.F [deleted file]
PYTHIA/jetset/plu.F [deleted file]
PYTHIA/jetset/rlu.F [deleted file]
PYTHIA/jetset/rluget.F [deleted file]
PYTHIA/jetset/rluset.F [deleted file]
PYTHIA/jetset/ulalem.F [deleted file]
PYTHIA/jetset/ulalps.F [deleted file]
PYTHIA/jetset/ulangl.F [deleted file]
PYTHIA/jetset/ulmass.F [deleted file]
PYTHIA/jetset74/hepevt.inc [deleted file]
PYTHIA/jetset74/ludat1.inc [deleted file]
PYTHIA/jetset74/ludat2.inc [deleted file]
PYTHIA/jetset74/ludat3.inc [deleted file]
PYTHIA/jetset74/ludat4.inc [deleted file]
PYTHIA/jetset74/ludatr.inc [deleted file]
PYTHIA/jetset74/lujets.inc [deleted file]
PYTHIA/jetset74/nmxhep.inc [deleted file]
PYTHIA/jetset74/pilot.h [deleted file]
PYTHIA/jetset74/pyint1.inc [deleted file]
PYTHIA/jetset74/pyint2.inc [deleted file]
PYTHIA/jetset74/pyint3.inc [deleted file]
PYTHIA/jetset74/pyint4.inc [deleted file]
PYTHIA/jetset74/pyint5.inc [deleted file]
PYTHIA/jetset74/pyint6.inc [deleted file]
PYTHIA/jetset74/pypars.inc [deleted file]
PYTHIA/jetset74/pysubs.inc [deleted file]
PYTHIA/jetset74/rkbbvc.inc [deleted file]
PYTHIA/jetset74/rkzfco.inc [deleted file]
PYTHIA/jetset74/rkzsco.inc [deleted file]
PYTHIA/libpythia.pkg [deleted file]
PYTHIA/pythia/pdfset.F [deleted file]
PYTHIA/pythia/pyctq2.F [deleted file]
PYTHIA/pythia/pydata.F [deleted file]
PYTHIA/pythia/pydiff.F [deleted file]
PYTHIA/pythia/pydocu.F [deleted file]
PYTHIA/pythia/pyevnt.F [deleted file]
PYTHIA/pythia/pyevwt.F [deleted file]
PYTHIA/pythia/pyfram.F [deleted file]
PYTHIA/pythia/pygamm.F [deleted file]
PYTHIA/pythia/pygano.F [deleted file]
PYTHIA/pythia/pygbeh.F [deleted file]
PYTHIA/pythia/pygdir.F [deleted file]
PYTHIA/pythia/pyggam.F [deleted file]
PYTHIA/pythia/pygvmd.F [deleted file]
PYTHIA/pythia/pyhfth.F [deleted file]
PYTHIA/pythia/pyi3au.F [deleted file]
PYTHIA/pythia/pyinbm.F [deleted file]
PYTHIA/pythia/pyinit.F [deleted file]
PYTHIA/pythia/pyinki.F [deleted file]
PYTHIA/pythia/pyinpr.F [deleted file]
PYTHIA/pythia/pyinre.F [deleted file]
PYTHIA/pythia/pykcut.F [deleted file]
PYTHIA/pythia/pyklim.F [deleted file]
PYTHIA/pythia/pykmap.F [deleted file]
PYTHIA/pythia/pymaxi.F [deleted file]
PYTHIA/pythia/pymult.F [deleted file]
PYTHIA/pythia/pyofsh.F [deleted file]
PYTHIA/pythia/pypile.F [deleted file]
PYTHIA/pythia/pyqqbh.F [deleted file]
PYTHIA/pythia/pyrand.F [deleted file]
PYTHIA/pythia/pyremn.F [deleted file]
PYTHIA/pythia/pyresd.F [deleted file]
PYTHIA/pythia/pysave.F [deleted file]
PYTHIA/pythia/pyscat.F [deleted file]
PYTHIA/pythia/pysigh.F [deleted file]
PYTHIA/pythia/pyspen.F [deleted file]
PYTHIA/pythia/pyspli.F [deleted file]
PYTHIA/pythia/pysspa.F [deleted file]
PYTHIA/pythia/pystat.F [deleted file]
PYTHIA/pythia/pystel.F [deleted file]
PYTHIA/pythia/pystfl.F [deleted file]
PYTHIA/pythia/pystfu.F [deleted file]
PYTHIA/pythia/pystga.F [deleted file]
PYTHIA/pythia/pystpi.F [deleted file]
PYTHIA/pythia/pystpr.F [deleted file]
PYTHIA/pythia/pytest.F [deleted file]
PYTHIA/pythia/pyupev.F [deleted file]
PYTHIA/pythia/pyupin.F [deleted file]
PYTHIA/pythia/pywaux.F [deleted file]
PYTHIA/pythia/pywidt.F [deleted file]
PYTHIA/pythia/pyxtot.F [deleted file]
PYTHIA/pythia/rkbbv.F [deleted file]
PYTHIA/pythia/rkdot.F [deleted file]
PYTHIA/pythia/rkhlpk.F [deleted file]
PYTHIA/pythia/rkrand.F [deleted file]
PYTHIA/pythia/rkzf.F [deleted file]
PYTHIA/pythia/rkzpr.F [deleted file]
PYTHIA/pythia/rkzsf.F [deleted file]
PYTHIA/pythia/structm.F [deleted file]
PYTHIA/test/test.F [deleted file]

diff --git a/PYTHIA/doc/jetset74.lis b/PYTHIA/doc/jetset74.lis
deleted file mode 100644 (file)
index e92802e..0000000
+++ /dev/null
@@ -1,1095 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:28  mclareni
-* jetset74
-*
-*
-* This directory was created from jetset74.car patch update
-
-
-
-                                                 23 August 1995
-                 Updates to
-          PYTHIA 5.7 and JETSET 7.4
-             Physics and Manual
-             Torbjorn Sjostrand
-     Department of theoretical physics 2
-             University of Lund
-               Solvegatan 14A
-               S-223 62 Lund
-                   Sweden
------------------------------------------------------------------
-1) Introduction.
-Since the PYTHIA/JETSET programs are being updated frequently,
-it is also important to keep the documentation up to date.
-The big manual that appeared as CERN-TH.7112/93 described the
-status as of 15 December 1993. The LaTeX file with this manual 
-will be updated, though less frequently than the programs. 
-Further, it is not very economical to have to get a new copy 
-of a long manual just to see if any interesting new features 
-have been added recently. Therefore I have here collected the 
-main changes that have taken place since the beginning of 1994. 
-The changes are indexed by sub-subversion number and date. This 
-file will be updated as regularly as the programs themselves. 
-It is not intended to be as complete as the ordinary manual, 
-but should be sufficient for the intended purpose.
------------------------------------------------------------------
-2) Changes in JETSET 7.4
------------
-00, 13 December 1993: baseline version.
------------
-01, 11 February 1994:
-LUZDIS has been changed to protect against an overflow in an exponent
-(harmless physicswise, but enough to crash the program on some 
-machines).
------------
-02, 7 April 1994:
-A possibility has been introduced into LUSHOW to suppress either hard
-or soft radiation, in the connection of radiation off rapidly decaying
-objects. The algorithm used is not exact, but still gives some 
-impression of potential effects. The switch ought to have appeared at
-the end of the current list of shower switches, but because of lack of 
-space it appears immediately before.
-MSTJ(40) : (D=0) possibility to suppress the branching probability for 
-a branching q -> q + g (or q -> q + gamma) of a quark produced in the
-decay of an unstable particle with width Gamma, where this width has to
-be specified by the user in PARJ(89). Can be changed for each new
-LUSHOW call.  
-= 0 : no suppression, i.e. the standard parton-shower machinery.
-= 1 : suppress radiation by a factor chi(omega) = 
-    Gamma**2 / (Gamma**2 + omega**2), where omega is the energy of the
-    gluon (or photon) in the rest frame of the radiating dipole.
-    Essentially this means that hard radiation with omega > Gamma
-    is removed. 
-= 2 : suppress radiation by a factor 1 - chi(omega) = 
-    omega**2 / (Gamma**2 + omega**2), where omega is the energy of the
-    gluon (or photon) in the rest frame of the radiating dipole.
-    Essentially this means that soft radiation with omega < Gamma
-    is removed. 
-PARJ(89) : (D=0. GeV) the width of the unstable particle studied for the
-    MSTJ(40) > 0 options; to be set by the user (separately for each
-    LUSHOW call, if need be). 
------
-A generic interface has been included to an external tau decay library.
-This should allow the handling of tau polarization, which is not done
-by JETSET. To use this facility you have to set the switch MSTJ(28),
-include your own interface routine LUTAUD and see to it that the dummy
-routine LUTAUD in JETSET is not linked. The dummy routine is there 
-only to avoid unresolved external references when no user-supplied 
-interface is linked.
-MSTJ(28) : (D=0) call to an external tau decay library.
-= 0 : not done, i.e. the internal LUDECY treatment is used.
-= 1 : done whenever the tau mother particle species can be identified,
-    else the internal LUDECY treatment is used. Normally the mother 
-    particle should always be identified, but it is possible for 
-    a user to remove event history information or to add extra taus 
-    directly to the event record, and then the mother is not known.
-= 2 : always done. 
-CALL LUTAUD(ITAU,IORIG,KFORIG,NDECAY)
-Purpose: to act as an interface between the generic decay routine
-    LUDECY and a user-supplied tau decay library. The latter library 
-    would normally know how to handle polarized taus, given the tau
-    polarization, so one task of the interface routine is to construct
-    the tau polarization/helicity from the information available.
-    Input to the routine is provided in the first three arguments, 
-    while the last argument and some event record information have 
-    to be set before return.
-ITAU : line number in the event record where the tau is stored. 
-    The four-momentum of this tau has first been boosted back to the
-    rest frame of the decaying mother and thereafter rotated to move 
-    out along the +z axis. This choice of frame should help the 
-    calculation of the helicity configuration. After the LUTAUD call
-    the tau (and its decay products) will be rotated and boosted back.
-    However, seemingly, the event record does not conserve momentum
-    at this intermediate stage.  
-IORIG : line number where the mother particle to the tau is stored.
-    Is 0 if the mother is not stored. This does not have to mean the
-    mother is unknown, e.g. in semileptonic B decay the mother is a
-    W+-, and its momentum can be obtained by adding the tau and
-    nu_tau momentum, but there is no line in the event record. 
-    When several copies of the mother is stored (e.g. one in the 
-    documentation section of the event record and one in the main
-    section), IORIG points to the last. If a branchings like 
-    tau -> tau + gamma occurs, the 'grandmother' is given, i.e. the
-    mother of the direct tau before branching.
-KFORIG : flavour code for the mother particle. Is 0 if the mother
-    is unknown. The mother would typically be a resonance such as 
-    Z0 (23), W+- (+-24), H0 (25), or H+- (+-37).
-    Often the helicity choice would be clear just by the knowledge
-    of this mother species, e.g. W+- vs. H+-. However, sometimes
-    further complications may exist. For instance, the KF code 23
-    represents a mixture of gamma* and Z0; a knowledge of the mother
-    mass (in P(IORIG,5)) would here be required to make the choice
-    of helicities. Further, a W and Z may either be (predominantly)
-    transverse or longitudinal, depending on the production process      
-    under study.
-NDECAY : the number of decay products of the tau; to be given by the
-    user. You must also store the KF flavour codes of those decay
-    products in the positions K(I,2), N+1 <= I <= N+NDECAY, of the 
-    event record. The corresponding five-momentum (momentum, energy
-    and mass) should be stored in the associated P(I,J) positions,
-    1 <= J <= 5. The four-momenta are expected to add up to the
-    four-momentum of the tau in position ITAU. You should not change
-    the N value or any of the other K or V values (neither for the 
-    tau nor for its decay products) since this is automatically done 
-    in LUDECY.  
------
-In a few places, a dot has been moved from the end of one line to the
-beginning of the next continuation line, or the other way around, 
-to keep together tokens such as .EQ. or .AND., since some debuggers
-may otherwise complain. 
-A source of (harmless) division by zero in LUSHOW has been removed.
------------
-03, 15 July 1994:
-The LUBOEI routine has been changed to avoid an unintentional gap
-in the limits of the very first bin. 
-Further, leptons and photons which are unrelated to the system 
-feeling the Bose-Einstein effects do not have their energies and
-momenta changed in the global rescaling step. (Example: W+W- events,
-where one W decays leptonically; before these lepton momenta could be 
-slightly changed, but now not.)
------
-The option LUEDIT(16) (used e.g. from PYEVNT) has been improved with
-a more extensive search for missing daughter pointers.
------
-The KLU(I,16) procedure for finding rank has been rewritten to work
-in the current JETSET version, which it did not before. However, note
-that it will only work for MSTU(16)=2. As a general comment, the
-options 14 - 17 of KLU were written at a time when possible event 
-histories were less complex, and can not be guaranteed always to work 
-today.
------------
-04, 25 August 1994:
-LUSHOW has been corrected, so that if t,  l or h quarks (or d* or u* 
-quarks masked as l or h) are given with masses that vary from event
-to event (a Breit-Wigner shape, e.g.), the current mass rather than the
-nominal mass is used to define the cut-off scales of parton shower
-evolution.
------
-LULOGO has been modified to take into account that a new PYTHIA/JETSET
-description has been published in
-T. Sjostrand, Computer Phys. Commun. 82 (1994) 74
-and is from now on the standard reference to these two programs.   
------------
-05, 27 January 1995:
-LUCELL has been corrected, in that in the option with smearing of
-energy rather than transverse energy, the conversion factor between 
-the two was applied in the wrong direction.
------
-LUSHOW has been corrected in one place where the PMTH array was 
-addressed with the wrong order of the indices. This affected quark 
-mass corrections in the matching to the three-jet matrix elements.
------
-An additional check has been included in LUBOEI that there are at
-least two particles involved in the Bose-Einstein effects. (No
-problem except in some bizarre situations.) 
------------
-06, 20 February 1995:
-A new option has been added for the behaviour of the running
-alpha_em(Q2) in ULALEM. This is not added as a true physics scenario, 
-but only to produce results with a given, fixed value for the hard 
-events, while still keeping the conventional value in the Q2=0 limit.   
-MSTU(101) = 2 : if Q2 is less than PARU(104) then alpha_em is
-    assigned the value PARU(101) (=1/137), while for Q2 above
-    PARU(104) the fixed value PARU(103) (=1/128.8) is used.
-PARU(103) : (D=0.007764=1/128.8) alpha_em used for hard processes
-    in the option MSTU(101)=2.
-PARU(104) : (D=1 GeV^2) dividing line for 'low' and 'high'
-    Q2 values in the MSTU(101)=2 option of ULALEM.
-Additionally, the G_F constant has been added to the parameter list.
-PARU(105) : (D=1.16639E-5 GeV^-2) G_F, the Fermi constant of weak
-    interactions.
------
-The LULOGO routine has been updated to reflect my change of
-affiliation.
------------
-07, 21 June 1995:
-Header and LULOGO have been updated with respect to phone number
-and WWW access.
------
-The PHEP and VHEP variables in the /HEPEVT/ common block are now 
-assumed to be in DOUBLE PRECISION, in accord with the proposed
-LEP 2 workshop addendum to the standard.
------
-In LUTEST a missing decimal point on the energy check has been
-reinstated (0001 -> 0.0001).
------
-In LUINDF the expression PR/(Z*W) has been protected against vanishing
-denominator.
------------
-08, 23 August 1995:
-Check against division by zero in LUSHOW.
------------------------------------------------------------------
-3) Changes in PYTHIA 5.7
------------
-00, 13 December 1993: baseline version.
------------
-01, 27 January 1994:
-The machinery to handle gamma-gamma interactions is expanded.
-In particular, several new options have been added to MSTP(14).
-The updated description of this variable reads as follows.
-MSTP(14) : (D=0) structure of incoming photon beam or target
-    (does not affect photon inside electron, only photons appearing 
-    as argument in the PYINIT call).
-  = 0 : a photon is assumed to be point-like (a  direct photon), 
-      i.e. can only interact in processes which explicitly contain 
-      the incoming photon, such as f_i gamma -> f_i g for gamma-p 
-      interactions. In gamma-gamma interactions both photons are
-      direct, i.e the main process is gamma gamma -> f_i fbar_i.
-  = 1 : a photon is assumed to be resolved, i.e. can only interact
-      through its constituent quarks and gluons, giving either high-pT
-      parton-parton scatterings or low-pT events. Hard processes are 
-      calculated with the use of the full photon parton distributions. 
-      In gamma-gamma interactions both photons are resolved.
-  = 2 : a photon is assumed resolved, but only the VMD piece is 
-      included in the parton distributions, which therefore mainly 
-      are scaled-down versions of the rho0/pi0 ones. Both high-pT
-      parton-parton scatterings and low-pT events are allowed. In 
-      gamma-gamma interactions both photons are VMD-like.
-  = 3 : a photon is assumed resolved, but only the anomalous piece of 
-      the photon parton distributions is included. Only high-pT 
-      parton-parton scatterings are allowed. In gamma-gamma 
-      interactions both photons are anomalous.
-  = 4 : in gamma-gamma interactions one photon is direct and the other 
-      resolved. A typical process is thus f_i gamma -> f_i g. Hard 
-      processes are calculated with the use of the full photon 
-      parton distributions for the resolved photon. Both possibilities 
-      of which photon is direct are included, in event topologies and 
-      in cross sections. This option cannot be used in configurations 
-      with only one incoming photon. 
-  = 5 : in gamma-gamma interactions one photon is direct and the other 
-      VMD-like. Both possibilities of which photon is direct are 
-      included, in event topologies and in cross sections. This option 
-      cannot be used in configurations with only one incoming photon. 
-  = 6 : in gamma-gamma interactions one photon is direct and the other 
-      anomalous. Both possibilities of which photon is direct are 
-      included, in event topologies and in cross sections. This option 
-      cannot be used in configurations with only one incoming photon. 
-  = 7 : in gamma-gamma interactions one photon is VMD-like and the other 
-      anomalous. Only high-pT parton-parton scatterings are allowed.
-      Both possibilities of which photon is VMD-like are included,
-      in event topologies and in cross sections. This option cannot be 
-      used in configurations with only one incoming photon. 
-  Note: a complete description requires separate runs for the components
-      above, i.e. it is not possible to mix them in a single run. Our
-      best understanding of gamma-p interactions [Sch93,Sch93a] is to
-      have three separate components, 0 + 2 + 3. A simpler alternative
-      is based on two only, 0 + 1. Our best understanding of gamma-gamma
-      interactions [in preparation] requires six separate components, 
-      0 + 2 + 3 + 5 + 6 + 7. A simpler alternative is based on three 
-      only, 0 + 1 + 4.
-In addition, one new option has been introduced and a few internal
-variables modified.
-MSTP(59) : (D=0) possibility to modify the Q2 scale used in the
-      anomalous parton distributions of the photon, as used in the
-      options MSTP(14) = 3, 6 and 7.
-  = 0 : no change of Q2 scale compared to what is normally used.
-  = 1 : the input Q2 scaled is divided by PARP(59)**2 to define
-      the Q2 scale used as argument for the anomalous parton 
-      distributions.
-PARP(59) : (D=1.) rescaling factor used for the Q2 argument of the 
-      anomalous parton distributions of the photon, see MSTP(59).
-MINT(105) : is MINT(103) or MINT(104), depending on which side
-    of the event currently is being studied.
-MINT(107), MINT(108) : if either or both of the two incoming particles 
-    is a photon, then the respective value gives the nature assumed for
-    that photon. The code follows the one used for MSTP(14):
-  = 0 : direct photon.
-  = 1 : resolved photon.
-  = 2 : VMD-like photon.
-  = 3 : anomalous photon.
-MINT(109) : is either MINT(107) or MINT(108), depending on which side
-    of the event currently is being studied.
-VINT(282) : no longer used.
-VINT(283), VINT(284): virtuality scale at which an anomalous photon 
-    on the beam or target side of the event is being resolved. More
-    precisely, it gives the p_T^2 pf the gamma -> q qbar vertex.
------
-A number of bugs have also been corrected:
-* Jet + low-pT event generation could give incorrect cross section 
-  information with PYSTAT(1) at low energies. The event generation
-  itself is correct. (The error was introduced when variable energies 
-  became allowed.)
-* Introduce rejection of top events where top mass (in the tails of the
-  Breit-Wigner distribution) is too low to allow decays t -> W + b.
-* Plus a few minor bugs, probably harmless.   
------------
-02, 13 February 1994:
-The interface to PDFLIB has been modified to reflect that 'TMAS' should
-no longer be set except in first PDFSET call. (Else a huge amount of 
-irrelevant warning messages are generated by PDFLIB.)
------
-The STOP statement in a few dummy routines has been modifed to avoid 
-irrelevant compilation warning messages on IBM mainframes. 
------
-A few labels have been renumbered. 
------------
-03, 22 February 1994:
-Removal of a bug in PYRESD, which could give (under some specific 
-conditions) errors in the colour flow. 
------------
-04, 7 April 1994:
-Process 11 has been corrected, for the part that concerns anomalous
-couplings (contact interactions) in the q + q' -> q + q' process.
-The error was present in the expression for u + dbar -> u + dbar
-and obvious permutations, while u + d -> u + d, u + ubar -> u + ubar
-and the others were correct. Thanks to J.-J. Dugne, M. Perrottet and 
-K. Lane for communications on this point.
------
-The option MSTP(23)=1 for post-facto (x,Q^2) conservation in deep
-inelastic scattering can give infinite loops when applied to process
-83, in particular if one asks for the production of a top. (Remember
-that the standard DIS kinematics only is defined for massless quarks.)
-Therefore the switch MSTP(23) has been modifed as follows:
-MSTP(23) : (D=1) (x, Q^2) correction level in DIS.
-    = 0 : no correction procedure applied.
-    = 1 : correction applied for process 10, but not for process 83.
-    = 2 : correction applied both for process 10 and 83. This latter
-        option could still work fine for charm and bottom, if the
-        energy is sufficient.
------
-PYRESD is modified to ensure isotropic angular distributions in the 
-decays of the top or a fourth generation particle, i.e. in t -> b + W+. 
-This may not be the correct distribution but, unless explicit knowledge
-exists for a given process, this should always be the default. 
------
-In processes 16, 20, 31 and 36 the W propagator has been modified to 
-include s-dependent widths in the Breit-Wigner shape. The most notable
-effect is a suppression of the low-mass tail of the W mass spectrum.
------
-When PDFLIB is used, PDFSET is now only called whenever a different
-structure function is requested. For pp events therefore only one call
-is made, while gamma-p interactions still involves a call to PDFSET 
-for each STRUCTM one, since gamma and p structure functions have to be 
-called alternatingly. To this end, MINT(93) is reset to 
-1000000 * Nptype + 1000 * Ngroup + Nset after each PDFSET call.
------
-In a few places, a dot has been moved from the end of one line to the
-beginning of the next continuation line, or the other way around, 
-to keep together tokens such as .EQ. or .AND., since some debuggers
-may otherwise complain. Also some other purely cosmetics changes 
-for the same reason.  
-A number of minor errors have been corrected.
------------
-05, 15 July 1994:
-A new option has been introduced, MSTP(14)=10, whereby it is possible 
-to obtain a mixture of the various allowed photon components. For
-gamma-hadron collisions, this means a mixture of VMD, direct and 
-anomalous events, for gamma-gamma collisions a mixture of VMD*VMD, 
-VMD*direct, VMD*anomalous, direct*direct, direct*anomalous and
-anomalous*anomalous. The mixture is properly given according to 
-the relative cross sections. 
-Note that this introduces a completely new layer of administration in
-PYTHIA. For instance, a subprocess such as q + g -> q + g is allowed
-in the VMD*VMD, VMD*anomalous and anomalous*anomalous classes, but
-appear with different sets of parton distributions and with different
-pT cut-offs. In order to handle this, various information is initialized
-separately for each event class, and subsequently saved and restored 
-as the generation switches back and forth between the event classes. 
-This introduces some limitations on what you may and may not do.
-First of all, the MSTP(14) switch is only applicable for incoming photon
-beams, i.e. when 'gamma' is the argument in the PYINIT call. A
-convolution with the bremsstrahlung photon spectrum in an electron beam
-may come one day, but not in the immediate future.
-Secondly, the machinery has only been set up to generate standard
-QCD physics, specifically either 'minimum bias' one or high-pT jets.
-For minimum bias, you are not allowed to use the CKIN variables at all.
-This is not a major limitation, since it is in the spirit of minimum
-bias physics not to impose any contraints on allowed jet production. 
-(If you still do, these cuts will be ineffective for the VMD processes 
-but take effect for the other ones, giving inconsistencies.) Further, 
-some variables are internally recalculated and reset: CKIN(1), CKIN(3), 
-CKIN(5), CKIN(6), MSTP(57), MSTP(85), PARP(2), PARP(81), PARP(82), 
-PARU(115) and MDME(22,J). These can not be modified without changing
-PYINPR and recompiling the program. The minimum bias physics option 
-is obtained by default; by switching from MSEL=1 to MSEL=2 also the 
-elastic and diffractive components of the VMD part are included. 
-High-pT jet production is obtained by setting the CKIN(3) cut-off 
-larger than the (energy-dependent) cut-off scales for the VMD, direct 
-and  anomalous components; typically this means at least 3 GeV. For 
-lower input CKIN(3) the program will automatically switch back to 
-minimum bias physics.
-Finally, pileup events are not at all allowed.  
-Here is a survey of common block variables affected:
-MSTP(14) (D=0) strucure of incoming photon beam or target;
-    see description above for PYTHIA 5.701.
-    = 10 : new option where the VMD, direct and anomalous components 
-        are automatically mixed, as described above. Works equally well
-        for gamma-p and gamma-gamma.
-MSTI(9) : event class used in current event.
-    = 1 : VMD (for gamma-p) or VMD*VMD (for gamma-gamma).
-    = 2 : direct (for gamma-p) or VMD*direct (for gamma-gamma).
-    = 3 : anomalous (for gamma-p) or VMD*anomalous (for gamma-gamma).
-    = 4 : direct*direct (for gamma-gamma).
-    = 5 : direct*anomalous (for gamma-gamma).
-    = 6 : anomalous*anomalous (for gamma-gamma).
-MINT(121) : number of separate event classes to initialize and mix.
-    = 1 : the normal value.
-    = 3 : for a gamma-hadron interaction when MSTP(14)=10.
-    = 6 : for a gamma-gamma interaction when MSTP(14)=10.
-MINT(122) : event class used in current event. Code as explained for
-    MSTI(9).
-MINT(123) : event class used in the current event, with the same list 
-    of possibilities as MSTP(14), except that MSTP(14) = 1, 4 or 10 
-    do not appear.  
-VINT(285) : the CKIN(3) value provided by the user at initialization;
-    subsequently CKIN(3) may be overwritten (for MSTP(14)=10) but 
-    VINT(285) stays.
-In addition, the structure of the initialization has been partly
-reorganized. The routine PYEVKI has been removed, new routines
-PYINBM, PYINPR and PYSAVE created, and some material has been moved 
-to or from PYINIT, PYINRE and PYINKI.
-SUBROUTINE PYINBM : to read in and identify beam and target particles
-    and frame as given in the PYINIT call (used to be done in PYINKI).
-SUBROUTINE PYINKI(MODKI) : to set up event kinematics, either at
-    initialization (MODKI=0) or for each separate event when varying
-    kinematics (MODKI=1). (The latter task used to be done in PYEVKI.)
-SUBROUTINE PYINPR : to set up the partonic subprocesses selected with
-    MSEL and, for gamma-p and gamma-gamma, MSTP(14).
-SUBROUTINE PYSAVE : saves and restores parameters and cross section
-    values between the 3 gamma-p and the 6 gamma-gamma alternatives
-    of MSTP(14)=10. Also makes a random choice for each new event
-    between the allowed alternatives.
-Among other changes, note that PYSTAT(1) now has been extended so
-that the subdivision into the various gamma-p and gamma-gamma classes
-is shown.     
------
-Further changes of particular relevance for gamma-p and gamma-gamma,
-but independent of the major revisions above:
-MSTP(59) and PARP(59) have been removed. Instead the following options
-are available:
-MSTP(15) : (D=5) possibility to modify the nature of the anomalous
-photon component, in particular with respect to the scale choices and
-cut-offs of hard processes.
-    = 0 : none, i.e. the same treatment as for the VMD component.
-    = 1 : evaluate the anomalous structure functions at a scale
-        Q2/PARP(17)^2.
-    = 2 : as =1, but instead of PARP(17) use PARP(81)/PARP(15) or
-        PARP(82)/PARP(15), depending on MSTP(82) value.
-    = 3 : evaluate anomalous structure function as
-        f^(anom)(x, Q2, p_0^2) - f^(anom)(x, Q2, r^2*Q2)
-        with r = PARP(17).
-    = 4 : as =3, but instead of PARP(17) use PARP(81)/PARP(15) or
-        PARP(82)/PARP(15), depending on MSTP(82) value.
-    = 5 : use larger pTmin for anomalous component than for VMD one,
-        but otherwise no difference.
-PARP(17) : (D=1) rescaling factor used as described for MSTP(15).
-MSTP(51) : new option added.
-    = 11 : the GRV p LO parametrization.
-MSTP(53) : new option added.
-    = 3 : the GRV pi LO parametrization.  
-MSTP(56) : new option added.
-    = 3 : when the anomalous photon structure function is requested,
-        the homogeneous solution is provided, evolved from a starting
-        value PARP(15) to the requested Q scale. The homogeneous 
-        solution is normalized so that the net momentum is unity,
-        i.e. any factors of alpha_em/2pi and charge have been left out. 
-        The flavour of the original q is given in MSTP(55) (1, 2, 3, 4 
-        or 5 for d, u, s, c or b); the value 0 gives a mixture 
-        according to squared charge, with the exception that c and b 
-        are only allowed above the respective mass threshold (Q > m_q).
-        The four-flavour Lambda value is assumed given in PARP(1);
-        it is automatically recalculated for 3 or 5 flavours at 
-        thresholds. This option is not intended for standard event 
-        generation, but is useful for some theoretical studies.
-  
------
-Option MSTP(92)=5 for beam remnant treatment erroneously missed some
-statements which now have been inserted. 
-Further, new options have been added for the splitting of momentum 
-between two beam remnants. MSTP(92) keeps its current role for the 
-production of diquark or quark jets. However, for the splitting into 
-a hadron plus a quark/diquark jet, MSTP(94) should now be used.
-MSTP(94) : (D=2) (C) energy partitioning in hadron or resolved photon
-remnant, when this is split into a hadron plus a remainder-jet. The 
-energy fraction chi is taken by one of the two objects, with 
-conventions as described below or for PARP(95) and PARP(97).
-    = 1 : 1 for meson or resolved photon, 2(1-chi) for baryon, i.e.
-        simple counting rules.
-    = 2 : (k+1)*(1-chi)**k, with k as given in PARP(95) or PARP(97).
-    = 3 : the chi of the hadron is selected according to the normal
-        fragmentation function used for the hadron in jet fragmentation,
-        see MSTJ(11). The possibility of a changed fragmentation 
-        function shape in diquark fragmentation (see PARJ(45)) is not 
-        included.  
-    = 4 : as =3, but the shape is changed as allowed in diquark
-        fragmentation (see PARJ(45)); this change is here also allowed 
-        for meson production.    
------
-In PYDIFF the recoiling gluon energy is calculated in a numerically more
-stable fashion. 
------
-A counter has been added to PYSSPA to avoid infinite loops in the
-angular ordering constraint due to interference with the final state
-colour charges.
------------
-06, 25 August 1994:
-New processes 167 and 168 have been added for the contact interaction
-production of d* or u* excited quarks
-167   q q' -> q" d*
-168   q q' -> q" u*
-where the different allowed quark and antiquark combinations are given
-according to eqs. (15) - (19) in U. Baur, M. Spira and P.M. Zerwas,
-Phys. Rev. D42 (1990) 815. The d* and u* are defined in the same
-way as for processes 147 and 148. Thus one needs to put MSTP(6)=1 to
-use l (7) and h (8) for representing the d* and u*. The couplings of
-the allowed decay channels are given by PARU(157) - PARU(159), and
-the Lambda scale parameter by PARU(155).
-At the same time, some minor changes has been introduced in the code
-for processes 147 and 148, for uniformity.
------
-Option MSTP(57)=3 now also allows a dampening of pi+- parton 
-distributions.
------
-A few minor errors have been corrected.
------------
-07, 20 October 1994:
-A major bug discovered in processes 121 and 122 (and thus also affecting
-181, 182, 186 and 187), g g or q qbar -> Q Qbar H: the kinematics was 
-incorrectly handed on to the Kunszt matrix elements. This affected the
-default option Q = t, but effects were especially dramatic when the
-alternative Q = b was used. 
-The choice of appropriate Q2 scale for structure functions introduces
-a further uncertainty in cross sections for the processes above. So long
-as only t quarks are considered, the t mass is a reasonable choice, but
-for the Q = b alternative this is presumably too low. Therefore new 
-options have been introduced as below, with the default behaviour 
-changed (the old one is obtainable with MSTP(39)=1).
-MSTP(39) : (D=2) choice of Q2 scale for structure functions and initial
-state parton showers in processes g g or q qbar -> Q Qbar H.
-    = 1 : m_Q**2.
-    = 2 : max(mT_Q**2 , mT_Qbar**2) = 
-        m_Q**2 + max(pT_Q**2 , pT_Qbar**2).
-    = 3 : m_H**2.
-    = 4 : shat = (p_H + p_Q + p_Qbar)**2.
------
-Another important bug corrected in the calculation of the reduction of
-t+tbar cross section when decay modes are forced. This occured when both
-t and tbar produced a W, and W+ and W- decay modes were set differently.
------------
-08, 25 October 1994:
-A few further places changed to make processes 181, 182, 186 and 187 
-work (see version 5.707 above).
------------
-09, 26 October 1994:
-The matrix element for f + fbar -> W+ + W- has been replaced, using the
-formulae of 
-D. Bardin, M. Bilenky, D. Lehner, A. Olchevski and T. Riemann,
-CERN-TH.7295/94,
-but with the dependence on the t-hat variable not integrated out
-(D. Bardin, private communication).
-This avoids some problems encountered in the old expressions when 
-one or both W's were far off the mass shell.
------
-Change in calls to PDFLIB, so that the input Q is always at least the 
-QMIN of the respective set.
------
-Extra protection against infinite loops in PYSSPA.
------------
-10, 27 January 1995:
-The dimensions of the HGZ array in PYRESD has been expanded to avoid
-accidental writing outside the bounds.
------
-VINT(41) - VINT(66) are saved and restored in PYSCAT, for use in low-pT
-events, when beam remnant treatment has failed (with nonzero MINT(57)).
------
-The routine PYSTGH has been replaced by the routine PYSTHG. This 
-contains an improved parametrization of the homogeneous evolution 
-of an anomalous photon from some given initial scale. The argument
-NF of the PYSTGH routine has been removed; now Lambda is always
-automatically converted to the relevant NF-flavour value from its
-4-flavour one, at flavour thresholds. 
------------
-11, 20 February 1995:
-New possibilities have been added to switch between electroweak
-couplings being expressed in terms of a running alpha_em(Q2)  or 
-in terms of a fixed Fermi constant G_F. This affects both decay widths
-and process cross sections, in the routines PYINRE, PYRESD, PYWIDT and 
-PYSIGH. There are three main options, with default agreeing with the
-old standard.
-MSTP(8) : (D=0) choice of electroweak parameters to use in decay
-    widths of resonances (W, Z, H, ...) and cross sections (production
-    of W's, Z's, H's, ...). 
-    = 0 : everything is expressed in terms of a running alpha_em(Q2) 
-        and a fixed sin^2(theta_W), i.e. G_F is nowhere used.
-    = 1 : a replacement is made according to 
-        alpha_em(Q2) -> sqrt(2) G_F m_W^2 sin^2(theta_W) / pi
-        in all widths and cross sections. If G_F and m_Z are considered 
-        as given, this means that sin^2(theta_W) and m_W are the only 
-        free electroweak parameter.
-    = 2 : a replacement is made as for =1, but additionally 
-        sin^2(theta_W) is constrained by the relation 
-        sin^2(theta_W) = 1 - m_W^2/m_Z^2
-        This means that m_W remains as a free parameter, but that the
-        sin^(theta_W) value in PARU(102) is never used, EXCEPT in
-        the vector couplings in the combination
-        v = a - 4 sin^2(theta_W) e.
-        This degree of freedom enters e.g. for forward-backward
-        asymmetries in Z^0 decays.
-Note : This option does not affect the emission of real photons in the 
-    initial and final state, where alpha_em is always used. However, 
-    it does affect also purely electromagnetic hard processes, such as 
-    q + qbar -> gamma + gamma.
------
-The option MSTP(37)=1, with running quark masses in couplings to Higgs
-bosons, only works when alpha_s is allowed to run (so one can define
-a Lambda value). Therefore a check has been introduced in PYWIDT and
-PYSIGH that the option MSTP(37)=1 is only executed if additionally
-MSTP(2) is 1 or bigger.
------
-Some non-physics changes have been made in the RKBBV and STRUCTM codes
-so as to avoid some (in principle harmless) compiler warnings.
------------
-12, 15 March 1995:
-A serious error has been corrected in the MSTP(173)=1 option, i.e. when
-the program is run with user-defined weights that should compensate for 
-a biased choice of variable beam energies. This both affected the 
-relative admixture of low- and high-pT events and the total cross 
-section obtained by Monte Carlo integration. (PYRAND changed.)
-In order to improve the flexibility and efficiency of the variable-energy
-option, the user should now set PARP(174) before the PYINIT call, and
-thereafter not change it. This allows PARP(173) weights of arbitrary
-size. (PYRAND and PYMAXI changed.)
-PARP(174) : (D=1.) maximum event weight that will be encountered in
-    PARP(173) during the course of a run with MSTP(173)=1; to be used 
-    to optimize the efficiency of the event generation. It is always 
-    allowed to use a larger bound than the true one, but with a 
-    corresponding loss in efficiency.
-MSTI(5) (and MINT(5)) are now changed so they count the number of 
-successfully generated events, rather than the number of tries made.
-This change only affects runs with variable energies, MSTP(171)=1 and 
-MSTP(172)=2, where MSTI(61)=1 signals that a user-provided energy
-has been rejected in the weighting. This change also affects PARI(2),
-which becomes the cross section per fully generated event. (PYEVNT
-changed.)
------
-The option MSTP(14)=10 has now been extended so that it also works for
-deep inelastic sacattering of an electron off a (real) photon, i.e.
-process ISUB = 10. What is obtained is a mixture of the photon acting
-as a vector meson and it acting as an anomalous state. This should 
-therefore be the sum of what can be obtained with MSTP(14)=2 and =3.
-It is distinct from MSTP(14)=1 in that different sets are used for
-the parton distributions - in MSTP(14)=1 all the contributions to the
-photon distributions are lumped together, while they are split in 
-VMD and anomalous parts for MSTP(14)=10. Also the beam remnant treatment
-is different, with a simple Gaussian distribution (at least by default)
-for MSTP(14)=1 and the VMD part of MSTP(14)=10, but a powerlike 
-distribution d(kT^2)/kT^2 between PARP(15) and Q for the anomalous
-part of MSTP(14)=10. (PYINIT, PYINPR and PYSTAT changed.)
-To access this option for e and gamma as incoming beams, it is only 
-necessary to set MSTP(14)=10 and keep MSEL at its default value.
-Unlike the corresponding option for gamma-p and gamma-gamma, no
-cuts are overwritten, i.e. it is still the responsability of the user
-to set these appropriately. Those especially appropriate for DIS usage
-are CKIN(21)-CKIN(22) or CKIN(23)-CKIN(24) for the x range (former or
-latter depending on which side is the incoming real photon), 
-and CKIN(35)-CKIN(36) for the Q2 range. A further new option has been 
-added (in PYKLIM):
-CKIN(39), CKIN(40) : (D=4., -1. GeV^2) the W2 range allowed in DIS
-    processes, i.e. subprocess number 10. If CKIN(40) < 0., the upper
-    limit is inactive. Here W2 is defined in terms of W2 = Q2 * (1-x)/x.
-    This formula is not quite correct, in that (i) it neglects the 
-    target mass (for a proton), and (ii) it neglects initial-state 
-    photon radiation off the incoming electron. It should be good 
-    enough for loose cuts, however. 
-A warning about the usage of PDFLIB for photons. So long as MSTP(14)=1, 
-i.e. the photon is not split up, PDFLIB is accessed by MSTP(56)=2 and
-MSTP(55) = parton distribution set, as described in the manual. 
-However, when the VMD and anomalous pieces are split, the VMD part
-is based on a rescaling of pion distributions by VMD factors
-(except for the SaS sets, that already come with a separate VMD piece).
-Therefore, to access PDFLIB for MSTP(14)=10, it is not correct to set 
-MSTP(56)=2 and a photon distribution in MSTP(55). Instead, one should
-put MSTP(56)=2, MSTP(54)=2 and a pion distribution code in MSTP(53),
-while MSTP(55) has no function. The anomalous part is still based on
-the SaS parametrization, with PARP(15) as main free parameter.   
------
-A change has been made in PYREMN to reduce the possibility of infinite 
-loops. 
------------
-13, 22 March 1995:
-The SaS parton distributions of the photons are now available.
-For details on these sets, see 
-G.A. Schuler and T. Sjostrand,
-"Low- and high-mass components of the photon distribution functions",
-CERN-TH/95-62 and LU TP 95-6.
-There are four new sets. These differ in that two use a Q0=0.6 GeV and
-two a Q0=2 GeV, and in that two use the DIS and two the MSbar conventions 
-for the dominant non-leading contributions. (However, the fits are 
-formally still leading-order, in that not all next-to-leading
-contributions have been included.) New default is the SaS 1D set. 
-Furthermore, for the definition of F_2^gamma, additional terms appear 
-that do not form part of the parton distributions itself. To partly 
-take this into account, an additional doubling of the possibilities 
-has been included. These possibilites can be accesed with MSTP(55):
-MSTP(55) : (D=5) choice of parton-distribution set of the photon;
-    see also MSTP(56).
-    = 1  : Drees-Grassie.
-    = 5  : SaS 1D (in DIS scheme, with Q0=0.6 GeV).
-    = 6  : SaS 1M (in MSbar scheme, with Q0=0.6 GeV).
-    = 7  : SaS 2D (in DIS scheme, with Q0=2 GeV).
-    = 8  : SaS 2M (in MSbar scheme, with Q0=2 GeV).
-    = 9  : SaS 1D (in DIS scheme, with Q0=0.6 GeV).
-    = 10 : SaS 1M (in MSbar scheme, with Q0=0.6 GeV).
-    = 11 : SaS 2D (in DIS scheme, with Q0=2 GeV).
-    = 12 : SaS 2M (in MSbar scheme, with Q0=2 GeV).
-    Note 1 : sets 5 - 8 use the parton distributions of the respective
-        set, and nothing else. These are appropriate for most 
-        applications, e.g. jet production in gamma-p and gamma-gamma
-        collisions. Sets 9 - 12 instead are appropriate for
-        gamma*-gamma processes, i.e. DIS scattering on a photon, 
-        as measured in F_2^gamma. Here the anomalous contribution
-        for c and b quarks are handled by the Bethe-Heitler formulae,
-        and the direct term is artificially lumped with the anomalous
-        one, so that the event simulation more closely agrees with what
-        will be experimentally observed in these processes. The agreement
-        with the F_2^gamma parametrization is still not perfect, e.g.
-        in the treatment of heavy flavours close to threshold. 
-    Note 2 : Sets 5 - 12 contain both VMD pieces and anomalous pieces,
-        separately parametrized. Therefore the respective piece is 
-        automatically called, whatever MSTP(14) value is used to select 
-        only a part of allowed photon interactions. For other sets 
-        (set 1 above or PDFLIB sets), usually there is no corresponding 
-        subdivision. Then an option like MSTP(14)=2 (VMD part of photon 
-        only) is based on a rescaling of the pion distributions, while
-        MSTP(14)=3 gives the SaS anomalous parametrization.     
-    Note 3 : Formally speaking, the k0 (or p0) cut-off in PARP(15) 
-        need not be set in any relation to the Q0 cut-off scales used by 
-        the various parametrizations. Indeed, due to the familiar scale
-        choice ambiguity problem, there could well be some offset between
-        the two. However, unless you know what you are doing, it is 
-        strongly recommended that you let the two agree, i.e. set
-        PARP(15)=0.6 for the SaS 1 sets and =2 for the SaS 2 sets.
-PARP(15) : (D=0.6 GeV) default value changed for k0 cut-off for 
-    separation between direct, VMD and anomalous photons; see Note 3 
-    for MSTP(55) above.       
-        
-The generic routine PYSTFU has been rewritten to handle the interfacing.
-The old routines PYSTAG, PYSTGS, PYDILN and PYSTHG have been removed.
-Instead the routines of the SaSgam library have been inserted. In order
-to avoid any clashes, the routines SAS*** have been renamed PYG***.
-Thus new routines are PYGGAM, PYGVMD, PYGANO, PYGBEH and PYGDIR.
-The common block SASCOM is renamed PYINT8. If you want to use the
-parton distributions for standalone purposes, you are encouraged to
-use the original SaSgam routines rather than going the way via the
-Pythia adaptations. 
-      COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
-     &XPDIR(-6:6)
-Purpose: to store the various components of the parton distributions
-    when the PYGGAM routine is called.
-XPVMD(KFL) : gives distributions of the VMD part (rho, omega and
-    phi).      
-XPANL(KFL) : gives distributions of the anomalous part of light quarks
-    (d, u and s).
-XPANH(KFL) : gives distributions of the anomalous part of heavy quarks
-    (c and b).
-XPBEH(KFL) : gives Bethe-Heitler distributions of heavy quarks (c and b).
-    This provides an alternative to XPANH, i.e. both should not be used
-    at the same time.
-XPDIR(KFL) : gives direct correction to the production of light quarks
-    (d, u and s). This term is nonvanishing only in the MSbar scheme,
-    and is applicable for F_2^gamma rather than for the parton
-    distributions themselves.
------
-PYDOCU has been corrected so that PARI(2) refers to the full cross 
-section for gamma-p and gamma-gamma processes, rather than that of 
-the latest subprocess considered.
-An additional check has been inserted into PYREMN. 
------------
-14, 23 March 1995:
-Some minor modifications to PYSTFU and PYGGAM in the wake of the
-changes of the previous version.
------------
-15, 24 April 1995:
-An unfortunate choice of default values has been corrected:
-the old MSTP(3)=2 value implied that Lambda_QCD was entirely based on 
-the Lambda value of the proton structure function; also e.g. for e+e-
-annihilation events. Thus the Lambda in PARJ(81) was overwritten,
-i.e. did not keep the value required by standard phenomenology, which
-typically gave too narrow jets. (While switching to MSTP(3)=1 it worked
-fine.) In the modified option MSTP(3)=2 this has been corrected, to 
-better agree with user expectations. Change affects PYINIT and
-PYRESD. (See further version 16 for additional changes.)
-MSTP(3) : (D=2) choice of Lambda_QCD values.
-    = 1 : separate for hard scattering, initial showers and final 
-        showers, as before. Additionally separate for resonance
-        decays, given in PARP(3).
-    = 2 : most Lambda values are set to that of the proton structure
-        function used, except for the Lambda used in the decay of
-        a resonance (as treated in PYRESD). There the PARP(3) value
-        is used, with default as in e+e-.
-    = 3 : all Lambda values are set to that of the proton structure
-        function used, as was the case for =2 before.
-PARP(3) : (D=0.29 GeV) the Lambda value used in timelike parton showers 
-    in the decay of a resonance (in PYRESD).
------
-The form for PTMANO, the pTmin for anomalous processes, as used in 
-PYINPR when processes are mixed for gamma-p or gamma-gamma events,
-has been updated to match (as well as can be expected) the SaS 1D 
-photon distributions.
------------
-16, 30 June 1995:
-The strategy for the changes to MSTP(3) in version 15 above have been
-modified for better transparency. The parameter PARP(3) has been removed,
-and instead PARP(72) has been introduced. Now PARJ(81) is used for
-resonance decays (including e.g. Z0 decay, from which it is determined),
-and PARP(72) for other timelike showers. PARJ(81) is not overwritten
-for MSTP(3) = 2, but only for = 3. Changes affect PYINIT, PYEVNT and
-PYRESD.
-PARP(72) : (D=0.25 GeV) the Lambda value used in timelike parton showers 
-    except in the decay of a resonance.
------
-A new multiplicative factor has been introduced for the hard scattering 
-in PYSIGH.
-PARP(34) : (D=1.) the Q2 scale defined by MSTP(32) is multiplied by PARP(34)
-    when it is used as argument for structure functions and alpha_s at the
-    hard interaction. It does not affect alpha_s when MSTP(33)=3, nor
-    does it change the Q2 argument of parton showers.
------
-PYREMN has been corrected for occasional too large boost factors.
-An error in PYSIGH for process 148 has been corrected.
-The MSTP(62)=1 option of PYSSPA is modified to avoid division by zero.
-Header has been updated with WWW-information.
------------
-17, 23 August 1995:
-MIN1, MIN2, MAX1, MAX2, MINA and MAXA in PYSIGH have had an extra M 
-prefixed to avoid confusion with Fortran functions.
-Protect against MDCY(0,1) being accessed in PYSIGH.
-Protect against THB=0 in PYRAND.
-Protect against YSTMAX-YSTMIN = 0 in PYSIGH.
-Check for moved leptoquark at beginning of PYRESD just like for
-other particles with colour.   
------------------------------------------------------------------
diff --git a/PYTHIA/dummypythia.F b/PYTHIA/dummypythia.F
deleted file mode 100644 (file)
index 2f35312..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-      subroutine dummypythia
-      common / lujets / d00
-      common / ludatr / d01
-      common / ludat1 / d02
-      common / ludat2 / d03
-      common / ludat3 / d04
-      common / ludat4 / d05
-      common / pysubs / d06
-      common / pypars / d07
-      common / pyint1 / d08
-      common / pyint2 / d09
-      common / pyint3 / d10
-      common / pyint4 / d11
-      common / pyint5 / d12
-      end
diff --git a/PYTHIA/jetset/klu.F b/PYTHIA/jetset/klu.F
deleted file mode 100644 (file)
index 59c1490..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-C********************************************************************* 
-      FUNCTION KLU(I,J) 
-C...Purpose: to provide various integer-valued event related data. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Default value. For I=0 number of entries, number of stable entries 
-C...or 3 times total charge. 
-      KLU=0 
-      IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN 
-      ELSEIF(I.EQ.0.AND.J.EQ.1) THEN 
-        KLU=N 
-      ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN 
-        DO 100 I1=1,N 
-        IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+1 
-        IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+ 
-     &  LUCHGE(K(I1,2)) 
-  100   CONTINUE 
-      ELSEIF(I.EQ.0) THEN 
-C...For I > 0 direct readout of K matrix or charge. 
-      ELSEIF(J.LE.5) THEN 
-        KLU=K(I,J) 
-      ELSEIF(J.EQ.6) THEN 
-        KLU=LUCHGE(K(I,2)) 
-C...Status (existing/fragmented/decayed), parton/hadron separation. 
-      ELSEIF(J.LE.8) THEN 
-        IF(K(I,1).GE.1.AND.K(I,1).LE.10) KLU=1 
-        IF(J.EQ.8) KLU=KLU*K(I,2) 
-      ELSEIF(J.LE.12) THEN 
-        KFA=IABS(K(I,2)) 
-        KC=LUCOMP(KFA) 
-        KQ=0 
-        IF(KC.NE.0) KQ=KCHG(KC,2) 
-        IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) KLU=K(I,2) 
-        IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) KLU=K(I,2) 
-        IF(J.EQ.11) KLU=KC 
-        IF(J.EQ.12) KLU=KQ*ISIGN(1,K(I,2)) 
-C...Heaviest flavour in hadron/diquark. 
-      ELSEIF(J.EQ.13) THEN 
-        KFA=IABS(K(I,2)) 
-        KLU=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10) 
-        IF(KFA.LT.10) KLU=KFA 
-        IF(MOD(KFA/1000,10).NE.0) KLU=MOD(KFA/1000,10) 
-        KLU=KLU*ISIGN(1,K(I,2)) 
-C...Particle history: generation, ancestor, rank. 
-      ELSEIF(J.LE.15) THEN 
-        I2=I 
-        I1=I 
-  110   KLU=KLU+1 
-        I2=I1 
-        I1=K(I1,3) 
-        IF(I1.GT.0.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110 
-        IF(J.EQ.15) KLU=I2 
-      ELSEIF(J.EQ.16) THEN 
-        KFA=IABS(K(I,2))
-        IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.        
-     &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN  
-          I1=I
-  120     I2=I1 
-          I1=K(I1,3)
-          IF(I1.GT.0) THEN
-            KFAM=IABS(K(I1,2))
-            ILP=1
-            IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
-            IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93) 
-     &      ILP=0
-            IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
-            IF(ILP.EQ.1) GOTO 120
-          ENDIF
-          IF(K(I1,1).EQ.12) THEN
-            DO 130 I3=I1+1,I2 
-            IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
-     &      .AND.K(I3,2).NE.93) KLU=KLU+1
-  130       CONTINUE
-          ELSE
-            I3=I2
-  140       KLU=KLU+1
-            I3=I3+1
-            IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140           
-          ENDIF 
-        ENDIF 
-C...Particle coming from collapsing jet system or not. 
-      ELSEIF(J.EQ.17) THEN 
-        I1=I 
-  150   KLU=KLU+1 
-        I3=I1 
-        I1=K(I1,3) 
-        I0=MAX(1,I1) 
-        KC=LUCOMP(K(I0,2)) 
-        IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN 
-          IF(KLU.EQ.1) KLU=-1 
-          IF(KLU.GT.1) KLU=0 
-          RETURN 
-        ENDIF 
-        IF(KCHG(KC,2).EQ.0) GOTO 150 
-        IF(K(I1,1).NE.12) KLU=0 
-        IF(K(I1,1).NE.12) RETURN 
-        I2=I1 
-  160   I2=I2+1 
-        IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160 
-        K3M=K(I3-1,3) 
-        IF(K3M.GE.I1.AND.K3M.LE.I2) KLU=0 
-        K3P=K(I3+1,3) 
-        IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) KLU=0 
-C...Number of decay products. Colour flow. 
-      ELSEIF(J.EQ.18) THEN 
-        IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) KLU=MAX(0,K(I,5)-K(I,4)+1) 
-        IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) KLU=0 
-      ELSEIF(J.LE.22) THEN 
-        IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN 
-        IF(J.EQ.19) KLU=MOD(K(I,4)/MSTU(5),MSTU(5)) 
-        IF(J.EQ.20) KLU=MOD(K(I,5)/MSTU(5),MSTU(5)) 
-        IF(J.EQ.21) KLU=MOD(K(I,4),MSTU(5)) 
-        IF(J.EQ.22) KLU=MOD(K(I,5),MSTU(5)) 
-      ELSE 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lu1ent.F b/PYTHIA/jetset/lu1ent.F
deleted file mode 100644 (file)
index f5fbf8f..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-C********************************************************************* 
-C********************************************************************* 
-C*                                                                  ** 
-C*                                                 December 1993    ** 
-C*                                                                  ** 
-C*   The Lund Monte Carlo for Jet Fragmentation and e+e- Physics    ** 
-C*                                                                  ** 
-C*                        JETSET version 7.4                        ** 
-C*                                                                  ** 
-C*                        Torbjorn Sjostrand                        ** 
-C*                Department of theoretical physics 2               ** 
-C*                        University of Lund                        ** 
-C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
-C*                    E-mail torbjorn@thep.lu.se                    ** 
-C*                    phone +46 - 46 - 222 48 16                    ** 
-C*                                                                  ** 
-C*          LUSHOW is written together with Mats Bengtsson          ** 
-C*                                                                  **
-C*   The latest program version and documentation is found on WWW   **
-C*         http://thep.lu.se/tf2/staff/torbjorn/Welcome.html        **
-C*                                                                  ** 
-C*        Copyright Torbjorn Sjostrand and CERN, Geneva 1993        ** 
-C*                                                                  ** 
-C********************************************************************* 
-C********************************************************************* 
-C                                                                    * 
-C  List of subprograms in order of appearance, with main purpose     * 
-C  (S = subroutine, F = function, B = block data)                    * 
-C                                                                    * 
-C  S   LU1ENT   to fill one entry (= parton or particle)             * 
-C  S   LU2ENT   to fill two entries                                  * 
-C  S   LU3ENT   to fill three entries                                * 
-C  S   LU4ENT   to fill four entries                                 * 
-C  S   LUJOIN   to connect entries with colour flow information      * 
-C  S   LUGIVE   to fill (or query) commonblock variables             * 
-C  S   LUEXEC   to administrate fragmentation and decay chain        * 
-C  S   LUPREP   to rearrange showered partons along strings          * 
-C  S   LUSTRF   to do string fragmentation of jet system             * 
-C  S   LUINDF   to do independent fragmentation of one or many jets  * 
-C  S   LUDECY   to do the decay of a particle                        * 
-C  S   LUKFDI   to select parton and hadron flavours in fragm        * 
-C  S   LUPTDI   to select transverse momenta in fragm                * 
-C  S   LUZDIS   to select longitudinal scaling variable in fragm     * 
-C  S   LUSHOW   to do timelike parton shower evolution               * 
-C  S   LUBOEI   to include Bose-Einstein effects (crudely)           * 
-C  F   ULMASS   to give the mass of a particle or parton             * 
-C  S   LUNAME   to give the name of a particle or parton             * 
-C  F   LUCHGE   to give three times the electric charge              * 
-C  F   LUCOMP   to compress standard KF flavour code to internal KC  * 
-C  S   LUERRM   to write error messages and abort faulty run         * 
-C  F   ULALEM   to give the alpha_electromagnetic value              * 
-C  F   ULALPS   to give the alpha_strong value                       * 
-C  F   ULANGL   to give the angle from known x and y components      * 
-C  F   RLU      to provide a random number generator                 * 
-C  S   RLUGET   to save the state of the random number generator     * 
-C  S   RLUSET   to set the state of the random number generator      * 
-C  S   LUROBO   to rotate and/or boost an event                      * 
-C  S   LUEDIT   to remove unwanted entries from record               * 
-C  S   LULIST   to list event record or particle data                * 
-C  S   LULOGO   to write a logo for JETSET and PYTHIA                * 
-C  S   LUUPDA   to update particle data                              * 
-C  F   KLU      to provide integer-valued event information          * 
-C  F   PLU      to provide real-valued event information             * 
-C  S   LUSPHE   to perform sphericity analysis                       * 
-C  S   LUTHRU   to perform thrust analysis                           * 
-C  S   LUCLUS   to perform three-dimensional cluster analysis        * 
-C  S   LUCELL   to perform cluster analysis in (eta, phi, E_T)       * 
-C  S   LUJMAS   to give high and low jet mass of event               * 
-C  S   LUFOWO   to give Fox-Wolfram moments                          * 
-C  S   LUTABU   to analyze events, with tabular output               * 
-C                                                                    * 
-C  S   LUEEVT   to administrate the generation of an e+e- event      * 
-C  S   LUXTOT   to give the total cross-section at given CM energy   * 
-C  S   LURADK   to generate initial state photon radiation           * 
-C  S   LUXKFL   to select flavour of primary qqbar pair              * 
-C  S   LUXJET   to select (matrix element) jet multiplicity          * 
-C  S   LUX3JT   to select kinematics of three-jet event              * 
-C  S   LUX4JT   to select kinematics of four-jet event               * 
-C  S   LUXDIF   to select angular orientation of event               * 
-C  S   LUONIA   to perform generation of onium decay to gluons       * 
-C                                                                    * 
-C  S   LUHEPC   to convert between /LUJETS/ and /HEPEVT/ records     * 
-C  S   LUTEST   to test the proper functioning of the package        * 
-C  B   LUDATA   to contain default values and particle data          * 
-C                                                                    * 
-C********************************************************************* 
-      SUBROUTINE LU1ENT(IP,KF,PE,THE,PHI) 
-C...Purpose: to store one parton/particle in commonblock LUJETS. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Standard checks. 
-      MSTU(28)=0 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      IPA=MAX(1,IABS(IP)) 
-      IF(IPA.GT.MSTU(4)) CALL LUERRM(21, 
-     &'(LU1ENT:) writing outside LUJETS memory') 
-      KC=LUCOMP(KF) 
-      IF(KC.EQ.0) CALL LUERRM(12,'(LU1ENT:) unknown flavour code') 
-C...Find mass. Reset K, P and V vectors. 
-      PM=0. 
-      IF(MSTU(10).EQ.1) PM=P(IPA,5) 
-      IF(MSTU(10).GE.2) PM=ULMASS(KF) 
-      DO 100 J=1,5 
-      K(IPA,J)=0 
-      P(IPA,J)=0. 
-      V(IPA,J)=0. 
-  100 CONTINUE 
-C...Store parton/particle in K and P vectors. 
-      K(IPA,1)=1 
-      IF(IP.LT.0) K(IPA,1)=2 
-      K(IPA,2)=KF 
-      P(IPA,5)=PM 
-      P(IPA,4)=MAX(PE,PM) 
-      PA=SQRT(P(IPA,4)**2-P(IPA,5)**2) 
-      P(IPA,1)=PA*SIN(THE)*COS(PHI) 
-      P(IPA,2)=PA*SIN(THE)*SIN(PHI) 
-      P(IPA,3)=PA*COS(THE) 
-C...Set N. Optionally fragment/decay. 
-      N=IPA 
-      IF(IP.EQ.0) CALL LUEXEC 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lu2ent.F b/PYTHIA/jetset/lu2ent.F
deleted file mode 100644 (file)
index a89253b..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LU2ENT(IP,KF1,KF2,PECM) 
-C...Purpose: to store two partons/particles in their CM frame, 
-C...with the first along the +z axis. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Standard checks. 
-      MSTU(28)=0 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      IPA=MAX(1,IABS(IP)) 
-      IF(IPA.GT.MSTU(4)-1) CALL LUERRM(21, 
-     &'(LU2ENT:) writing outside LUJETS memory') 
-      KC1=LUCOMP(KF1) 
-      KC2=LUCOMP(KF2) 
-      IF(KC1.EQ.0.OR.KC2.EQ.0) CALL LUERRM(12, 
-     &'(LU2ENT:) unknown flavour code') 
-C...Find masses. Reset K, P and V vectors. 
-      PM1=0. 
-      IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
-      IF(MSTU(10).GE.2) PM1=ULMASS(KF1) 
-      PM2=0. 
-      IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
-      IF(MSTU(10).GE.2) PM2=ULMASS(KF2) 
-      DO 110 I=IPA,IPA+1 
-      DO 100 J=1,5 
-      K(I,J)=0 
-      P(I,J)=0. 
-      V(I,J)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-C...Check flavours. 
-      KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
-      KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
-      IF(MSTU(19).EQ.1) THEN 
-        MSTU(19)=0 
-      ELSE 
-        IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL LUERRM(2, 
-     &  '(LU2ENT:) unphysical flavour combination') 
-      ENDIF 
-      K(IPA,2)=KF1 
-      K(IPA+1,2)=KF2 
-C...Store partons/particles in K vectors for normal case. 
-      IF(IP.GE.0) THEN 
-        K(IPA,1)=1 
-        IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2 
-        K(IPA+1,1)=1 
-C...Store partons in K vectors for parton shower evolution. 
-      ELSE 
-        K(IPA,1)=3 
-        K(IPA+1,1)=3 
-        K(IPA,4)=MSTU(5)*(IPA+1) 
-        K(IPA,5)=K(IPA,4) 
-        K(IPA+1,4)=MSTU(5)*IPA 
-        K(IPA+1,5)=K(IPA+1,4) 
-      ENDIF 
-C...Check kinematics and store partons/particles in P vectors. 
-      IF(PECM.LE.PM1+PM2) CALL LUERRM(13, 
-     &'(LU2ENT:) energy smaller than sum of masses') 
-      PA=SQRT(MAX(0.,(PECM**2-PM1**2-PM2**2)**2-(2.*PM1*PM2)**2))/ 
-     &(2.*PECM) 
-      P(IPA,3)=PA 
-      P(IPA,4)=SQRT(PM1**2+PA**2) 
-      P(IPA,5)=PM1 
-      P(IPA+1,3)=-PA 
-      P(IPA+1,4)=SQRT(PM2**2+PA**2) 
-      P(IPA+1,5)=PM2 
-C...Set N. Optionally fragment/decay. 
-      N=IPA+1 
-      IF(IP.EQ.0) CALL LUEXEC 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lu3ent.F b/PYTHIA/jetset/lu3ent.F
deleted file mode 100644 (file)
index 5171d9a..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LU3ENT(IP,KF1,KF2,KF3,PECM,X1,X3) 
-C...Purpose: to store three partons or particles in their CM frame, 
-C...with the first along the +z axis and the third in the (x,z) 
-C...plane with x > 0. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Standard checks. 
-      MSTU(28)=0 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      IPA=MAX(1,IABS(IP)) 
-      IF(IPA.GT.MSTU(4)-2) CALL LUERRM(21, 
-     &'(LU3ENT:) writing outside LUJETS memory') 
-      KC1=LUCOMP(KF1) 
-      KC2=LUCOMP(KF2) 
-      KC3=LUCOMP(KF3) 
-      IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL LUERRM(12, 
-     &'(LU3ENT:) unknown flavour code') 
-C...Find masses. Reset K, P and V vectors. 
-      PM1=0. 
-      IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
-      IF(MSTU(10).GE.2) PM1=ULMASS(KF1) 
-      PM2=0. 
-      IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
-      IF(MSTU(10).GE.2) PM2=ULMASS(KF2) 
-      PM3=0. 
-      IF(MSTU(10).EQ.1) PM3=P(IPA+2,5) 
-      IF(MSTU(10).GE.2) PM3=ULMASS(KF3) 
-      DO 110 I=IPA,IPA+2 
-      DO 100 J=1,5 
-      K(I,J)=0 
-      P(I,J)=0. 
-      V(I,J)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-C...Check flavours. 
-      KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
-      KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
-      KQ3=KCHG(KC3,2)*ISIGN(1,KF3) 
-      IF(MSTU(19).EQ.1) THEN 
-        MSTU(19)=0 
-      ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN 
-      ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR. 
-     &KQ1+KQ3.EQ.4)) THEN 
-      ELSE 
-        CALL LUERRM(2,'(LU3ENT:) unphysical flavour combination') 
-      ENDIF 
-      K(IPA,2)=KF1 
-      K(IPA+1,2)=KF2 
-      K(IPA+2,2)=KF3 
-C...Store partons/particles in K vectors for normal case. 
-      IF(IP.GE.0) THEN 
-        K(IPA,1)=1 
-        IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2 
-        K(IPA+1,1)=1 
-        IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2 
-        K(IPA+2,1)=1 
-C...Store partons in K vectors for parton shower evolution. 
-      ELSE 
-        K(IPA,1)=3 
-        K(IPA+1,1)=3 
-        K(IPA+2,1)=3 
-        KCS=4 
-        IF(KQ1.EQ.-1) KCS=5 
-        K(IPA,KCS)=MSTU(5)*(IPA+1) 
-        K(IPA,9-KCS)=MSTU(5)*(IPA+2) 
-        K(IPA+1,KCS)=MSTU(5)*(IPA+2) 
-        K(IPA+1,9-KCS)=MSTU(5)*IPA 
-        K(IPA+2,KCS)=MSTU(5)*IPA 
-        K(IPA+2,9-KCS)=MSTU(5)*(IPA+1) 
-      ENDIF 
-C...Check kinematics. 
-      MKERR=0 
-      IF(0.5*X1*PECM.LE.PM1.OR.0.5*(2.-X1-X3)*PECM.LE.PM2.OR. 
-     &0.5*X3*PECM.LE.PM3) MKERR=1 
-      PA1=SQRT(MAX(1E-10,(0.5*X1*PECM)**2-PM1**2)) 
-      PA2=SQRT(MAX(1E-10,(0.5*(2.-X1-X3)*PECM)**2-PM2**2)) 
-      PA3=SQRT(MAX(1E-10,(0.5*X3*PECM)**2-PM3**2)) 
-      CTHE2=(PA3**2-PA1**2-PA2**2)/(2.*PA1*PA2) 
-      CTHE3=(PA2**2-PA1**2-PA3**2)/(2.*PA1*PA3) 
-      IF(ABS(CTHE2).GE.1.001.OR.ABS(CTHE3).GE.1.001) MKERR=1 
-      CTHE3=MAX(-1.,MIN(1.,CTHE3)) 
-      IF(MKERR.NE.0) CALL LUERRM(13, 
-     &'(LU3ENT:) unphysical kinematical variable setup') 
-C...Store partons/particles in P vectors. 
-      P(IPA,3)=PA1 
-      P(IPA,4)=SQRT(PA1**2+PM1**2) 
-      P(IPA,5)=PM1 
-      P(IPA+2,1)=PA3*SQRT(1.-CTHE3**2) 
-      P(IPA+2,3)=PA3*CTHE3 
-      P(IPA+2,4)=SQRT(PA3**2+PM3**2) 
-      P(IPA+2,5)=PM3 
-      P(IPA+1,1)=-P(IPA+2,1) 
-      P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3) 
-      P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2) 
-      P(IPA+1,5)=PM2 
-C...Set N. Optionally fragment/decay. 
-      N=IPA+2 
-      IF(IP.EQ.0) CALL LUEXEC 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lu4ent.F b/PYTHIA/jetset/lu4ent.F
deleted file mode 100644 (file)
index 24909d2..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LU4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14) 
-C...Purpose: to store four partons or particles in their CM frame, with 
-C...the first along the +z axis, the last in the xz plane with x > 0 
-C...and the second having y < 0 and y > 0 with equal probability. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Standard checks. 
-      MSTU(28)=0 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      IPA=MAX(1,IABS(IP)) 
-      IF(IPA.GT.MSTU(4)-3) CALL LUERRM(21, 
-     &'(LU4ENT:) writing outside LUJETS momory') 
-      KC1=LUCOMP(KF1) 
-      KC2=LUCOMP(KF2) 
-      KC3=LUCOMP(KF3) 
-      KC4=LUCOMP(KF4) 
-      IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL LUERRM(12, 
-     &'(LU4ENT:) unknown flavour code') 
-C...Find masses. Reset K, P and V vectors. 
-      PM1=0. 
-      IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
-      IF(MSTU(10).GE.2) PM1=ULMASS(KF1) 
-      PM2=0. 
-      IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
-      IF(MSTU(10).GE.2) PM2=ULMASS(KF2) 
-      PM3=0. 
-      IF(MSTU(10).EQ.1) PM3=P(IPA+2,5) 
-      IF(MSTU(10).GE.2) PM3=ULMASS(KF3) 
-      PM4=0. 
-      IF(MSTU(10).EQ.1) PM4=P(IPA+3,5) 
-      IF(MSTU(10).GE.2) PM4=ULMASS(KF4) 
-      DO 110 I=IPA,IPA+3 
-      DO 100 J=1,5 
-      K(I,J)=0 
-      P(I,J)=0. 
-      V(I,J)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-C...Check flavours. 
-      KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
-      KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
-      KQ3=KCHG(KC3,2)*ISIGN(1,KF3) 
-      KQ4=KCHG(KC4,2)*ISIGN(1,KF4) 
-      IF(MSTU(19).EQ.1) THEN 
-        MSTU(19)=0 
-      ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN 
-      ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR. 
-     &KQ1+KQ4.EQ.4)) THEN 
-      ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0.) 
-     &THEN 
-      ELSE 
-        CALL LUERRM(2,'(LU4ENT:) unphysical flavour combination') 
-      ENDIF 
-      K(IPA,2)=KF1 
-      K(IPA+1,2)=KF2 
-      K(IPA+2,2)=KF3 
-      K(IPA+3,2)=KF4 
-C...Store partons/particles in K vectors for normal case. 
-      IF(IP.GE.0) THEN 
-        K(IPA,1)=1 
-        IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2 
-        K(IPA+1,1)=1 
-        IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0)) 
-     &  K(IPA+1,1)=2 
-        K(IPA+2,1)=1 
-        IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2 
-        K(IPA+3,1)=1 
-C...Store partons for parton shower evolution from q-g-g-qbar or 
-C...g-g-g-g event. 
-      ELSEIF(KQ1+KQ2.NE.0) THEN 
-        K(IPA,1)=3 
-        K(IPA+1,1)=3 
-        K(IPA+2,1)=3 
-        K(IPA+3,1)=3 
-        KCS=4 
-        IF(KQ1.EQ.-1) KCS=5 
-        K(IPA,KCS)=MSTU(5)*(IPA+1) 
-        K(IPA,9-KCS)=MSTU(5)*(IPA+3) 
-        K(IPA+1,KCS)=MSTU(5)*(IPA+2) 
-        K(IPA+1,9-KCS)=MSTU(5)*IPA 
-        K(IPA+2,KCS)=MSTU(5)*(IPA+3) 
-        K(IPA+2,9-KCS)=MSTU(5)*(IPA+1) 
-        K(IPA+3,KCS)=MSTU(5)*IPA 
-        K(IPA+3,9-KCS)=MSTU(5)*(IPA+2) 
-C...Store partons for parton shower evolution from q-qbar-q-qbar event. 
-      ELSE 
-        K(IPA,1)=3 
-        K(IPA+1,1)=3 
-        K(IPA+2,1)=3 
-        K(IPA+3,1)=3 
-        K(IPA,4)=MSTU(5)*(IPA+1) 
-        K(IPA,5)=K(IPA,4) 
-        K(IPA+1,4)=MSTU(5)*IPA 
-        K(IPA+1,5)=K(IPA+1,4) 
-        K(IPA+2,4)=MSTU(5)*(IPA+3) 
-        K(IPA+2,5)=K(IPA+2,4) 
-        K(IPA+3,4)=MSTU(5)*(IPA+2) 
-        K(IPA+3,5)=K(IPA+3,4) 
-      ENDIF 
-C...Check kinematics. 
-      MKERR=0 
-      IF(0.5*X1*PECM.LE.PM1.OR.0.5*X2*PECM.LE.PM2.OR.0.5*(2.-X1-X2-X4)* 
-     &PECM.LE.PM3.OR.0.5*X4*PECM.LE.PM4) MKERR=1 
-      PA1=SQRT(MAX(1E-10,(0.5*X1*PECM)**2-PM1**2)) 
-      PA2=SQRT(MAX(1E-10,(0.5*X2*PECM)**2-PM2**2)) 
-      PA4=SQRT(MAX(1E-10,(0.5*X4*PECM)**2-PM4**2)) 
-      X24=X1+X2+X4-1.-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2 
-      CTHE4=(X1*X4-2.*X14)*PECM**2/(4.*PA1*PA4) 
-      IF(ABS(CTHE4).GE.1.002) MKERR=1 
-      CTHE4=MAX(-1.,MIN(1.,CTHE4)) 
-      STHE4=SQRT(1.-CTHE4**2) 
-      CTHE2=(X1*X2-2.*X12)*PECM**2/(4.*PA1*PA2) 
-      IF(ABS(CTHE2).GE.1.002) MKERR=1 
-      CTHE2=MAX(-1.,MIN(1.,CTHE2)) 
-      STHE2=SQRT(1.-CTHE2**2) 
-      CPHI2=((X2*X4-2.*X24)*PECM**2-4.*PA2*CTHE2*PA4*CTHE4)/ 
-     &MAX(1E-8*PECM**2,4.*PA2*STHE2*PA4*STHE4) 
-      IF(ABS(CPHI2).GE.1.05) MKERR=1 
-      CPHI2=MAX(-1.,MIN(1.,CPHI2)) 
-      IF(MKERR.EQ.1) CALL LUERRM(13, 
-     &'(LU4ENT:) unphysical kinematical variable setup') 
-C...Store partons/particles in P vectors. 
-      P(IPA,3)=PA1 
-      P(IPA,4)=SQRT(PA1**2+PM1**2) 
-      P(IPA,5)=PM1 
-      P(IPA+3,1)=PA4*STHE4 
-      P(IPA+3,3)=PA4*CTHE4 
-      P(IPA+3,4)=SQRT(PA4**2+PM4**2) 
-      P(IPA+3,5)=PM4 
-      P(IPA+1,1)=PA2*STHE2*CPHI2 
-      P(IPA+1,2)=PA2*STHE2*SQRT(1.-CPHI2**2)*(-1.)**INT(RLU(0)+0.5) 
-      P(IPA+1,3)=PA2*CTHE2 
-      P(IPA+1,4)=SQRT(PA2**2+PM2**2) 
-      P(IPA+1,5)=PM2 
-      P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1) 
-      P(IPA+2,2)=-P(IPA+1,2) 
-      P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3) 
-      P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2) 
-      P(IPA+2,5)=PM3 
-C...Set N. Optionally fragment/decay. 
-      N=IPA+3 
-      IF(IP.EQ.0) CALL LUEXEC 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luboei.F b/PYTHIA/jetset/luboei.F
deleted file mode 100644 (file)
index f41dea2..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUBOEI(NSAV) 
-C...Purpose: to modify event so as to approximately take into account 
-C...Bose-Einstein effects according to a simple phenomenological 
-C...parametrization. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUJETS/,/LUDAT1/ 
-      DIMENSION DPS(4),KFBE(9),NBE(0:9),BEI(100) 
-      DATA KFBE/211,-211,111,321,-321,130,310,221,331/ 
-C...Boost event to overall CM frame. Calculate CM energy. 
-      IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN 
-      DO 100 J=1,4 
-      DPS(J)=0. 
-  100 CONTINUE 
-      DO 120 I=1,N 
-      KFA=IABS(K(I,2))
-      IF(K(I,1).LE.10.AND.((KFA.GT.10.AND.KFA.LE.20).OR.KFA.EQ.22).AND.
-     &K(I,3).GT.0) THEN
-        KFMA=IABS(K(K(I,3),2))
-        IF(KFMA.GT.10.AND.KFMA.LE.80) K(I,1)=-K(I,1)
-      ENDIF
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120 
-      DO 110 J=1,4 
-      DPS(J)=DPS(J)+P(I,J) 
-  110 CONTINUE 
-  120 CONTINUE 
-      CALL LUDBRB(0,0,0.,0.,-DPS(1)/DPS(4),-DPS(2)/DPS(4), 
-     &-DPS(3)/DPS(4)) 
-      PECM=0. 
-      DO 130 I=1,N 
-      IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4) 
-  130 CONTINUE 
-C...Reserve copy of particles by species at end of record. 
-      NBE(0)=N+MSTU(3) 
-      DO 160 IBE=1,MIN(9,MSTJ(52)) 
-      NBE(IBE)=NBE(IBE-1) 
-      DO 150 I=NSAV+1,N 
-      IF(K(I,2).NE.KFBE(IBE)) GOTO 150 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150 
-      IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUBOEI:) no more memory left in LUJETS') 
-        RETURN 
-      ENDIF 
-      NBE(IBE)=NBE(IBE)+1 
-      K(NBE(IBE),1)=I 
-      DO 140 J=1,3 
-      P(NBE(IBE),J)=0. 
-  140 CONTINUE 
-  150 CONTINUE 
-  160 CONTINUE 
-      IF(NBE(MIN(9,MSTJ(52)))-NBE(0).LE.1) GOTO 280
-C...Tabulate integral for subsequent momentum shift. 
-      DO 220 IBE=1,MIN(9,MSTJ(52)) 
-      IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 180 
-      IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2)) 
-     &.LE.1) GOTO 180 
-      IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5), 
-     &NBE(7)-NBE(6)).LE.1) GOTO 180 
-      IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 180 
-      IF(IBE.EQ.1) PMHQ=2.*ULMASS(211) 
-      IF(IBE.EQ.4) PMHQ=2.*ULMASS(321) 
-      IF(IBE.EQ.8) PMHQ=2.*ULMASS(221) 
-      IF(IBE.EQ.9) PMHQ=2.*ULMASS(331) 
-      QDEL=0.1*MIN(PMHQ,PARJ(93)) 
-      IF(MSTJ(51).EQ.1) THEN 
-        NBIN=MIN(100,NINT(9.*PARJ(93)/QDEL)) 
-        BEEX=EXP(0.5*QDEL/PARJ(93)) 
-        BERT=EXP(-QDEL/PARJ(93)) 
-      ELSE 
-        NBIN=MIN(100,NINT(3.*PARJ(93)/QDEL)) 
-      ENDIF 
-      DO 170 IBIN=1,NBIN 
-      QBIN=QDEL*(IBIN-0.5) 
-      BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12.)/SQRT(QBIN**2+PMHQ**2) 
-      IF(MSTJ(51).EQ.1) THEN 
-        BEEX=BEEX*BERT 
-        BEI(IBIN)=BEI(IBIN)*BEEX 
-      ELSE 
-        BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2) 
-      ENDIF 
-      IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1) 
-  170 CONTINUE 
-C...Loop through particle pairs and find old relative momentum. 
-  180 DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)-1 
-      I1=K(I1M,1) 
-      DO 200 I2M=I1M+1,NBE(IBE) 
-      I2=K(I2M,1) 
-      Q2OLD=MAX(0.,(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+ 
-     &P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2) 
-      QOLD=SQRT(Q2OLD) 
-C...Calculate new relative momentum. 
-      IF(QOLD.LT.1E-3*QDEL) THEN 
-        GOTO 200 
-      ELSEIF(QOLD.LE.QDEL) THEN 
-        QMOV=QOLD/3. 
-      ELSEIF(QOLD.LT.(NBIN-0.1)*QDEL) THEN 
-        RBIN=QOLD/QDEL 
-        IBIN=RBIN 
-        RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1) 
-        QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))* 
-     &  SQRT(Q2OLD+PMHQ**2)/Q2OLD 
-      ELSE 
-        QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD 
-      ENDIF 
-      Q2NEW=Q2OLD*(QOLD/(QOLD+3.*PARJ(92)*QMOV))**(2./3.) 
-C...Calculate and save shift to be performed on three-momenta. 
-      HC1=(P(I1,4)+P(I2,4))**2-(Q2OLD-Q2NEW) 
-      HC2=(Q2OLD-Q2NEW)*(P(I1,4)-P(I2,4))**2 
-      HA=0.5*(1.-SQRT(HC1*Q2NEW/(HC1*Q2OLD-HC2))) 
-      DO 190 J=1,3 
-      PD=HA*(P(I2,J)-P(I1,J)) 
-      P(I1M,J)=P(I1M,J)+PD 
-      P(I2M,J)=P(I2M,J)-PD 
-  190 CONTINUE 
-  200 CONTINUE 
-  210 CONTINUE 
-  220 CONTINUE 
-C...Shift momenta and recalculate energies. 
-      DO 240 IM=NBE(0)+1,NBE(MIN(9,MSTJ(52))) 
-      I=K(IM,1) 
-      DO 230 J=1,3 
-      P(I,J)=P(I,J)+P(IM,J) 
-  230 CONTINUE 
-      P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-  240 CONTINUE 
-C...Rescale all momenta for energy conservation. 
-      PES=0. 
-      PQS=0. 
-      DO 250 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 250 
-      PES=PES+P(I,4) 
-      PQS=PQS+P(I,5)**2/P(I,4) 
-  250 CONTINUE 
-      FAC=(PECM-PQS)/(PES-PQS) 
-      DO 270 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 270 
-      DO 260 J=1,3 
-      P(I,J)=FAC*P(I,J) 
-  260 CONTINUE 
-      P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-  270 CONTINUE 
-C...Boost back to correct reference frame. 
-  280 CALL LUDBRB(0,0,0.,0.,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4)) 
-      DO 290 I=1,N
-      IF(K(I,1).LT.0) K(I,1)=-K(I,1)
-  290 CONTINUE
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lucell.F b/PYTHIA/jetset/lucell.F
deleted file mode 100644 (file)
index fdb5b81..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUCELL(NJET) 
-C...Purpose: to provide a simple way of jet finding in an eta-phi-ET 
-C...coordinate frame, as used for calorimeters at hadron colliders. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Loop over all particles. Find cell that was hit by given particle. 
-      PTLRAT=1./SINH(PARU(51))**2 
-      NP=0 
-      NC=N 
-      DO 110 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110 
-      IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LUCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 110 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &  GOTO 110 
-      ENDIF 
-      NP=NP+1 
-      PT=SQRT(P(I,1)**2+P(I,2)**2) 
-      ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3)) 
-      IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5*(ETA/PARU(51)+1.)))) 
-      PHI=ULANGL(P(I,1),P(I,2)) 
-      IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5*(PHI/PARU(1)+1.)))) 
-      IETPH=MSTU(52)*IETA+IPHI 
-C...Add to cell already hit, or book new cell. 
-      DO 100 IC=N+1,NC 
-      IF(IETPH.EQ.K(IC,3)) THEN 
-        K(IC,4)=K(IC,4)+1 
-        P(IC,5)=P(IC,5)+PT 
-        GOTO 110 
-      ENDIF 
-  100 CONTINUE 
-      IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUCELL:) no more memory left in LUJETS') 
-        NJET=-2 
-        RETURN 
-      ENDIF 
-      NC=NC+1 
-      K(NC,3)=IETPH 
-      K(NC,4)=1 
-      K(NC,5)=2 
-      P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51)) 
-      P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52)) 
-      P(NC,5)=PT 
-  110 CONTINUE 
-C...Smear true bin content by calorimeter resolution. 
-      IF(MSTU(53).GE.1) THEN 
-        DO 130 IC=N+1,NC 
-        PEI=P(IC,5) 
-        IF(MSTU(53).EQ.2) PEI=P(IC,5)*COSH(P(IC,1)) 
-  120   PEF=PEI+PARU(55)*SQRT(-2.*LOG(MAX(1E-10,RLU(0)))*PEI)* 
-     &  COS(PARU(2)*RLU(0)) 
-        IF(PEF.LT.0..OR.PEF.GT.PARU(56)*PEI) GOTO 120 
-        P(IC,5)=PEF 
-        IF(MSTU(53).EQ.2) P(IC,5)=PEF/COSH(P(IC,1)) 
-  130   CONTINUE 
-      ENDIF 
-C...Remove cells below threshold. 
-      IF(PARU(58).GT.0.) THEN 
-        NCC=NC 
-        NC=N 
-        DO 140 IC=N+1,NCC 
-        IF(P(IC,5).GT.PARU(58)) THEN 
-          NC=NC+1 
-          K(NC,3)=K(IC,3) 
-          K(NC,4)=K(IC,4) 
-          K(NC,5)=K(IC,5) 
-          P(NC,1)=P(IC,1) 
-          P(NC,2)=P(IC,2) 
-          P(NC,5)=P(IC,5) 
-        ENDIF 
-  140   CONTINUE 
-      ENDIF 
-C...Find initiator cell: the one with highest pT of not yet used ones. 
-      NJ=NC 
-  150 ETMAX=0. 
-      DO 160 IC=N+1,NC 
-      IF(K(IC,5).NE.2) GOTO 160 
-      IF(P(IC,5).LE.ETMAX) GOTO 160 
-      ICMAX=IC 
-      ETA=P(IC,1) 
-      PHI=P(IC,2) 
-      ETMAX=P(IC,5) 
-  160 CONTINUE 
-      IF(ETMAX.LT.PARU(52)) GOTO 220 
-      IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUCELL:) no more memory left in LUJETS') 
-        NJET=-2 
-        RETURN 
-      ENDIF 
-      K(ICMAX,5)=1 
-      NJ=NJ+1 
-      K(NJ,4)=0 
-      K(NJ,5)=1 
-      P(NJ,1)=ETA 
-      P(NJ,2)=PHI 
-      P(NJ,3)=0. 
-      P(NJ,4)=0. 
-      P(NJ,5)=0. 
-C...Sum up unused cells within required distance of initiator. 
-      DO 170 IC=N+1,NC 
-      IF(K(IC,5).EQ.0) GOTO 170 
-      IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170 
-      DPHIA=ABS(P(IC,2)-PHI) 
-      IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170 
-      PHIC=P(IC,2) 
-      IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI) 
-      IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170 
-      K(IC,5)=-K(IC,5) 
-      K(NJ,4)=K(NJ,4)+K(IC,4) 
-      P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1) 
-      P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC 
-      P(NJ,5)=P(NJ,5)+P(IC,5) 
-  170 CONTINUE 
-C...Reject cluster below minimum ET, else accept. 
-      IF(P(NJ,5).LT.PARU(53)) THEN 
-        NJ=NJ-1 
-        DO 180 IC=N+1,NC 
-        IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5) 
-  180   CONTINUE 
-      ELSEIF(MSTU(54).LE.2) THEN 
-        P(NJ,3)=P(NJ,3)/P(NJ,5) 
-        P(NJ,4)=P(NJ,4)/P(NJ,5) 
-        IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2), 
-     &  P(NJ,4)) 
-        DO 190 IC=N+1,NC 
-        IF(K(IC,5).LT.0) K(IC,5)=0 
-  190   CONTINUE 
-      ELSE 
-        DO 200 J=1,4 
-        P(NJ,J)=0. 
-  200   CONTINUE 
-        DO 210 IC=N+1,NC 
-        IF(K(IC,5).GE.0) GOTO 210 
-        P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2)) 
-        P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2)) 
-        P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1)) 
-        P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1)) 
-        K(IC,5)=0 
-  210   CONTINUE 
-      ENDIF 
-      GOTO 150 
-C...Arrange clusters in falling ET sequence. 
-  220 DO 250 I=1,NJ-NC 
-      ETMAX=0. 
-      DO 230 IJ=NC+1,NJ 
-      IF(K(IJ,5).EQ.0) GOTO 230 
-      IF(P(IJ,5).LT.ETMAX) GOTO 230 
-      IJMAX=IJ 
-      ETMAX=P(IJ,5) 
-  230 CONTINUE 
-      K(IJMAX,5)=0 
-      K(N+I,1)=31 
-      K(N+I,2)=98 
-      K(N+I,3)=I 
-      K(N+I,4)=K(IJMAX,4) 
-      K(N+I,5)=0 
-      DO 240 J=1,5 
-      P(N+I,J)=P(IJMAX,J) 
-      V(N+I,J)=0. 
-  240 CONTINUE 
-  250 CONTINUE 
-      NJET=NJ-NC 
-C...Convert to massless or massive four-vectors. 
-      IF(MSTU(54).EQ.2) THEN 
-        DO 260 I=N+1,N+NJET 
-        ETA=P(I,3) 
-        P(I,1)=P(I,5)*COS(P(I,4)) 
-        P(I,2)=P(I,5)*SIN(P(I,4)) 
-        P(I,3)=P(I,5)*SINH(ETA) 
-        P(I,4)=P(I,5)*COSH(ETA) 
-        P(I,5)=0. 
-  260   CONTINUE 
-      ELSEIF(MSTU(54).GE.3) THEN 
-        DO 270 I=N+1,N+NJET 
-        P(I,5)=SQRT(MAX(0.,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2)) 
-  270   CONTINUE 
-      ENDIF 
-C...Information about storage. 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      MSTU(63)=NC-N 
-      IF(MSTU(43).LE.1) MSTU(3)=NJET 
-      IF(MSTU(43).GE.2) N=N+NJET 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luchge.F b/PYTHIA/jetset/luchge.F
deleted file mode 100644 (file)
index b59fba3..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-C********************************************************************* 
-      FUNCTION LUCHGE(KF) 
-C...Purpose: to give three times the charge for a particle/parton. 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUDAT2/ 
-C...Initial values. Simple case of direct readout. 
-      LUCHGE=0 
-      KFA=IABS(KF) 
-      KC=LUCOMP(KFA) 
-      IF(KC.EQ.0) THEN 
-      ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN 
-        LUCHGE=KCHG(KC,1) 
-C...Construction from quark content for heavy meson, diquark, baryon. 
-      ELSEIF(MOD(KFA/1000,10).EQ.0) THEN 
-        LUCHGE=(KCHG(MOD(KFA/100,10),1)-KCHG(MOD(KFA/10,10),1))* 
-     &  (-1)**MOD(KFA/100,10) 
-      ELSEIF(MOD(KFA/10,10).EQ.0) THEN 
-        LUCHGE=KCHG(MOD(KFA/1000,10),1)+KCHG(MOD(KFA/100,10),1) 
-      ELSE 
-        LUCHGE=KCHG(MOD(KFA/1000,10),1)+KCHG(MOD(KFA/100,10),1)+ 
-     &  KCHG(MOD(KFA/10,10),1) 
-      ENDIF 
-C...Add on correct sign. 
-      LUCHGE=LUCHGE*ISIGN(1,KF) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luclus.F b/PYTHIA/jetset/luclus.F
deleted file mode 100644 (file)
index 0586731..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUCLUS(NJET) 
-C...Purpose: to subdivide the particle content of an event into 
-C...jets/clusters. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION PS(5) 
-      SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM 
-C...Functions: distance measure in pT or (pseudo)mass. 
-      R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)- 
-     &P(I1,3)*P(I2,3))*2.*P(I1,5)*P(I2,5)/(0.0001+P(I1,5)+P(I2,5))**2 
-      R2M(I1,I2)=2.*P(I1,4)*P(I2,4)*(1.-(P(I1,1)*P(I2,1)+P(I1,2)* 
-     &P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5))) 
-C...If first time, reset. If reentering, skip preliminaries. 
-      IF(MSTU(48).LE.0) THEN 
-        NP=0 
-        DO 100 J=1,5 
-        PS(J)=0. 
-  100   CONTINUE 
-        PSS=0. 
-      ELSE 
-        NJET=NSAV 
-        IF(MSTU(43).GE.2) N=N-NJET 
-        DO 110 I=N+1,N+NJET 
-        P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-  110   CONTINUE 
-        IF(MSTU(46).LE.3) R2ACC=PARU(44)**2 
-        IF(MSTU(46).GE.4) R2ACC=PARU(45)*PS(5)**2 
-        NLOOP=0 
-        GOTO 300 
-      ENDIF 
-C...Find which particles are to be considered in cluster search. 
-      DO 140 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LUCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 140 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &  GOTO 140 
-      ENDIF 
-      IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUCLUS:) no more memory left in LUJETS') 
-        NJET=-1 
-        RETURN 
-      ENDIF 
-C...Take copy of these particles, with space left for jets later on. 
-      NP=NP+1 
-      K(N+NP,3)=I 
-      DO 120 J=1,5 
-      P(N+NP,J)=P(I,J) 
-  120 CONTINUE 
-      IF(MSTU(42).EQ.0) P(N+NP,5)=0. 
-      IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PMAS(101,1) 
-      P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      DO 130 J=1,4 
-      PS(J)=PS(J)+P(N+NP,J) 
-  130 CONTINUE 
-      PSS=PSS+P(N+NP,5) 
-  140 CONTINUE 
-      DO 160 I=N+1,N+NP 
-      K(I+NP,3)=K(I,3) 
-      DO 150 J=1,5 
-      P(I+NP,J)=P(I,J) 
-  150 CONTINUE 
-  160 CONTINUE 
-      PS(5)=SQRT(MAX(0.,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2)) 
-C...Very low multiplicities not considered. 
-      IF(NP.LT.MSTU(47)) THEN 
-        CALL LUERRM(8,'(LUCLUS:) too few particles for analysis') 
-        NJET=-1 
-        RETURN 
-      ENDIF 
-C...Find precluster configuration. If too few jets, make harder cuts. 
-      NLOOP=0 
-      IF(MSTU(46).LE.3) R2ACC=PARU(44)**2 
-      IF(MSTU(46).GE.4) R2ACC=PARU(45)*PS(5)**2 
-      RINIT=1.25*PARU(43) 
-      IF(NP.LE.MSTU(47)+2) RINIT=0. 
-  170 RINIT=0.8*RINIT 
-      NPRE=0 
-      NREM=NP 
-      DO 180 I=N+NP+1,N+2*NP 
-      K(I,4)=0 
-  180 CONTINUE 
-C...Sum up small momentum region. Jet if enough absolute momentum. 
-      IF(MSTU(46).LE.2) THEN 
-        DO 190 J=1,4 
-        P(N+1,J)=0. 
-  190   CONTINUE 
-        DO 210 I=N+NP+1,N+2*NP 
-        IF(P(I,5).GT.2.*RINIT) GOTO 210 
-        NREM=NREM-1 
-        K(I,4)=1 
-        DO 200 J=1,4 
-        P(N+1,J)=P(N+1,J)+P(I,J) 
-  200   CONTINUE 
-  210   CONTINUE 
-        P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2) 
-        IF(P(N+1,5).GT.2.*RINIT) NPRE=1 
-        IF(RINIT.GE.0.2*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170 
-        IF(NREM.EQ.0) GOTO 170 
-      ENDIF 
-C...Find fastest remaining particle. 
-  220 NPRE=NPRE+1 
-      PMAX=0. 
-      DO 230 I=N+NP+1,N+2*NP 
-      IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230 
-      IMAX=I 
-      PMAX=P(I,5) 
-  230 CONTINUE 
-      DO 240 J=1,5 
-      P(N+NPRE,J)=P(IMAX,J) 
-  240 CONTINUE 
-      NREM=NREM-1 
-      K(IMAX,4)=NPRE 
-C...Sum up precluster around it according to pT separation. 
-      IF(MSTU(46).LE.2) THEN 
-        DO 260 I=N+NP+1,N+2*NP 
-        IF(K(I,4).NE.0) GOTO 260 
-        R2=R2T(I,IMAX) 
-        IF(R2.GT.RINIT**2) GOTO 260 
-        NREM=NREM-1 
-        K(I,4)=NPRE 
-        DO 250 J=1,4 
-        P(N+NPRE,J)=P(N+NPRE,J)+P(I,J) 
-  250   CONTINUE 
-  260   CONTINUE 
-        P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2) 
-C...Sum up precluster around it according to mass separation. 
-      ELSE 
-  270   IMIN=0 
-        R2MIN=RINIT**2 
-        DO 280 I=N+NP+1,N+2*NP 
-        IF(K(I,4).NE.0) GOTO 280 
-        R2=R2M(I,N+NPRE) 
-        IF(R2.GE.R2MIN) GOTO 280 
-        IMIN=I 
-        R2MIN=R2 
-  280   CONTINUE 
-        IF(IMIN.NE.0) THEN 
-          DO 290 J=1,4 
-          P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J) 
-  290     CONTINUE 
-          P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2) 
-          NREM=NREM-1 
-          K(IMIN,4)=NPRE 
-          GOTO 270 
-        ENDIF 
-      ENDIF 
-C...Check if more preclusters to be found. Start over if too few. 
-      IF(RINIT.GE.0.2*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170 
-      IF(NREM.GT.0) GOTO 220 
-      NJET=NPRE 
-C...Reassign all particles to nearest jet. Sum up new jet momenta. 
-  300 TSAV=0. 
-      PSJT=0. 
-  310 IF(MSTU(46).LE.1) THEN 
-        DO 330 I=N+1,N+NJET 
-        DO 320 J=1,4 
-        V(I,J)=0. 
-  320   CONTINUE 
-  330 CONTINUE 
-        DO 360 I=N+NP+1,N+2*NP 
-        R2MIN=PSS**2 
-        DO 340 IJET=N+1,N+NJET 
-        IF(P(IJET,5).LT.RINIT) GOTO 340 
-        R2=R2T(I,IJET) 
-        IF(R2.GE.R2MIN) GOTO 340 
-        IMIN=IJET 
-        R2MIN=R2 
-  340   CONTINUE 
-        K(I,4)=IMIN-N 
-        DO 350 J=1,4 
-        V(IMIN,J)=V(IMIN,J)+P(I,J) 
-  350   CONTINUE 
-  360   CONTINUE 
-        PSJT=0. 
-        DO 380 I=N+1,N+NJET 
-        DO 370 J=1,4 
-        P(I,J)=V(I,J) 
-  370   CONTINUE 
-        P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-        PSJT=PSJT+P(I,5) 
-  380   CONTINUE 
-      ENDIF 
-C...Find two closest jets. 
-      R2MIN=2.*MAX(R2ACC,PS(5)**2) 
-      DO 400 ITRY1=N+1,N+NJET-1 
-      DO 390 ITRY2=ITRY1+1,N+NJET 
-      IF(MSTU(46).LE.2) R2=R2T(ITRY1,ITRY2) 
-      IF(MSTU(46).GE.3) R2=R2M(ITRY1,ITRY2) 
-      IF(R2.GE.R2MIN) GOTO 390 
-      IMIN1=ITRY1 
-      IMIN2=ITRY2 
-      R2MIN=R2 
-  390 CONTINUE 
-  400 CONTINUE 
-C...If allowed, join two closest jets and start over. 
-      IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN 
-        IREC=MIN(IMIN1,IMIN2) 
-        IDEL=MAX(IMIN1,IMIN2) 
-        DO 410 J=1,4 
-        P(IREC,J)=P(IMIN1,J)+P(IMIN2,J) 
-  410   CONTINUE 
-        P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2) 
-        DO 430 I=IDEL+1,N+NJET 
-        DO 420 J=1,5 
-        P(I-1,J)=P(I,J) 
-  420   CONTINUE 
-  430 CONTINUE 
-        IF(MSTU(46).GE.2) THEN 
-          DO 440 I=N+NP+1,N+2*NP 
-          IORI=N+K(I,4) 
-          IF(IORI.EQ.IDEL) K(I,4)=IREC-N 
-          IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1 
-  440     CONTINUE 
-        ENDIF 
-        NJET=NJET-1 
-        GOTO 300 
-C...Divide up broad jet if empty cluster in list of final ones. 
-      ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN 
-        DO 450 I=N+1,N+NJET 
-        K(I,5)=0 
-  450   CONTINUE 
-        DO 460 I=N+NP+1,N+2*NP 
-        K(N+K(I,4),5)=K(N+K(I,4),5)+1 
-  460   CONTINUE 
-        IEMP=0 
-        DO 470 I=N+1,N+NJET 
-        IF(K(I,5).EQ.0) IEMP=I 
-  470   CONTINUE 
-        IF(IEMP.NE.0) THEN 
-          NLOOP=NLOOP+1 
-          ISPL=0 
-          R2MAX=0. 
-          DO 480 I=N+NP+1,N+2*NP 
-          IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480 
-          IJET=N+K(I,4) 
-          R2=R2T(I,IJET) 
-          IF(R2.LE.R2MAX) GOTO 480 
-          ISPL=I 
-          R2MAX=R2 
-  480     CONTINUE 
-          IF(ISPL.NE.0) THEN 
-            IJET=N+K(ISPL,4) 
-            DO 490 J=1,4 
-            P(IEMP,J)=P(ISPL,J) 
-            P(IJET,J)=P(IJET,J)-P(ISPL,J) 
-  490       CONTINUE 
-            P(IEMP,5)=P(ISPL,5) 
-            P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2) 
-            IF(NLOOP.LE.2) GOTO 300 
-          ENDIF 
-        ENDIF 
-      ENDIF 
-C...If generalized thrust has not yet converged, continue iteration. 
-      IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48)) 
-     &THEN 
-        TSAV=PSJT/PSS 
-        GOTO 310 
-      ENDIF 
-C...Reorder jets according to energy. 
-      DO 510 I=N+1,N+NJET 
-      DO 500 J=1,5 
-      V(I,J)=P(I,J) 
-  500 CONTINUE 
-  510 CONTINUE 
-      DO 540 INEW=N+1,N+NJET 
-      PEMAX=0. 
-      DO 520 ITRY=N+1,N+NJET 
-      IF(V(ITRY,4).LE.PEMAX) GOTO 520 
-      IMAX=ITRY 
-      PEMAX=V(ITRY,4) 
-  520 CONTINUE 
-      K(INEW,1)=31 
-      K(INEW,2)=97 
-      K(INEW,3)=INEW-N 
-      K(INEW,4)=0 
-      DO 530 J=1,5 
-      P(INEW,J)=V(IMAX,J) 
-  530 CONTINUE 
-      V(IMAX,4)=-1. 
-      K(IMAX,5)=INEW 
-  540 CONTINUE 
-C...Clean up particle-jet assignments and jet information. 
-      DO 550 I=N+NP+1,N+2*NP 
-      IORI=K(N+K(I,4),5) 
-      K(I,4)=IORI-N 
-      IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N 
-      K(IORI,4)=K(IORI,4)+1 
-  550 CONTINUE 
-      IEMP=0 
-      PSJT=0. 
-      DO 570 I=N+1,N+NJET 
-      K(I,5)=0 
-      PSJT=PSJT+P(I,5) 
-      P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0.)) 
-      DO 560 J=1,5 
-      V(I,J)=0. 
-  560 CONTINUE 
-      IF(K(I,4).EQ.0) IEMP=I 
-  570 CONTINUE 
-C...Select storing option. Output variables. Check for failure. 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      MSTU(63)=NPRE 
-      PARU(61)=PS(5) 
-      PARU(62)=PSJT/PSS 
-      PARU(63)=SQRT(R2MIN) 
-      IF(NJET.LE.1) PARU(63)=0. 
-      IF(IEMP.NE.0) THEN 
-        CALL LUERRM(8,'(LUCLUS:) failed to reconstruct as requested') 
-        NJET=-1 
-      ENDIF 
-      IF(MSTU(43).LE.1) MSTU(3)=NJET 
-      IF(MSTU(43).GE.2) N=N+NJET 
-      NSAV=NJET 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lucomp.F b/PYTHIA/jetset/lucomp.F
deleted file mode 100644 (file)
index 3455c36..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-C********************************************************************* 
-      FUNCTION LUCOMP(KF) 
-C...Purpose: to compress the standard KF codes for use in mass and decay 
-C...arrays; also to check whether a given code actually is defined. 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUDAT2/ 
-      DIMENSION KFTAB(25),KCTAB(25) 
-      DATA KFTAB/211,111,221,311,321,130,310,213,113,223, 
-     &313,323,2112,2212,210,2110,2210,110,220,330,440,30443,30553,0,0/ 
-      DATA KCTAB/101,111,112,102,103,221,222,121,131,132, 
-     &122,123,332,333,281,282,283,284,285,286,287,231,235,0,0/ 
-C...Starting values. 
-      LUCOMP=0 
-      KFA=IABS(KF) 
-C...Simple cases: direct translation or table. 
-      IF(KFA.EQ.0.OR.KFA.GE.100000) THEN 
-        RETURN 
-      ELSEIF(KFA.LE.100) THEN 
-        LUCOMP=KFA 
-        IF(KF.LT.0.AND.KCHG(KFA,3).EQ.0) LUCOMP=0 
-        RETURN 
-      ELSE 
-        DO 100 IKF=1,23 
-        IF(KFA.EQ.KFTAB(IKF)) THEN 
-          LUCOMP=KCTAB(IKF) 
-          IF(KF.LT.0.AND.KCHG(LUCOMP,3).EQ.0) LUCOMP=0 
-          RETURN 
-        ENDIF 
-  100   CONTINUE 
-      ENDIF 
-C...Subdivide KF code into constituent pieces. 
-      KFLA=MOD(KFA/1000,10) 
-      KFLB=MOD(KFA/100,10) 
-      KFLC=MOD(KFA/10,10) 
-      KFLS=MOD(KFA,10) 
-      KFLR=MOD(KFA/10000,10) 
-C...Mesons. 
-      IF(KFA-10000*KFLR.LT.1000) THEN 
-        IF(KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.0.OR.KFLC.EQ.9) THEN 
-        ELSEIF(KFLB.LT.KFLC) THEN 
-        ELSEIF(KF.LT.0.AND.KFLB.EQ.KFLC) THEN 
-        ELSEIF(KFLB.EQ.KFLC) THEN 
-          IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
-            LUCOMP=110+KFLB 
-          ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
-            LUCOMP=130+KFLB 
-          ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
-            LUCOMP=150+KFLB 
-          ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
-            LUCOMP=170+KFLB 
-          ELSEIF(KFLR.EQ.2.AND.KFLS.EQ.3) THEN 
-            LUCOMP=190+KFLB 
-          ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.5) THEN 
-            LUCOMP=210+KFLB 
-          ENDIF 
-        ELSEIF(KFLB.LE.5) THEN 
-          IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
-            LUCOMP=100+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
-            LUCOMP=120+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
-            LUCOMP=140+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
-            LUCOMP=160+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.2.AND.KFLS.EQ.3) THEN 
-            LUCOMP=180+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.5) THEN 
-            LUCOMP=200+((KFLB-1)*(KFLB-2))/2+KFLC 
-          ENDIF 
-        ELSEIF((KFLS.EQ.1.AND.KFLR.LE.1).OR.(KFLS.EQ.3.AND.KFLR.LE.2) 
-     &  .OR.(KFLS.EQ.5.AND.KFLR.EQ.0)) THEN 
-          LUCOMP=80+KFLB 
-        ENDIF 
-C...Diquarks. 
-      ELSEIF((KFLR.EQ.0.OR.KFLR.EQ.1).AND.KFLC.EQ.0) THEN 
-        IF(KFLS.NE.1.AND.KFLS.NE.3) THEN 
-        ELSEIF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9) THEN 
-        ELSEIF(KFLA.LT.KFLB) THEN 
-        ELSEIF(KFLS.EQ.1.AND.KFLA.EQ.KFLB) THEN 
-        ELSE 
-          LUCOMP=90 
-        ENDIF 
-C...Spin 1/2 baryons. 
-      ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.2) THEN 
-        IF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.9) THEN 
-        ELSEIF(KFLA.LE.KFLC.OR.KFLA.LT.KFLB) THEN 
-        ELSEIF(KFLA.GE.6.OR.KFLB.GE.4.OR.KFLC.GE.4) THEN 
-          LUCOMP=80+KFLA 
-        ELSEIF(KFLB.LT.KFLC) THEN 
-          LUCOMP=300+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLC*(KFLC-1))/2+KFLB 
-        ELSE 
-          LUCOMP=330+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLB*(KFLB-1))/2+KFLC 
-        ENDIF 
-C...Spin 3/2 baryons. 
-      ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.4) THEN 
-        IF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.9) THEN 
-        ELSEIF(KFLA.LT.KFLB.OR.KFLB.LT.KFLC) THEN 
-        ELSEIF(KFLA.GE.6.OR.KFLB.GE.4) THEN 
-          LUCOMP=80+KFLA 
-        ELSE 
-          LUCOMP=360+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLB*(KFLB-1))/2+KFLC 
-        ENDIF 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/ludata.F b/PYTHIA/jetset/ludata.F
deleted file mode 100644 (file)
index 5945bd5..0000000
+++ /dev/null
@@ -1,447 +0,0 @@
-C********************************************************************* 
-      BLOCK DATA LUDATA 
-C...Purpose: to give default values to parameters and particle and 
-C...decay data. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      COMMON/LUDAT4/CHAF(500) 
-      CHARACTER CHAF*8 
-      COMMON/LUDATR/MRLU(6),RRLU(100) 
-      SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/,/LUDAT4/,/LUDATR/ 
-C...LUDAT1, containing status codes and most parameters. 
-      DATA MSTU/ 
-     &    0,    0,    0, 4000,10000,  500, 2000,    0,    0,    2, 
-     1    6,    1,    1,    0,    1,    1,    0,    0,    0,    0, 
-     2    2,   10,    0,    0,    1,   10,    0,    0,    0,    0, 
-     3    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
-     4    2,    2,    1,    4,    2,    1,    1,    0,    0,    0, 
-     5   25,   24,    0,    1,    0,    0,    0,    0,    0,    0, 
-     6    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
-     7  30*0, 
-     &    1,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
-     1    1,    5,    3,    5,    0,    0,    0,    0,    0,    0, 
-     2  60*0, 
-     8    7,  408, 1995,   08,   23,  700,    0,    0,    0,    0, 
-     9    0,    0,    0,    0,    0,    0,    0,    0,    0,    0/ 
-      DATA PARU/ 
-     & 3.1415927, 6.2831854, 0.1973, 5.068, 0.3894, 2.568,   4*0., 
-     1 0.001, 0.09, 0.01,  0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     2   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     3   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     4  2.0,  1.0, 0.25,  2.5, 0.05,   0.,   0., 0.0001, 0.,   0., 
-     5  2.5,  1.5,  7.0,  1.0,  0.5,  2.0,  3.2,   0.,   0.,   0., 
-     6  40*0., 
-     & 0.00729735, 0.232, 0.007764, 1.0, 1.16639E-5, 0., 0., 0., 
-     &   0.,   0., 
-     1 0.20, 0.25,  1.0,  4.0,  10.,   0.,   0.,   0.,   0.,   0., 
-     2 -0.693, -1.0, 0.387, 1.0, -0.08, -1.0, 1.0, 1.0, 1.0,   0., 
-     3  1.0, -1.0,  1.0, -1.0,  1.0,   0.,   0.,   0.,   0.,   0., 
-     4  5.0,  1.0,  1.0,   0.,  1.0,  1.0,   0.,   0.,   0.,   0., 
-     5  1.0,   0.,   0.,   0., 1000., 1.0,  1.0,  1.0,  1.0,   0., 
-     6  1.0,  1.0,  1.0,  1.0,  1.0,   0.,   0.,   0.,   0.,   0., 
-     7  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,   0.,   0.,   0., 
-     8  1.0,  1.0,  1.0,  0.0,  0.0,  1.0,  1.0,  0.0,  0.0,   0., 
-     9   0.,   0.,   0.,   0.,  1.0,   0.,   0.,   0.,   0.,   0./ 
-      DATA MSTJ/ 
-     &    1,    3,    0,    0,    0,    0,    0,    0,    0,    0, 
-     1    4,    2,    0,    1,    0,    0,    0,    0,    0,    0, 
-     2    2,    1,    1,    2,    1,    2,    2,    0,    0,    0, 
-     3    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
-     4    2,    2,    4,    2,    5,    3,    3,    0,    0,    0, 
-     5    0,    3,    0,    0,    0,    0,    0,    0,    0,    0, 
-     6  40*0, 
-     &    5,    2,    7,    5,    1,    1,    0,    2,    0,    2, 
-     1    0,    0,    0,    0,    1,    1,    0,    0,    0,    0, 
-     2  80*0/ 
-      DATA PARJ/ 
-     & 0.10, 0.30, 0.40, 0.05, 0.50, 0.50, 0.50,   0.,   0.,   0., 
-     1 0.50, 0.60, 0.75,   0.,   0.,   0.,   0.,  1.0,  1.0,   0., 
-     2 0.36,  1.0, 0.01,  2.0,  1.0,  0.4,   0.,   0.,   0.,   0., 
-     3 0.10,  1.0,  0.8,  1.5,   0.,  2.0,  0.2,  2.5,  0.6,   0., 
-     4  0.3, 0.58,  0.5,  0.9,  0.5,  1.0,  1.0,  1.0,   0.,   0., 
-     5 0.77,0.77,0.77,-0.05,-0.005,-0.00001,-0.00001,-0.00001,1.0,0., 
-     6  4.5,  0.7,  0., 0.003,  0.5,  0.5,   0.,   0.,   0.,   0., 
-     7  10., 1000., 100., 1000., 0.,  0.7,  10.,   0.,   0.,   0., 
-     8 0.29,  1.0,  1.0,   0.,  10.,  10.,   0.,   0.,   0.,   0., 
-     9 0.02,  1.0,  0.2,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     &   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     1   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     2  1.0, 0.25,91.187,2.489, 0.01, 2.0,  1.0, 0.25,0.002,   0., 
-     3   0.,   0.,   0.,   0., 0.01, 0.99,   0.,   0.,  0.2,   0., 
-     4  60*0./ 
-C...LUDAT2, with particle data and flavour treatment parameters. 
-      DATA (KCHG(I,1),I=   1, 500)/-1,2,-1,2,-1,2,-1,2,2*0,-3,0,-3,0, 
-     &-3,0,-3,6*0,3,9*0,3,2*0,3,0,-1,44*0,2,-1,2,-1,2,3,11*0,3,0,2*3,0, 
-     &3,0,3,0,3,10*0,3,0,2*3,0,3,0,3,0,3,10*0,3,0,2*3,0,3,0,3,0,3,10*0, 
-     &3,0,2*3,0,3,0,3,0,3,10*0,3,0,2*3,0,3,0,3,0,3,10*0,3,0,2*3,0,3,0, 
-     &3,0,3,70*0,3,0,3,28*0,3,2*0,3,8*0,-3,8*0,3,0,-3,0,3,-3,3*0,3,6,0, 
-     &3,5*0,-3,0,3,-3,0,-3,4*0,-3,0,3,6,-3,0,3,-3,0,-3,0,3,6,0,3,5*0, 
-     &-3,0,3,-3,0,-3,114*0/ 
-      DATA (KCHG(I,2),I=   1, 500)/8*1,12*0,2,16*0,2,1,50*0,-1,410*0/ 
-      DATA (KCHG(I,3),I=   1, 500)/8*1,2*0,8*1,5*0,1,9*0,1,2*0,1,0,2*1, 
-     &41*0,1,0,7*1,10*0,10*1,10*0,10*1,10*0,10*1,10*0,10*1,10*0,10*1, 
-     &10*0,10*1,70*0,3*1,22*0,1,5*0,1,0,2*1,6*0,1,0,2*1,6*0,2*1,0,5*1, 
-     &0,6*1,4*0,6*1,4*0,16*1,4*0,6*1,114*0/ 
-      DATA (PMAS(I,1),I=   1, 500)/0.0099,0.0056,0.199,1.35,5.,160., 
-     &2*250.,2*0.,0.00051,0.,0.1057,0.,1.777,0.,250.,5*0.,91.187,80.25, 
-     &80.,6*0.,500.,900.,500.,3*300.,350.,200.,5000.,60*0.,0.1396, 
-     &0.4977,0.4936,1.8693,1.8645,1.9688,5.2787,5.2786,5.47972,6.594, 
-     &0.135,0.5475,0.9578,2.9788,9.4,320.,2*500.,2*0.,0.7669,0.8961, 
-     &0.8916,2.0101,2.0071,2.11,2*5.325,5.5068,6.602,0.7683,0.782, 
-     &1.0194,3.0969,9.4603,320.,2*500.,2*0.,1.232,2*1.29,2*2.424,2.536, 
-     &2*5.73,5.97,7.3,1.232,1.17,1.4,3.46,9.875,320.,2*500.,2*0.,0.983, 
-     &2*1.429,2*2.272,2.5,2*5.68,5.92,7.25,0.9827,1.,1.4,3.4151,9.8598, 
-     &320.,2*500.,2*0.,1.26,2*1.402,2*2.372,2.56,2*5.78,6.02,7.3,1.26, 
-     &1.282,1.42,3.5106,9.8919,320.,2*500.,2*0.,1.318,1.432,1.425, 
-     &2*2.46,2.61,2*5.83,6.07,7.35,1.318,1.275,1.525,3.5562,9.9132, 
-     &320.,2*500.,2*0.,2*0.4977,8*0.,3.686,3*0.,10.0233,70*0.,1.1156, 
-     &5*0.,2.2849,0.,2.473,2.466,6*0.,5.641,0.,2*5.84,6*0.,0.9396, 
-     &0.9383,0.,1.1974,1.1926,1.1894,1.3213,1.3149,0.,2.4525,2.4529, 
-     &2.4527,2*2.55,2.73,4*0.,3*5.8,2*5.96,6.12,4*0.,1.234,1.233,1.232, 
-     &1.231,1.3872,1.3837,1.3828,1.535,1.5318,1.6724,3*2.5,2*2.63,2.8, 
-     &4*0.,3*5.81,2*5.97,6.13,114*0./ 
-      DATA (PMAS(I,2),I=   1, 500)/22*0.,2.489,2.066,88*0.,0.0002, 
-     &0.001,6*0.,0.149,0.0505,0.0498,7*0.,0.151,0.00843,0.0044,7*0., 
-     &0.155,2*0.09,2*0.02,0.,4*0.05,0.155,0.36,0.08,2*0.01,5*0.,0.057, 
-     &2*0.287,7*0.05,0.057,0.,0.25,0.014,6*0.,0.4,2*0.174,7*0.05,0.4, 
-     &0.024,0.06,0.0009,6*0.,0.11,0.109,0.098,2*0.019,5*0.02,0.11, 
-     &0.185,0.076,0.002,146*0.,4*0.12,0.0394,0.036,0.0358,0.0099, 
-     &0.0091,131*0./ 
-      DATA (PMAS(I,3),I=   1, 500)/22*0.,2*20.,88*0.,0.002,0.005,6*0., 
-     &0.4,2*0.2,7*0.,0.4,0.1,0.015,7*0.,0.25,0.005,0.01,2*0.08,0., 
-     &4*0.1,0.25,0.2,0.001,2*0.02,5*0.,0.05,2*0.4,6*0.1,2*0.05,0.,0.35, 
-     &0.05,6*0.,3*0.3,2*0.1,0.03,4*0.1,0.3,0.05,0.02,0.001,6*0.,0.25, 
-     &4*0.12,5*0.05,0.25,0.17,0.2,0.01,146*0.,4*0.14,0.04,2*0.035, 
-     &2*0.05,131*0./ 
-      DATA (PMAS(I,4),I=   1, 500)/12*0.,658650.,0.,0.0914,68*0.,0.1, 
-     &0.387,15*0.,7804.,0.,3709.,0.32,0.1259,0.135,3*0.387,0.15,110*0., 
-     &15500.,26.75,83*0.,78.88,5*0.,0.057,0.,0.025,0.09,6*0.,0.387,0., 
-     &2*0.387,9*0.,44.3,0.,23.95,49.1,86.9,6*0.,0.13,9*0.,0.387,13*0., 
-     &24.60001,130*0./ 
-      DATA PARF/ 
-     &  0.5, 0.25,  0.5, 0.25,   1.,  0.5,   0.,   0.,   0.,   0., 
-     1  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     2  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     3  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     4  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     5  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
-     6 0.75,  0.5,   0., 0.1667, 0.0833, 0.1667, 0., 0., 0.,   0., 
-     7   0.,   0.,   1., 0.3333, 0.6667, 0.3333, 0., 0., 0.,   0., 
-     8   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     9   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     & 0.325, 0.325, 0.5, 1.6,  5.0,   0.,   0.,   0.,   0.,   0., 
-     1   0., 0.11, 0.16, 0.048, 0.50, 0.45, 0.55, 0.60,  0.,   0., 
-     2  0.2,  0.1,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
-     3  1870*0./ 
-      DATA ((VCKM(I,J),J=1,4),I=1,4)/ 
-     1  0.95113,  0.04884,  0.00003,  0.00000, 
-     2  0.04884,  0.94940,  0.00176,  0.00000, 
-     3  0.00003,  0.00176,  0.99821,  0.00000, 
-     4  0.00000,  0.00000,  0.00000,  1.00000/ 
-C...LUDAT3, with particle decay parameters and data. 
-      DATA (MDCY(I,1),I=   1, 500)/5*0,3*1,6*0,1,0,1,5*0,3*1,6*0,1,0,1, 
-     &2*0,4*1,42*0,7*1,12*0,1,0,15*1,2*0,18*1,2*0,18*1,2*0,18*1,2*0, 
-     &18*1,2*0,18*1,3*0,1,8*0,1,3*0,1,70*0,1,5*0,1,0,2*1,6*0,1,0,2*1, 
-     &9*0,5*1,0,6*1,4*0,6*1,4*0,16*1,4*0,6*1,114*0/ 
-      DATA (MDCY(I,2),I=   1, 500)/1,9,17,25,33,41,50,60,2*0,70,74,76, 
-     &81,83,124,126,132,2*0,135,144,156,172,192,6*0,209,0,231,254,274, 
-     &292,301,304,305,42*0,314,315,319,328,331,336,338,11*0,358,359, 
-     &361,367,430,491,524,560,596,635,666,668,675,681,682,683,684,685, 
-     &2*0,686,688,691,694,697,699,700,701,702,703,704,708,713,721,724, 
-     &733,734,735,2*0,736,737,742,747,749,751,753,755,757,759,761,762, 
-     &765,769,770,771,772,773,2*0,774,775,777,779,781,783,785,787,789, 
-     &791,793,794,799,804,806,808,809,810,2*0,811,813,815,817,819,821, 
-     &823,825,827,829,831,833,846,850,852,854,855,856,2*0,857,863,873, 
-     &884,892,900,904,912,920,924,928,936,945,951,953,955,956,957,2*0, 
-     &958,966,8*0,968,3*0,979,70*0,993,5*0,997,0,1073,1074,6*0,1075,0, 
-     &1092,1093,9*0,1094,1096,1097,1100,1101,0,1103,1104,1105,1106, 
-     &1107,1108,4*0,1109,1110,1111,1112,1113,1114,4*0,1115,1116,1119, 
-     &1122,1123,1126,1129,1132,1134,1136,1140,1141,1142,1143,1145,1147, 
-     &4*0,1148,1149,1150,1151,1152,1153,114*0/ 
-      DATA (MDCY(I,3),I=   1, 500)/5*8,9,2*10,2*0,4,2,5,2,41,2,6,3,2*0, 
-     &9,12,16,20,17,6*0,22,0,23,20,18,9,3,1,9,42*0,1,4,9,3,5,2,20,11*0, 
-     &1,2,6,63,61,33,2*36,39,31,2,7,6,5*1,2*0,2,3*3,2,5*1,4,5,8,3,9, 
-     &3*1,2*0,1,2*5,7*2,1,3,4,5*1,2*0,1,9*2,1,2*5,2*2,3*1,2*0,11*2,13, 
-     &4,2*2,3*1,2*0,6,10,11,2*8,4,2*8,2*4,8,9,6,2*2,3*1,2*0,8,2,8*0,11, 
-     &3*0,14,70*0,4,5*0,76,0,2*1,6*0,17,0,2*1,9*0,2,1,3,1,2,0,6*1,4*0, 
-     &6*1,4*0,1,2*3,1,3*3,2*2,4,3*1,2*2,1,4*0,6*1,114*0/ 
-      DATA (MDME(I,1),I=   1,2000)/6*1,-1,7*1,-1,7*1,-1,7*1,-1,7*1,-1, 
-     &7*1,-1,1,-1,8*1,2*-1,8*1,2*-1,61*1,-1,2*1,-1,6*1,2*-1,7*1,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,2*-1, 
-     &3*1,-1,11*1,2*-1,6*1,8*-1,3*1,-1,3*1,-1,3*1,5*-1,3*1,4*-1,6*1, 
-     &2*-1,3*1,-1,5*1,-1,8*1,2*-1,3*1,-1,9*1,-1,3*1,-1,9*1,2*-1,2*1,-1, 
-     &16*1,-1,2*1,3*-1,1665*1/ 
-      DATA (MDME(I,2),I=   1,2000)/75*102,42,6*102,2*42,2*0,7*41,2*0, 
-     &24*41,6*102,45,29*102,8*32,8*0,16*32,4*0,8*32,4*0,32,4*0,8*32, 
-     &14*0,16*32,7*0,8*32,4*0,32,7*0,8*32,4*0,32,5*0,4*32,5*0,3*32,0, 
-     &6*32,3*0,12,2*42,2*11,9*42,2*45,31,2*45,2*33,31,2*45,20*46,7*0, 
-     &24*42,41*0,16*42,46*0,10*42,20*0,2*13,14*42,16*0,48,3*13,16*42, 
-     &16*0,48,3*13,16*42,19*0,48,3*13,2*42,0,2*11,28*42,0,2,4*0,2,8*0, 
-     &12,32,86,87,88,3,0,2*3,0,2*3,0,2*3,0,3,6*0,3,3*0,1,0,3,2*0,2*3, 
-     &3*0,1,4*0,12,3*0,4*32,2*4,86,87,88,33*0,12,32,86,87,88,31*0,12,0, 
-     &32,86,87,88,40*0,12,0,32,86,87,88,95*0,12,0,32,86,87,88,2*0,4*42, 
-     &6*0,12,11*0,4*32,2*4,9*0,14*42,52*0,10*13,2*84,3*42,8*0,48,3*13, 
-     &2*42,2*85,14*0,84,5*0,85,886*0/ 
-      DATA (BRAT(I)  ,I=   1, 439)/75*0.,1.,6*0.,0.179,0.178,0.116, 
-     &0.235,0.005,0.056,0.018,0.023,0.011,2*0.004,0.0067,0.014,2*0.002, 
-     &2*0.001,0.0022,0.054,0.002,0.016,0.005,0.011,0.0101,5*0.006, 
-     &0.002,2*0.001,5*0.002,6*0.,1.,29*0.,0.15394,0.11936,0.15394, 
-     &0.11926,0.15254,3*0.,0.03368,0.06664,0.03368,0.06664,0.03368, 
-     &0.06664,2*0.,0.3214,0.0165,2*0.,0.0165,0.3207,2*0.,0.00001, 
-     &0.00059,6*0.,3*0.1081,3*0.,0.0003,0.048,0.8705,4*0.,0.0002, 
-     &0.0603,0.,0.0199,0.0008,3*0.,0.143,0.111,0.143,0.111,0.143,0.085, 
-     &2*0.,0.03,0.058,0.03,0.058,0.03,0.058,8*0.,0.25,0.01,2*0.,0.01, 
-     &0.25,4*0.,0.24,5*0.,3*0.08,6*0.,0.01,0.08,0.82,5*0.,0.09,11*0., 
-     &0.01,0.08,0.82,5*0.,0.09,9*0.,1.,6*0.,0.01,0.98,0.01,1.,4*0.215, 
-     &2*0.,2*0.07,0.,1.,2*0.08,0.76,0.08,2*0.105,0.04,0.5,0.08,0.14, 
-     &0.01,0.015,0.005,1.,3*0.,1.,4*0.,1.,0.25,0.01,2*0.,0.01,0.25, 
-     &4*0.,0.24,5*0.,3*0.08,0.,1.,2*0.5,0.635,0.212,0.056,0.017,0.048, 
-     &0.032,0.07,0.065,2*0.005,2*0.011,5*0.001,0.07,0.065,2*0.005, 
-     &2*0.011,5*0.001,0.026,0.019,0.066,0.041,0.045,0.076,0.0073, 
-     &2*0.0047,0.026,0.001,0.0006,0.0066,0.005,2*0.003,2*0.0006, 
-     &2*0.001,0.006,0.005,0.012,0.0057,0.067,0.008,0.0022,0.027,0.004, 
-     &0.019,0.012,0.002,0.009,0.0218,0.001,0.022,0.087,0.001,0.0019, 
-     &0.0015,0.0028,0.034,0.027,2*0.002,2*0.004,2*0.002,0.034,0.027/ 
-      DATA (BRAT(I)  ,I= 440, 655)/2*0.002,2*0.004,2*0.002,0.0365, 
-     &0.045,0.073,0.062,3*0.021,0.0061,0.015,0.025,0.0088,0.074,0.0109, 
-     &0.0041,0.002,0.0035,0.0011,0.001,0.0027,2*0.0016,0.0018,0.011, 
-     &0.0063,0.0052,0.018,0.016,0.0034,0.0036,0.0009,0.0006,0.015, 
-     &0.0923,0.018,0.022,0.0077,0.009,0.0075,0.024,0.0085,0.067,0.0511, 
-     &0.017,0.0004,0.0028,0.01,2*0.02,0.03,2*0.005,2*0.02,0.03,2*0.005, 
-     &0.015,0.037,0.028,0.079,0.095,0.052,0.0078,4*0.001,0.028,0.033, 
-     &0.026,0.05,0.01,4*0.005,0.25,0.0952,0.02,0.055,2*0.005,0.008, 
-     &0.012,0.02,0.055,2*0.005,0.008,0.012,0.01,0.03,0.0035,0.011, 
-     &0.0055,0.0042,0.009,0.018,0.015,0.0185,0.0135,0.025,0.0004, 
-     &0.0007,0.0008,0.0014,0.0019,0.0025,0.4291,0.08,0.07,0.02,0.015, 
-     &0.005,0.02,0.055,2*0.005,0.008,0.012,0.02,0.055,2*0.005,0.008, 
-     &0.012,0.01,0.03,0.0035,0.011,0.0055,0.0042,0.009,0.018,0.015, 
-     &0.0185,0.0135,0.025,0.0004,0.0007,0.0008,0.0014,0.0019,0.0025, 
-     &0.4291,0.08,0.07,0.02,0.015,0.005,0.02,0.055,2*0.005,0.008,0.012, 
-     &0.02,0.055,2*0.005,0.008,0.012,0.01,0.03,0.0035,0.011,0.0055, 
-     &0.0042,0.009,0.018,0.015,0.0185,0.0135,0.025,2*0.0002,0.0007, 
-     &2*0.0004,0.0014,0.001,0.0009,0.0025,0.4291,0.08,0.07,0.02,0.015, 
-     &0.005,0.047,0.122,0.006,0.012,0.035,0.012,0.035,0.003,0.007,0.15, 
-     &0.037,0.008,0.002,0.05,0.015,0.003,0.001,0.014,0.042,0.014,0.042/ 
-      DATA (BRAT(I)  ,I= 656, 931)/0.24,0.065,0.012,0.003,0.001,0.002, 
-     &0.001,0.002,0.014,0.003,0.988,0.012,0.389,0.319,0.2367,0.049, 
-     &0.005,0.001,0.0003,0.441,0.206,0.3,0.03,0.022,0.001,5*1.,0.99955, 
-     &0.00045,0.665,0.333,0.002,0.666,0.333,0.001,0.65,0.3,0.05,0.56, 
-     &0.44,5*1.,0.99912,0.00079,0.00005,0.00004,0.888,0.085,0.021, 
-     &2*0.003,0.49,0.344,3*0.043,0.023,0.013,0.001,0.0627,0.0597, 
-     &0.8776,3*0.027,0.015,0.045,0.015,0.045,0.77,0.029,4*1.,0.28,0.14, 
-     &0.313,0.157,0.11,0.28,0.14,0.313,0.157,0.11,0.667,0.333,0.667, 
-     &0.333,2*0.5,0.667,0.333,0.667,0.333,4*0.5,1.,0.333,0.334,0.333, 
-     &4*0.25,6*1.,0.667,0.333,0.667,0.333,0.667,0.333,0.667,0.333, 
-     &2*0.5,0.667,0.333,0.667,0.333,4*0.5,1.,0.52,0.26,0.11,2*0.055, 
-     &0.62,0.31,0.035,2*0.0175,0.007,0.993,0.02,0.98,3*1.,2*0.5,0.667, 
-     &0.333,0.667,0.333,0.667,0.333,0.667,0.333,2*0.5,0.667,0.333, 
-     &0.667,0.333,6*0.5,3*0.12,0.097,0.043,4*0.095,4*0.03,4*0.25,0.273, 
-     &0.727,0.35,0.65,3*1.,2*0.35,0.144,0.105,0.048,0.003,0.333,0.166, 
-     &0.168,0.084,0.087,0.043,0.059,2*0.029,0.002,0.332,0.166,0.168, 
-     &0.084,0.086,0.043,0.059,2*0.029,2*0.002,0.3,0.15,0.16,0.08,0.13, 
-     &0.06,0.08,0.04,0.3,0.15,0.16,0.08,0.13,0.06,0.08,0.04,2*0.3, 
-     &2*0.2,0.3,0.15,0.16,0.08,0.13,0.06,0.08,0.04,0.3,0.15,0.16,0.08, 
-     &0.13,0.06,0.08,0.04,2*0.3,2*0.2,2*0.3,2*0.2,2*0.35,0.144,0.105/ 
-      DATA (BRAT(I)  ,I= 932,2000)/0.024,2*0.012,0.003,0.566,0.283, 
-     &0.069,0.028,0.023,2*0.0115,0.005,0.003,0.356,2*0.178,0.28, 
-     &2*0.004,0.135,0.865,0.22,0.78,3*1.,0.217,0.124,2*0.193,2*0.135, 
-     &0.002,0.001,0.686,0.314,2*0.0083,0.1866,0.324,0.184,0.027,0.001, 
-     &0.093,0.087,0.078,0.0028,3*0.014,0.008,0.024,0.008,0.024,0.425, 
-     &0.02,0.185,0.088,0.043,0.067,0.066,0.641,0.357,2*0.001,0.018, 
-     &2*0.005,0.003,0.002,2*0.006,0.018,2*0.005,0.003,0.002,2*0.006, 
-     &0.0066,0.025,0.016,0.0088,2*0.005,0.0058,0.005,0.0055,4*0.004, 
-     &2*0.002,2*0.004,0.003,0.002,2*0.003,3*0.002,2*0.001,0.002, 
-     &2*0.001,2*0.002,0.0013,0.0018,5*0.001,4*0.003,2*0.005,2*0.002, 
-     &2*0.001,2*0.002,2*0.001,0.2432,0.057,2*0.035,0.15,2*0.075,0.03, 
-     &2*0.015,2*1.,2*0.105,0.04,0.0077,0.02,0.0235,0.0285,0.0435, 
-     &0.0011,0.0022,0.0044,0.4291,0.08,0.07,0.02,0.015,0.005,2*1., 
-     &0.999,0.001,1.,0.516,0.483,0.001,1.,0.995,0.005,13*1.,0.331, 
-     &0.663,0.006,0.663,0.331,0.006,1.,0.88,2*0.06,0.88,2*0.06,0.88, 
-     &2*0.06,0.667,2*0.333,0.667,0.676,0.234,0.085,0.005,3*1.,4*0.5, 
-     &7*1.,847*0./ 
-      DATA (KFDP(I,1),I=   1, 507)/21,22,23,4*-24,25,21,22,23,4*24,25, 
-     &21,22,23,4*-24,25,21,22,23,4*24,25,21,22,23,4*-24,25,21,22,23, 
-     &4*24,25,37,21,22,23,4*-24,25,2*-37,21,22,23,4*24,25,2*37,22,23, 
-     &-24,25,23,24,-12,22,23,-24,25,23,24,-12,-14,35*16,22,23,-24,25, 
-     &23,24,-89,22,23,-24,25,-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,3,4,5,6,7,8,11,12,13,14,15,16,17,18,4*-1, 
-     &4*-3,4*-5,4*-7,-11,-13,-15,-17,1,2,3,4,5,6,7,8,11,13,15,17,21, 
-     &2*22,23,24,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,24,37,2*23,25, 
-     &35,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,3*24,1,2,3,4,5,6,7,8,11, 
-     &13,15,17,21,2*22,23,24,23,25,36,1,2,3,4,5,6,7,8,11,13,15,17,21, 
-     &2*22,23,24,23,-1,-3,-5,-7,-11,-13,-15,-17,24,5,6,21,2,1,2,3,4,5, 
-     &6,11,13,15,82,-11,-13,2*2,-12,-14,-16,2*-2,2*-4,-2,-4,2*89,37, 
-     &2*-89,2*5,-37,2*89,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,-13,130, 
-     &310,-13,3*211,12,14,11*-11,11*-13,-311,-313,-311,-313,-20313, 
-     &2*-311,-313,-311,-313,2*111,2*221,2*331,2*113,2*223,2*333,-311, 
-     &-313,2*-321,211,-311,-321,333,-311,-313,-321,211,2*-321,2*-311, 
-     &-321,211,113,8*-11,8*-13,-321,-323,-321,-323,-311,2*-313,-311, 
-     &-313,2*-311,-321,-10323,-321,-323,-321,-311,2*-313,211,111,333, 
-     &3*-321,-311,-313,-321,-313,310,333,211,2*-321,-311,-313,-311,211, 
-     &-321,3*-311,211,113,321,-15,5*-11,5*-13,221,331,333,221,331,333/ 
-      DATA (KFDP(I,1),I= 508, 924)/10221,211,213,211,213,321,323,321, 
-     &323,2212,221,331,333,221,2*2,6*12,6*14,2*16,3*-411,3*-413,2*-411, 
-     &2*-413,2*441,2*443,2*20443,2*2,2*4,2,4,6*12,6*14,2*16,3*-421, 
-     &3*-423,2*-421,2*-423,2*441,2*443,2*20443,2*2,2*4,2,4,6*12,6*14, 
-     &2*16,3*-431,3*-433,2*-431,2*-433,3*441,3*443,3*20443,2*2,2*4,2,4, 
-     &16,2*4,2*12,2*14,2*16,4*2,4*4,2*-11,2*-13,2*-1,2*-3,2*-11,2*-13, 
-     &2*-1,3*22,111,211,2*22,211,22,211,111,3*22,111,82,21,3*0,2*211, 
-     &321,3*311,2*321,421,2*411,2*421,431,511,521,531,541,211,111,13, 
-     &11,211,22,211,2*111,321,130,-213,113,213,211,22,111,11,13,82,11, 
-     &13,15,1,2,3,4,21,22,3*0,223,321,311,323,313,2*311,321,313,323, 
-     &321,423,2*413,2*423,413,523,2*513,2*523,2*513,523,223,213,113, 
-     &-213,313,-313,323,-323,82,21,3*0,221,321,2*311,321,421,2*411,421, 
-     &411,421,521,2*511,2*521,2*511,521,221,211,111,321,130,310,211, 
-     &111,321,130,310,443,82,553,21,3*0,113,213,323,2*313,323,423, 
-     &2*413,2*423,413,523,2*513,2*523,2*513,523,213,-213,10211,10111, 
-     &-10211,2*221,213,2*113,-213,2*321,2*311,313,-313,323,-323,443,82, 
-     &553,21,3*0,213,113,221,223,321,211,321,311,323,313,323,313,321, 
-     &4*311,321,313,323,313,323,311,4*321,421,411,423,413,423,413,421, 
-     &2*411,421,413,423,413,423,411,2*421,411,423,413,521,511,523,513, 
-     &523,513,521,2*511,521,513,523,513,523,511,2*521,511,523,513,511/ 
-      DATA (KFDP(I,1),I= 925,2000)/521,513,523,213,-213,221,223,321, 
-     &130,310,111,211,111,2*211,321,130,310,221,111,321,130,310,221, 
-     &211,111,443,82,553,21,3*0,111,211,-12,12,-14,14,211,111,211,111, 
-     &11,13,82,4*443,10441,20443,445,441,11,13,15,1,2,3,4,21,22,2*553, 
-     &10551,20553,555,2212,2*2112,-12,7*-11,7*-13,2*2224,2*2212,2*2214, 
-     &2*3122,2*3212,2*3214,5*3222,4*3224,2*3322,3324,2*2224,7*2212, 
-     &5*2214,2*2112,2*2114,2*3122,2*3212,2*3214,2*3222,2*3224,4*2,3, 
-     &2*2,1,2*2,2*0,-12,-14,-16,5*4122,441,443,20443,2*-2,2*-4,-2,-4, 
-     &2*0,2112,-12,3122,2212,2112,2212,3*3122,3*4122,4132,4232,0, 
-     &3*5122,5132,5232,0,2112,2212,2*2112,2212,2112,2*2212,3122,3212, 
-     &3112,3122,3222,3112,3122,3222,3212,3322,3312,3322,3312,3122,3322, 
-     &3312,-12,3*4122,2*4132,2*4232,4332,3*5122,5132,5232,5332,847*0/ 
-      DATA (KFDP(I,2),I=   1, 476)/3*1,2,4,6,8,1,3*2,1,3,5,7,2,3*3,2,4, 
-     &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,3*7,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,13,11,13, 
-     &-211,-213,-211,-213,-211,-213,3*-211,-321,-323,-321,-323,3*-321, 
-     &4*-211,-213,-211,-213,-211,-213,-211,-213,-211,-213,6*-211,2*15, 
-     &16,15,16,15,18,2*17,18,17,2*18,2*17,-1,-2,-3,-4,-5,-6,-7,-8,21, 
-     &-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,-1,-2,-3,-4,-5,-6,-7,-8, 
-     &-11,-12,-13,-14,-15,-16,-17,-18,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8, 
-     &12,14,16,18,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23, 
-     &-24,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24, 
-     &-37,22,25,2*36,2,4,6,8,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,-7,-8,-11,-13,-15,-17,21,22,2*23,-24,2*25, 
-     &36,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,-24,25,2,4, 
-     &6,8,12,14,16,18,25,-5,-6,21,11,-3,-4,-5,-6,-7,-8,-13,-15,-17,-82, 
-     &12,14,-1,-3,11,13,15,1,4,3,4,1,3,5,3,5,6,4,21,22,4,7,5,2,4,6,8,2, 
-     &4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,14,2*0,14,111,211,111,-11,-13, 
-     &11*12,11*14,2*211,2*213,211,20213,2*321,2*323,211,213,211,213, 
-     &211,213,211,213,211,213,211,213,3*211,213,211,2*321,8*211,2*113, 
-     &2*211,8*12,8*14,2*211,2*213,2*111,221,2*113,223,333,20213,211, 
-     &2*321,323,2*311,313,-211,111,113,2*211,321,2*211,311,321,310,211/ 
-      DATA (KFDP(I,2),I= 477, 857)/-211,4*211,321,4*211,113,2*211,-321, 
-     &16,5*12,5*14,3*211,3*213,211,2*111,2*113,2*-311,2*-313,-2112, 
-     &3*321,323,2*-1,6*-11,6*-13,2*-15,211,213,20213,211,213,20213,431, 
-     &433,431,433,311,313,311,313,311,313,-1,-4,-3,-4,-1,-3,6*-11, 
-     &6*-13,2*-15,211,213,20213,211,213,20213,431,433,431,433,321,323, 
-     &321,323,321,323,-1,-4,-3,-4,-1,-3,6*-11,6*-13,2*-15,211,213, 
-     &20213,211,213,20213,431,433,431,433,221,331,333,221,331,333,221, 
-     &331,333,-1,-4,-3,-4,-1,-3,-15,-3,-1,2*-11,2*-13,2*-15,-1,-4,-3, 
-     &-4,-3,-4,-1,-4,2*12,2*14,2,3,2,3,2*12,2*14,2,1,22,11,22,111,-211, 
-     &211,11,-211,13,-211,111,113,223,22,111,-82,21,3*0,111,22,-211, 
-     &111,22,211,111,22,211,111,22,111,6*22,-211,22,-13,-11,-211,111, 
-     &-211,2*111,-321,310,211,111,2*-211,221,22,-11,-13,-82,-11,-13, 
-     &-15,-1,-2,-3,-4,2*21,3*0,211,-213,113,-211,111,223,213,113,211, 
-     &111,223,211,111,-211,111,321,311,-211,111,211,111,-321,-311,411, 
-     &421,111,-211,111,211,-311,311,-321,321,-82,21,3*0,211,-211,111, 
-     &211,111,211,111,-211,111,311,321,-211,111,211,111,-321,-311,411, 
-     &421,111,-211,111,-321,130,310,-211,111,-321,130,310,22,-82,22,21, 
-     &3*0,211,111,-211,111,211,111,211,111,-211,111,321,311,-211,111, 
-     &211,111,-321,-311,411,421,-211,211,-211,111,2*211,111,-211,211, 
-     &111,211,-321,2*-311,-321,-311,311,-321,321,22,-82,22,21,3*0,111/ 
-      DATA (KFDP(I,2),I= 858,2000)/3*211,-311,22,-211,111,-211,111, 
-     &-211,211,-213,113,223,221,211,111,211,111,2*211,213,113,223,221, 
-     &22,211,111,211,111,4*211,-211,111,-211,111,-211,211,-211,211,321, 
-     &311,321,311,-211,111,-211,111,-211,211,-211,2*211,111,211,111, 
-     &4*211,-321,-311,-321,-311,411,421,411,421,-211,211,111,211,-321, 
-     &130,310,22,-211,111,2*-211,-321,130,310,221,111,-321,130,310,221, 
-     &-211,111,22,-82,22,21,3*0,111,-211,11,-11,13,-13,-211,111,-211, 
-     &111,-11,-13,-82,211,111,221,111,4*22,-11,-13,-15,-1,-2,-3,-4, 
-     &2*21,211,111,3*22,-211,111,22,11,7*12,7*14,-321,-323,-311,-313, 
-     &-311,-313,211,213,211,213,211,213,111,221,331,113,223,111,221, 
-     &113,223,321,323,321,-211,-213,111,221,331,113,223,333,10221,111, 
-     &221,331,113,223,211,213,211,213,321,323,321,323,321,323,311,313, 
-     &311,313,2*-1,-3,-1,2203,3201,3203,2203,2101,2103,2*0,11,13,15, 
-     &-211,-213,-20213,-431,-433,3*3122,1,4,3,4,1,3,2*0,-211,11,22,111, 
-     &211,22,-211,111,22,-211,111,211,2*22,0,-211,111,211,2*22,0, 
-     &2*-211,111,22,111,211,22,211,2*-211,2*111,-211,2*211,111,211, 
-     &-211,2*111,211,-321,-211,111,11,-211,111,211,111,22,111,2*22, 
-     &-211,111,211,3*22,847*0/ 
-      DATA (KFDP(I,3),I=   1, 944)/75*0,14,6*0,2*16,2*0,5*111,310,130, 
-     &2*0,2*111,310,130,321,113,211,223,221,2*113,2*211,2*223,2*221, 
-     &2*113,221,113,2*213,-213,195*0,4*3,4*4,1,4,3,2*2,10*81,25*0,-211, 
-     &3*111,-311,-313,-311,-321,-313,-323,111,221,331,113,223,-311, 
-     &-313,-311,-321,-313,-323,111,221,331,113,223,22*0,111,113,2*211, 
-     &-211,-311,211,111,3*211,-211,7*211,-321,-323,-311,-321,-313,-323, 
-     &-211,-213,-321,-323,-311,-321,-313,-323,-211,-213,22*0,111,113, 
-     &-311,2*-211,211,-211,310,-211,2*111,211,2*-211,-321,-211,2*211, 
-     &-211,111,-211,2*211,0,221,331,333,321,311,221,331,333,321,311, 
-     &20*0,3,0,-411,-413,-10413,-10411,-20413,-415,-411,-413,-10413, 
-     &-10411,-20413,-415,-411,-413,16*0,-4,-1,-4,-3,2*-2,-421,-423, 
-     &-10423,-10421,-20423,-425,-421,-423,-10423,-10421,-20423,-425, 
-     &-421,-423,16*0,-4,-1,-4,-3,2*-2,-431,-433,-10433,-10431,-20433, 
-     &-435,-431,-433,-10433,-10431,-20433,-435,-431,-433,19*0,-4,-1,-4, 
-     &-3,2*-2,3*0,441,443,441,443,441,443,-4,-1,-4,-3,-4,-3,-4,-1,531, 
-     &533,531,533,3,2,3,2,511,513,511,513,1,2,0,-11,0,2*111,-211,-11, 
-     &11,-13,2*221,3*0,111,27*0,111,2*0,22,111,5*0,111,12*0,2*21,103*0, 
-     &-211,2*111,-211,3*111,-211,111,211,14*0,111,6*0,111,-211,8*0,111, 
-     &-211,9*0,111,-211,111,-211,4*0,111,-211,111,-211,8*0,111,-211, 
-     &111,-211,4*0,111,-211,111,-211,11*0,-211,6*0,111,211,4*0,111/ 
-      DATA (KFDP(I,3),I= 945,2000)/13*0,2*111,211,-211,211,-211,7*0, 
-     &-211,111,13*0,2*21,-211,111,6*0,2212,3122,3212,3214,2112,2114, 
-     &2212,2112,3122,3212,3214,2112,2114,2212,2112,52*0,3*3,1,8*0, 
-     &3*4122,8*0,4,1,4,3,2*2,3*0,2112,43*0,3322,861*0/ 
-      DATA (KFDP(I,4),I=   1,2000)/88*0,3*111,8*0,-211,0,-211,3*0,111, 
-     &2*-211,0,111,0,2*111,113,221,111,-213,-211,211,195*0,13*81,41*0, 
-     &111,211,111,211,7*0,111,211,111,211,35*0,2*-211,2*111,211,111, 
-     &-211,2*211,2*-211,2*0,-211,111,-211,111,4*0,-211,111,-211,111, 
-     &34*0,111,-211,3*111,3*-211,2*111,3*-211,4*0,-321,-311,3*0,-321, 
-     &-311,20*0,-3,31*0,6*1,30*0,6*2,33*0,6*3,9*0,8*4,4*0,4*-5,4*0, 
-     &2*-5,7*0,-11,264*0,111,-211,4*0,111,57*0,-211,111,5*0,-211,111, 
-     &52*0,2101,2103,2*2101,19*0,6*2101,909*0/ 
-      DATA (KFDP(I,5),I=   1,2000)/90*0,111,16*0,111,7*0,111,0,2*111, 
-     &303*0,-211,2*111,-211,111,-211,111,54*0,111,-211,3*111,-211,111, 
-     &1510*0/ 
-C...LUDAT4, with character strings. 
-      DATA (CHAF(I)  ,I=   1, 281)/'d','u','s','c','b','t','l','h', 
-     &2*' ','e','nu_e','mu','nu_mu','tau','nu_tau','chi','nu_chi', 
-     &2*' ','g','gamma','Z','W','H',2*' ','reggeon','pomeron',2*' ', 
-     &'Z''','Z"','W''','H''','A','H','eta_tech','LQ_ue','R',40*' ', 
-     &'specflav','rndmflav','phasespa','c-hadron','b-hadron', 
-     &'t-hadron','l-hadron','h-hadron','Wvirt','diquark','cluster', 
-     &'string','indep.','CMshower','SPHEaxis','THRUaxis','CLUSjet', 
-     &'CELLjet','table',' ','pi',2*'K',2*'D','D_s',2*'B','B_s','B_c', 
-     &'pi','eta','eta''','eta_c','eta_b','eta_t','eta_l','eta_h',2*' ', 
-     &'rho',2*'K*',2*'D*','D*_s',2*'B*','B*_s','B*_c','rho','omega', 
-     &'phi','J/psi','Upsilon','Theta','Theta_l','Theta_h',2*' ','b_1', 
-     &2*'K_1',2*'D_1','D_1s',2*'B_1','B_1s','B_1c','b_1','h_1','h''_1', 
-     &'h_1c','h_1b','h_1t','h_1l','h_1h',2*' ','a_0',2*'K*_0',2*'D*_0', 
-     &'D*_0s',2*'B*_0','B*_0s','B*_0c','a_0','f_0','f''_0','chi_0c', 
-     &'chi_0b','chi_0t','chi_0l','chi_0h',2*' ','a_1',2*'K*_1', 
-     &2*'D*_1','D*_1s',2*'B*_1','B*_1s','B*_1c','a_1','f_1','f''_1', 
-     &'chi_1c','chi_1b','chi_1t','chi_1l','chi_1h',2*' ','a_2', 
-     &2*'K*_2',2*'D*_2','D*_2s',2*'B*_2','B*_2s','B*_2c','a_2','f_2', 
-     &'f''_2','chi_2c','chi_2b','chi_2t','chi_2l','chi_2h',2*' ','K_L', 
-     &'K_S',8*' ','psi''',3*' ','Upsilon''',45*' ','pi_diffr'/ 
-      DATA (CHAF(I)  ,I= 282, 500)/'n_diffr','p_diffr','rho_diff', 
-     &'omega_di','phi_diff','J/psi_di',18*' ','Lambda',5*' ', 
-     &'Lambda_c',' ',2*'Xi_c',6*' ','Lambda_b',' ',2*'Xi_b',6*' ','n', 
-     &'p',' ',3*'Sigma',2*'Xi',' ',3*'Sigma_c',2*'Xi''_c','Omega_c', 
-     &4*' ',3*'Sigma_b',2*'Xi''_b','Omega_b',4*' ',4*'Delta', 
-     &3*'Sigma*',2*'Xi*','Omega',3*'Sigma*_c',2*'Xi*_c','Omega*_c', 
-     &4*' ',3*'Sigma*_b',2*'Xi*_b','Omega*_b',114*' '/ 
-C...LUDATR, with initial values for the random number generator. 
-      DATA MRLU/19780503,0,0,97,33,0/ 
-      END 
diff --git a/PYTHIA/jetset/ludecy.F b/PYTHIA/jetset/ludecy.F
deleted file mode 100644 (file)
index d2f4f1a..0000000
+++ /dev/null
@@ -1,880 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUDECY(IP) 
-C...Purpose: to handle the decay of unstable particles. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
-      DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3), 
-     &WTCOR(10),PTAU(4),PCMTAU(4) 
-      DOUBLE PRECISION DBETAU(3) 
-      DATA WTCOR/2.,5.,15.,60.,250.,1500.,1.2E4,1.2E5,150.,16./ 
-C...Functions: momentum in two-particle decays, four-product and 
-C...matrix element times phase space in weak decays. 
-      PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2.*A) 
-      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) 
-      HMEPS(HA)=((1.-HRQ-HA)**2+3.*HA*(1.+HRQ-HA))* 
-     &SQRT((1.-HRQ-HA)**2-4.*HRQ*HA) 
-C...Initial values. 
-      NTRY=0 
-      NSAV=N 
-      KFA=IABS(K(IP,2)) 
-      KFS=ISIGN(1,K(IP,2)) 
-      KC=LUCOMP(KFA) 
-      MSTJ(92)=0 
-C...Choose lifetime and determine decay vertex. 
-      IF(K(IP,1).EQ.5) THEN 
-        V(IP,5)=0. 
-      ELSEIF(K(IP,1).NE.4) THEN 
-        V(IP,5)=-PMAS(KC,4)*LOG(RLU(0)) 
-      ENDIF 
-      DO 100 J=1,4 
-      VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5) 
-  100 CONTINUE 
-C...Determine whether decay allowed or not. 
-      MOUT=0 
-      IF(MSTJ(22).EQ.2) THEN 
-        IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1 
-      ELSEIF(MSTJ(22).EQ.3) THEN 
-        IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1 
-      ELSEIF(MSTJ(22).EQ.4) THEN 
-        IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1 
-        IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1 
-      ENDIF 
-      IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN 
-        K(IP,1)=4 
-        RETURN 
-      ENDIF 
-C...Interface to external tau decay library (for tau polarization). 
-      IF(KFA.EQ.15.AND.MSTJ(28).GE.1) THEN 
-C...Starting values for pointers and momenta. 
-        ITAU=IP 
-        DO 110 J=1,4 
-        PTAU(J)=P(ITAU,J) 
-        PCMTAU(J)=P(ITAU,J) 
-  110   CONTINUE 
-C...Iterate to find position and code of mother of tau. 
-        IMTAU=ITAU 
-  120   IMTAU=K(IMTAU,3) 
-        IF(IMTAU.EQ.0) THEN 
-C...If no known origin then impossible to do anything further. 
-          KFORIG=0 
-          IORIG=0 
-        ELSEIF(K(IMTAU,2).EQ.K(ITAU,2)) THEN 
-C...If tau -> tau + gamma then add gamma energy and loop. 
-          IF(K(K(IMTAU,4),2).EQ.22) THEN 
-            DO 130 J=1,4 
-            PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,4),J) 
-  130       CONTINUE 
-          ELSEIF(K(K(IMTAU,5),2).EQ.22) THEN 
-            DO 140 J=1,4 
-            PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,5),J) 
-  140       CONTINUE 
-          ENDIF 
-          GOTO 120 
-        ELSEIF(IABS(K(IMTAU,2)).GT.100) THEN 
-C...If coming from weak decay of hadron then W is not stored in record, 
-C...but can be reconstructed by adding neutrino momentum. 
-          KFORIG=-ISIGN(24,K(ITAU,2)) 
-          IORIG=0 
-          DO 160 II=K(IMTAU,4),K(IMTAU,5) 
-          IF(K(II,2)*ISIGN(1,K(ITAU,2)).EQ.-16) THEN 
-            DO 150 J=1,4 
-            PCMTAU(J)=PCMTAU(J)+P(II,J) 
-  150       CONTINUE 
-          ENDIF 
-  160     CONTINUE 
-        ELSE 
-C...If coming from resonance decay then find latest copy of this 
-C...resonance (may not completely agree). 
-          KFORIG=K(IMTAU,2) 
-          IORIG=IMTAU 
-          DO 170 II=IMTAU+1,IP-1 
-          IF(K(II,2).EQ.KFORIG.AND.K(II,3).EQ.IORIG.AND. 
-     &    ABS(P(II,5)-P(IORIG,5)).LT.1E-5*P(IORIG,5)) IORIG=II 
-  170     CONTINUE 
-          DO 180 J=1,4 
-          PCMTAU(J)=P(IORIG,J) 
-  180     CONTINUE 
-        ENDIF 
-C...Boost tau to rest frame of production process (where known) 
-C...and rotate it to sit along +z axis. 
-        DO 190 J=1,3 
-        DBETAU(J)=PCMTAU(J)/PCMTAU(4) 
-  190   CONTINUE 
-        IF(KFORIG.NE.0) CALL LUDBRB(ITAU,ITAU,0.,0.,-DBETAU(1), 
-     &  -DBETAU(2),-DBETAU(3)) 
-        PHITAU=ULANGL(P(ITAU,1),P(ITAU,2)) 
-        CALL LUDBRB(ITAU,ITAU,0.,-PHITAU,0D0,0D0,0D0) 
-        THETAU=ULANGL(P(ITAU,3),P(ITAU,1)) 
-        CALL LUDBRB(ITAU,ITAU,-THETAU,0.,0D0,0D0,0D0) 
-C...Call tau decay routine (if meaningful) and fill extra info. 
-        IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN 
-          CALL LUTAUD(ITAU,IORIG,KFORIG,NDECAY) 
-          DO 200 II=NSAV+1,NSAV+NDECAY 
-          K(II,1)=1 
-          K(II,3)=IP 
-          K(II,4)=0 
-          K(II,5)=0 
-  200     CONTINUE 
-          N=NSAV+NDECAY 
-        ENDIF 
-C...Boost back decay tau and decay products. 
-        DO 210 J=1,4 
-        P(ITAU,J)=PTAU(J) 
-  210   CONTINUE 
-        IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN 
-          CALL LUDBRB(NSAV+1,N,THETAU,PHITAU,0D0,0D0,0D0) 
-          IF(KFORIG.NE.0) CALL LUDBRB(NSAV+1,N,0.,0.,DBETAU(1), 
-     &    DBETAU(2),DBETAU(3)) 
-C...Skip past ordinary tau decay treatment. 
-          MMAT=0 
-          MBST=0 
-          ND=0 
-          GOTO 660 
-        ENDIF 
-      ENDIF 
-C...B-B~ mixing: flip sign of meson appropriately. 
-      MMIX=0 
-      IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN 
-        XBBMIX=PARJ(76) 
-        IF(KFA.EQ.531) XBBMIX=PARJ(77) 
-        IF(SIN(0.5*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.RLU(0)) MMIX=1 
-        IF(MMIX.EQ.1) KFS=-KFS 
-      ENDIF 
-C...Check existence of decay channels. Particle/antiparticle rules. 
-      KCA=KC 
-      IF(MDCY(KC,2).GT.0) THEN 
-        MDMDCY=MDME(MDCY(KC,2),2) 
-        IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY 
-      ENDIF 
-      IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN 
-        CALL LUERRM(9,'(LUDECY:) no decay channel defined') 
-        RETURN 
-      ENDIF 
-      IF(MOD(KFA/1000,10).EQ.0.AND.(KCA.EQ.85.OR.KCA.EQ.87)) KFS=-KFS 
-      IF(KCHG(KC,3).EQ.0) THEN 
-        KFSP=1 
-        KFSN=0 
-        IF(RLU(0).GT.0.5) KFS=-KFS 
-      ELSEIF(KFS.GT.0) THEN 
-        KFSP=1 
-        KFSN=0 
-      ELSE 
-        KFSP=0 
-        KFSN=1 
-      ENDIF 
-C...Sum branching ratios of allowed decay channels. 
-  220 NOPE=0 
-      BRSU=0. 
-      DO 230 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1 
-      IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND. 
-     &KFSN*MDME(IDL,1).NE.3) GOTO 230 
-      IF(MDME(IDL,2).GT.100) GOTO 230 
-      NOPE=NOPE+1 
-      BRSU=BRSU+BRAT(IDL) 
-  230 CONTINUE 
-      IF(NOPE.EQ.0) THEN 
-        CALL LUERRM(2,'(LUDECY:) all decay channels closed by user') 
-        RETURN 
-      ENDIF 
-C...Select decay channel among allowed ones. 
-  240 RBR=BRSU*RLU(0) 
-      IDL=MDCY(KCA,2)-1 
-  250 IDL=IDL+1 
-      IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND. 
-     &KFSN*MDME(IDL,1).NE.3) THEN 
-        IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250 
-      ELSEIF(MDME(IDL,2).GT.100) THEN 
-        IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250 
-      ELSE 
-        IDC=IDL 
-        RBR=RBR-BRAT(IDL) 
-        IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0.) GOTO 250 
-      ENDIF 
-C...Start readout of decay channel: matrix element, reset counters. 
-      MMAT=MDME(IDC,2) 
-  260 NTRY=NTRY+1 
-      IF(NTRY.GT.1000) THEN 
-        CALL LUERRM(14,'(LUDECY:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      I=N 
-      NP=0 
-      NQ=0 
-      MBST=0 
-      IF(MMAT.GE.11.AND.MMAT.NE.46.AND.P(IP,4).GT.20.*P(IP,5)) MBST=1 
-      DO 270 J=1,4 
-      PV(1,J)=0. 
-      IF(MBST.EQ.0) PV(1,J)=P(IP,J) 
-  270 CONTINUE 
-      IF(MBST.EQ.1) PV(1,4)=P(IP,5) 
-      PV(1,5)=P(IP,5) 
-      PS=0. 
-      PSQ=0. 
-      MREM=0 
-      MHADDY=0 
-      IF(KFA.GT.80) MHADDY=1 
-C...Read out decay products. Convert to standard flavour code. 
-      JTMAX=5 
-      IF(MDME(IDC+1,2).EQ.101) JTMAX=10 
-      DO 280 JT=1,JTMAX 
-      IF(JT.LE.5) KP=KFDP(IDC,JT) 
-      IF(JT.GE.6) KP=KFDP(IDC+1,JT-5) 
-      IF(KP.EQ.0) GOTO 280 
-      KPA=IABS(KP) 
-      KCP=LUCOMP(KPA) 
-      IF(KPA.GT.80) MHADDY=1 
-      IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN 
-        KFP=KP 
-      ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN 
-        KFP=KFS*KP 
-      ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN 
-        KFP=-KFS*MOD(KFA/10,10) 
-      ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN 
-        KFP=KFS*(100*MOD(KFA/10,100)+3) 
-      ELSEIF(KPA.EQ.81) THEN 
-        KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1) 
-      ELSEIF(KP.EQ.82) THEN 
-        CALL LUKFDI(-KFS*INT(1.+(2.+PARJ(2))*RLU(0)),0,KFP,KDUMP) 
-        IF(KFP.EQ.0) GOTO 260 
-        MSTJ(93)=1 
-        IF(PV(1,5).LT.PARJ(32)+2.*ULMASS(KFP)) GOTO 260 
-      ELSEIF(KP.EQ.-82) THEN 
-        KFP=-KFP 
-        IF(IABS(KFP).GT.10) KFP=KFP+ISIGN(10000,KFP) 
-      ENDIF 
-      IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=LUCOMP(KFP) 
-C...Add decay product to event record or to quark flavour list. 
-      KFPA=IABS(KFP) 
-      KQP=KCHG(KCP,2) 
-      IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN 
-        NQ=NQ+1 
-        KFLO(NQ)=KFP 
-        MSTJ(93)=2 
-        PSQ=PSQ+ULMASS(KFLO(NQ)) 
-      ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND. 
-     &MOD(NQ,2).EQ.1) THEN 
-        NQ=NQ-1 
-        PS=PS-P(I,5) 
-        K(I,1)=1 
-        KFI=K(I,2) 
-        CALL LUKFDI(KFP,KFI,KFLDMP,K(I,2)) 
-        IF(K(I,2).EQ.0) GOTO 260 
-        MSTJ(93)=1 
-        P(I,5)=ULMASS(K(I,2)) 
-        PS=PS+P(I,5) 
-      ELSE 
-        I=I+1 
-        NP=NP+1 
-        IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1 
-        IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1 
-        K(I,1)=1+MOD(NQ,2) 
-        IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2 
-        IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1 
-        K(I,2)=KFP 
-        K(I,3)=IP 
-        K(I,4)=0 
-        K(I,5)=0 
-        P(I,5)=ULMASS(KFP) 
-        IF(MMAT.EQ.45.AND.KFPA.EQ.89) P(I,5)=PARJ(32) 
-        PS=PS+P(I,5) 
-      ENDIF 
-  280 CONTINUE 
-C...Check masses for resonance decays. 
-      IF(MHADDY.EQ.0) THEN 
-        IF(PS+PARJ(64).GT.PV(1,5)) GOTO 240 
-      ENDIF 
-C...Choose decay multiplicity in phase space model. 
-  290 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN 
-        PSP=PS 
-        CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1)) 
-        IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63) 
-  300   NTRY=NTRY+1 
-        IF(NTRY.GT.1000) THEN 
-          CALL LUERRM(14,'(LUDECY:) caught in infinite loop') 
-          IF(MSTU(21).GE.1) RETURN 
-        ENDIF 
-        IF(MMAT.LE.20) THEN 
-          GAUSS=SQRT(-2.*CNDE*LOG(MAX(1E-10,RLU(0))))* 
-     &    SIN(PARU(2)*RLU(0)) 
-          ND=0.5+0.5*NP+0.25*NQ+CNDE+GAUSS 
-          IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 300 
-          IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 300 
-          IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 300 
-          IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 300 
-        ELSE 
-          ND=MMAT-20 
-        ENDIF 
-C...Form hadrons from flavour content. 
-        DO 310 JT=1,4 
-        KFL1(JT)=KFLO(JT) 
-  310   CONTINUE 
-        IF(ND.EQ.NP+NQ/2) GOTO 330 
-        DO 320 I=N+NP+1,N+ND-NQ/2 
-        JT=1+INT((NQ-1)*RLU(0)) 
-        CALL LUKFDI(KFL1(JT),0,KFL2,K(I,2)) 
-        IF(K(I,2).EQ.0) GOTO 300 
-        KFL1(JT)=-KFL2 
-  320   CONTINUE 
-  330   JT=2 
-        JT2=3 
-        JT3=4 
-        IF(NQ.EQ.4.AND.RLU(0).LT.PARJ(66)) JT=4 
-        IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))* 
-     &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3 
-        IF(JT.EQ.3) JT2=2 
-        IF(JT.EQ.4) JT3=2 
-        CALL LUKFDI(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2)) 
-        IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 300 
-        IF(NQ.EQ.4) CALL LUKFDI(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2)) 
-        IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 300 
-C...Check that sum of decay product masses not too large. 
-        PS=PSP 
-        DO 340 I=N+NP+1,N+ND 
-        K(I,1)=1 
-        K(I,3)=IP 
-        K(I,4)=0 
-        K(I,5)=0 
-        P(I,5)=ULMASS(K(I,2)) 
-        PS=PS+P(I,5) 
-  340   CONTINUE 
-        IF(PS+PARJ(64).GT.PV(1,5)) GOTO 300 
-C...Rescale energy to subtract off spectator quark mass. 
-      ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44.OR.MMAT.EQ.45) 
-     &.AND.NP.GE.3) THEN 
-        PS=PS-P(N+NP,5) 
-        PQT=(P(N+NP,5)+PARJ(65))/PV(1,5) 
-        DO 350 J=1,5 
-        P(N+NP,J)=PQT*PV(1,J) 
-        PV(1,J)=(1.-PQT)*PV(1,J) 
-  350   CONTINUE 
-        IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260 
-        ND=NP-1 
-        MREM=1 
-C...Phase space factors imposed in W decay. 
-      ELSEIF(MMAT.EQ.46) THEN 
-        MSTJ(93)=1 
-        PSMC=ULMASS(K(N+1,2)) 
-        MSTJ(93)=1 
-        PSMC=PSMC+ULMASS(K(N+2,2)) 
-        IF(MAX(PS,PSMC)+PARJ(32).GT.PV(1,5)) GOTO 240 
-        HR1=(P(N+1,5)/PV(1,5))**2 
-        HR2=(P(N+2,5)/PV(1,5))**2 
-        IF((1.-HR1-HR2)*(2.+HR1+HR2)*SQRT((1.-HR1-HR2)**2-4.*HR1*HR2) 
-     &  .LT.2.*RLU(0)) GOTO 240 
-        ND=NP 
-C...Fully specified final state: check mass broadening effects. 
-      ELSE 
-        IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 260 
-        ND=NP 
-      ENDIF 
-C...Select W mass in decay Q -> W + q, without W propagator. 
-      IF(MMAT.EQ.45.AND.MSTJ(25).LE.0) THEN 
-        HLQ=(PARJ(32)/PV(1,5))**2 
-        HUQ=(1.-(P(N+2,5)+PARJ(64))/PV(1,5))**2 
-        HRQ=(P(N+2,5)/PV(1,5))**2 
-  360   HW=HLQ+RLU(0)*(HUQ-HLQ) 
-        IF(HMEPS(HW).LT.RLU(0)) GOTO 360 
-        P(N+1,5)=PV(1,5)*SQRT(HW) 
-C...Ditto, including W propagator. Divide mass range into three regions. 
-      ELSEIF(MMAT.EQ.45) THEN 
-        HQW=(PV(1,5)/PMAS(24,1))**2 
-        HLW=(PARJ(32)/PMAS(24,1))**2 
-        HUW=((PV(1,5)-P(N+2,5)-PARJ(64))/PMAS(24,1))**2 
-        HRQ=(P(N+2,5)/PV(1,5))**2 
-        HG=PMAS(24,2)/PMAS(24,1) 
-        HATL=ATAN((HLW-1.)/HG) 
-        HM=MIN(1.,HUW-0.001) 
-        HMV1=HMEPS(HM/HQW)/((HM-1.)**2+HG**2) 
-  370   HM=HM-HG 
-        HMV2=HMEPS(HM/HQW)/((HM-1.)**2+HG**2) 
-        IF(HMV2.GT.HMV1.AND.HM-HG.GT.HLW) THEN 
-          HMV1=HMV2 
-          GOTO 370 
-        ENDIF 
-        HMV=MIN(2.*HMV1,HMEPS(HM/HQW)/HG**2) 
-        HM1=1.-SQRT(1./HMV-HG**2) 
-        IF(HM1.GT.HLW.AND.HM1.LT.HM) THEN 
-          HM=HM1 
-        ELSEIF(HMV2.LE.HMV1) THEN 
-          HM=MAX(HLW,HM-MIN(0.1,1.-HM)) 
-        ENDIF 
-        HATM=ATAN((HM-1.)/HG) 
-        HWT1=(HATM-HATL)/HG 
-        HWT2=HMV*(MIN(1.,HUW)-HM) 
-        HWT3=0. 
-        IF(HUW.GT.1.) THEN 
-          HATU=ATAN((HUW-1.)/HG) 
-          HMP1=HMEPS(1./HQW) 
-          HWT3=HMP1*HATU/HG 
-        ENDIF 
-C...Select mass region and W mass there. Accept according to weight. 
-  380   HREG=RLU(0)*(HWT1+HWT2+HWT3) 
-        IF(HREG.LE.HWT1) THEN 
-          HW=1.+HG*TAN(HATL+RLU(0)*(HATM-HATL)) 
-          HACC=HMEPS(HW/HQW) 
-        ELSEIF(HREG.LE.HWT1+HWT2) THEN 
-          HW=HM+RLU(0)*(MIN(1.,HUW)-HM) 
-          HACC=HMEPS(HW/HQW)/((HW-1.)**2+HG**2)/HMV 
-        ELSE 
-          HW=1.+HG*TAN(RLU(0)*HATU) 
-          HACC=HMEPS(HW/HQW)/HMP1 
-        ENDIF 
-        IF(HACC.LT.RLU(0)) GOTO 380 
-        P(N+1,5)=PMAS(24,1)*SQRT(HW) 
-      ENDIF 
-C...Determine position of grandmother, number of sisters, Q -> W sign. 
-      NM=0 
-      KFAS=0 
-      MSGN=0 
-      IF(MMAT.EQ.3.OR.MMAT.EQ.46) THEN 
-        IM=K(IP,3) 
-        IF(IM.LT.0.OR.IM.GE.IP) IM=0 
-        IF(MMAT.EQ.46.AND.MSTJ(27).EQ.1) THEN 
-          IM=0 
-        ELSEIF(MMAT.EQ.46.AND.MSTJ(27).GE.2.AND.IM.NE.0) THEN 
-          IF(K(IM,2).EQ.94) THEN 
-            IM=K(K(IM,3),3) 
-            IF(IM.LT.0.OR.IM.GE.IP) IM=0 
-          ENDIF 
-        ENDIF 
-        IF(IM.NE.0) KFAM=IABS(K(IM,2)) 
-        IF(IM.NE.0.AND.MMAT.EQ.3) THEN 
-          DO 390 IL=MAX(IP-2,IM+1),MIN(IP+2,N) 
-          IF(K(IL,3).EQ.IM) NM=NM+1 
-          IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL 
-  390     CONTINUE 
-          IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR. 
-     &    MOD(KFAM/1000,10).NE.0) NM=0 
-          IF(NM.EQ.2) THEN 
-            KFAS=IABS(K(ISIS,2)) 
-            IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR. 
-     &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0 
-          ENDIF 
-        ELSEIF(IM.NE.0.AND.MMAT.EQ.46) THEN 
-          MSGN=ISIGN(1,K(IM,2)*K(IP,2)) 
-          IF(KFAM.GT.100.AND.MOD(KFAM/1000,10).EQ.0) MSGN= 
-     &    MSGN*(-1)**MOD(KFAM/100,10) 
-        ENDIF 
-      ENDIF 
-C...Kinematics of one-particle decays. 
-      IF(ND.EQ.1) THEN 
-        DO 400 J=1,4 
-        P(N+1,J)=P(IP,J) 
-  400   CONTINUE 
-        GOTO 660 
-      ENDIF 
-C...Calculate maximum weight ND-particle decay. 
-      PV(ND,5)=P(N+ND,5) 
-      IF(ND.GE.3) THEN 
-        WTMAX=1./WTCOR(ND-2) 
-        PMAX=PV(1,5)-PS+P(N+ND,5) 
-        PMIN=0. 
-        DO 410 IL=ND-1,1,-1 
-        PMAX=PMAX+P(N+IL,5) 
-        PMIN=PMIN+P(N+IL+1,5) 
-        WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5)) 
-  410   CONTINUE 
-      ENDIF 
-C...Find virtual gamma mass in Dalitz decay. 
-  420 IF(ND.EQ.2) THEN 
-      ELSEIF(MMAT.EQ.2) THEN 
-        PMES=4.*PMAS(11,1)**2 
-        PMRHO2=PMAS(131,1)**2 
-        PGRHO2=PMAS(131,2)**2 
-  430   PMST=PMES*(P(IP,5)**2/PMES)**RLU(0) 
-        WT=(1+0.5*PMES/PMST)*SQRT(MAX(0.,1.-PMES/PMST))* 
-     &  (1.-PMST/P(IP,5)**2)**3*(1.+PGRHO2/PMRHO2)/ 
-     &  ((1.-PMST/PMRHO2)**2+PGRHO2/PMRHO2) 
-        IF(WT.LT.RLU(0)) GOTO 430 
-        PV(2,5)=MAX(2.00001*PMAS(11,1),SQRT(PMST)) 
-C...M-generator gives weight. If rejected, try again. 
-      ELSE 
-  440   RORD(1)=1. 
-        DO 470 IL1=2,ND-1 
-        RSAV=RLU(0) 
-        DO 450 IL2=IL1-1,1,-1 
-        IF(RSAV.LE.RORD(IL2)) GOTO 460 
-        RORD(IL2+1)=RORD(IL2) 
-  450   CONTINUE 
-  460   RORD(IL2+1)=RSAV 
-  470   CONTINUE 
-        RORD(ND)=0. 
-        WT=1. 
-        DO 480 IL=ND-1,1,-1 
-        PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*(PV(1,5)-PS) 
-        WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5)) 
-  480   CONTINUE 
-        IF(WT.LT.RLU(0)*WTMAX) GOTO 440 
-      ENDIF 
-C...Perform two-particle decays in respective CM frame. 
-  490 DO 510 IL=1,ND-1 
-      PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5)) 
-      UE(3)=2.*RLU(0)-1. 
-      PHI=PARU(2)*RLU(0) 
-      UE(1)=SQRT(1.-UE(3)**2)*COS(PHI) 
-      UE(2)=SQRT(1.-UE(3)**2)*SIN(PHI) 
-      DO 500 J=1,3 
-      P(N+IL,J)=PA*UE(J) 
-      PV(IL+1,J)=-PA*UE(J) 
-  500 CONTINUE 
-      P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2) 
-      PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2) 
-  510 CONTINUE 
-C...Lorentz transform decay products to lab frame. 
-      DO 520 J=1,4 
-      P(N+ND,J)=PV(ND,J) 
-  520 CONTINUE 
-      DO 560 IL=ND-1,1,-1 
-      DO 530 J=1,3 
-      BE(J)=PV(IL,J)/PV(IL,4) 
-  530 CONTINUE 
-      GA=PV(IL,4)/PV(IL,5) 
-      DO 550 I=N+IL,N+ND 
-      BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3) 
-      DO 540 J=1,3 
-      P(I,J)=P(I,J)+GA*(GA*BEP/(1.+GA)+P(I,4))*BE(J) 
-  540 CONTINUE 
-      P(I,4)=GA*(P(I,4)+BEP) 
-  550 CONTINUE 
-  560 CONTINUE 
-C...Check that no infinite loop in matrix element weight. 
-      NTRY=NTRY+1 
-      IF(NTRY.GT.800) GOTO 590 
-C...Matrix elements for omega and phi decays. 
-      IF(MMAT.EQ.1) THEN 
-        WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2 
-     &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2 
-     &  +2.*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3) 
-        IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001).LT.RLU(0)) GOTO 420 
-C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-. 
-      ELSEIF(MMAT.EQ.2) THEN 
-        FOUR12=FOUR(N+1,N+2) 
-        FOUR13=FOUR(N+1,N+3) 
-        WT=(PMST-0.5*PMES)*(FOUR12**2+FOUR13**2)+ 
-     &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2) 
-        IF(WT.LT.RLU(0)*0.25*PMST*(P(IP,5)**2-PMST)**2) GOTO 490 
-C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar, 
-C...V vector), of form cos**2(theta02) in V1 rest frame, and for 
-C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02). 
-      ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN 
-        FOUR10=FOUR(IP,IM) 
-        FOUR12=FOUR(IP,N+1) 
-        FOUR02=FOUR(IM,N+1) 
-        PMS1=P(IP,5)**2 
-        PMS0=P(IM,5)**2 
-        PMS2=P(N+1,5)**2 
-        IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2 
-        IF(KFAS.EQ.22) HNUM=PMS1*(2.*FOUR10*FOUR12*FOUR02- 
-     &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2) 
-        HNUM=MAX(1E-6*PMS1**2*PMS0*PMS2,HNUM) 
-        HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2) 
-        IF(HNUM.LT.RLU(0)*HDEN) GOTO 490 
-C...Matrix element for "onium" -> g + g + g or gamma + g + g. 
-      ELSEIF(MMAT.EQ.4) THEN 
-        HX1=2.*FOUR(IP,N+1)/P(IP,5)**2 
-        HX2=2.*FOUR(IP,N+2)/P(IP,5)**2 
-        HX3=2.*FOUR(IP,N+3)/P(IP,5)**2 
-        WT=((1.-HX1)/(HX2*HX3))**2+((1.-HX2)/(HX1*HX3))**2+ 
-     &  ((1.-HX3)/(HX1*HX2))**2 
-        IF(WT.LT.2.*RLU(0)) GOTO 420 
-        IF(K(IP+1,2).EQ.22.AND.(1.-HX1)*P(IP,5)**2.LT.4.*PARJ(32)**2) 
-     &  GOTO 420 
-C...Effective matrix element for nu spectrum in tau -> nu + hadrons. 
-      ELSEIF(MMAT.EQ.41) THEN 
-        HX1=2.*FOUR(IP,N+1)/P(IP,5)**2 
-        HXM=MIN(0.75,2.*(1.-PS/P(IP,5))) 
-        IF(HX1*(3.-2.*HX1).LT.RLU(0)*HXM*(3.-2.*HXM)) GOTO 420 
-C...Matrix elements for weak decays (only semileptonic for c and b) 
-      ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) 
-     &.AND.ND.EQ.3) THEN 
-        IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3) 
-        IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3) 
-        IF(WT.LT.RLU(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 420 
-      ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN 
-        DO 580 J=1,4 
-        P(N+NP+1,J)=0. 
-        DO 570 IS=N+3,N+NP 
-        P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J) 
-  570   CONTINUE 
-  580   CONTINUE 
-        IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1) 
-        IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1) 
-        IF(WT.LT.RLU(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 420 
-C...Angular distribution in W decay. 
-      ELSEIF(MMAT.EQ.46.AND.MSGN.NE.0) THEN 
-        IF(MSGN.GT.0) WT=FOUR(IM,N+1)*FOUR(N+2,IP+1) 
-        IF(MSGN.LT.0) WT=FOUR(IM,N+2)*FOUR(N+1,IP+1) 
-        IF(WT.LT.RLU(0)*P(IM,5)**4/WTCOR(10)) GOTO 490 
-      ENDIF 
-C...Scale back energy and reattach spectator. 
-  590 IF(MREM.EQ.1) THEN 
-        DO 600 J=1,5 
-        PV(1,J)=PV(1,J)/(1.-PQT) 
-  600   CONTINUE 
-        ND=ND+1 
-        MREM=0 
-      ENDIF 
-C...Low invariant mass for system with spectator quark gives particle, 
-C...not two jets. Readjust momenta accordingly. 
-      IF((MMAT.EQ.31.OR.MMAT.EQ.45).AND.ND.EQ.3) THEN 
-        MSTJ(93)=1 
-        PM2=ULMASS(K(N+2,2)) 
-        MSTJ(93)=1 
-        PM3=ULMASS(K(N+3,2)) 
-        IF(P(N+2,5)**2+P(N+3,5)**2+2.*FOUR(N+2,N+3).GE. 
-     &  (PARJ(32)+PM2+PM3)**2) GOTO 660 
-        K(N+2,1)=1 
-        KFTEMP=K(N+2,2) 
-        CALL LUKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2)) 
-        IF(K(N+2,2).EQ.0) GOTO 260 
-        P(N+2,5)=ULMASS(K(N+2,2)) 
-        PS=P(N+1,5)+P(N+2,5) 
-        PV(2,5)=P(N+2,5) 
-        MMAT=0 
-        ND=2 
-        GOTO 490 
-      ELSEIF(MMAT.EQ.44) THEN 
-        MSTJ(93)=1 
-        PM3=ULMASS(K(N+3,2)) 
-        MSTJ(93)=1 
-        PM4=ULMASS(K(N+4,2)) 
-        IF(P(N+3,5)**2+P(N+4,5)**2+2.*FOUR(N+3,N+4).GE. 
-     &  (PARJ(32)+PM3+PM4)**2) GOTO 630 
-        K(N+3,1)=1 
-        KFTEMP=K(N+3,2) 
-        CALL LUKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2)) 
-        IF(K(N+3,2).EQ.0) GOTO 260 
-        P(N+3,5)=ULMASS(K(N+3,2)) 
-        DO 610 J=1,3 
-        P(N+3,J)=P(N+3,J)+P(N+4,J) 
-  610   CONTINUE 
-        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) 
-        HA=P(N+1,4)**2-P(N+2,4)**2 
-        HB=HA-(P(N+1,5)**2-P(N+2,5)**2) 
-        HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+ 
-     &  (P(N+1,3)-P(N+2,3))**2 
-        HD=(PV(1,4)-P(N+3,4))**2 
-        HE=HA**2-2.*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2 
-        HF=HD*HC-HB**2 
-        HG=HD*HC-HA*HB 
-        HH=(SQRT(HG**2+HE*HF)-HG)/(2.*HF) 
-        DO 620 J=1,3 
-        PCOR=HH*(P(N+1,J)-P(N+2,J)) 
-        P(N+1,J)=P(N+1,J)+PCOR 
-        P(N+2,J)=P(N+2,J)-PCOR 
-  620   CONTINUE 
-        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) 
-        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) 
-        ND=ND-1 
-      ENDIF 
-C...Check invariant mass of W jets. May give one particle or start over. 
-  630 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) 
-     &.AND.IABS(K(N+1,2)).LT.10) THEN 
-        PMR=SQRT(MAX(0.,P(N+1,5)**2+P(N+2,5)**2+2.*FOUR(N+1,N+2))) 
-        MSTJ(93)=1 
-        PM1=ULMASS(K(N+1,2)) 
-        MSTJ(93)=1 
-        PM2=ULMASS(K(N+2,2)) 
-        IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 640 
-        KFLDUM=INT(1.5+RLU(0)) 
-        CALL LUKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1) 
-        CALL LUKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2) 
-        IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 260 
-        PSM=ULMASS(KF1)+ULMASS(KF2) 
-        IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 640 
-        IF(MMAT.GE.43.AND.PMR.GT.0.2*PARJ(32)+PSM) GOTO 640 
-        IF(MMAT.EQ.48) GOTO 420 
-        IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 260 
-        K(N+1,1)=1 
-        KFTEMP=K(N+1,2) 
-        CALL LUKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2)) 
-        IF(K(N+1,2).EQ.0) GOTO 260 
-        P(N+1,5)=ULMASS(K(N+1,2)) 
-        K(N+2,2)=K(N+3,2) 
-        P(N+2,5)=P(N+3,5) 
-        PS=P(N+1,5)+P(N+2,5) 
-        IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260 
-        PV(2,5)=P(N+3,5) 
-        MMAT=0 
-        ND=2 
-        GOTO 490 
-      ENDIF 
-C...Phase space decay of partons from W decay. 
-  640 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN 
-        KFLO(1)=K(N+1,2) 
-        KFLO(2)=K(N+2,2) 
-        K(N+1,1)=K(N+3,1) 
-        K(N+1,2)=K(N+3,2) 
-        DO 650 J=1,5 
-        PV(1,J)=P(N+1,J)+P(N+2,J) 
-        P(N+1,J)=P(N+3,J) 
-  650   CONTINUE 
-        PV(1,5)=PMR 
-        N=N+1 
-        NP=0 
-        NQ=2 
-        PS=0. 
-        MSTJ(93)=2 
-        PSQ=ULMASS(KFLO(1)) 
-        MSTJ(93)=2 
-        PSQ=PSQ+ULMASS(KFLO(2)) 
-        MMAT=11 
-        GOTO 290 
-      ENDIF 
-C...Boost back for rapidly moving particle. 
-  660 N=N+ND 
-      IF(MBST.EQ.1) THEN 
-        DO 670 J=1,3 
-        BE(J)=P(IP,J)/P(IP,4) 
-  670   CONTINUE 
-        GA=P(IP,4)/P(IP,5) 
-        DO 690 I=NSAV+1,N 
-        BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3) 
-        DO 680 J=1,3 
-        P(I,J)=P(I,J)+GA*(GA*BEP/(1.+GA)+P(I,4))*BE(J) 
-  680   CONTINUE 
-        P(I,4)=GA*(P(I,4)+BEP) 
-  690   CONTINUE 
-      ENDIF 
-C...Fill in position of decay vertex. 
-      DO 710 I=NSAV+1,N 
-      DO 700 J=1,4 
-      V(I,J)=VDCY(J) 
-  700 CONTINUE 
-      V(I,5)=0. 
-  710 CONTINUE 
-C...Set up for parton shower evolution from jets. 
-      IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN 
-        K(NSAV+1,1)=3 
-        K(NSAV+2,1)=3 
-        K(NSAV+3,1)=3 
-        K(NSAV+1,4)=MSTU(5)*(NSAV+2) 
-        K(NSAV+1,5)=MSTU(5)*(NSAV+3) 
-        K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
-        K(NSAV+2,5)=MSTU(5)*(NSAV+1) 
-        K(NSAV+3,4)=MSTU(5)*(NSAV+1) 
-        K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
-        MSTJ(92)=-(NSAV+1) 
-      ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN 
-        K(NSAV+2,1)=3 
-        K(NSAV+3,1)=3 
-        K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
-        K(NSAV+2,5)=MSTU(5)*(NSAV+3) 
-        K(NSAV+3,4)=MSTU(5)*(NSAV+2) 
-        K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
-        MSTJ(92)=NSAV+2 
-      ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44.OR.MMAT.EQ.46) 
-     &.AND.IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN 
-        K(NSAV+1,1)=3 
-        K(NSAV+2,1)=3 
-        K(NSAV+1,4)=MSTU(5)*(NSAV+2) 
-        K(NSAV+1,5)=MSTU(5)*(NSAV+2) 
-        K(NSAV+2,4)=MSTU(5)*(NSAV+1) 
-        K(NSAV+2,5)=MSTU(5)*(NSAV+1) 
-        MSTJ(92)=NSAV+1 
-      ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44.OR.MMAT.EQ.46) 
-     &.AND.IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN 
-        MSTJ(92)=NSAV+1 
-      ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21) 
-     &THEN 
-        K(NSAV+1,1)=3 
-        K(NSAV+2,1)=3 
-        K(NSAV+3,1)=3 
-        KCP=LUCOMP(K(NSAV+1,2)) 
-        KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2)) 
-        JCON=4 
-        IF(KQP.LT.0) JCON=5 
-        K(NSAV+1,JCON)=MSTU(5)*(NSAV+2) 
-        K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1) 
-        K(NSAV+2,JCON)=MSTU(5)*(NSAV+3) 
-        K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2) 
-        MSTJ(92)=NSAV+1 
-      ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN 
-        K(NSAV+1,1)=3 
-        K(NSAV+3,1)=3 
-        K(NSAV+1,4)=MSTU(5)*(NSAV+3) 
-        K(NSAV+1,5)=MSTU(5)*(NSAV+3) 
-        K(NSAV+3,4)=MSTU(5)*(NSAV+1) 
-        K(NSAV+3,5)=MSTU(5)*(NSAV+1) 
-        MSTJ(92)=NSAV+1 
-C...Set up for parton shower evolution in t -> W + b. 
-      ELSEIF(MSTJ(27).GE.1.AND.MMAT.EQ.45.AND.ND.EQ.3) THEN 
-        K(NSAV+2,1)=3 
-        K(NSAV+3,1)=3 
-        K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
-        K(NSAV+2,5)=MSTU(5)*(NSAV+3) 
-        K(NSAV+3,4)=MSTU(5)*(NSAV+2) 
-        K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
-        MSTJ(92)=NSAV+1 
-      ENDIF 
-C...Mark decayed particle; special option for B-B~ mixing. 
-      IF(K(IP,1).EQ.5) K(IP,1)=15 
-      IF(K(IP,1).LE.10) K(IP,1)=11 
-      IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12 
-      K(IP,4)=NSAV+1 
-      K(IP,5)=N 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luedit.F b/PYTHIA/jetset/luedit.F
deleted file mode 100644 (file)
index 8f69e30..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUEDIT(MEDIT) 
-C...Purpose: to perform global manipulations on the event record, 
-C...in particular to exclude unstable or undetectable partons/particles. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION NS(2),PTS(2),PLS(2) 
-C...Remove unwanted partons/particles. 
-      IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN 
-        IMAX=N 
-        IF(MSTU(2).GT.0) IMAX=MSTU(2) 
-        I1=MAX(1,MSTU(1))-1 
-        DO 110 I=MAX(1,MSTU(1)),IMAX 
-        IF(K(I,1).EQ.0.OR.K(I,1).GT.20) GOTO 110 
-        IF(MEDIT.EQ.1) THEN 
-          IF(K(I,1).GT.10) GOTO 110 
-        ELSEIF(MEDIT.EQ.2) THEN 
-          IF(K(I,1).GT.10) GOTO 110 
-          KC=LUCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.KC.EQ.18) 
-     &    GOTO 110 
-        ELSEIF(MEDIT.EQ.3) THEN 
-          IF(K(I,1).GT.10) GOTO 110 
-          KC=LUCOMP(K(I,2)) 
-          IF(KC.EQ.0) GOTO 110 
-          IF(KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) GOTO 110 
-        ELSEIF(MEDIT.EQ.5) THEN 
-          IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) GOTO 110 
-          KC=LUCOMP(K(I,2)) 
-          IF(KC.EQ.0) GOTO 110 
-          IF(K(I,1).GE.11.AND.KCHG(KC,2).EQ.0) GOTO 110 
-        ENDIF 
-C...Pack remaining partons/particles. Origin no longer known. 
-        I1=I1+1 
-        DO 100 J=1,5 
-        K(I1,J)=K(I,J) 
-        P(I1,J)=P(I,J) 
-        V(I1,J)=V(I,J) 
-  100   CONTINUE 
-        K(I1,3)=0 
-  110   CONTINUE 
-        IF(I1.LT.N) MSTU(3)=0 
-        IF(I1.LT.N) MSTU(70)=0 
-        N=I1 
-C...Selective removal of class of entries. New position of retained. 
-      ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN 
-        I1=0 
-        DO 120 I=1,N 
-        K(I,3)=MOD(K(I,3),MSTU(5)) 
-        IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120 
-        IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120 
-        IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR. 
-     &  K(I,1).EQ.15).AND.K(I,2).NE.94) GOTO 120 
-        IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR. 
-     &  K(I,2).EQ.94)) GOTO 120 
-        IF(MEDIT.EQ.15.AND.K(I,1).GE.21) GOTO 120 
-        I1=I1+1 
-        K(I,3)=K(I,3)+MSTU(5)*I1 
-  120   CONTINUE 
-C...Find new event history information and replace old. 
-        DO 140 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,3)/MSTU(5).EQ.0) GOTO 140 
-        ID=I 
-  130   IM=MOD(K(ID,3),MSTU(5)) 
-        IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN 
-          IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15).AND. 
-     &    K(IM,2).NE.94) THEN 
-            ID=IM 
-            GOTO 130 
-          ENDIF 
-        ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN 
-          IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,2).EQ.94) THEN 
-            ID=IM 
-            GOTO 130 
-          ENDIF 
-        ENDIF 
-        K(I,3)=MSTU(5)*(K(I,3)/MSTU(5)) 
-        IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5) 
-        IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN 
-          IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)= 
-     &    K(K(I,4),3)/MSTU(5) 
-          IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)= 
-     &    K(K(I,5),3)/MSTU(5) 
-        ELSE 
-          KCM=MOD(K(I,4)/MSTU(5),MSTU(5)) 
-          IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5) 
-          KCD=MOD(K(I,4),MSTU(5)) 
-          IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5) 
-          K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD 
-          KCM=MOD(K(I,5)/MSTU(5),MSTU(5)) 
-          IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5) 
-          KCD=MOD(K(I,5),MSTU(5)) 
-          IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5) 
-          K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD 
-        ENDIF 
-  140   CONTINUE 
-C...Pack remaining entries. 
-        I1=0 
-        MSTU90=MSTU(90) 
-        MSTU(90)=0 
-        DO 170 I=1,N 
-        IF(K(I,3)/MSTU(5).EQ.0) GOTO 170 
-        I1=I1+1 
-        DO 150 J=1,5 
-        K(I1,J)=K(I,J) 
-        P(I1,J)=P(I,J) 
-        V(I1,J)=V(I,J) 
-  150   CONTINUE 
-        K(I1,3)=MOD(K(I1,3),MSTU(5)) 
-        DO 160 IZ=1,MSTU90 
-        IF(I.EQ.MSTU(90+IZ)) THEN 
-          MSTU(90)=MSTU(90)+1 
-          MSTU(90+MSTU(90))=I1 
-          PARU(90+MSTU(90))=PARU(90+IZ) 
-        ENDIF 
-  160   CONTINUE 
-  170   CONTINUE 
-        IF(I1.LT.N) MSTU(3)=0 
-        IF(I1.LT.N) MSTU(70)=0 
-        N=I1 
-C...Fill in some missing daughter pointers (lost in colour flow). 
-      ELSEIF(MEDIT.EQ.16) THEN 
-        DO 190 I=1,N 
-        IF(K(I,1).LE.10.OR.K(I,1).GT.20) GOTO 190 
-        IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 190 
-C...Find daughters who point to mother.
-        DO 180 I1=I+1,N 
-        IF(K(I1,3).NE.I) THEN 
-        ELSEIF(K(I,4).EQ.0) THEN 
-          K(I,4)=I1 
-        ELSE 
-          K(I,5)=I1 
-        ENDIF 
-  180   CONTINUE 
-        IF(K(I,5).EQ.0) K(I,5)=K(I,4)
-        IF(K(I,4).NE.0) GOTO 190
-C...Find daughters who point to documentation version of mother.      
-        IM=K(I,3)
-        IF(IM.LE.0.OR.IM.GE.I) GOTO 190
-        IF(K(IM,1).LE.20.OR.K(IM,1).GT.30) GOTO 190  
-        IF(K(IM,2).NE.K(I,2).OR.ABS(P(IM,5)-P(I,5)).GT.1E-2) GOTO 190
-        DO 182 I1=I+1,N 
-        IF(K(I1,3).NE.IM) THEN 
-        ELSEIF(K(I,4).EQ.0) THEN 
-          K(I,4)=I1 
-        ELSE 
-          K(I,5)=I1 
-        ENDIF 
-  182   CONTINUE 
-        IF(K(I,5).EQ.0) K(I,5)=K(I,4)
-        IF(K(I,4).NE.0) GOTO 190
-C...Find daughters who point to documentation daughters who,
-C...in their turn, point to documentation mother.
-        ID1=IM
-        ID2=IM
-        DO 184 I1=IM+1,I-1
-        IF(K(I1,3).EQ.IM.AND.K(I1,1).GT.20.AND.K(I1,1).LE.30) THEN
-          ID2=I1
-          IF(ID1.EQ.IM) ID1=I1
-        ENDIF
-  184   CONTINUE 
-        DO 186 I1=I+1,N 
-        IF(K(I1,3).NE.ID1.AND.K(I1,3).NE.ID2) THEN 
-        ELSEIF(K(I,4).EQ.0) THEN 
-          K(I,4)=I1 
-        ELSE 
-          K(I,5)=I1 
-        ENDIF 
-  186   CONTINUE 
-        IF(K(I,5).EQ.0) K(I,5)=K(I,4)
-  190   CONTINUE 
-C...Save top entries at bottom of LUJETS commonblock. 
-      ELSEIF(MEDIT.EQ.21) THEN 
-        IF(2*N.GE.MSTU(4)) THEN 
-          CALL LUERRM(11,'(LUEDIT:) no more memory left in LUJETS') 
-          RETURN 
-        ENDIF 
-        DO 210 I=1,N 
-        DO 200 J=1,5 
-        K(MSTU(4)-I,J)=K(I,J) 
-        P(MSTU(4)-I,J)=P(I,J) 
-        V(MSTU(4)-I,J)=V(I,J) 
-  200   CONTINUE 
-  210   CONTINUE 
-        MSTU(32)=N 
-C...Restore bottom entries of commonblock LUJETS to top. 
-      ELSEIF(MEDIT.EQ.22) THEN 
-        DO 230 I=1,MSTU(32) 
-        DO 220 J=1,5 
-        K(I,J)=K(MSTU(4)-I,J) 
-        P(I,J)=P(MSTU(4)-I,J) 
-        V(I,J)=V(MSTU(4)-I,J) 
-  220   CONTINUE 
-  230   CONTINUE 
-        N=MSTU(32) 
-C...Mark primary entries at top of commonblock LUJETS as untreated. 
-      ELSEIF(MEDIT.EQ.23) THEN 
-        I1=0 
-        DO 240 I=1,N 
-        KH=K(I,3) 
-        IF(KH.GE.1) THEN 
-          IF(K(KH,1).GT.20) KH=0 
-        ENDIF 
-        IF(KH.NE.0) GOTO 250 
-        I1=I1+1 
-        IF(K(I,1).GT.10.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10 
-  240   CONTINUE 
-  250   N=I1 
-C...Place largest axis along z axis and second largest in xy plane. 
-      ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN 
-        CALL LUDBRB(1,N+MSTU(3),0.,-ULANGL(P(MSTU(61),1), 
-     &  P(MSTU(61),2)),0D0,0D0,0D0) 
-        CALL LUDBRB(1,N+MSTU(3),-ULANGL(P(MSTU(61),3), 
-     &  P(MSTU(61),1)),0.,0D0,0D0,0D0) 
-        CALL LUDBRB(1,N+MSTU(3),0.,-ULANGL(P(MSTU(61)+1,1), 
-     &  P(MSTU(61)+1,2)),0D0,0D0,0D0) 
-        IF(MEDIT.EQ.31) RETURN 
-C...Rotate to put slim jet along +z axis. 
-        DO 260 IS=1,2 
-        NS(IS)=0 
-        PTS(IS)=0. 
-        PLS(IS)=0. 
-  260   CONTINUE 
-        DO 270 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 270 
-        IF(MSTU(41).GE.2) THEN 
-          KC=LUCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &    KC.EQ.18) GOTO 270 
-          IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &    GOTO 270 
-        ENDIF 
-        IS=2.-SIGN(0.5,P(I,3)) 
-        NS(IS)=NS(IS)+1 
-        PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2) 
-  270   CONTINUE 
-        IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2) 
-     &  CALL LUDBRB(1,N+MSTU(3),PARU(1),0.,0D0,0D0,0D0) 
-C...Rotate to put second largest jet into -z,+x quadrant. 
-        DO 280 I=1,N 
-        IF(P(I,3).GE.0.) GOTO 280 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 280 
-        IF(MSTU(41).GE.2) THEN 
-          KC=LUCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &    KC.EQ.18) GOTO 280 
-          IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &    GOTO 280 
-        ENDIF 
-        IS=2.-SIGN(0.5,P(I,1)) 
-        PLS(IS)=PLS(IS)-P(I,3) 
-  280   CONTINUE 
-        IF(PLS(2).GT.PLS(1)) CALL LUDBRB(1,N+MSTU(3),0.,PARU(1), 
-     &  0D0,0D0,0D0) 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lueevt.F b/PYTHIA/jetset/lueevt.F
deleted file mode 100644 (file)
index 1817603..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUEEVT(KFL,ECM) 
-C...Purpose: to handle the generation of an e+e- annihilation jet event. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Check input parameters. 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      IF(KFL.LT.0.OR.KFL.GT.8) THEN 
-        CALL LUERRM(16,'(LUEEVT:) called with unknown flavour code') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02*PARF(100+MAX(1,KFL)) 
-      IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02*PMAS(KFL,1) 
-      IF(ECM.LT.ECMMIN) THEN 
-        CALL LUERRM(16,'(LUEEVT:) called with too small CM energy') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Check consistency of MSTJ options set. 
-      IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN 
-        CALL LUERRM(6, 
-     &  '(LUEEVT:) MSTJ(109) value requires MSTJ(110) = 1') 
-        MSTJ(110)=1 
-      ENDIF 
-      IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN 
-        CALL LUERRM(6, 
-     &  '(LUEEVT:) MSTJ(109) value requires MSTJ(111) = 0') 
-        MSTJ(111)=0 
-      ENDIF 
-C...Initialize alpha_strong and total cross-section. 
-      MSTU(111)=MSTJ(108) 
-      IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1)) 
-     &MSTU(111)=1 
-      PARU(112)=PARJ(121) 
-      IF(MSTU(111).EQ.2) PARU(112)=PARJ(122) 
-      IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE. 
-     &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL LUXTOT(KFL,ECM, 
-     &XTOT) 
-      IF(MSTJ(116).GE.3) MSTJ(116)=1 
-      PARJ(171)=0. 
-C...Add initial e+e- to event record (documentation only). 
-      NTRY=0 
-  100 NTRY=NTRY+1 
-      IF(NTRY.GT.100) THEN 
-        CALL LUERRM(14,'(LUEEVT:) caught in an infinite loop') 
-        RETURN 
-      ENDIF 
-      MSTU(24)=0 
-      NC=0 
-      IF(MSTJ(115).GE.2) THEN 
-        NC=NC+2 
-        CALL LU1ENT(NC-1,11,0.5*ECM,0.,0.) 
-        K(NC-1,1)=21 
-        CALL LU1ENT(NC,-11,0.5*ECM,PARU(1),0.) 
-        K(NC,1)=21 
-      ENDIF 
-C...Radiative photon (in initial state). 
-      MK=0 
-      ECMC=ECM 
-      IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL LURADK(ECM,MK,PAK, 
-     &THEK,PHIK,ALPK) 
-      IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2.*PAK)) 
-      IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN 
-        NC=NC+1 
-        CALL LU1ENT(NC,22,PAK,THEK,PHIK) 
-        K(NC,3)=MIN(MSTJ(115)/2,1) 
-      ENDIF 
-C...Virtual exchange boson (gamma or Z0). 
-      IF(MSTJ(115).GE.3) THEN 
-        NC=NC+1 
-        KF=22 
-        IF(MSTJ(102).EQ.2) KF=23 
-        MSTU10=MSTU(10) 
-        MSTU(10)=1 
-        P(NC,5)=ECMC 
-        CALL LU1ENT(NC,KF,ECMC,0.,0.) 
-        K(NC,1)=21 
-        K(NC,3)=1 
-        MSTU(10)=MSTU10 
-      ENDIF 
-C...Choice of flavour and jet configuration. 
-      CALL LUXKFL(KFL,ECM,ECMC,KFLC) 
-      IF(KFLC.EQ.0) GOTO 100 
-      CALL LUXJET(ECMC,NJET,CUT) 
-      KFLN=21 
-      IF(NJET.EQ.4) CALL LUX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4, 
-     &X12,X14) 
-      IF(NJET.EQ.3) CALL LUX3JT(NJET,CUT,KFLC,ECMC,X1,X3) 
-      IF(NJET.EQ.2) MSTJ(120)=1 
-C...Fill jet configuration and origin. 
-      IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL LU2ENT(NC+1,KFLC,-KFLC,ECMC) 
-      IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL LU2ENT(-(NC+1),KFLC,-KFLC, 
-     &ECMC) 
-      IF(NJET.EQ.3) CALL LU3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3) 
-      IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL LU4ENT(NC+1,KFLC,KFLN,KFLN, 
-     &-KFLC,ECMC,X1,X2,X4,X12,X14) 
-      IF(NJET.EQ.4.AND.KFLN.NE.21) CALL LU4ENT(NC+1,KFLC,-KFLN,KFLN, 
-     &-KFLC,ECMC,X1,X2,X4,X12,X14) 
-      IF(MSTU(24).NE.0) GOTO 100 
-      DO 110 IP=NC+1,N 
-      K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1) 
-  110 CONTINUE 
-C...Angular orientation according to matrix element. 
-      IF(MSTJ(106).EQ.1) THEN 
-        CALL LUXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI) 
-        CALL LUDBRB(NC+1,N,0.,CHI,0D0,0D0,0D0) 
-        CALL LUDBRB(NC+1,N,THE,PHI,0D0,0D0,0D0) 
-      ENDIF 
-C...Rotation and boost from radiative photon. 
-      IF(MK.EQ.1) THEN 
-        DBEK=-PAK/(ECM-PAK) 
-        NMIN=NC+1-MSTJ(115)/3 
-        CALL LUDBRB(NMIN,N,0.,-PHIK,0D0,0D0,0D0) 
-        CALL LUDBRB(NMIN,N,ALPK,0.,DBEK*SIN(THEK),0D0,DBEK*COS(THEK)) 
-        CALL LUDBRB(NMIN,N,0.,PHIK,0D0,0D0,0D0) 
-      ENDIF 
-C...Generate parton shower. Rearrange along strings and check. 
-      IF(MSTJ(101).EQ.5) THEN 
-        CALL LUSHOW(N-1,N,ECMC) 
-        MSTJ14=MSTJ(14) 
-        IF(MSTJ(105).EQ.-1) MSTJ(14)=-1 
-        IF(MSTJ(105).GE.0) MSTU(28)=0 
-        CALL LUPREP(0) 
-        MSTJ(14)=MSTJ14 
-        IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100 
-      ENDIF 
-C...Fragmentation/decay generation. Information for LUTABU. 
-      IF(MSTJ(105).EQ.1) CALL LUEXEC 
-      MSTU(161)=KFLC 
-      MSTU(162)=-KFLC 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luerrm.F b/PYTHIA/jetset/luerrm.F
deleted file mode 100644 (file)
index 45e5d6c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUERRM(MERR,CHMESS) 
-C...Purpose: to inform user of errors in program execution. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUJETS/,/LUDAT1/ 
-      CHARACTER CHMESS*(*) 
-C...Write first few warnings, then be silent. 
-      IF(MERR.LE.10) THEN 
-        MSTU(27)=MSTU(27)+1 
-        MSTU(28)=MERR 
-        IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000) 
-     &  MERR,MSTU(31),CHMESS 
-C...Write first few errors, then be silent or stop program. 
-      ELSEIF(MERR.LE.20) THEN 
-        MSTU(23)=MSTU(23)+1 
-        MSTU(24)=MERR-10 
-        IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100) 
-     &  MERR-10,MSTU(31),CHMESS 
-        IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN 
-          WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS 
-          WRITE(MSTU(11),5200) 
-          IF(MERR.NE.17) CALL LULIST(2) 
-          STOP 
-        ENDIF 
-C...Stop program in case of irreparable error. 
-      ELSE 
-        WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS 
-        STOP 
-      ENDIF 
-C...Formats for output. 
- 5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I6, 
-     &' LUEXEC calls:'/5X,A) 
- 5100 FORMAT(/5X,'Error type',I2,' has occured after',I6, 
-     &' LUEXEC calls:'/5X,A) 
- 5200 FORMAT(5X,'Execution will be stopped after listing of last ', 
-     &'event!') 
- 5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I6, 
-     &' LUEXEC calls:'/5X,A/5X,'Execution will now be stopped!') 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luexec.F b/PYTHIA/jetset/luexec.F
deleted file mode 100644 (file)
index ef4d694..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUEXEC 
-C...Purpose: to administrate the fragmentation and decay chain. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
-      DIMENSION PS(2,6) 
-C...Initialize and reset. 
-      MSTU(24)=0 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      MSTU(31)=MSTU(31)+1 
-      MSTU(1)=0 
-      MSTU(2)=0 
-      MSTU(3)=0 
-      IF(MSTU(17).LE.0) MSTU(90)=0 
-      MCONS=1 
-C...Sum up momentum, energy and charge for starting entries. 
-      NSAV=N 
-      DO 110 I=1,2 
-      DO 100 J=1,6 
-      PS(I,J)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-      DO 130 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130 
-      DO 120 J=1,4 
-      PS(1,J)=PS(1,J)+P(I,J) 
-  120 CONTINUE 
-      PS(1,6)=PS(1,6)+LUCHGE(K(I,2)) 
-  130 CONTINUE 
-      PARU(21)=PS(1,4) 
-C...Prepare system for subsequent fragmentation/decay. 
-      CALL LUPREP(0) 
-C...Loop through jet fragmentation and particle decays. 
-      MBE=0 
-  140 MBE=MBE+1 
-      IP=0 
-  150 IP=IP+1 
-      KC=0 
-      IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=LUCOMP(K(IP,2)) 
-      IF(KC.EQ.0) THEN 
-C...Particle decay if unstable and allowed. Save long-lived particle 
-C...decays until second pass after Bose-Einstein effects. 
-      ELSEIF(KCHG(KC,2).EQ.0) THEN 
-        IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE 
-     &  .EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311)) 
-     &  CALL LUDECY(IP) 
-C...Decay products may develop a shower. 
-        IF(MSTJ(92).GT.0) THEN 
-          IP1=MSTJ(92) 
-          QMAX=SQRT(MAX(0.,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1, 
-     &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2)) 
-          CALL LUSHOW(IP1,IP1+1,QMAX) 
-          CALL LUPREP(IP1) 
-          MSTJ(92)=0 
-        ELSEIF(MSTJ(92).LT.0) THEN 
-          IP1=-MSTJ(92) 
-          CALL LUSHOW(IP1,-3,P(IP,5)) 
-          CALL LUPREP(IP1) 
-          MSTJ(92)=0 
-        ENDIF 
-C...Jet fragmentation: string or independent fragmentation. 
-      ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN 
-        MFRAG=MSTJ(1) 
-        IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2 
-        IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN 
-          IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND. 
-     &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN 
-            IF(KCHG(LUCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG) 
-          ENDIF 
-        ENDIF 
-        IF(MFRAG.EQ.1) CALL LUSTRF(IP) 
-        IF(MFRAG.EQ.2) CALL LUINDF(IP) 
-        IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0 
-        IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0 
-      ENDIF 
-C...Loop back if enough space left in LUJETS and no error abort. 
-      IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN 
-      ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN 
-        GOTO 150 
-      ELSEIF(IP.LT.N) THEN 
-        CALL LUERRM(11,'(LUEXEC:) no more memory left in LUJETS') 
-      ENDIF 
-C...Include simple Bose-Einstein effect parametrization if desired. 
-      IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN 
-        CALL LUBOEI(NSAV) 
-        GOTO 140 
-      ENDIF 
-C...Check that momentum, energy and charge were conserved. 
-      DO 170 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170 
-      DO 160 J=1,4 
-      PS(2,J)=PS(2,J)+P(I,J) 
-  160 CONTINUE 
-      PS(2,6)=PS(2,6)+LUCHGE(K(I,2)) 
-  170 CONTINUE 
-      PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)- 
-     &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1.+ABS(PS(2,4))+ABS(PS(1,4))) 
-      IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL LUERRM(15, 
-     &'(LUEXEC:) four-momentum was not conserved') 
-      IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1) CALL LUERRM(15, 
-     &'(LUEXEC:) charge was not conserved') 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lufowo.F b/PYTHIA/jetset/lufowo.F
deleted file mode 100644 (file)
index 7a36383..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUFOWO(H10,H20,H30,H40) 
-C...Purpose: to calculate the first few Fox-Wolfram moments. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Copy momenta for particles and calculate H0. 
-      NP=0 
-      H0=0. 
-      HD=0. 
-      DO 110 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LUCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 110 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &  GOTO 110 
-      ENDIF 
-      IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUFOWO:) no more memory left in LUJETS') 
-        H10=-1. 
-        H20=-1. 
-        H30=-1. 
-        H40=-1. 
-        RETURN 
-      ENDIF 
-      NP=NP+1 
-      DO 100 J=1,3 
-      P(N+NP,J)=P(I,J) 
-  100 CONTINUE 
-      P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      H0=H0+P(N+NP,4) 
-      HD=HD+P(N+NP,4)**2 
-  110 CONTINUE 
-      H0=H0**2 
-C...Very low multiplicities (0 or 1) not considered. 
-      IF(NP.LE.1) THEN 
-        CALL LUERRM(8,'(LUFOWO:) too few particles for analysis') 
-        H10=-1. 
-        H20=-1. 
-        H30=-1. 
-        H40=-1. 
-        RETURN 
-      ENDIF 
-C...Calculate H1 - H4. 
-      H10=0. 
-      H20=0. 
-      H30=0. 
-      H40=0. 
-      DO 130 I1=N+1,N+NP 
-      DO 120 I2=I1+1,N+NP 
-      CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/ 
-     &(P(I1,4)*P(I2,4)) 
-      H10=H10+P(I1,4)*P(I2,4)*CTHE 
-      H20=H20+P(I1,4)*P(I2,4)*(1.5*CTHE**2-0.5) 
-      H30=H30+P(I1,4)*P(I2,4)*(2.5*CTHE**3-1.5*CTHE) 
-      H40=H40+P(I1,4)*P(I2,4)*(4.375*CTHE**4-3.75*CTHE**2+0.375) 
-  120 CONTINUE 
-  130 CONTINUE 
-C...Calculate H1/H0 - H4/H0. Output. 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      H10=(HD+2.*H10)/H0 
-      H20=(HD+2.*H20)/H0 
-      H30=(HD+2.*H30)/H0 
-      H40=(HD+2.*H40)/H0 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lugive.F b/PYTHIA/jetset/lugive.F
deleted file mode 100644 (file)
index 1adc95b..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUGIVE(CHIN) 
-C...Purpose: to set values of commonblock variables (also in PYTHIA!). 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      COMMON/LUDAT4/CHAF(500) 
-      CHARACTER CHAF*8 
-      COMMON/LUDATR/MRLU(6),RRLU(100) 
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200) 
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) 
-      COMMON/PYINT1/MINT(400),VINT(400) 
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2) 
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) 
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3) 
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3) 
-      COMMON/PYINT6/PROC(0:200) 
-      COMMON/PYINT7/SIGT(0:6,0:6,0:5) 
-      CHARACTER PROC*28 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/,/LUDAT4/,/LUDATR/ 
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/, 
-     &/PYINT5/,/PYINT6/,/PYINT7/ 
-      CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28, 
-     &CHNEW2*28,CHNAM*4,CHVAR(43)*4,CHALP(2)*26,CHIND*8,CHINI*10, 
-     &CHINR*16 
-      DIMENSION MSVAR(43,8) 
-C...For each variable to be translated give: name, 
-C...integer/real/character, no. of indices, lower&upper index bounds. 
-      DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG', 
-     &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRLU', 
-     &'RRLU','MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI', 
-     &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH', 
-     &'WIDP','WIDE','WIDS','NGEN','XSEC','PROC','SIGT'/ 
-      DATA ((MSVAR(I,J),J=1,8),I=1,43)/ 1,7*0,  1,2,1,4000,1,5,2*0, 
-     & 2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0, 
-     & 2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0, 
-     & 1,2,1,500,1,3,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0, 
-     & 2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,2000,1,2,2*0, 
-     & 2,1,1,2000,4*0,  1,2,1,2000,1,5,2*0,  3,1,1,500,4*0, 
-     & 1,1,1,6,4*0,  2,1,1,100,4*0, 
-     & 1,7*0,  1,1,1,200,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0, 
-     & 1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0, 
-     & 1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,200,4*0, 
-     & 1,2,1,200,1,2,2*0,  2,2,1,200,1,20,2*0,  1,3,1,40,1,4,1,2, 
-     & 2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0, 
-     & 2,2,21,40,0,40,2*0,  2,2,21,40,0,40,2*0,  2,2,21,40,1,3,2*0, 
-     & 1,2,0,200,1,3,2*0,  2,2,0,200,1,3,2*0,  4,1,0,200,4*0, 
-     & 2,3,0,6,0,6,0,5/ 
-      DATA CHALP/'abcdefghijklmnopqrstuvwxyz', 
-     &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ 
-C...Length of character variable. Subdivide it into instructions. 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      CHBIT=CHIN//' ' 
-      LBIT=101 
-  100 LBIT=LBIT-1 
-      IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100 
-      LTOT=0 
-      DO 110 LCOM=1,LBIT 
-      IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110 
-      LTOT=LTOT+1 
-      CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM) 
-  110 CONTINUE 
-      LLOW=0 
-  120 LHIG=LLOW+1 
-  130 LHIG=LHIG+1 
-      IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130 
-      LBIT=LHIG-LLOW-1 
-      CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1) 
-C...Identify commonblock variable. 
-      LNAM=1 
-  140 LNAM=LNAM+1 
-      IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND. 
-     &LNAM.LE.4) GOTO 140 
-      CHNAM=CHBIT(1:LNAM-1)//' ' 
-      DO 160 LCOM=1,LNAM-1 
-      DO 150 LALP=1,26 
-      IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)= 
-     &CHALP(2)(LALP:LALP) 
-  150 CONTINUE 
-  160 CONTINUE 
-      IVAR=0 
-      DO 170 IV=1,43 
-      IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV 
-  170 CONTINUE 
-      IF(IVAR.EQ.0) THEN 
-        CALL LUERRM(18,'(LUGIVE:) do not recognize variable '//CHNAM) 
-        LLOW=LHIG 
-        IF(LLOW.LT.LTOT) GOTO 120 
-        RETURN 
-      ENDIF 
-C...Identify any indices. 
-      I1=0 
-      I2=0 
-      I3=0 
-      NINDX=0 
-      IF(CHBIT(LNAM:LNAM).EQ.'(') THEN 
-        LIND=LNAM 
-  180   LIND=LIND+1 
-        IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 180 
-        CHIND=' ' 
-        IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c'). 
-     &  AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17)) THEN 
-          CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1) 
-          READ(CHIND,'(I8)') KF 
-          I1=LUCOMP(KF) 
-        ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ. 
-     &  'c') THEN 
-          CALL LUERRM(18,'(LUGIVE:) not allowed to use C index for '// 
-     &    CHNAM) 
-          LLOW=LHIG 
-          IF(LLOW.LT.LTOT) GOTO 120 
-          RETURN 
-        ELSE 
-          CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
-          READ(CHIND,'(I8)') I1 
-        ENDIF 
-        LNAM=LIND 
-        IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1 
-        NINDX=1 
-      ENDIF 
-      IF(CHBIT(LNAM:LNAM).EQ.',') THEN 
-        LIND=LNAM 
-  190   LIND=LIND+1 
-        IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190 
-        CHIND=' ' 
-        CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
-        READ(CHIND,'(I8)') I2 
-        LNAM=LIND 
-        IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1 
-        NINDX=2 
-      ENDIF 
-      IF(CHBIT(LNAM:LNAM).EQ.',') THEN 
-        LIND=LNAM 
-  200   LIND=LIND+1 
-        IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200 
-        CHIND=' ' 
-        CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
-        READ(CHIND,'(I8)') I3 
-        LNAM=LIND+1 
-        NINDX=3 
-      ENDIF 
-C...Check that indices allowed. 
-      IERR=0 
-      IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1 
-      IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4))) 
-     &IERR=2 
-      IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6))) 
-     &IERR=3 
-      IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8))) 
-     &IERR=4 
-      IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5 
-      IF(IERR.GE.1) THEN 
-        CALL LUERRM(18,'(LUGIVE:) unallowed indices for '// 
-     &  CHBIT(1:LNAM-1)) 
-        LLOW=LHIG 
-        IF(LLOW.LT.LTOT) GOTO 120 
-        RETURN 
-      ENDIF 
-C...Save old value of variable. 
-      IF(IVAR.EQ.1) THEN 
-        IOLD=N 
-      ELSEIF(IVAR.EQ.2) THEN 
-        IOLD=K(I1,I2) 
-      ELSEIF(IVAR.EQ.3) THEN 
-        ROLD=P(I1,I2) 
-      ELSEIF(IVAR.EQ.4) THEN 
-        ROLD=V(I1,I2) 
-      ELSEIF(IVAR.EQ.5) THEN 
-        IOLD=MSTU(I1) 
-      ELSEIF(IVAR.EQ.6) THEN 
-        ROLD=PARU(I1) 
-      ELSEIF(IVAR.EQ.7) THEN 
-        IOLD=MSTJ(I1) 
-      ELSEIF(IVAR.EQ.8) THEN 
-        ROLD=PARJ(I1) 
-      ELSEIF(IVAR.EQ.9) THEN 
-        IOLD=KCHG(I1,I2) 
-      ELSEIF(IVAR.EQ.10) THEN 
-        ROLD=PMAS(I1,I2) 
-      ELSEIF(IVAR.EQ.11) THEN 
-        ROLD=PARF(I1) 
-      ELSEIF(IVAR.EQ.12) THEN 
-        ROLD=VCKM(I1,I2) 
-      ELSEIF(IVAR.EQ.13) THEN 
-        IOLD=MDCY(I1,I2) 
-      ELSEIF(IVAR.EQ.14) THEN 
-        IOLD=MDME(I1,I2) 
-      ELSEIF(IVAR.EQ.15) THEN 
-        ROLD=BRAT(I1) 
-      ELSEIF(IVAR.EQ.16) THEN 
-        IOLD=KFDP(I1,I2) 
-      ELSEIF(IVAR.EQ.17) THEN 
-        CHOLD=CHAF(I1) 
-      ELSEIF(IVAR.EQ.18) THEN 
-        IOLD=MRLU(I1) 
-      ELSEIF(IVAR.EQ.19) THEN 
-        ROLD=RRLU(I1) 
-      ELSEIF(IVAR.EQ.20) THEN 
-        IOLD=MSEL 
-      ELSEIF(IVAR.EQ.21) THEN 
-        IOLD=MSUB(I1) 
-      ELSEIF(IVAR.EQ.22) THEN 
-        IOLD=KFIN(I1,I2) 
-      ELSEIF(IVAR.EQ.23) THEN 
-        ROLD=CKIN(I1) 
-      ELSEIF(IVAR.EQ.24) THEN 
-        IOLD=MSTP(I1) 
-      ELSEIF(IVAR.EQ.25) THEN 
-        ROLD=PARP(I1) 
-      ELSEIF(IVAR.EQ.26) THEN 
-        IOLD=MSTI(I1) 
-      ELSEIF(IVAR.EQ.27) THEN 
-        ROLD=PARI(I1) 
-      ELSEIF(IVAR.EQ.28) THEN 
-        IOLD=MINT(I1) 
-      ELSEIF(IVAR.EQ.29) THEN 
-        ROLD=VINT(I1) 
-      ELSEIF(IVAR.EQ.30) THEN 
-        IOLD=ISET(I1) 
-      ELSEIF(IVAR.EQ.31) THEN 
-        IOLD=KFPR(I1,I2) 
-      ELSEIF(IVAR.EQ.32) THEN 
-        ROLD=COEF(I1,I2) 
-      ELSEIF(IVAR.EQ.33) THEN 
-        IOLD=ICOL(I1,I2,I3) 
-      ELSEIF(IVAR.EQ.34) THEN 
-        ROLD=XSFX(I1,I2) 
-      ELSEIF(IVAR.EQ.35) THEN 
-        IOLD=ISIG(I1,I2) 
-      ELSEIF(IVAR.EQ.36) THEN 
-        ROLD=SIGH(I1) 
-      ELSEIF(IVAR.EQ.37) THEN 
-        ROLD=WIDP(I1,I2) 
-      ELSEIF(IVAR.EQ.38) THEN 
-        ROLD=WIDE(I1,I2) 
-      ELSEIF(IVAR.EQ.39) THEN 
-        ROLD=WIDS(I1,I2) 
-      ELSEIF(IVAR.EQ.40) THEN 
-        IOLD=NGEN(I1,I2) 
-      ELSEIF(IVAR.EQ.41) THEN 
-        ROLD=XSEC(I1,I2) 
-      ELSEIF(IVAR.EQ.42) THEN 
-        CHOLD2=PROC(I1) 
-      ELSEIF(IVAR.EQ.43) THEN 
-        ROLD=SIGT(I1,I2,I3) 
-      ENDIF 
-C...Print current value of variable. Loop back. 
-      IF(LNAM.GE.LBIT) THEN 
-        CHBIT(LNAM:14)=' ' 
-        CHBIT(15:60)=' has the value                                ' 
-        IF(MSVAR(IVAR,1).EQ.1) THEN 
-          WRITE(CHBIT(51:60),'(I10)') IOLD 
-        ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
-          WRITE(CHBIT(47:60),'(F14.5)') ROLD 
-        ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
-          CHBIT(53:60)=CHOLD 
-        ELSE 
-          CHBIT(33:60)=CHOLD 
-        ENDIF 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
-        LLOW=LHIG 
-        IF(LLOW.LT.LTOT) GOTO 120 
-        RETURN 
-      ENDIF 
-C...Read in new variable value. 
-      IF(MSVAR(IVAR,1).EQ.1) THEN 
-        CHINI=' ' 
-        CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT) 
-        READ(CHINI,'(I10)') INEW 
-      ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
-        CHINR=' ' 
-        CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT) 
-        READ(CHINR,'(F16.2)') RNEW 
-      ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
-        CHNEW=CHBIT(LNAM+1:LBIT)//' ' 
-      ELSE 
-        CHNEW2=CHBIT(LNAM+1:LBIT)//' ' 
-      ENDIF 
-C...Store new variable value. 
-      IF(IVAR.EQ.1) THEN 
-        N=INEW 
-      ELSEIF(IVAR.EQ.2) THEN 
-        K(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.3) THEN 
-        P(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.4) THEN 
-        V(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.5) THEN 
-        MSTU(I1)=INEW 
-      ELSEIF(IVAR.EQ.6) THEN 
-        PARU(I1)=RNEW 
-      ELSEIF(IVAR.EQ.7) THEN 
-        MSTJ(I1)=INEW 
-      ELSEIF(IVAR.EQ.8) THEN 
-        PARJ(I1)=RNEW 
-      ELSEIF(IVAR.EQ.9) THEN 
-        KCHG(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.10) THEN 
-        PMAS(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.11) THEN 
-        PARF(I1)=RNEW 
-      ELSEIF(IVAR.EQ.12) THEN 
-        VCKM(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.13) THEN 
-        MDCY(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.14) THEN 
-        MDME(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.15) THEN 
-        BRAT(I1)=RNEW 
-      ELSEIF(IVAR.EQ.16) THEN 
-        KFDP(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.17) THEN 
-        CHAF(I1)=CHNEW 
-      ELSEIF(IVAR.EQ.18) THEN 
-        MRLU(I1)=INEW 
-      ELSEIF(IVAR.EQ.19) THEN 
-        RRLU(I1)=RNEW 
-      ELSEIF(IVAR.EQ.20) THEN 
-        MSEL=INEW 
-      ELSEIF(IVAR.EQ.21) THEN 
-        MSUB(I1)=INEW 
-      ELSEIF(IVAR.EQ.22) THEN 
-        KFIN(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.23) THEN 
-        CKIN(I1)=RNEW 
-      ELSEIF(IVAR.EQ.24) THEN 
-        MSTP(I1)=INEW 
-      ELSEIF(IVAR.EQ.25) THEN 
-        PARP(I1)=RNEW 
-      ELSEIF(IVAR.EQ.26) THEN 
-        MSTI(I1)=INEW 
-      ELSEIF(IVAR.EQ.27) THEN 
-        PARI(I1)=RNEW 
-      ELSEIF(IVAR.EQ.28) THEN 
-        MINT(I1)=INEW 
-      ELSEIF(IVAR.EQ.29) THEN 
-        VINT(I1)=RNEW 
-      ELSEIF(IVAR.EQ.30) THEN 
-        ISET(I1)=INEW 
-      ELSEIF(IVAR.EQ.31) THEN 
-        KFPR(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.32) THEN 
-        COEF(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.33) THEN 
-        ICOL(I1,I2,I3)=INEW 
-      ELSEIF(IVAR.EQ.34) THEN 
-        XSFX(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.35) THEN 
-        ISIG(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.36) THEN 
-        SIGH(I1)=RNEW 
-      ELSEIF(IVAR.EQ.37) THEN 
-        WIDP(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.38) THEN 
-        WIDE(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.39) THEN 
-        WIDS(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.40) THEN 
-        NGEN(I1,I2)=INEW 
-      ELSEIF(IVAR.EQ.41) THEN 
-        XSEC(I1,I2)=RNEW 
-      ELSEIF(IVAR.EQ.42) THEN 
-        PROC(I1)=CHNEW2 
-      ELSEIF(IVAR.EQ.43) THEN 
-        SIGT(I1,I2,I3)=RNEW 
-      ENDIF 
-C...Write old and new value. Loop back. 
-      CHBIT(LNAM:14)=' ' 
-      CHBIT(15:60)=' changed from                to               ' 
-      IF(MSVAR(IVAR,1).EQ.1) THEN 
-        WRITE(CHBIT(33:42),'(I10)') IOLD 
-        WRITE(CHBIT(51:60),'(I10)') INEW 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
-      ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
-        WRITE(CHBIT(29:42),'(F14.5)') ROLD 
-        WRITE(CHBIT(47:60),'(F14.5)') RNEW 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
-      ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
-        CHBIT(35:42)=CHOLD 
-        CHBIT(53:60)=CHNEW 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
-      ELSE 
-        CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2 
-        IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88) 
-      ENDIF 
-      LLOW=LHIG 
-      IF(LLOW.LT.LTOT) GOTO 120 
-C...Format statement for output on unit MSTU(11) (by default 6). 
- 5000 FORMAT(5X,A60) 
- 5100 FORMAT(5X,A88) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luhepc.F b/PYTHIA/jetset/luhepc.F
deleted file mode 100644 (file)
index c1c85a4..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUHEPC(MCONV) 
-C...Purpose: to convert JETSET event record contents to or from 
-C...the standard event record commonblock. 
-C...Note that HEPEVT is in double precision according to LEP 2 standard.
-      PARAMETER (NMXHEP=2000) 
-      COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), 
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) 
-      DOUBLE PRECISION PHEP,VHEP
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /HEPEVT/ 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Conversion from JETSET to standard, the easy part. 
-      IF(MCONV.EQ.1) THEN 
-        NEVHEP=0 
-        IF(N.GT.NMXHEP) CALL LUERRM(8, 
-     &  '(LUHEPC:) no more space in /HEPEVT/') 
-        NHEP=MIN(N,NMXHEP) 
-        DO 140 I=1,NHEP 
-        ISTHEP(I)=0 
-        IF(K(I,1).GE.1.AND.K(I,1).LE.10) ISTHEP(I)=1 
-        IF(K(I,1).GE.11.AND.K(I,1).LE.20) ISTHEP(I)=2 
-        IF(K(I,1).GE.21.AND.K(I,1).LE.30) ISTHEP(I)=3 
-        IF(K(I,1).GE.31.AND.K(I,1).LE.100) ISTHEP(I)=K(I,1) 
-        IDHEP(I)=K(I,2) 
-        JMOHEP(1,I)=K(I,3) 
-        JMOHEP(2,I)=0 
-        IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN 
-          JDAHEP(1,I)=K(I,4) 
-          JDAHEP(2,I)=K(I,5) 
-        ELSE 
-          JDAHEP(1,I)=0 
-          JDAHEP(2,I)=0 
-        ENDIF 
-        DO 100 J=1,5 
-        PHEP(J,I)=P(I,J) 
-  100   CONTINUE 
-        DO 110 J=1,4 
-        VHEP(J,I)=V(I,J) 
-  110   CONTINUE 
-C...Check if new event (from pileup). 
-        IF(I.EQ.1) THEN 
-          INEW=1 
-        ELSE 
-          IF(K(I,1).EQ.21.AND.K(I-1,1).NE.21) INEW=I 
-        ENDIF 
-C...Fill in missing mother information. 
-        IF(I.GE.INEW+2.AND.K(I,1).EQ.21.AND.K(I,3).EQ.0) THEN 
-          IMO1=I-2 
-          IF(I.GE.INEW+3.AND.K(I-1,1).EQ.21.AND.K(I-1,3).EQ.0) 
-     &    IMO1=IMO1-1 
-          JMOHEP(1,I)=IMO1 
-          JMOHEP(2,I)=IMO1+1 
-        ELSEIF(K(I,2).GE.91.AND.K(I,2).LE.93) THEN 
-          I1=K(I,3)-1 
-  120     I1=I1+1 
-          IF(I1.GE.I) CALL LUERRM(8, 
-     &    '(LUHEPC:) translation of inconsistent event history') 
-          IF(I1.LT.I.AND.K(I1,1).NE.1.AND.K(I1,1).NE.11) GOTO 120 
-          KC=LUCOMP(K(I1,2)) 
-          IF(I1.LT.I.AND.KC.EQ.0) GOTO 120 
-          IF(I1.LT.I.AND.KCHG(KC,2).EQ.0) GOTO 120 
-          JMOHEP(2,I)=I1 
-        ELSEIF(K(I,2).EQ.94) THEN 
-          NJET=2 
-          IF(NHEP.GE.I+3.AND.K(I+3,3).LE.I) NJET=3 
-          IF(NHEP.GE.I+4.AND.K(I+4,3).LE.I) NJET=4 
-          JMOHEP(2,I)=MOD(K(I+NJET,4)/MSTU(5),MSTU(5)) 
-          IF(JMOHEP(2,I).EQ.JMOHEP(1,I)) JMOHEP(2,I)= 
-     &    MOD(K(I+1,4)/MSTU(5),MSTU(5)) 
-        ENDIF 
-C...Fill in missing daughter information. 
-        IF(K(I,2).EQ.94.AND.MSTU(16).NE.2) THEN 
-          DO 130 I1=JDAHEP(1,I),JDAHEP(2,I) 
-          I2=MOD(K(I1,4)/MSTU(5),MSTU(5)) 
-          JDAHEP(1,I2)=I 
-  130     CONTINUE 
-        ENDIF 
-        IF(K(I,2).GE.91.AND.K(I,2).LE.94) GOTO 140 
-        I1=JMOHEP(1,I) 
-        IF(I1.LE.0.OR.I1.GT.NHEP) GOTO 140 
-        IF(K(I1,1).NE.13.AND.K(I1,1).NE.14) GOTO 140 
-        IF(JDAHEP(1,I1).EQ.0) THEN 
-          JDAHEP(1,I1)=I 
-        ELSE 
-          JDAHEP(2,I1)=I 
-        ENDIF 
-  140   CONTINUE 
-        DO 150 I=1,NHEP 
-        IF(K(I,1).NE.13.AND.K(I,1).NE.14) GOTO 150 
-        IF(JDAHEP(2,I).EQ.0) JDAHEP(2,I)=JDAHEP(1,I) 
-  150   CONTINUE 
-C...Conversion from standard to JETSET, the easy part. 
-      ELSE 
-        IF(NHEP.GT.MSTU(4)) CALL LUERRM(8, 
-     &  '(LUHEPC:) no more space in /LUJETS/') 
-        N=MIN(NHEP,MSTU(4)) 
-        NKQ=0 
-        KQSUM=0 
-        DO 180 I=1,N 
-        K(I,1)=0 
-        IF(ISTHEP(I).EQ.1) K(I,1)=1 
-        IF(ISTHEP(I).EQ.2) K(I,1)=11 
-        IF(ISTHEP(I).EQ.3) K(I,1)=21 
-        K(I,2)=IDHEP(I) 
-        K(I,3)=JMOHEP(1,I) 
-        K(I,4)=JDAHEP(1,I) 
-        K(I,5)=JDAHEP(2,I) 
-        DO 160 J=1,5 
-        P(I,J)=PHEP(J,I) 
-  160   CONTINUE 
-        DO 170 J=1,4 
-        V(I,J)=VHEP(J,I) 
-  170   CONTINUE 
-        V(I,5)=0. 
-        IF(ISTHEP(I).EQ.2.AND.PHEP(4,I).GT.PHEP(5,I)) THEN 
-          I1=JDAHEP(1,I) 
-          IF(I1.GT.0.AND.I1.LE.NHEP) V(I,5)=(VHEP(4,I1)-VHEP(4,I))* 
-     &    PHEP(5,I)/PHEP(4,I) 
-        ENDIF 
-C...Fill in missing information on colour connection in jet systems. 
-        IF(ISTHEP(I).EQ.1) THEN 
-          KC=LUCOMP(K(I,2)) 
-          KQ=0 
-          IF(KC.NE.0) KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-          IF(KQ.NE.0) NKQ=NKQ+1 
-          IF(KQ.NE.2) KQSUM=KQSUM+KQ 
-          IF(KQ.NE.0.AND.KQSUM.NE.0) THEN 
-            K(I,1)=2 
-          ELSEIF(KQ.EQ.2.AND.I.LT.N) THEN 
-            IF(K(I+1,2).EQ.21) K(I,1)=2 
-          ENDIF 
-        ENDIF 
-  180   CONTINUE 
-        IF(NKQ.EQ.1.OR.KQSUM.NE.0) CALL LUERRM(8, 
-     &  '(LUHEPC:) input parton configuration not colour singlet') 
-      ENDIF 
-      END 
diff --git a/PYTHIA/jetset/luindf.F b/PYTHIA/jetset/luindf.F
deleted file mode 100644 (file)
index 6502897..0000000
+++ /dev/null
@@ -1,463 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUINDF(IP) 
-C...Purpose: to handle the fragmentation of a jet system (or a single 
-C...jet) according to independent fragmentation models. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3), 
-     &KFLO(2),PXO(2),PYO(2),WO(2) 
-C...Reset counters. Identify parton system and take copy. Check flavour. 
-      NSAV=N 
-      MSTU90=MSTU(90) 
-      NJET=0 
-      KQSUM=0 
-      DO 100 J=1,5 
-      DPS(J)=0. 
-  100 CONTINUE 
-      I=IP-1 
-  110 I=I+1 
-      IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN 
-        CALL LUERRM(12,'(LUINDF:) failed to reconstruct jet system') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110 
-      KC=LUCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 110 
-      KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-      IF(KQ.EQ.0) GOTO 110 
-      NJET=NJET+1 
-      IF(KQ.NE.2) KQSUM=KQSUM+KQ 
-      DO 120 J=1,5 
-      K(NSAV+NJET,J)=K(I,J) 
-      P(NSAV+NJET,J)=P(I,J) 
-      DPS(J)=DPS(J)+P(I,J) 
-  120 CONTINUE 
-      K(NSAV+NJET,3)=I 
-      IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND. 
-     &K(I+1,1).EQ.2)) GOTO 110 
-      IF(NJET.NE.1.AND.KQSUM.NE.0) THEN 
-        CALL LUERRM(12,'(LUINDF:) unphysical flavour combination') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Boost copied system to CM frame. Find CM energy and sum flavours. 
-      IF(NJET.NE.1) THEN 
-        MSTU(33)=1 
-        CALL LUDBRB(NSAV+1,NSAV+NJET,0.,0.,-DPS(1)/DPS(4), 
-     &  -DPS(2)/DPS(4),-DPS(3)/DPS(4)) 
-      ENDIF 
-      PECM=0. 
-      DO 130 J=1,3 
-      NFI(J)=0 
-  130 CONTINUE 
-      DO 140 I=NSAV+1,NSAV+NJET 
-      PECM=PECM+P(I,4) 
-      KFA=IABS(K(I,2)) 
-      IF(KFA.LE.3) THEN 
-        NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2)) 
-      ELSEIF(KFA.GT.1000) THEN 
-        KFLA=MOD(KFA/1000,10) 
-        KFLB=MOD(KFA/100,10) 
-        IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2)) 
-        IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2)) 
-      ENDIF 
-  140 CONTINUE 
-C...Loop over attempts made. Reset counters. 
-      NTRY=0 
-  150 NTRY=NTRY+1 
-      IF(NTRY.GT.200) THEN 
-        CALL LUERRM(14,'(LUINDF:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      N=NSAV+NJET 
-      MSTU(90)=MSTU90 
-      DO 160 J=1,3 
-      NFL(J)=NFI(J) 
-      IFET(J)=0 
-      KFLF(J)=0 
-  160 CONTINUE 
-C...Loop over jets to be fragmented. 
-      DO 230 IP1=NSAV+1,NSAV+NJET 
-      MSTJ(91)=0 
-      NSAV1=N 
-      MSTU91=MSTU(90) 
-C...Initial flavour and momentum values. Jet along +z axis. 
-      KFLH=IABS(K(IP1,2)) 
-      IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10) 
-      KFLO(2)=0 
-      WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2) 
-C...Initial values for quark or diquark jet. 
-  170 IF(IABS(K(IP1,2)).NE.21) THEN 
-        NSTR=1 
-        KFLO(1)=K(IP1,2) 
-        CALL LUPTDI(0,PXO(1),PYO(1)) 
-        WO(1)=WF 
-C...Initial values for gluon treated like random quark jet. 
-      ELSEIF(MSTJ(2).LE.2) THEN 
-        NSTR=1 
-        IF(MSTJ(2).EQ.2) MSTJ(91)=1 
-        KFLO(1)=INT(1.+(2.+PARJ(2))*RLU(0))*(-1)**INT(RLU(0)+0.5) 
-        CALL LUPTDI(0,PXO(1),PYO(1)) 
-        WO(1)=WF 
-C...Initial values for gluon treated like quark-antiquark jet pair, 
-C...sharing energy according to Altarelli-Parisi splitting function. 
-      ELSE 
-        NSTR=2 
-        IF(MSTJ(2).EQ.4) MSTJ(91)=1 
-        KFLO(1)=INT(1.+(2.+PARJ(2))*RLU(0))*(-1)**INT(RLU(0)+0.5) 
-        KFLO(2)=-KFLO(1) 
-        CALL LUPTDI(0,PXO(1),PYO(1)) 
-        PXO(2)=-PXO(1) 
-        PYO(2)=-PYO(1) 
-        WO(1)=WF*RLU(0)**(1./3.) 
-        WO(2)=WF-WO(1) 
-      ENDIF 
-C...Initial values for rank, flavour, pT and W+. 
-      DO 220 ISTR=1,NSTR 
-  180 I=N 
-      MSTU(90)=MSTU91 
-      IRANK=0 
-      KFL1=KFLO(ISTR) 
-      PX1=PXO(ISTR) 
-      PY1=PYO(ISTR) 
-      W=WO(ISTR) 
-C...New hadron. Generate flavour and hadron species. 
-  190 I=I+1 
-      IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN 
-        CALL LUERRM(11,'(LUINDF:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IRANK=IRANK+1 
-      K(I,1)=1 
-      K(I,3)=IP1 
-      K(I,4)=0 
-      K(I,5)=0 
-  200 CALL LUKFDI(KFL1,0,KFL2,K(I,2)) 
-      IF(K(I,2).EQ.0) GOTO 180 
-      IF(MSTJ(12).GE.3.AND.IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND. 
-     &IABS(KFL2).GT.10) THEN 
-        IF(RLU(0).GT.PARJ(19)) GOTO 200 
-      ENDIF 
-C...Find hadron mass. Generate four-momentum. 
-      P(I,5)=ULMASS(K(I,2)) 
-      CALL LUPTDI(KFL1,PX2,PY2) 
-      P(I,1)=PX1+PX2 
-      P(I,2)=PY1+PY2 
-      PR=P(I,5)**2+P(I,1)**2+P(I,2)**2 
-      CALL LUZDIS(KFL1,KFL2,PR,Z) 
-      MZSAV=0 
-      IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN 
-        MZSAV=1 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I 
-        PARU(90+MSTU(90))=Z 
-      ENDIF 
-      P(I,3)=0.5*(Z*W-PR/MAX(1E-4,Z*W)) 
-      P(I,4)=0.5*(Z*W+PR/MAX(1E-4,Z*W)) 
-      IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND. 
-     &P(I,3).LE.0.001) THEN 
-        IF(W.GE.P(I,5)+0.5*PARJ(32)) GOTO 180 
-        P(I,3)=0.0001 
-        P(I,4)=SQRT(PR) 
-        Z=P(I,4)/W 
-      ENDIF 
-C...Remaining flavour and momentum. 
-      KFL1=-KFL2 
-      PX1=-PX2 
-      PY1=-PY2 
-      W=(1.-Z)*W 
-      DO 210 J=1,5 
-      V(I,J)=0. 
-  210 CONTINUE 
-C...Check if pL acceptable. Go back for new hadron if enough energy. 
-      IF(MSTJ(3).GE.0.AND.P(I,3).LT.0.) THEN 
-        I=I-1 
-        IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1 
-      ENDIF 
-      IF(W.GT.PARJ(31)) GOTO 190 
-      N=I 
-  220 CONTINUE 
-      IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1*PARJ(32) 
-      IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170 
-C...Rotate jet to new direction. 
-      THE=ULANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2)) 
-      PHI=ULANGL(P(IP1,1),P(IP1,2)) 
-      MSTU(33)=1 
-      CALL LUDBRB(NSAV1+1,N,THE,PHI,0D0,0D0,0D0) 
-      K(K(IP1,3),4)=NSAV1+1 
-      K(K(IP1,3),5)=N 
-C...End of jet generation loop. Skip conservation in some cases. 
-  230 CONTINUE 
-      IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490 
-      IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150 
-C...Subtract off produced hadron flavours, finished if zero. 
-      DO 240 I=NSAV+NJET+1,N 
-      KFA=IABS(K(I,2)) 
-      KFLA=MOD(KFA/1000,10) 
-      KFLB=MOD(KFA/100,10) 
-      KFLC=MOD(KFA/10,10) 
-      IF(KFLA.EQ.0) THEN 
-        IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB 
-        IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB 
-      ELSE 
-        IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2)) 
-        IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2)) 
-        IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2)) 
-      ENDIF 
-  240 CONTINUE 
-      NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
-     &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
-      IF(NREQ.EQ.0) GOTO 320 
-C...Take away flavour of low-momentum particles until enough freedom. 
-      NREM=0 
-  250 IREM=0 
-      P2MIN=PECM**2 
-      DO 260 I=NSAV+NJET+1,N 
-      P2=P(I,1)**2+P(I,2)**2+P(I,3)**2 
-      IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I 
-      IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2 
-  260 CONTINUE 
-      IF(IREM.EQ.0) GOTO 150 
-      K(IREM,1)=7 
-      KFA=IABS(K(IREM,2)) 
-      KFLA=MOD(KFA/1000,10) 
-      KFLB=MOD(KFA/100,10) 
-      KFLC=MOD(KFA/10,10) 
-      IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8 
-      IF(K(IREM,1).EQ.8) GOTO 250 
-      IF(KFLA.EQ.0) THEN 
-        ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB 
-        IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN 
-        IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN 
-      ELSE 
-        IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2)) 
-        IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2)) 
-        IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2)) 
-      ENDIF 
-      NREM=NREM+1 
-      NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
-     &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
-      IF(NREQ.GT.NREM) GOTO 250 
-      DO 270 I=NSAV+NJET+1,N 
-      IF(K(I,1).EQ.8) K(I,1)=1 
-  270 CONTINUE 
-C...Find combination of existing and new flavours for hadron. 
-  280 NFET=2 
-      IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3 
-      IF(NREQ.LT.NREM) NFET=1 
-      IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0 
-      DO 290 J=1,NFET 
-      IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*RLU(0) 
-      KFLF(J)=ISIGN(1,NFL(1)) 
-      IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2)) 
-      IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3)) 
-  290 CONTINUE 
-      IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0)) 
-     &GOTO 280 
-      IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR. 
-     &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3) 
-     &.LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280 
-      IF(NFET.EQ.0) KFLF(1)=1+INT((2.+PARJ(2))*RLU(0)) 
-      IF(NFET.EQ.0) KFLF(2)=-KFLF(1) 
-      IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2.+PARJ(2))*RLU(0)),-KFLF(1)) 
-      IF(NFET.LE.2) KFLF(3)=0 
-      IF(KFLF(3).NE.0) THEN 
-        KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+ 
-     &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1)) 
-        IF(KFLF(1).EQ.KFLF(3).OR.(1.+3.*PARJ(4))*RLU(0).GT.1.) 
-     &  KFLFC=KFLFC+ISIGN(2,KFLFC) 
-      ELSE 
-        KFLFC=KFLF(1) 
-      ENDIF 
-      CALL LUKFDI(KFLFC,KFLF(2),KFLDMP,KF) 
-      IF(KF.EQ.0) GOTO 280 
-      DO 300 J=1,MAX(2,NFET) 
-      NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J)) 
-  300 CONTINUE 
-C...Store hadron at random among free positions. 
-      NPOS=MIN(1+INT(RLU(0)*NREM),NREM) 
-      DO 310 I=NSAV+NJET+1,N 
-      IF(K(I,1).EQ.7) NPOS=NPOS-1 
-      IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310 
-      K(I,1)=1 
-      K(I,2)=KF 
-      P(I,5)=ULMASS(K(I,2)) 
-      P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
-  310 CONTINUE 
-      NREM=NREM-1 
-      NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
-     &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
-      IF(NREM.GT.0) GOTO 280 
-C...Compensate for missing momentum in global scheme (3 options). 
-  320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN 
-        DO 340 J=1,3 
-        PSI(J)=0. 
-        DO 330 I=NSAV+NJET+1,N 
-        PSI(J)=PSI(J)+P(I,J) 
-  330   CONTINUE 
-  340   CONTINUE 
-        PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2 
-        PWS=0. 
-        DO 350 I=NSAV+NJET+1,N 
-        IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4) 
-        IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+ 
-     &  PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4)) 
-        IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1. 
-  350   CONTINUE 
-        DO 370 I=NSAV+NJET+1,N 
-        IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4) 
-        IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+ 
-     &  PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4)) 
-        IF(MOD(MSTJ(3),5).EQ.3) PW=1. 
-        DO 360 J=1,3 
-        P(I,J)=P(I,J)-PSI(J)*PW/PWS 
-  360   CONTINUE 
-        P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
-  370   CONTINUE 
-C...Compensate for missing momentum withing each jet separately. 
-      ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN 
-        DO 390 I=N+1,N+NJET 
-        K(I,1)=0 
-        DO 380 J=1,5 
-        P(I,J)=0. 
-  380   CONTINUE 
-  390   CONTINUE 
-        DO 410 I=NSAV+NJET+1,N 
-        IR1=K(I,3) 
-        IR2=N+IR1-NSAV 
-        K(IR2,1)=K(IR2,1)+1 
-        PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/ 
-     &  (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2) 
-        DO 400 J=1,3 
-        P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J) 
-  400   CONTINUE 
-        P(IR2,4)=P(IR2,4)+P(I,4) 
-        P(IR2,5)=P(IR2,5)+PLS 
-  410   CONTINUE 
-        PSS=0. 
-        DO 420 I=N+1,N+NJET 
-        IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8*P(I,5)+0.2)) 
-  420   CONTINUE 
-        DO 440 I=NSAV+NJET+1,N 
-        IR1=K(I,3) 
-        IR2=N+IR1-NSAV 
-        PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/ 
-     &  (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2) 
-        DO 430 J=1,3 
-        P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1./(P(IR2,5)*PSS)-1.)*PLS* 
-     &  P(IR1,J) 
-  430   CONTINUE 
-        P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
-  440   CONTINUE 
-      ENDIF 
-C...Scale momenta for energy conservation. 
-      IF(MOD(MSTJ(3),5).NE.0) THEN 
-        PMS=0. 
-        PES=0. 
-        PQS=0. 
-        DO 450 I=NSAV+NJET+1,N 
-        PMS=PMS+P(I,5) 
-        PES=PES+P(I,4) 
-        PQS=PQS+P(I,5)**2/P(I,4) 
-  450   CONTINUE 
-        IF(PMS.GE.PECM) GOTO 150 
-        NECO=0 
-  460   NECO=NECO+1 
-        PFAC=(PECM-PQS)/(PES-PQS) 
-        PES=0. 
-        PQS=0. 
-        DO 480 I=NSAV+NJET+1,N 
-        DO 470 J=1,3 
-        P(I,J)=PFAC*P(I,J) 
-  470   CONTINUE 
-        P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
-        PES=PES+P(I,4) 
-        PQS=PQS+P(I,5)**2/P(I,4) 
-  480   CONTINUE 
-        IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2E-6*PECM) GOTO 460 
-      ENDIF 
-C...Origin of produced particles and parton daughter pointers. 
-  490 DO 500 I=NSAV+NJET+1,N 
-      IF(MSTU(16).NE.2) K(I,3)=NSAV+1 
-      IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3) 
-  500 CONTINUE 
-      DO 510 I=NSAV+1,NSAV+NJET 
-      I1=K(I,3) 
-      K(I1,1)=K(I1,1)+10 
-      IF(MSTU(16).NE.2) THEN 
-        K(I1,4)=NSAV+1 
-        K(I1,5)=NSAV+1 
-      ELSE 
-        K(I1,4)=K(I1,4)-NJET+1 
-        K(I1,5)=K(I1,5)-NJET+1 
-        IF(K(I1,5).LT.K(I1,4)) THEN 
-          K(I1,4)=0 
-          K(I1,5)=0 
-        ENDIF 
-      ENDIF 
-  510 CONTINUE 
-C...Document independent fragmentation system. Remove copy of jets. 
-      NSAV=NSAV+1 
-      K(NSAV,1)=11 
-      K(NSAV,2)=93 
-      K(NSAV,3)=IP 
-      K(NSAV,4)=NSAV+1 
-      K(NSAV,5)=N-NJET+1 
-      DO 520 J=1,4 
-      P(NSAV,J)=DPS(J) 
-      V(NSAV,J)=V(IP,J) 
-  520 CONTINUE 
-      P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2)) 
-      V(NSAV,5)=0. 
-      DO 540 I=NSAV+NJET,N 
-      DO 530 J=1,5 
-      K(I-NJET+1,J)=K(I,J) 
-      P(I-NJET+1,J)=P(I,J) 
-      V(I-NJET+1,J)=V(I,J) 
-  530 CONTINUE 
-  540 CONTINUE 
-      N=N-NJET+1 
-      DO 550 IZ=MSTU90+1,MSTU(90) 
-      MSTU(90+IZ)=MSTU(90+IZ)-NJET+1 
-  550 CONTINUE 
-C...Boost back particle system. Set production vertices. 
-      IF(NJET.NE.1) CALL LUDBRB(NSAV+1,N,0.,0.,DPS(1)/DPS(4), 
-     &DPS(2)/DPS(4),DPS(3)/DPS(4)) 
-      DO 570 I=NSAV+1,N 
-      DO 560 J=1,4 
-      V(I,J)=V(IP,J) 
-  560 CONTINUE 
-  570 CONTINUE 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lujmas.F b/PYTHIA/jetset/lujmas.F
deleted file mode 100644 (file)
index e80182b..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUJMAS(PMH,PML) 
-C...Purpose: to determine, approximately, the two jet masses that 
-C...minimize the sum m_H^2 + m_L^2, a la Clavelli and Wyler. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION SM(3,3),SAX(3),PS(3,5) 
-C...Reset. 
-      NP=0 
-      DO 120 J1=1,3 
-      DO 100 J2=J1,3 
-      SM(J1,J2)=0. 
-  100 CONTINUE 
-      DO 110 J2=1,4 
-      PS(J1,J2)=0. 
-  110 CONTINUE 
-  120 CONTINUE 
-      PSS=0. 
-C...Take copy of particles that are to be considered in mass analysis. 
-      DO 170 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LUCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 170 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &  GOTO 170 
-      ENDIF 
-      IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUJMAS:) no more memory left in LUJETS') 
-        PMH=-2. 
-        PML=-2. 
-        RETURN 
-      ENDIF 
-      NP=NP+1 
-      DO 130 J=1,5 
-      P(N+NP,J)=P(I,J) 
-  130 CONTINUE 
-      IF(MSTU(42).EQ.0) P(N+NP,5)=0. 
-      IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PMAS(101,1) 
-      P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-C...Fill information in sphericity tensor and total momentum vector. 
-      DO 150 J1=1,3 
-      DO 140 J2=J1,3 
-      SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2) 
-  140 CONTINUE 
-  150 CONTINUE 
-      PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      DO 160 J=1,4 
-      PS(3,J)=PS(3,J)+P(N+NP,J) 
-  160 CONTINUE 
-  170 CONTINUE 
-C...Very low multiplicities (0 or 1) not considered. 
-      IF(NP.LE.1) THEN 
-        CALL LUERRM(8,'(LUJMAS:) too few particles for analysis') 
-        PMH=-1. 
-        PML=-1. 
-        RETURN 
-      ENDIF 
-      PARU(61)=SQRT(MAX(0.,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-PS(3,3)**2)) 
-C...Find largest eigenvalue to matrix (third degree equation). 
-      DO 190 J1=1,3 
-      DO 180 J2=J1,3 
-      SM(J1,J2)=SM(J1,J2)/PSS 
-  180 CONTINUE 
-  190 CONTINUE 
-      SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-SM(1,2)**2- 
-     &SM(1,3)**2-SM(2,3)**2)/3.-1./9. 
-      SR=-0.5*(SQ+1./9.+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+SM(3,3)* 
-     &SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+SM(1,2)*SM(1,3)*SM(2,3)+1./27. 
-      SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1.),-1.))/3.) 
-      SMA=1./3.+SQRT(-SQ)*MAX(2.*SP,SQRT(3.*(1.-SP**2))-SP) 
-C...Find largest eigenvector by solving equation system. 
-      DO 210 J1=1,3 
-      SM(J1,J1)=SM(J1,J1)-SMA 
-      DO 200 J2=J1+1,3 
-      SM(J2,J1)=SM(J1,J2) 
-  200 CONTINUE 
-  210 CONTINUE 
-      SMAX=0. 
-      DO 230 J1=1,3 
-      DO 220 J2=1,3 
-      IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220 
-      JA=J1 
-      JB=J2 
-      SMAX=ABS(SM(J1,J2)) 
-  220 CONTINUE 
-  230 CONTINUE 
-      SMAX=0. 
-      DO 250 J3=JA+1,JA+2 
-      J1=J3-3*((J3-1)/3) 
-      RL=SM(J1,JB)/SM(JA,JB) 
-      DO 240 J2=1,3 
-      SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2) 
-      IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240 
-      JC=J1 
-      SMAX=ABS(SM(J1,J2)) 
-  240 CONTINUE 
-  250 CONTINUE 
-      JB1=JB+1-3*(JB/3) 
-      JB2=JB+2-3*((JB+1)/3) 
-      SAX(JB1)=-SM(JC,JB2) 
-      SAX(JB2)=SM(JC,JB1) 
-      SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB) 
-C...Divide particles into two initial clusters by hemisphere. 
-      DO 270 I=N+1,N+NP 
-      PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3) 
-      IS=1 
-      IF(PSAX.LT.0.) IS=2 
-      K(I,3)=IS 
-      DO 260 J=1,4 
-      PS(IS,J)=PS(IS,J)+P(I,J) 
-  260 CONTINUE 
-  270 CONTINUE 
-      PMS=MAX(1E-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+ 
-     &MAX(1E-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2) 
-C...Reassign one particle at a time; find maximum decrease of m^2 sum. 
-  280 PMD=0. 
-      IM=0 
-      DO 290 J=1,4 
-      PS(3,J)=PS(1,J)-PS(2,J) 
-  290 CONTINUE 
-      DO 300 I=N+1,N+NP 
-      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) 
-      IF(K(I,3).EQ.1) PMDI=2.*(P(I,5)**2-PPS) 
-      IF(K(I,3).EQ.2) PMDI=2.*(P(I,5)**2+PPS) 
-      IF(PMDI.LT.PMD) THEN 
-        PMD=PMDI 
-        IM=I 
-      ENDIF 
-  300 CONTINUE 
-C...Loop back if significant reduction in sum of m^2. 
-      IF(PMD.LT.-PARU(48)*PMS) THEN 
-        PMS=PMS+PMD 
-        IS=K(IM,3) 
-        DO 310 J=1,4 
-        PS(IS,J)=PS(IS,J)-P(IM,J) 
-        PS(3-IS,J)=PS(3-IS,J)+P(IM,J) 
-  310   CONTINUE 
-        K(IM,3)=3-IS 
-        GOTO 280 
-      ENDIF 
-C...Final masses and output. 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      PS(1,5)=SQRT(MAX(0.,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)) 
-      PS(2,5)=SQRT(MAX(0.,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)) 
-      PMH=MAX(PS(1,5),PS(2,5)) 
-      PML=MIN(PS(1,5),PS(2,5)) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lujoin.F b/PYTHIA/jetset/lujoin.F
deleted file mode 100644 (file)
index f68c2d6..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUJOIN(NJOIN,IJOIN) 
-C...Purpose: to connect a sequence of partons with colour flow indices, 
-C...as required for subsequent shower evolution (or other operations). 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION IJOIN(*) 
-C...Check that partons are of right types to be connected. 
-      IF(NJOIN.LT.2) GOTO 120 
-      KQSUM=0 
-      DO 100 IJN=1,NJOIN 
-      I=IJOIN(IJN) 
-      IF(I.LE.0.OR.I.GT.N) GOTO 120 
-      IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120 
-      KC=LUCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 120 
-      KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-      IF(KQ.EQ.0) GOTO 120 
-      IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120 
-      IF(KQ.NE.2) KQSUM=KQSUM+KQ 
-      IF(IJN.EQ.1) KQS=KQ 
-  100 CONTINUE 
-      IF(KQSUM.NE.0) GOTO 120 
-C...Connect the partons sequentially (closing for gluon loop). 
-      KCS=(9-KQS)/2 
-      IF(KQS.EQ.2) KCS=INT(4.5+RLU(0)) 
-      DO 110 IJN=1,NJOIN 
-      I=IJOIN(IJN) 
-      K(I,1)=3 
-      IF(IJN.NE.1) IP=IJOIN(IJN-1) 
-      IF(IJN.EQ.1) IP=IJOIN(NJOIN) 
-      IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1) 
-      IF(IJN.EQ.NJOIN) IN=IJOIN(1) 
-      K(I,KCS)=MSTU(5)*IN 
-      K(I,9-KCS)=MSTU(5)*IP 
-      IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0 
-      IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0 
-  110 CONTINUE 
-C...Error exit: no action taken. 
-      RETURN 
-  120 CALL LUERRM(12, 
-     &'(LUJOIN:) given entries can not be joined by one string') 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lukfdi.F b/PYTHIA/jetset/lukfdi.F
deleted file mode 100644 (file)
index 70fe6d0..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUKFDI(KFL1,KFL2,KFL3,KF) 
-C...Purpose: to generate a new flavour pair and combine off a hadron. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUDAT1/,/LUDAT2/ 
-C...Default flavour values. Input consistency checks. 
-      KF1A=IABS(KFL1) 
-      KF2A=IABS(KFL2) 
-      KFL3=0 
-      KF=0 
-      IF(KF1A.EQ.0) RETURN 
-      IF(KF2A.NE.0) THEN 
-        IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN 
-        IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN 
-        IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN 
-      ENDIF 
-C...Check if tabulated flavour probabilities are to be used. 
-      IF(MSTJ(15).EQ.1) THEN 
-        KTAB1=-1 
-        IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A 
-        KFL1A=MOD(KF1A/1000,10) 
-        KFL1B=MOD(KF1A/100,10) 
-        KFL1S=MOD(KF1A,10) 
-        IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4) 
-     &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2 
-        IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1 
-        IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A 
-        KTAB2=0 
-        IF(KF2A.NE.0) THEN 
-          KTAB2=-1 
-          IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A 
-          KFL2A=MOD(KF2A/1000,10) 
-          KFL2B=MOD(KF2A/100,10) 
-          KFL2S=MOD(KF2A,10) 
-          IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4) 
-     &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2 
-          IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1 
-        ENDIF 
-        IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 150 
-      ENDIF 
-C...Parameters and breaking diquark parameter combinations. 
-  100 PAR2=PARJ(2) 
-      PAR3=PARJ(3) 
-      PAR4=3.*PARJ(4) 
-      IF(MSTJ(12).GE.2) THEN 
-        PAR3M=SQRT(PARJ(3)) 
-        PAR4M=1./(3.*SQRT(PARJ(4))) 
-        PARDM=PARJ(7)/(PARJ(7)+PAR3M*PARJ(6)) 
-        PARS0=PARJ(5)*(2.+(1.+PAR2*PAR3M*PARJ(7))*(1.+PAR4M)) 
-        PARS1=PARJ(7)*PARS0/(2.*PAR3M)+PARJ(5)*(PARJ(6)*(1.+PAR4M)+ 
-     &  PAR2*PAR3M*PARJ(6)*PARJ(7)) 
-        PARS2=PARJ(5)*2.*PARJ(6)*PARJ(7)*(PAR2*PARJ(7)+(1.+PAR4M)/PAR3M) 
-        PARSM=MAX(PARS0,PARS1,PARS2) 
-        PAR4=PAR4*(1.+PARSM)/(1.+PARSM/(3.*PAR4M)) 
-      ENDIF 
-C...Choice of whether to generate meson or baryon. 
-  110 MBARY=0 
-      KFDA=0 
-      IF(KF1A.LE.10) THEN 
-        IF(KF2A.EQ.0.AND.MSTJ(12).GE.1.AND.(1.+PARJ(1))*RLU(0).GT.1.) 
-     &  MBARY=1 
-        IF(KF2A.GT.10) MBARY=2 
-        IF(KF2A.GT.10.AND.KF2A.LE.10000) KFDA=KF2A 
-      ELSE 
-        MBARY=2 
-        IF(KF1A.LE.10000) KFDA=KF1A 
-      ENDIF 
-C...Possibility of process diquark -> meson + new diquark. 
-      IF(KFDA.NE.0.AND.MSTJ(12).GE.2) THEN 
-        KFLDA=MOD(KFDA/1000,10) 
-        KFLDB=MOD(KFDA/100,10) 
-        KFLDS=MOD(KFDA,10) 
-        WTDQ=PARS0 
-        IF(MAX(KFLDA,KFLDB).EQ.3) WTDQ=PARS1 
-        IF(MIN(KFLDA,KFLDB).EQ.3) WTDQ=PARS2 
-        IF(KFLDS.EQ.1) WTDQ=WTDQ/(3.*PAR4M) 
-        IF((1.+WTDQ)*RLU(0).GT.1.) MBARY=-1 
-        IF(MBARY.EQ.-1.AND.KF2A.NE.0) RETURN 
-      ENDIF 
-C...Flavour for meson, possibly with new flavour. 
-      IF(MBARY.LE.0) THEN 
-        KFS=ISIGN(1,KFL1) 
-        IF(MBARY.EQ.0) THEN 
-          IF(KF2A.EQ.0) KFL3=ISIGN(1+INT((2.+PAR2)*RLU(0)),-KFL1) 
-          KFLA=MAX(KF1A,KF2A+IABS(KFL3)) 
-          KFLB=MIN(KF1A,KF2A+IABS(KFL3)) 
-          IF(KFLA.NE.KF1A) KFS=-KFS 
-C...Splitting of diquark into meson plus new diquark. 
-        ELSE 
-          KFL1A=MOD(KF1A/1000,10) 
-          KFL1B=MOD(KF1A/100,10) 
-  120     KFL1D=KFL1A+INT(RLU(0)+0.5)*(KFL1B-KFL1A) 
-          KFL1E=KFL1A+KFL1B-KFL1D 
-          IF((KFL1D.EQ.3.AND.RLU(0).GT.PARDM).OR.(KFL1E.EQ.3.AND. 
-     &    RLU(0).LT.PARDM)) THEN 
-            KFL1D=KFL1A+KFL1B-KFL1D 
-            KFL1E=KFL1A+KFL1B-KFL1E 
-          ENDIF 
-          KFL3A=1+INT((2.+PAR2*PAR3M*PARJ(7))*RLU(0)) 
-          IF((KFL1E.NE.KFL3A.AND.RLU(0).GT.(1.+PAR4M)/MAX(2.,1.+PAR4M)) 
-     &    .OR.(KFL1E.EQ.KFL3A.AND.RLU(0).GT.2./MAX(2.,1.+PAR4M))) 
-     &    GOTO 120 
-          KFLDS=3 
-          IF(KFL1E.NE.KFL3A) KFLDS=2*INT(RLU(0)+1./(1.+PAR4M))+1 
-          KFL3=ISIGN(10000+1000*MAX(KFL1E,KFL3A)+100*MIN(KFL1E,KFL3A)+ 
-     &    KFLDS,-KFL1) 
-          KFLA=MAX(KFL1D,KFL3A) 
-          KFLB=MIN(KFL1D,KFL3A) 
-          IF(KFLA.NE.KFL1D) KFS=-KFS 
-        ENDIF 
-C...Form meson, with spin and flavour mixing for diagonal states. 
-        IF(KFLA.LE.2) KMUL=INT(PARJ(11)+RLU(0)) 
-        IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+RLU(0)) 
-        IF(KFLA.GE.4) KMUL=INT(PARJ(13)+RLU(0)) 
-        IF(KMUL.EQ.0.AND.PARJ(14).GT.0.) THEN 
-          IF(RLU(0).LT.PARJ(14)) KMUL=2 
-        ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0.) THEN 
-          RMUL=RLU(0) 
-          IF(RMUL.LT.PARJ(15)) KMUL=3 
-          IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4 
-          IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5 
-        ENDIF 
-        KFLS=3 
-        IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1 
-        IF(KMUL.EQ.5) KFLS=5 
-        IF(KFLA.NE.KFLB) THEN 
-          KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA 
-        ELSE 
-          RMIX=RLU(0) 
-          IMIX=2*KFLA+10*KMUL 
-          IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+ 
-     &    INT(RMIX+PARF(IMIX)))+KFLS 
-          IF(KFLA.GE.4) KF=110*KFLA+KFLS 
-        ENDIF 
-        IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF) 
-        IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF) 
-C...Optional extra suppression of eta and eta'. 
-        IF(KF.EQ.221) THEN 
-          IF(RLU(0).GT.PARJ(25)) GOTO 110 
-        ELSEIF(KF.EQ.331) THEN 
-          IF(RLU(0).GT.PARJ(26)) GOTO 110 
-        ENDIF 
-C...Generate diquark flavour. 
-      ELSE 
-  130   IF(KF1A.LE.10.AND.KF2A.EQ.0) THEN 
-          KFLA=KF1A 
-  140     KFLB=1+INT((2.+PAR2*PAR3)*RLU(0)) 
-          KFLC=1+INT((2.+PAR2*PAR3)*RLU(0)) 
-          KFLDS=1 
-          IF(KFLB.GE.KFLC) KFLDS=3 
-          IF(KFLDS.EQ.1.AND.PAR4*RLU(0).GT.1.) GOTO 140 
-          IF(KFLDS.EQ.3.AND.PAR4.LT.RLU(0)) GOTO 140 
-          KFL3=ISIGN(1000*MAX(KFLB,KFLC)+100*MIN(KFLB,KFLC)+KFLDS,KFL1) 
-C...Take diquark flavour from input. 
-        ELSEIF(KF1A.LE.10) THEN 
-          KFLA=KF1A 
-          KFLB=MOD(KF2A/1000,10) 
-          KFLC=MOD(KF2A/100,10) 
-          KFLDS=MOD(KF2A,10) 
-C...Generate (or take from input) quark to go with diquark. 
-        ELSE 
-          IF(KF2A.EQ.0) KFL3=ISIGN(1+INT((2.+PAR2)*RLU(0)),KFL1) 
-          KFLA=KF2A+IABS(KFL3) 
-          KFLB=MOD(KF1A/1000,10) 
-          KFLC=MOD(KF1A/100,10) 
-          KFLDS=MOD(KF1A,10) 
-        ENDIF 
-C...SU(6) factors for formation of baryon. Try again if fails. 
-        KBARY=KFLDS 
-        IF(KFLDS.EQ.3.AND.KFLB.NE.KFLC) KBARY=5 
-        IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC) KBARY=KBARY+1 
-        WT=PARF(60+KBARY)+PARJ(18)*PARF(70+KBARY) 
-        IF(MBARY.EQ.1.AND.MSTJ(12).GE.2) THEN 
-          WTDQ=PARS0 
-          IF(MAX(KFLB,KFLC).EQ.3) WTDQ=PARS1 
-          IF(MIN(KFLB,KFLC).EQ.3) WTDQ=PARS2 
-          IF(KFLDS.EQ.1) WTDQ=WTDQ/(3.*PAR4M) 
-          IF(KFLDS.EQ.1) WT=WT*(1.+WTDQ)/(1.+PARSM/(3.*PAR4M)) 
-          IF(KFLDS.EQ.3) WT=WT*(1.+WTDQ)/(1.+PARSM) 
-        ENDIF 
-        IF(KF2A.EQ.0.AND.WT.LT.RLU(0)) GOTO 130 
-C...Form baryon. Distinguish Lambda- and Sigmalike baryons. 
-        KFLD=MAX(KFLA,KFLB,KFLC) 
-        KFLF=MIN(KFLA,KFLB,KFLC) 
-        KFLE=KFLA+KFLB+KFLC-KFLD-KFLF 
-        KFLS=2 
-        IF((PARF(60+KBARY)+PARJ(18)*PARF(70+KBARY))*RLU(0).GT. 
-     &  PARF(60+KBARY)) KFLS=4 
-        KFLL=0 
-        IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF) THEN 
-          IF(KFLDS.EQ.1.AND.KFLA.EQ.KFLD) KFLL=1 
-          IF(KFLDS.EQ.1.AND.KFLA.NE.KFLD) KFLL=INT(0.25+RLU(0)) 
-          IF(KFLDS.EQ.3.AND.KFLA.NE.KFLD) KFLL=INT(0.75+RLU(0)) 
-        ENDIF 
-        IF(KFLL.EQ.0) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1) 
-        IF(KFLL.EQ.1) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1) 
-      ENDIF 
-      RETURN 
-C...Use tabulated probabilities to select new flavour and hadron. 
-  150 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN 
-        KT3L=1 
-        KT3U=6 
-      ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN 
-        KT3L=1 
-        KT3U=6 
-      ELSEIF(KTAB2.EQ.0) THEN 
-        KT3L=1 
-        KT3U=22 
-      ELSE 
-        KT3L=KTAB2 
-        KT3U=KTAB2 
-      ENDIF 
-      RFL=0. 
-      DO 170 KTS=0,2 
-      DO 160 KT3=KT3L,KT3U 
-      RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3) 
-  160 CONTINUE 
-  170 CONTINUE 
-      RFL=RLU(0)*RFL 
-      DO 190 KTS=0,2 
-      KTABS=KTS 
-      DO 180 KT3=KT3L,KT3U 
-      KTAB3=KT3 
-      RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3) 
-      IF(RFL.LE.0.) GOTO 200 
-  180 CONTINUE 
-  190 CONTINUE 
-  200 CONTINUE 
-C...Reconstruct flavour of produced quark/diquark. 
-      IF(KTAB3.LE.6) THEN 
-        KFL3A=KTAB3 
-        KFL3B=0 
-        KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13)) 
-      ELSE 
-        KFL3A=1 
-        IF(KTAB3.GE.8) KFL3A=2 
-        IF(KTAB3.GE.11) KFL3A=3 
-        IF(KTAB3.GE.16) KFL3A=4 
-        KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2 
-        KFL3=1000*KFL3A+100*KFL3B+1 
-        IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3= 
-     &  KFL3+2 
-        KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1)) 
-      ENDIF 
-C...Reconstruct meson code. 
-      IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR. 
-     &KFL3B.NE.0)) THEN 
-        RFL=RLU(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+ 
-     &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS)) 
-        KF=110+2*KTABS+1 
-        IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1 
-        IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+ 
-     &  25*KTABS)) KF=330+2*KTABS+1 
-      ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN 
-        KFLA=MAX(KTAB1,KTAB3) 
-        KFLB=MIN(KTAB1,KTAB3) 
-        KFS=ISIGN(1,KFL1) 
-        IF(KFLA.NE.KF1A) KFS=-KFS 
-        KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA 
-      ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN 
-        KFS=ISIGN(1,KFL1) 
-        IF(KFL1A.EQ.KFL3A) THEN 
-          KFLA=MAX(KFL1B,KFL3B) 
-          KFLB=MIN(KFL1B,KFL3B) 
-          IF(KFLA.NE.KFL1B) KFS=-KFS 
-        ELSEIF(KFL1A.EQ.KFL3B) THEN 
-          KFLA=KFL3A 
-          KFLB=KFL1B 
-          KFS=-KFS 
-        ELSEIF(KFL1B.EQ.KFL3A) THEN 
-          KFLA=KFL1A 
-          KFLB=KFL3B 
-        ELSEIF(KFL1B.EQ.KFL3B) THEN 
-          KFLA=MAX(KFL1A,KFL3A) 
-          KFLB=MIN(KFL1A,KFL3A) 
-          IF(KFLA.NE.KFL1A) KFS=-KFS 
-        ELSE 
-          CALL LUERRM(2,'(LUKFDI:) no matching flavours for qq -> qq') 
-          GOTO 100 
-        ENDIF 
-        KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA 
-C...Reconstruct baryon code. 
-      ELSE 
-        IF(KTAB1.GE.7) THEN 
-          KFLA=KFL3A 
-          KFLB=KFL1A 
-          KFLC=KFL1B 
-        ELSE 
-          KFLA=KFL1A 
-          KFLB=KFL3A 
-          KFLC=KFL3B 
-        ENDIF 
-        KFLD=MAX(KFLA,KFLB,KFLC) 
-        KFLF=MIN(KFLA,KFLB,KFLC) 
-        KFLE=KFLA+KFLB+KFLC-KFLD-KFLF 
-        IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1) 
-        IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1) 
-      ENDIF 
-C...Check that constructed flavour code is an allowed one. 
-      IF(KFL2.NE.0) KFL3=0 
-      KC=LUCOMP(KF) 
-      IF(KC.EQ.0) THEN 
-        CALL LUERRM(2,'(LUKFDI:) user-defined flavour probabilities '// 
-     &  'failed') 
-        GOTO 100 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lulist.F b/PYTHIA/jetset/lulist.F
deleted file mode 100644 (file)
index aeb36db..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LULIST(MLIST) 
-C...Purpose: to give program heading, or list an event, or particle 
-C...data, or current parameter values. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
-      CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4 
-      DIMENSION PS(6) 
-      DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/ 
-C...Initialization printout: version number and date of last change. 
-      IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN 
-        CALL LULOGO 
-        MSTU(12)=0 
-        IF(MLIST.EQ.0) RETURN 
-      ENDIF 
-C...List event data, including additional lines after N. 
-      IF(MLIST.GE.1.AND.MLIST.LE.3) THEN 
-        IF(MLIST.EQ.1) WRITE(MSTU(11),5100) 
-        IF(MLIST.EQ.2) WRITE(MSTU(11),5200) 
-        IF(MLIST.EQ.3) WRITE(MSTU(11),5300) 
-        LMX=12 
-        IF(MLIST.GE.2) LMX=16 
-        ISTR=0 
-        IMAX=N 
-        IF(MSTU(2).GT.0) IMAX=MSTU(2) 
-        DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3))) 
-        IF((I.GT.IMAX.AND.I.LE.N).OR.K(I,1).LT.0) GOTO 120 
-C...Get particle name, pad it and check it is not too long. 
-        CALL LUNAME(K(I,2),CHAP) 
-        LEN=0 
-        DO 100 LEM=1,16 
-        IF(CHAP(LEM:LEM).NE.' ') LEN=LEM 
-  100   CONTINUE 
-        MDL=(K(I,1)+19)/10 
-        LDL=0 
-        IF(MDL.EQ.2.OR.MDL.GE.8) THEN 
-          CHAC=CHAP 
-          IF(LEN.GT.LMX) CHAC(LMX:LMX)='?' 
-        ELSE 
-          LDL=1 
-          IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2 
-          IF(LEN.EQ.0) THEN 
-            CHAC=CHDL(MDL)(1:2*LDL)//' ' 
-          ELSE 
-            CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))// 
-     &      CHDL(MDL)(LDL+1:2*LDL)//' ' 
-            IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?' 
-          ENDIF 
-        ENDIF 
-C...Add information on string connection. 
-        IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12) 
-     &  THEN 
-          KC=LUCOMP(K(I,2)) 
-          KCC=0 
-          IF(KC.NE.0) KCC=KCHG(KC,2) 
-          IF(IABS(K(I,2)).EQ.39) THEN 
-            IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X' 
-          ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN 
-            ISTR=1 
-            IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A' 
-          ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN 
-            IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I' 
-          ELSEIF(KCC.NE.0) THEN 
-            ISTR=0 
-            IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V' 
-          ENDIF 
-        ENDIF 
-C...Write data for particle/jet. 
-        IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999.) THEN 
-          WRITE(MSTU(11),5400) I,CHAC(1:12),(K(I,J1),J1=1,3), 
-     &    (P(I,J2),J2=1,5) 
-        ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999.) THEN 
-          WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3), 
-     &    (P(I,J2),J2=1,5) 
-        ELSEIF(MLIST.EQ.1) THEN 
-          WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3), 
-     &    (P(I,J2),J2=1,5) 
-        ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR. 
-     &  K(I,1).EQ.14)) THEN 
-          WRITE(MSTU(11),5700) I,CHAC,(K(I,J1),J1=1,3), 
-     &    K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000), 
-     &    K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000), 
-     &    (P(I,J2),J2=1,5) 
-        ELSE 
-          WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,5),(P(I,J2),J2=1,5) 
-        ENDIF 
-        IF(MLIST.EQ.3) WRITE(MSTU(11),5900) (V(I,J),J=1,5) 
-C...Insert extra separator lines specified by user. 
-        IF(MSTU(70).GE.1) THEN 
-          ISEP=0 
-          DO 110 J=1,MIN(10,MSTU(70)) 
-          IF(I.EQ.MSTU(70+J)) ISEP=1 
-  110     CONTINUE 
-          IF(ISEP.EQ.1.AND.MLIST.EQ.1) WRITE(MSTU(11),6000) 
-          IF(ISEP.EQ.1.AND.MLIST.GE.2) WRITE(MSTU(11),6100) 
-        ENDIF 
-  120   CONTINUE 
-C...Sum of charges and momenta. 
-        DO 130 J=1,6 
-        PS(J)=PLU(0,J) 
-  130   CONTINUE 
-        IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999.) THEN 
-          WRITE(MSTU(11),6200) PS(6),(PS(J),J=1,5) 
-        ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999.) THEN 
-          WRITE(MSTU(11),6300) PS(6),(PS(J),J=1,5) 
-        ELSEIF(MLIST.EQ.1) THEN 
-          WRITE(MSTU(11),6400) PS(6),(PS(J),J=1,5) 
-        ELSE 
-          WRITE(MSTU(11),6500) PS(6),(PS(J),J=1,5) 
-        ENDIF 
-C...Give simple list of KF codes defined in program. 
-      ELSEIF(MLIST.EQ.11) THEN 
-        WRITE(MSTU(11),6600) 
-        DO 140 KF=1,40 
-        CALL LUNAME(KF,CHAP) 
-        CALL LUNAME(-KF,CHAN) 
-        IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),6700) KF,CHAP 
-        IF(CHAN.NE.' ') WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
-  140   CONTINUE 
-        DO 170 KFLS=1,3,2 
-        DO 160 KFLA=1,8 
-        DO 150 KFLB=1,KFLA-(3-KFLS)/2 
-        KF=1000*KFLA+100*KFLB+KFLS 
-        CALL LUNAME(KF,CHAP) 
-        CALL LUNAME(-KF,CHAN) 
-        WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
-  150   CONTINUE 
-  160   CONTINUE 
-  170   CONTINUE 
-        KF=130 
-        CALL LUNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-        KF=310 
-        CALL LUNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-        DO 200 KMUL=0,5 
-        KFLS=3 
-        IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1 
-        IF(KMUL.EQ.5) KFLS=5 
-        KFLR=0 
-        IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1 
-        IF(KMUL.EQ.4) KFLR=2 
-        DO 190 KFLB=1,8 
-        DO 180 KFLC=1,KFLB-1 
-        KF=10000*KFLR+100*KFLB+10*KFLC+KFLS 
-        CALL LUNAME(KF,CHAP) 
-        CALL LUNAME(-KF,CHAN) 
-        WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
-  180   CONTINUE 
-        KF=10000*KFLR+110*KFLB+KFLS 
-        CALL LUNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-  190   CONTINUE 
-  200 CONTINUE 
-        KF=30443 
-        CALL LUNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-        KF=30553 
-        CALL LUNAME(KF,CHAP) 
-        WRITE(MSTU(11),6700) KF,CHAP 
-        DO 240 KFLSP=1,3 
-        KFLS=2+2*(KFLSP/3) 
-        DO 230 KFLA=1,8 
-        DO 220 KFLB=1,KFLA 
-        DO 210 KFLC=1,KFLB 
-        IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC)) GOTO 210 
-        IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 210 
-        IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS 
-        IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS 
-        CALL LUNAME(KF,CHAP) 
-        CALL LUNAME(-KF,CHAN) 
-        WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
-  210   CONTINUE 
-  220   CONTINUE 
-  230   CONTINUE 
-  240   CONTINUE 
-C...List parton/particle data table. Check whether to be listed. 
-      ELSEIF(MLIST.EQ.12) THEN 
-        WRITE(MSTU(11),6800) 
-        MSTJ24=MSTJ(24) 
-        MSTJ(24)=0 
-        KFMAX=30553 
-        IF(MSTU(2).NE.0) KFMAX=MSTU(2) 
-        DO 270 KF=MAX(1,MSTU(1)),KFMAX 
-        KC=LUCOMP(KF) 
-        IF(KC.EQ.0) GOTO 270 
-        IF(MSTU(14).EQ.0.AND.KF.GT.100.AND.KC.LE.100) GOTO 270 
-        IF(MSTU(14).GT.0.AND.KF.GT.100.AND.MAX(MOD(KF/1000,10), 
-     &  MOD(KF/100,10)).GT.MSTU(14)) GOTO 270 
-        IF(MSTU(14).GT.0.AND.KF.GT.100.AND.KC.EQ.90) GOTO 270 
-C...Find particle name and mass. Print information. 
-        CALL LUNAME(KF,CHAP) 
-        IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 270 
-        CALL LUNAME(-KF,CHAN) 
-        PM=ULMASS(KF) 
-        WRITE(MSTU(11),6900) KF,KC,CHAP,CHAN,KCHG(KC,1),KCHG(KC,2), 
-     &  KCHG(KC,3),PM,PMAS(KC,2),PMAS(KC,3),PMAS(KC,4),MDCY(KC,1) 
-C...Particle decay: channel number, branching ration, matrix element, 
-C...decay products. 
-        IF(KF.GT.100.AND.KC.LE.100) GOTO 270 
-        DO 260 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
-        DO 250 J=1,5 
-        CALL LUNAME(KFDP(IDC,J),CHAD(J)) 
-  250   CONTINUE 
-        WRITE(MSTU(11),7000) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
-     &  (CHAD(J),J=1,5) 
-  260   CONTINUE 
-  270   CONTINUE 
-        MSTJ(24)=MSTJ24 
-C...List parameter value table. 
-      ELSEIF(MLIST.EQ.13) THEN 
-        WRITE(MSTU(11),7100) 
-        DO 280 I=1,200 
-        WRITE(MSTU(11),7200) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I) 
-  280   CONTINUE 
-      ENDIF 
-C...Format statements for output on unit MSTU(11) (by default 6). 
- 5100 FORMAT(///28X,'Event listing (summary)'//4X,'I  particle/jet KS', 
-     &5X,'KF orig    p_x      p_y      p_z       E        m'/) 
- 5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet', 
-     &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)', 
-     &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/) 
- 5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j', 
-     &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)', 
-     &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X, 
-     &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/) 
- 5400 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.3) 
- 5500 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.2) 
- 5600 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.1) 
- 5700 FORMAT(1X,I4,2X,A16,1X,I3,1X,I8,2X,I4,2(3X,I1,2I4),5F13.5) 
- 5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I8,2X,I4,2(3X,I9),5F13.5) 
- 5900 FORMAT(66X,5(1X,F12.3)) 
- 6000 FORMAT(1X,78('=')) 
- 6100 FORMAT(1X,130('=')) 
- 6200 FORMAT(19X,'sum:',F6.2,5X,5F9.3) 
- 6300 FORMAT(19X,'sum:',F6.2,5X,5F9.2) 
- 6400 FORMAT(19X,'sum:',F6.2,5X,5F9.1) 
- 6500 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:', 
-     &5F13.5) 
- 6600 FORMAT(///20X,'List of KF codes in program'/) 
- 6700 FORMAT(4X,I6,4X,A16,6X,I6,4X,A16) 
- 6800 FORMAT(///30X,'Particle/parton data table'//5X,'KF',5X,'KC',4X, 
-     &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X, 
-     &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off', 
-     &1X,'ME',3X,'Br.rat.',4X,'decay products') 
- 6900 FORMAT(/1X,I6,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5), 
-     &2X,F12.5,3X,I2) 
- 7000 FORMAT(10X,I4,2X,I3,2X,I3,2X,F8.5,4X,5A16) 
- 7100 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)', 
-     &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)') 
- 7200 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lulogo.F b/PYTHIA/jetset/lulogo.F
deleted file mode 100644 (file)
index 22c9246..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LULOGO 
-C...Purpose: to write logo for JETSET and PYTHIA programs. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) 
-      SAVE /LUDAT1/ 
-      SAVE /PYPARS/ 
-      CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(22)*36, LINE*79, 
-     &VERS*1, SUBV*3, DATE*2, YEAR*4 
-C...Data on months, logo, titles, and references. 
-      DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep', 
-     &'Oct','Nov','Dec'/ 
-      DATA (LOGO(J),J=1,10)/ 
-     &'PPP  Y   Y TTTTT H   H III   A  ', 
-     &'P  P  Y Y    T   H   H  I   A A ', 
-     &'PPP    Y     T   HHHHH  I  AAAAA', 
-     &'P      Y     T   H   H  I  A   A', 
-     &'P      Y     T   H   H III A   A', 
-     &'JJJJ EEEE TTTTT  SSS  EEEE TTTTT', 
-     &'   J E      T   S     E      T  ', 
-     &'   J EEE    T    SSS  EEE    T  ', 
-     &'J  J E      T       S E      T  ', 
-     &' JJ  EEEE   T    SSS  EEEE   T  '/ 
-      DATA (LOGO(J),J=11,29)/ 
-     &'            *......*            ', 
-     &'       *:::!!:::::::::::*       ', 
-     &'    *::::::!!::::::::::::::*    ', 
-     &'  *::::::::!!::::::::::::::::*  ', 
-     &' *:::::::::!!:::::::::::::::::* ', 
-     &' *:::::::::!!:::::::::::::::::* ', 
-     &'  *::::::::!!::::::::::::::::*! ', 
-     &'    *::::::!!::::::::::::::* !! ', 
-     &'    !! *:::!!:::::::::::*    !! ', 
-     &'    !!     !* -><- *         !! ', 
-     &'    !!     !!                !! ', 
-     &'    !!     !!                !! ', 
-     &'    !!                       !! ', 
-     &'    !!        ep             !! ', 
-     &'    !!                       !! ', 
-     &'    !!                 pp    !! ', 
-     &'    !!   e+e-                !! ', 
-     &'    !!                       !! ', 
-     &'    !!                          '/ 
-      DATA (LOGO(J),J=30,48)/ 
-     &'Welcome to the Lund Monte Carlo!', 
-     &'                                ', 
-     &'  This is PYTHIA version x.xxx  ', 
-     &'Last date of change: xx xxx 199x', 
-     &'                                ', 
-     &'  This is JETSET version x.xxx  ', 
-     &'Last date of change: xx xxx 199x', 
-     &'                                ', 
-     &'          Main author:          ', 
-     &'       Torbjorn Sjostrand       ', 
-     &' Dept. of theoretical physics 2 ', 
-     &'       University of Lund       ', 
-     &'         Solvegatan 14A         ', 
-     &'      S-223 62 Lund, Sweden     ', 
-     &'   phone: +46 - 46 - 222 48 16  ', 
-     &'   E-mail: torbjorn@thep.lu.se  ', 
-     &'                                ', 
-     &'  Copyright Torbjorn Sjostrand  ', 
-     &'     and CERN, Geneva 1993      '/ 
-      DATA (REFER(J),J=1,6)/ 
-     &'The latest program versions and docu',
-     &'mentation is found on WWW address   ',
-     &'http://thep.lu.se/tf2/staff/torbjorn',
-     &'/Welcome.html                       ',
-     &'                                    ',
-     &'                                    '/
-      DATA (REFER(J),J=7,22)/ 
-     &'When you cite these programs, priori', 
-     &'ty should always be given to the    ', 
-     &'latest published description. Curren', 
-     &'tly this is                         ', 
-     &'T. Sjostrand, Computer Physics Commu', 
-     &'n. 82 (1994) 74.                    ', 
-     &'The most recent long description (un', 
-     &'published) is                       ', 
-     &'T. Sjostrand, LU TP 95-20 and CERN-T',
-     &'H.7112/93 (revised August 1995).    ', 
-     &'Also remember that the programs, to ', 
-     &'a large extent, represent original  ', 
-     &'physics research. Other publications', 
-     &' of special relevance to your       ', 
-     &'studies may therefore deserve separa', 
-     &'te mention.                         '/ 
-C...Check if PYTHIA linked. 
-      IF(MSTP(183)/10.NE.199) THEN 
-        LOGO(32)=' Warning: PYTHIA is not loaded! ' 
-        LOGO(33)='Did you remember to link PYDATA?' 
-      ELSE 
-        WRITE(VERS,'(I1)') MSTP(181) 
-        LOGO(32)(26:26)=VERS 
-        WRITE(SUBV,'(I3)') MSTP(182) 
-        LOGO(32)(28:30)=SUBV 
-        WRITE(DATE,'(I2)') MSTP(185) 
-        LOGO(33)(22:23)=DATE 
-        LOGO(33)(25:27)=MONTH(MSTP(184)) 
-        WRITE(YEAR,'(I4)') MSTP(183) 
-        LOGO(33)(29:32)=YEAR 
-      ENDIF 
-C...Check if JETSET linked. 
-      IF(MSTU(183)/10.NE.199) THEN 
-        LOGO(35)='  Error: JETSET is not loaded!  ' 
-        LOGO(36)='Did you remember to link LUDATA?' 
-      ELSE 
-        WRITE(VERS,'(I1)') MSTU(181) 
-        LOGO(35)(26:26)=VERS 
-        WRITE(SUBV,'(I3)') MSTU(182) 
-        LOGO(35)(28:30)=SUBV 
-        WRITE(DATE,'(I2)') MSTU(185) 
-        LOGO(36)(22:23)=DATE 
-        LOGO(36)(25:27)=MONTH(MSTU(184)) 
-        WRITE(YEAR,'(I4)') MSTU(183) 
-        LOGO(36)(29:32)=YEAR 
-      ENDIF 
-C...Loop over lines in header. Define page feed and side borders. 
-      DO 100 ILIN=1,48 
-      LINE=' ' 
-      IF(ILIN.EQ.1) THEN 
-        LINE(1:1)='1' 
-      ELSE 
-        LINE(2:3)='**' 
-        LINE(78:79)='**' 
-      ENDIF 
-C...Separator lines and logos. 
-      IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.EQ.47.OR.ILIN.EQ.48) THEN 
-        LINE(4:77)='***********************************************'// 
-     &  '***************************' 
-      ELSEIF(ILIN.GE.6.AND.ILIN.LE.10) THEN 
-        LINE(6:37)=LOGO(ILIN-5) 
-        LINE(44:75)=LOGO(ILIN) 
-      ELSEIF(ILIN.GE.13.AND.ILIN.LE.31) THEN 
-        LINE(6:37)=LOGO(ILIN-2) 
-        LINE(44:75)=LOGO(ILIN+17) 
-      ELSEIF(ILIN.GE.34.AND.ILIN.LE.44) THEN 
-        LINE(5:40)=REFER(2*ILIN-67) 
-        LINE(41:76)=REFER(2*ILIN-66) 
-      ENDIF 
-C...Write lines to appropriate unit. 
-      IF(MSTU(183)/10.EQ.199) THEN 
-        WRITE(MSTU(11),'(A79)') LINE 
-      ELSE 
-        WRITE(*,'(A79)') LINE 
-      ENDIF 
-  100 CONTINUE 
-C...Check that matching subversions are linked. 
-      IF(MSTU(183)/10.EQ.199.AND.MSTP(183)/10.EQ.199) THEN 
-        IF(MSTU(182).LT.MSTP(186)) WRITE(MSTU(11), 
-     &  '(/'' Warning: JETSET subversion too old for PYTHIA''/)') 
-        IF(MSTP(182).LT.MSTU(186)) WRITE(MSTU(11), 
-     &  '(/'' Warning: PYTHIA subversion too old for JETSET''/)') 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luname.F b/PYTHIA/jetset/luname.F
deleted file mode 100644 (file)
index 4a6b439..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUNAME(KF,CHAU) 
-C...Purpose: to give the particle/parton name as a character string. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT4/CHAF(500) 
-      CHARACTER CHAF*8 
-      SAVE /LUDAT1/,/LUDAT2/,/LUDAT4/ 
-      CHARACTER CHAU*16 
-C...Initial values. Charge. Subdivide code. 
-      CHAU=' ' 
-      KFA=IABS(KF) 
-      KC=LUCOMP(KF) 
-      IF(KC.EQ.0) RETURN 
-      KQ=LUCHGE(KF) 
-      KFLA=MOD(KFA/1000,10) 
-      KFLB=MOD(KFA/100,10) 
-      KFLC=MOD(KFA/10,10) 
-      KFLS=MOD(KFA,10) 
-      KFLR=MOD(KFA/10000,10) 
-C...Read out root name and spin for simple particle. 
-      IF(KFA.LE.100.OR.(KFA.GT.100.AND.KC.GT.100)) THEN 
-        CHAU=CHAF(KC) 
-        LEN=0 
-        DO 100 LEM=1,8 
-        IF(CHAU(LEM:LEM).NE.' ') LEN=LEM 
-  100   CONTINUE 
-C...Construct root name for diquark. Add on spin. 
-      ELSEIF(KFLC.EQ.0) THEN 
-        CHAU(1:2)=CHAF(KFLA)(1:1)//CHAF(KFLB)(1:1) 
-        IF(KFLS.EQ.1) CHAU(3:4)='_0' 
-        IF(KFLS.EQ.3) CHAU(3:4)='_1' 
-        LEN=4 
-C...Construct root name for heavy meson. Add on spin and heavy flavour. 
-      ELSEIF(KFLA.EQ.0) THEN 
-        IF(KFLB.EQ.5) CHAU(1:1)='B' 
-        IF(KFLB.EQ.6) CHAU(1:1)='T' 
-        IF(KFLB.EQ.7) CHAU(1:1)='L' 
-        IF(KFLB.EQ.8) CHAU(1:1)='H' 
-        LEN=1 
-        IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
-        ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
-          CHAU(2:2)='*' 
-          LEN=2 
-        ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
-          CHAU(2:3)='_1' 
-          LEN=3 
-        ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
-          CHAU(2:4)='*_0' 
-          LEN=4 
-        ELSEIF(KFLR.EQ.2) THEN 
-          CHAU(2:4)='*_1' 
-          LEN=4 
-        ELSEIF(KFLS.EQ.5) THEN 
-          CHAU(2:4)='*_2' 
-          LEN=4 
-        ENDIF 
-        IF(KFLC.GE.3.AND.KFLR.EQ.0.AND.KFLS.LE.3) THEN 
-          CHAU(LEN+1:LEN+2)='_'//CHAF(KFLC)(1:1) 
-          LEN=LEN+2 
-        ELSEIF(KFLC.GE.3) THEN 
-          CHAU(LEN+1:LEN+1)=CHAF(KFLC)(1:1) 
-          LEN=LEN+1 
-        ENDIF 
-C...Construct root name and spin for heavy baryon. 
-      ELSE 
-        IF(KFLB.LE.2.AND.KFLC.LE.2) THEN 
-          CHAU='Sigma ' 
-          IF(KFLC.GT.KFLB) CHAU='Lambda' 
-          IF(KFLS.EQ.4) CHAU='Sigma*' 
-          LEN=5 
-          IF(CHAU(6:6).NE.' ') LEN=6 
-        ELSEIF(KFLB.LE.2.OR.KFLC.LE.2) THEN 
-          CHAU='Xi ' 
-          IF(KFLA.GT.KFLB.AND.KFLB.GT.KFLC) CHAU='Xi''' 
-          IF(KFLS.EQ.4) CHAU='Xi*' 
-          LEN=2 
-          IF(CHAU(3:3).NE.' ') LEN=3 
-        ELSE 
-          CHAU='Omega ' 
-          IF(KFLA.GT.KFLB.AND.KFLB.GT.KFLC) CHAU='Omega''' 
-          IF(KFLS.EQ.4) CHAU='Omega*' 
-          LEN=5 
-          IF(CHAU(6:6).NE.' ') LEN=6 
-        ENDIF 
-C...Add on heavy flavour content for heavy baryon. 
-        CHAU(LEN+1:LEN+2)='_'//CHAF(KFLA)(1:1) 
-        LEN=LEN+2 
-        IF(KFLB.GE.KFLC.AND.KFLC.GE.4) THEN 
-          CHAU(LEN+1:LEN+2)=CHAF(KFLB)(1:1)//CHAF(KFLC)(1:1) 
-          LEN=LEN+2 
-        ELSEIF(KFLB.GE.KFLC.AND.KFLB.GE.4) THEN 
-          CHAU(LEN+1:LEN+1)=CHAF(KFLB)(1:1) 
-          LEN=LEN+1 
-        ELSEIF(KFLC.GT.KFLB.AND.KFLB.GE.4) THEN 
-          CHAU(LEN+1:LEN+2)=CHAF(KFLC)(1:1)//CHAF(KFLB)(1:1) 
-          LEN=LEN+2 
-        ELSEIF(KFLC.GT.KFLB.AND.KFLC.GE.4) THEN 
-          CHAU(LEN+1:LEN+1)=CHAF(KFLC)(1:1) 
-          LEN=LEN+1 
-        ENDIF 
-      ENDIF 
-C...Add on bar sign for antiparticle (where necessary). 
-      IF(KF.GT.0.OR.LEN.EQ.0) THEN 
-      ELSEIF(KFA.GT.10.AND.KFA.LE.40.AND.KQ.NE.0.AND.MOD(KQ,3).EQ.0) 
-     &THEN 
-      ELSEIF(KFA.EQ.89.OR.(KFA.GE.91.AND.KFA.LE.99)) THEN 
-      ELSEIF(KFA.GT.100.AND.KFLA.EQ.0.AND.KQ.NE.0) THEN 
-      ELSEIF(MSTU(15).LE.1) THEN 
-        CHAU(LEN+1:LEN+1)='~' 
-        LEN=LEN+1 
-      ELSE 
-        CHAU(LEN+1:LEN+3)='bar' 
-        LEN=LEN+3 
-      ENDIF 
-C...Add on charge where applicable (conventional cases skipped). 
-      IF(KQ.EQ.6) CHAU(LEN+1:LEN+2)='++' 
-      IF(KQ.EQ.-6) CHAU(LEN+1:LEN+2)='--' 
-      IF(KQ.EQ.3) CHAU(LEN+1:LEN+1)='+' 
-      IF(KQ.EQ.-3) CHAU(LEN+1:LEN+1)='-' 
-      IF(KQ.EQ.0.AND.(KFA.LE.22.OR.LEN.EQ.0)) THEN 
-      ELSEIF(KQ.EQ.0.AND.(KFA.GE.81.AND.KFA.LE.100)) THEN 
-      ELSEIF(KFA.EQ.28.OR.KFA.EQ.29) THEN 
-      ELSEIF(KFA.GT.100.AND.KFLA.EQ.0.AND.KFLB.EQ.KFLC.AND. 
-     &KFLB.NE.1) THEN 
-      ELSEIF(KQ.EQ.0) THEN 
-        CHAU(LEN+1:LEN+1)='0' 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luonia.F b/PYTHIA/jetset/luonia.F
deleted file mode 100644 (file)
index 36da452..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUONIA(KFL,ECM) 
-C...Purpose: to generate Upsilon and toponium decays into three 
-C...gluons or two gluons and a photon. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Printout. Check input parameters. 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      IF(KFL.LT.0.OR.KFL.GT.8) THEN 
-        CALL LUERRM(16,'(LUONIA:) called with unknown flavour code') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(ECM.LT.PARJ(127)+2.02*PARF(101)) THEN 
-        CALL LUERRM(16,'(LUONIA:) called with too small CM energy') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Initial e+e- and onium state (optional). 
-      NC=0 
-      IF(MSTJ(115).GE.2) THEN 
-        NC=NC+2 
-        CALL LU1ENT(NC-1,11,0.5*ECM,0.,0.) 
-        K(NC-1,1)=21 
-        CALL LU1ENT(NC,-11,0.5*ECM,PARU(1),0.) 
-        K(NC,1)=21 
-      ENDIF 
-      KFLC=IABS(KFL) 
-      IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN 
-        NC=NC+1 
-        KF=110*KFLC+3 
-        MSTU10=MSTU(10) 
-        MSTU(10)=1 
-        P(NC,5)=ECM 
-        CALL LU1ENT(NC,KF,ECM,0.,0.) 
-        K(NC,1)=21 
-        K(NC,3)=1 
-        MSTU(10)=MSTU10 
-      ENDIF 
-C...Choose x1 and x2 according to matrix element. 
-      NTRY=0 
-  100 X1=RLU(0) 
-      X2=RLU(0) 
-      X3=2.-X1-X2 
-      IF(X3.GE.1..OR.((1.-X1)/(X2*X3))**2+((1.-X2)/(X1*X3))**2+ 
-     &((1.-X3)/(X1*X2))**2.LE.2.*RLU(0)) GOTO 100 
-      NTRY=NTRY+1 
-      NJET=3 
-      IF(MSTJ(101).LE.4) CALL LU3ENT(NC+1,21,21,21,ECM,X1,X3) 
-      IF(MSTJ(101).GE.5) CALL LU3ENT(-(NC+1),21,21,21,ECM,X1,X3) 
-C...Photon-gluon-gluon events. Small system modifications. Jet origin. 
-      MSTU(111)=MSTJ(108) 
-      IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1)) 
-     &MSTU(111)=1 
-      PARU(112)=PARJ(121) 
-      IF(MSTU(111).EQ.2) PARU(112)=PARJ(122) 
-      QF=0. 
-      IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3. 
-      RGAM=7.2*QF**2*PARU(101)/ULALPS(ECM**2) 
-      MK=0 
-      ECMC=ECM 
-      IF(RLU(0).GT.RGAM/(1.+RGAM)) THEN 
-        IF(1.-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125))) 
-     &  NJET=2 
-        IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL LU2ENT(NC+1,21,21,ECM) 
-        IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL LU2ENT(-(NC+1),21,21,ECM) 
-      ELSE 
-        MK=1 
-        ECMC=SQRT(1.-X1)*ECM 
-        IF(ECMC.LT.2.*PARJ(127)) GOTO 100 
-        K(NC+1,1)=1 
-        K(NC+1,2)=22 
-        K(NC+1,4)=0 
-        K(NC+1,5)=0 
-        IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3) 
-        IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3) 
-        IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2) 
-        IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2) 
-        NJET=2 
-        IF(ECMC.LT.4.*PARJ(127)) THEN 
-          MSTU10=MSTU(10) 
-          MSTU(10)=1 
-          P(NC+2,5)=ECMC 
-          CALL LU1ENT(NC+2,83,0.5*(X2+X3)*ECM,PARU(1),0.) 
-          MSTU(10)=MSTU10 
-          NJET=0 
-        ENDIF 
-      ENDIF 
-      DO 110 IP=NC+1,N 
-      K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1) 
-  110 CONTINUE 
-C...Differential cross-sections. Upper limit for cross-section. 
-      IF(MSTJ(106).EQ.1) THEN 
-        SQ2=SQRT(2.) 
-        HF1=1.-PARJ(131)*PARJ(132) 
-        HF3=PARJ(133)**2 
-        CT13=(X1*X3-2.*X1-2.*X3+2.)/(X1*X3) 
-        ST13=SQRT(1.-CT13**2) 
-        SIGL=0.5*X3**2*((1.-X2)**2+(1.-X3)**2)*ST13**2 
-        SIGU=(X1*(1.-X1))**2+(X2*(1.-X2))**2+(X3*(1.-X3))**2-SIGL 
-        SIGT=0.5*SIGL 
-        SIGI=(SIGL*CT13/ST13+0.5*X1*X3*(1.-X2)**2*ST13)/SQ2 
-        SIGMAX=(2.*HF1+HF3)*ABS(SIGU)+2.*(HF1+HF3)*ABS(SIGL)+2.*(HF1+ 
-     &  2.*HF3)*ABS(SIGT)+2.*SQ2*(HF1+2.*HF3)*ABS(SIGI) 
-C...Angular orientation of event. 
-  120   CHI=PARU(2)*RLU(0) 
-        CTHE=2.*RLU(0)-1. 
-        PHI=PARU(2)*RLU(0) 
-        CCHI=COS(CHI) 
-        SCHI=SIN(CHI) 
-        C2CHI=COS(2.*CHI) 
-        S2CHI=SIN(2.*CHI) 
-        THE=ACOS(CTHE) 
-        STHE=SIN(THE) 
-        C2PHI=COS(2.*(PHI-PARJ(134))) 
-        S2PHI=SIN(2.*(PHI-PARJ(134))) 
-        SIG=((1.+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2.*(STHE**2*HF1- 
-     &  STHE**2*C2PHI*HF3)*SIGL+2.*(STHE**2*C2CHI*HF1+((1.+CTHE**2)* 
-     &  C2CHI*C2PHI-2.*CTHE*S2CHI*S2PHI)*HF3)*SIGT-2.*SQ2*(2.*STHE*CTHE* 
-     &  CCHI*HF1-2.*STHE*(CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI 
-        IF(SIG.LT.SIGMAX*RLU(0)) GOTO 120 
-        CALL LUDBRB(NC+1,N,0.,CHI,0D0,0D0,0D0) 
-        CALL LUDBRB(NC+1,N,THE,PHI,0D0,0D0,0D0) 
-      ENDIF 
-C...Generate parton shower. Rearrange along strings and check. 
-      IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN 
-        CALL LUSHOW(NC+MK+1,-NJET,ECMC) 
-        MSTJ14=MSTJ(14) 
-        IF(MSTJ(105).EQ.-1) MSTJ(14)=-1 
-        IF(MSTJ(105).GE.0) MSTU(28)=0 
-        CALL LUPREP(0) 
-        MSTJ(14)=MSTJ14 
-        IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100 
-      ENDIF 
-C...Generate fragmentation. Information for LUTABU: 
-      IF(MSTJ(105).EQ.1) CALL LUEXEC 
-      MSTU(161)=110*KFLC+3 
-      MSTU(162)=0 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luprep.F b/PYTHIA/jetset/luprep.F
deleted file mode 100644 (file)
index 59f969a..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUPREP(IP) 
-C...Purpose: to rearrange partons along strings, to allow small systems 
-C...to collapse into one or two particles and to check flavours. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
-      DIMENSION DPS(5),DPC(5),UE(3) 
-C...Rearrange parton shower product listing along strings: begin loop. 
-      I1=N 
-      DO 130 MQGST=1,2 
-      DO 120 I=MAX(1,IP),N 
-      IF(K(I,1).NE.3) GOTO 120 
-      KC=LUCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 120 
-      KQ=KCHG(KC,2) 
-      IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 120 
-C...Pick up loose string end. 
-      KCS=4 
-      IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5 
-      IA=I 
-      NSTP=0 
-  100 NSTP=NSTP+1 
-      IF(NSTP.GT.4*N) THEN 
-        CALL LUERRM(14,'(LUPREP:) caught in infinite loop') 
-        RETURN 
-      ENDIF 
-C...Copy undecayed parton. 
-      IF(K(IA,1).EQ.3) THEN 
-        IF(I1.GE.MSTU(4)-MSTU(32)-5) THEN 
-          CALL LUERRM(11,'(LUPREP:) no more memory left in LUJETS') 
-          RETURN 
-        ENDIF 
-        I1=I1+1 
-        K(I1,1)=2 
-        IF(NSTP.GE.2.AND.IABS(K(IA,2)).NE.21) K(I1,1)=1 
-        K(I1,2)=K(IA,2) 
-        K(I1,3)=IA 
-        K(I1,4)=0 
-        K(I1,5)=0 
-        DO 110 J=1,5 
-        P(I1,J)=P(IA,J) 
-        V(I1,J)=V(IA,J) 
-  110   CONTINUE 
-        K(IA,1)=K(IA,1)+10 
-        IF(K(I1,1).EQ.1) GOTO 120 
-      ENDIF 
-C...Go to next parton in colour space. 
-      IB=IA 
-      IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5)) 
-     &.NE.0) THEN 
-        IA=MOD(K(IB,KCS),MSTU(5)) 
-        K(IB,KCS)=K(IB,KCS)+MSTU(5)**2 
-        MREV=0 
-      ELSE 
-        IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),MSTU(5)) 
-     &  .EQ.0) KCS=9-KCS 
-        IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5)) 
-        K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2 
-        MREV=1 
-      ENDIF 
-      IF(IA.LE.0.OR.IA.GT.N) THEN 
-        CALL LUERRM(12,'(LUPREP:) colour rearrangement failed') 
-        RETURN 
-      ENDIF 
-      IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5), 
-     &MSTU(5)).EQ.IB) THEN 
-        IF(MREV.EQ.1) KCS=9-KCS 
-        IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS 
-        K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2 
-      ELSE 
-        IF(MREV.EQ.0) KCS=9-KCS 
-        IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS 
-        K(IA,KCS)=K(IA,KCS)+MSTU(5)**2 
-      ENDIF 
-      IF(IA.NE.I) GOTO 100 
-      K(I1,1)=1 
-  120 CONTINUE 
-  130 CONTINUE 
-      N=I1 
-      IF(MSTJ(14).LT.0) RETURN 
-C...Find lowest-mass colour singlet jet system, OK if above threshold. 
-      IF(MSTJ(14).EQ.0) GOTO 320 
-      NS=N 
-  140 NSIN=N-NS 
-      PDM=1.+PARJ(32) 
-      IC=0 
-      DO 190 I=MAX(1,IP),NS 
-      IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN 
-      ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN 
-        NSIN=NSIN+1 
-        IC=I 
-        DO 150 J=1,4 
-        DPS(J)=P(I,J) 
-  150   CONTINUE 
-        MSTJ(93)=1 
-        DPS(5)=ULMASS(K(I,2)) 
-      ELSEIF(K(I,1).EQ.2) THEN 
-        DO 160 J=1,4 
-        DPS(J)=DPS(J)+P(I,J) 
-  160   CONTINUE 
-      ELSEIF(IC.NE.0.AND.KCHG(LUCOMP(K(I,2)),2).NE.0) THEN 
-        DO 170 J=1,4 
-        DPS(J)=DPS(J)+P(I,J) 
-  170   CONTINUE 
-        MSTJ(93)=1 
-        DPS(5)=DPS(5)+ULMASS(K(I,2)) 
-        PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-DPS(5) 
-        IF(PD.LT.PDM) THEN 
-          PDM=PD 
-          DO 180 J=1,5 
-          DPC(J)=DPS(J) 
-  180     CONTINUE 
-          IC1=IC 
-          IC2=I 
-        ENDIF 
-        IC=0 
-      ELSE 
-        NSIN=NSIN+1 
-      ENDIF 
-  190 CONTINUE 
-      IF(PDM.GE.PARJ(32)) GOTO 320 
-C...Fill small-mass system as cluster. 
-      NSAV=N 
-      PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2)) 
-      K(N+1,1)=11 
-      K(N+1,2)=91 
-      K(N+1,3)=IC1 
-      K(N+1,4)=N+2 
-      K(N+1,5)=N+3 
-      P(N+1,1)=DPC(1) 
-      P(N+1,2)=DPC(2) 
-      P(N+1,3)=DPC(3) 
-      P(N+1,4)=DPC(4) 
-      P(N+1,5)=PECM 
-C...Form two particles from flavours of lowest-mass system, if feasible. 
-      K(N+2,1)=1 
-      K(N+3,1)=1 
-      IF(MSTU(16).NE.2) THEN 
-        K(N+2,3)=N+1 
-        K(N+3,3)=N+1 
-      ELSE 
-        K(N+2,3)=IC1 
-        K(N+3,3)=IC2 
-      ENDIF 
-      K(N+2,4)=0 
-      K(N+3,4)=0 
-      K(N+2,5)=0 
-      K(N+3,5)=0 
-      IF(IABS(K(IC1,2)).NE.21) THEN 
-        KC1=LUCOMP(K(IC1,2)) 
-        KC2=LUCOMP(K(IC2,2)) 
-        IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 320 
-        KQ1=KCHG(KC1,2)*ISIGN(1,K(IC1,2)) 
-        KQ2=KCHG(KC2,2)*ISIGN(1,K(IC2,2)) 
-        IF(KQ1+KQ2.NE.0) GOTO 320 
-  200   CALL LUKFDI(K(IC1,2),0,KFLN,K(N+2,2)) 
-        CALL LUKFDI(K(IC2,2),-KFLN,KFLDMP,K(N+3,2)) 
-        IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 200 
-      ELSE 
-        IF(IABS(K(IC2,2)).NE.21) GOTO 320 
-  210   CALL LUKFDI(1+INT((2.+PARJ(2))*RLU(0)),0,KFLN,KFDMP) 
-        CALL LUKFDI(KFLN,0,KFLM,K(N+2,2)) 
-        CALL LUKFDI(-KFLN,-KFLM,KFLDMP,K(N+3,2)) 
-        IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 210 
-      ENDIF 
-      P(N+2,5)=ULMASS(K(N+2,2)) 
-      P(N+3,5)=ULMASS(K(N+3,2)) 
-      IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM.AND.NSIN.EQ.1) GOTO 320 
-      IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) GOTO 260 
-C...Perform two-particle decay of jet system, if possible. 
-      IF(PECM.GE.0.02*DPC(4)) THEN 
-        PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2- 
-     &  (P(N+2,5)-P(N+3,5))**2))/(2.*PECM) 
-        UE(3)=2.*RLU(0)-1. 
-        PHI=PARU(2)*RLU(0) 
-        UE(1)=SQRT(1.-UE(3)**2)*COS(PHI) 
-        UE(2)=SQRT(1.-UE(3)**2)*SIN(PHI) 
-        DO 220 J=1,3 
-        P(N+2,J)=PA*UE(J) 
-        P(N+3,J)=-PA*UE(J) 
-  220   CONTINUE 
-        P(N+2,4)=SQRT(PA**2+P(N+2,5)**2) 
-        P(N+3,4)=SQRT(PA**2+P(N+3,5)**2) 
-        MSTU(33)=1 
-        CALL LUDBRB(N+2,N+3,0.,0.,DPC(1)/DPC(4),DPC(2)/DPC(4), 
-     &  DPC(3)/DPC(4)) 
-      ELSE 
-        NP=0 
-        DO 230 I=IC1,IC2 
-        IF(K(I,1).EQ.1.OR.K(I,1).EQ.2) NP=NP+1 
-  230   CONTINUE 
-        HA=P(IC1,4)*P(IC2,4)-P(IC1,1)*P(IC2,1)-P(IC1,2)*P(IC2,2)- 
-     &  P(IC1,3)*P(IC2,3) 
-        IF(NP.GE.3.OR.HA.LE.1.25*P(IC1,5)*P(IC2,5)) GOTO 260 
-        HD1=0.5*(P(N+2,5)**2-P(IC1,5)**2) 
-        HD2=0.5*(P(N+3,5)**2-P(IC2,5)**2) 
-        HR=SQRT(MAX(0.,((HA-HD1-HD2)**2-(P(N+2,5)*P(N+3,5))**2)/ 
-     &  (HA**2-(P(IC1,5)*P(IC2,5))**2)))-1. 
-        HC=P(IC1,5)**2+2.*HA+P(IC2,5)**2 
-        HK1=((P(IC2,5)**2+HA)*HR+HD1-HD2)/HC 
-        HK2=((P(IC1,5)**2+HA)*HR+HD2-HD1)/HC 
-        DO 240 J=1,4 
-        P(N+2,J)=(1.+HK1)*P(IC1,J)-HK2*P(IC2,J) 
-        P(N+3,J)=(1.+HK2)*P(IC2,J)-HK1*P(IC1,J) 
-  240   CONTINUE 
-      ENDIF 
-      DO 250 J=1,4 
-      V(N+1,J)=V(IC1,J) 
-      V(N+2,J)=V(IC1,J) 
-      V(N+3,J)=V(IC2,J) 
-  250 CONTINUE 
-      V(N+1,5)=0. 
-      V(N+2,5)=0. 
-      V(N+3,5)=0. 
-      N=N+3 
-      GOTO 300 
-C...Else form one particle from the flavours available, if possible. 
-  260 K(N+1,5)=N+2 
-      IF(IABS(K(IC1,2)).GT.100.AND.IABS(K(IC2,2)).GT.100) THEN 
-        GOTO 320 
-      ELSEIF(IABS(K(IC1,2)).NE.21) THEN 
-        CALL LUKFDI(K(IC1,2),K(IC2,2),KFLDMP,K(N+2,2)) 
-      ELSE 
-        KFLN=1+INT((2.+PARJ(2))*RLU(0)) 
-        CALL LUKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2)) 
-      ENDIF 
-      IF(K(N+2,2).EQ.0) GOTO 260 
-      P(N+2,5)=ULMASS(K(N+2,2)) 
-C...Find parton/particle which combines to largest extra mass. 
-      IR=0 
-      HA=0. 
-      HSM=0. 
-      DO 280 MCOMB=1,3 
-      IF(IR.NE.0) GOTO 280 
-      DO 270 I=MAX(1,IP),N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2 
-     &.AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 270 
-      IF(MCOMB.EQ.1) KCI=LUCOMP(K(I,2)) 
-      IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 270 
-      IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 270 
-      IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100) 
-     &GOTO 270 
-      HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3) 
-      HSR=2.*HCR+PECM**2-P(N+2,5)**2-2.*P(N+2,5)*P(I,5) 
-      IF(HSR.GT.HSM) THEN 
-        IR=I 
-        HA=HCR 
-        HSM=HSR 
-      ENDIF 
-  270 CONTINUE 
-  280 CONTINUE 
-C...Shuffle energy and momentum to put new particle on mass shell. 
-      IF(IR.NE.0) THEN 
-        HB=PECM**2+HA 
-        HC=P(N+2,5)**2+HA 
-        HD=P(IR,5)**2+HA 
-        HK2=0.5*(HB*SQRT(MAX(0.,((HB+HC)**2-4.*(HB+HD)*P(N+2,5)**2)/ 
-     &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD) 
-        HK1=(0.5*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB 
-        DO 290 J=1,4 
-        P(N+2,J)=(1.+HK1)*DPC(J)-HK2*P(IR,J) 
-        P(IR,J)=(1.+HK2)*P(IR,J)-HK1*DPC(J) 
-        V(N+1,J)=V(IC1,J) 
-        V(N+2,J)=V(IC1,J) 
-  290   CONTINUE 
-        V(N+1,5)=0. 
-        V(N+2,5)=0. 
-        N=N+2 
-      ELSE 
-        CALL LUERRM(3,'(LUPREP:) no match for collapsing cluster') 
-        RETURN 
-      ENDIF 
-C...Mark collapsed system and store daughter pointers. Iterate. 
-  300 DO 310 I=IC1,IC2 
-      IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.KCHG(LUCOMP(K(I,2)),2).NE.0) 
-     &THEN 
-        K(I,1)=K(I,1)+10 
-        IF(MSTU(16).NE.2) THEN 
-          K(I,4)=NSAV+1 
-          K(I,5)=NSAV+1 
-        ELSE 
-          K(I,4)=NSAV+2 
-          K(I,5)=N 
-        ENDIF 
-      ENDIF 
-  310 CONTINUE 
-      IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 140 
-C...Check flavours and invariant masses in parton systems. 
-  320 NP=0 
-      KFN=0 
-      KQS=0 
-      DO 330 J=1,5 
-      DPS(J)=0. 
-  330 CONTINUE 
-      DO 360 I=MAX(1,IP),N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 360 
-      KC=LUCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 360 
-      KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-      IF(KQ.EQ.0) GOTO 360 
-      NP=NP+1 
-      IF(KQ.NE.2) THEN 
-        KFN=KFN+1 
-        KQS=KQS+KQ 
-        MSTJ(93)=1 
-        DPS(5)=DPS(5)+ULMASS(K(I,2)) 
-      ENDIF 
-      DO 340 J=1,4 
-      DPS(J)=DPS(J)+P(I,J) 
-  340 CONTINUE 
-      IF(K(I,1).EQ.1) THEN 
-        IF(NP.NE.1.AND.(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0)) CALL 
-     &  LUERRM(2,'(LUPREP:) unphysical flavour combination') 
-        IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT. 
-     &  (0.9*PARJ(32)+DPS(5))**2) CALL LUERRM(3, 
-     &  '(LUPREP:) too small mass in jet system') 
-        NP=0 
-        KFN=0 
-        KQS=0 
-        DO 350 J=1,5 
-        DPS(J)=0. 
-  350   CONTINUE 
-      ENDIF 
-  360 CONTINUE 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luptdi.F b/PYTHIA/jetset/luptdi.F
deleted file mode 100644 (file)
index 39c3a68..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUPTDI(KFL,PX,PY) 
-C...Purpose: to generate transverse momentum according to a Gaussian. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUDAT1/ 
-C...Generate p_T and azimuthal angle, gives p_x and p_y. 
-      KFLA=IABS(KFL) 
-      PT=PARJ(21)*SQRT(-LOG(MAX(1E-10,RLU(0)))) 
-      IF(PARJ(23).GT.RLU(0)) PT=PARJ(24)*PT 
-      IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT 
-      IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0. 
-      PHI=PARU(2)*RLU(0) 
-      PX=PT*COS(PHI) 
-      PY=PT*SIN(PHI) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luradk.F b/PYTHIA/jetset/luradk.F
deleted file mode 100644 (file)
index fe31c40..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LURADK(ECM,MK,PAK,THEK,PHIK,ALPK) 
-C...Purpose: to generate initial state photon radiation. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUDAT1/ 
-C...Function: cumulative hard photon spectrum in QFD case. 
-      FXK(XX)=2.*LOG(XX)+PARJ(161)*LOG(1.-XX)+PARJ(162)*XX+ 
-     &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW) 
-C...Determine whether radiative photon or not. 
-      MK=0 
-      PAK=0. 
-      IF(PARJ(160).LT.RLU(0)) RETURN 
-      MK=1 
-C...Photon energy range. Find photon momentum in QED case. 
-      XKL=PARJ(135) 
-      XKU=MIN(PARJ(136),1.-(2.*PARJ(127)/ECM)**2) 
-      IF(MSTJ(102).LE.1) THEN 
-  100   XK=1./(1.+(1./XKL-1.)*((1./XKU-1.)/(1./XKL-1.))**RLU(0)) 
-        IF(1.+(1.-XK)**2.LT.2.*RLU(0)) GOTO 100 
-C...Ditto in QFD case, by numerical inversion of integrated spectrum. 
-      ELSE 
-        SZM=1.-(PARJ(123)/ECM)**2 
-        SZW=PARJ(123)*PARJ(124)/ECM**2 
-        FXKL=FXK(XKL) 
-        FXKU=FXK(XKU) 
-        FXKD=1E-4*(FXKU-FXKL) 
-        FXKR=FXKL+RLU(0)*(FXKU-FXKL) 
-        NXK=0 
-  110   NXK=NXK+1 
-        XK=0.5*(XKL+XKU) 
-        FXKV=FXK(XK) 
-        IF(FXKV.GT.FXKR) THEN 
-          XKU=XK 
-          FXKU=FXKV 
-        ELSE 
-          XKL=XK 
-          FXKL=FXKV 
-        ENDIF 
-        IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110 
-        XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL) 
-      ENDIF 
-      PAK=0.5*ECM*XK 
-C...Photon polar and azimuthal angle. 
-      PME=2.*(ULMASS(11)/ECM)**2 
-  120 CTHM=PME*(2./PME)**RLU(0) 
-      IF(1.-(XK**2*CTHM*(1.-0.5*CTHM)+2.*(1.-XK)*PME/MAX(PME, 
-     &CTHM*(1.-0.5*CTHM)))/(1.+(1.-XK)**2).LT.RLU(0)) GOTO 120 
-      CTHE=1.-CTHM 
-      IF(RLU(0).GT.0.5) CTHE=-CTHE 
-      STHE=SQRT(MAX(0.,(CTHM-PME)*(2.-CTHM))) 
-      THEK=ULANGL(CTHE,STHE) 
-      PHIK=PARU(2)*RLU(0) 
-C...Rotation angle for hadronic system. 
-      SGN=1. 
-      IF(0.5*(2.-XK*(1.-CTHE))**2/((2.-XK)**2+(XK*CTHE)**2).GT. 
-     &RLU(0)) SGN=-1. 
-      ALPK=ASIN(SGN*STHE*(XK-SGN*(2.*SQRT(1.-XK)-2.+XK)*CTHE)/ 
-     &(2.-XK*(1.-SGN*CTHE))) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lurobo.F b/PYTHIA/jetset/lurobo.F
deleted file mode 100644 (file)
index 43aadeb..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUROBO(THE,PHI,BEX,BEY,BEZ) 
-C...Purpose: to perform rotations and boosts. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUJETS/,/LUDAT1/ 
-      DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4) 
-C...Find range of rotation/boost. Convert boost to double precision. 
-      IMIN=1 
-      IF(MSTU(1).GT.0) IMIN=MSTU(1) 
-      IMAX=N 
-      IF(MSTU(2).GT.0) IMAX=MSTU(2) 
-      DBX=BEX 
-      DBY=BEY 
-      DBZ=BEZ 
-      GOTO 120 
-C...Entry for specific range and double precision boost. 
-      ENTRY LUDBRB(IMI,IMA,THE,PHI,DBEX,DBEY,DBEZ) 
-      IMIN=IMI 
-      IF(IMIN.LE.0) IMIN=1 
-      IMAX=IMA 
-      IF(IMAX.LE.0) IMAX=N 
-      DBX=DBEX 
-      DBY=DBEY 
-      DBZ=DBEZ 
-C...Optional resetting of V (when not set before.) 
-      IF(MSTU(33).NE.0) THEN 
-        DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4)) 
-        DO 100 J=1,5 
-        V(I,J)=0. 
-  100   CONTINUE 
-  110 CONTINUE 
-        MSTU(33)=0 
-      ENDIF 
-C...Check range of rotation/boost. 
-  120 IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN 
-        CALL LUERRM(11,'(LUROBO:) range outside LUJETS memory') 
-        RETURN 
-      ENDIF 
-C...Rotate, typically from z axis to direction (theta,phi). 
-      IF(THE**2+PHI**2.GT.1E-20) THEN 
-        ROT(1,1)=COS(THE)*COS(PHI) 
-        ROT(1,2)=-SIN(PHI) 
-        ROT(1,3)=SIN(THE)*COS(PHI) 
-        ROT(2,1)=COS(THE)*SIN(PHI) 
-        ROT(2,2)=COS(PHI) 
-        ROT(2,3)=SIN(THE)*SIN(PHI) 
-        ROT(3,1)=-SIN(THE) 
-        ROT(3,2)=0. 
-        ROT(3,3)=COS(THE) 
-        DO 150 I=IMIN,IMAX 
-        IF(K(I,1).LE.0) GOTO 150 
-        DO 130 J=1,3 
-        PR(J)=P(I,J) 
-        VR(J)=V(I,J) 
-  130   CONTINUE 
-        DO 140 J=1,3 
-        P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3) 
-        V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3) 
-  140   CONTINUE 
-  150   CONTINUE 
-      ENDIF 
-C...Boost, typically from rest to momentum/energy=beta. 
-      IF(DBX**2+DBY**2+DBZ**2.GT.1E-20) THEN 
-        DB=SQRT(DBX**2+DBY**2+DBZ**2) 
-        IF(DB.GT.0.99999999D0) THEN 
-C...Rescale boost vector if too close to unity. 
-          CALL LUERRM(3,'(LUROBO:) boost vector too large') 
-          DBX=DBX*(0.99999999D0/DB) 
-          DBY=DBY*(0.99999999D0/DB) 
-          DBZ=DBZ*(0.99999999D0/DB) 
-          DB=0.99999999D0 
-        ENDIF 
-        DGA=1D0/SQRT(1D0-DB**2) 
-        DO 170 I=IMIN,IMAX 
-        IF(K(I,1).LE.0) GOTO 170 
-        DO 160 J=1,4 
-        DP(J)=P(I,J) 
-        DV(J)=V(I,J) 
-  160   CONTINUE 
-        DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3) 
-        DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4)) 
-        P(I,1)=DP(1)+DGABP*DBX 
-        P(I,2)=DP(2)+DGABP*DBY 
-        P(I,3)=DP(3)+DGABP*DBZ 
-        P(I,4)=DGA*(DP(4)+DBP) 
-        DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3) 
-        DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4)) 
-        V(I,1)=DV(1)+DGABV*DBX 
-        V(I,2)=DV(2)+DGABV*DBY 
-        V(I,3)=DV(3)+DGABV*DBZ 
-        V(I,4)=DGA*(DV(4)+DBV) 
-  170   CONTINUE 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lushow.F b/PYTHIA/jetset/lushow.F
deleted file mode 100644 (file)
index f3a6adb..0000000
+++ /dev/null
@@ -1,1088 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUSHOW(IP1,IP2,QMAX) 
-C...Purpose: to generate timelike parton showers from given partons. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION PMTH(5,50),PS(5),PMA(4),PMSD(4),IEP(4),IPA(4), 
-     &KFLA(4),KFLD(4),KFL(4),ITRY(4),ISI(4),ISL(4),DP(4),DPT(5,4), 
-     &KSH(0:40),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),PHIIIS(2,2), 
-     &ISII(2) 
-C...Initialization of cutoff masses etc. 
-      IF(MSTJ(41).LE.0.OR.(MSTJ(41).EQ.1.AND.QMAX.LE.PARJ(82)).OR. 
-     &QMAX.LE.MIN(PARJ(82),PARJ(83))) RETURN 
-      DO 100 IFL=0,40 
-      KSH(IFL)=0 
-  100 CONTINUE 
-      KSH(21)=1 
-      PMTH(1,21)=ULMASS(21) 
-      PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25*PARJ(82)**2) 
-      PMTH(3,21)=2.*PMTH(2,21) 
-      PMTH(4,21)=PMTH(3,21) 
-      PMTH(5,21)=PMTH(3,21) 
-      PMTH(1,22)=ULMASS(22) 
-      PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25*PARJ(83)**2) 
-      PMTH(3,22)=2.*PMTH(2,22) 
-      PMTH(4,22)=PMTH(3,22) 
-      PMTH(5,22)=PMTH(3,22) 
-      PMQTH1=PARJ(82) 
-      IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83)) 
-      PMQTH2=PMTH(2,21) 
-      IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22)) 
-      DO 110 IFL=1,8 
-      KSH(IFL)=1 
-      PMTH(1,IFL)=ULMASS(IFL) 
-      PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25*PMQTH1**2) 
-      PMTH(3,IFL)=PMTH(2,IFL)+PMQTH2 
-      PMTH(4,IFL)=SQRT(PMTH(1,IFL)**2+0.25*PARJ(82)**2)+PMTH(2,21) 
-      PMTH(5,IFL)=SQRT(PMTH(1,IFL)**2+0.25*PARJ(83)**2)+PMTH(2,22) 
-  110 CONTINUE 
-      DO 120 IFL=11,17,2 
-      IF(MSTJ(41).GE.2) KSH(IFL)=1 
-      PMTH(1,IFL)=ULMASS(IFL) 
-      PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25*PARJ(83)**2) 
-      PMTH(3,IFL)=PMTH(2,IFL)+PMTH(2,22) 
-      PMTH(4,IFL)=PMTH(3,IFL) 
-      PMTH(5,IFL)=PMTH(3,IFL) 
-  120 CONTINUE 
-      PT2MIN=MAX(0.5*PARJ(82),1.1*PARJ(81))**2 
-      ALAMS=PARJ(81)**2 
-      ALFM=LOG(PT2MIN/ALAMS) 
-C...Store positions of shower initiating partons. 
-      IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN 
-        NPA=1 
-        IPA(1)=IP1 
-      ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)- 
-     &MSTU(32))) THEN 
-        NPA=2 
-        IPA(1)=IP1 
-        IPA(2)=IP2 
-      ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0 
-     &.AND.IP2.GE.-3) THEN 
-        NPA=IABS(IP2) 
-        DO 130 I=1,NPA 
-        IPA(I)=IP1+I-1 
-  130   CONTINUE 
-      ELSE 
-        CALL LUERRM(12, 
-     &  '(LUSHOW:) failed to reconstruct showering system') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Check on phase space available for emission. 
-      IREJ=0 
-      DO 140 J=1,5 
-      PS(J)=0. 
-  140 CONTINUE 
-      PM=0. 
-      DO 160 I=1,NPA 
-      KFLA(I)=IABS(K(IPA(I),2)) 
-      PMA(I)=P(IPA(I),5) 
-C...Special cutoff masses for t, l, h with variable masses.
-      IFLA=KFLA(I)
-      IF(KFLA(I).GE.6.AND.KFLA(I).LE.8) THEN
-        IFLA=37+KFLA(I)+ISIGN(2,K(IPA(I),2))
-        PMTH(1,IFLA)=PMA(I)
-        PMTH(2,IFLA)=SQRT(PMTH(1,IFLA)**2+0.25*PMQTH1**2) 
-        PMTH(3,IFLA)=PMTH(2,IFLA)+PMQTH2 
-        PMTH(4,IFLA)=SQRT(PMTH(1,IFLA)**2+0.25*PARJ(82)**2)+PMTH(2,21) 
-        PMTH(5,IFLA)=SQRT(PMTH(1,IFLA)**2+0.25*PARJ(83)**2)+PMTH(2,22) 
-      ENDIF 
-      IF(KFLA(I).LE.40) THEN 
-        IF(KSH(KFLA(I)).EQ.1) PMA(I)=PMTH(3,IFLA)
-      ENDIF 
-      PM=PM+PMA(I) 
-      IF(KFLA(I).GT.40) THEN 
-        IREJ=IREJ+1 
-      ELSE 
-        IF(KSH(KFLA(I)).EQ.0.OR.PMA(I).GT.QMAX) IREJ=IREJ+1 
-      ENDIF 
-      DO 150 J=1,4 
-      PS(J)=PS(J)+P(IPA(I),J) 
-  150 CONTINUE 
-  160 CONTINUE 
-      IF(IREJ.EQ.NPA) RETURN 
-      PS(5)=SQRT(MAX(0.,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2)) 
-      IF(NPA.EQ.1) PS(5)=PS(4) 
-      IF(PS(5).LE.PM+PMQTH1) RETURN 
-C...Check if 3-jet matrix elements to be used. 
-      M3JC=0 
-      IF(NPA.EQ.2.AND.MSTJ(47).GE.1) THEN 
-        IF(KFLA(1).GE.1.AND.KFLA(1).LE.8.AND.KFLA(2).GE.1.AND. 
-     &  KFLA(2).LE.8) M3JC=1 
-        IF((KFLA(1).EQ.11.OR.KFLA(1).EQ.13.OR.KFLA(1).EQ.15.OR. 
-     &  KFLA(1).EQ.17).AND.KFLA(2).EQ.KFLA(1)) M3JC=1 
-        IF((KFLA(1).EQ.11.OR.KFLA(1).EQ.13.OR.KFLA(1).EQ.15.OR. 
-     &  KFLA(1).EQ.17).AND.KFLA(2).EQ.KFLA(1)+1) M3JC=1 
-        IF((KFLA(1).EQ.12.OR.KFLA(1).EQ.14.OR.KFLA(1).EQ.16.OR. 
-     &  KFLA(1).EQ.18).AND.KFLA(2).EQ.KFLA(1)-1) M3JC=1 
-        IF(MSTJ(47).EQ.2.OR.MSTJ(47).EQ.4) M3JC=1 
-        M3JCM=0 
-        IF(M3JC.EQ.1.AND.MSTJ(47).GE.3.AND.KFLA(1).EQ.KFLA(2)) THEN 
-          M3JCM=1 
-          QME=(2.*PMTH(1,KFLA(1))/PS(5))**2 
-        ENDIF 
-      ENDIF 
-C...Find if interference with initial state partons. 
-      MIIS=0 
-      IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2) MIIS=MSTJ(50) 
-      IF(MIIS.NE.0) THEN 
-        DO 180 I=1,2 
-        KCII(I)=0 
-        KCA=LUCOMP(KFLA(I)) 
-        IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2)) 
-        NIIS(I)=0 
-        IF(KCII(I).NE.0) THEN 
-          DO 170 J=1,2 
-          ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5)) 
-          IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND. 
-     &    (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN 
-            NIIS(I)=NIIS(I)+1 
-            IIIS(I,NIIS(I))=ICSI 
-          ENDIF 
-  170     CONTINUE 
-        ENDIF 
-  180   CONTINUE 
-        IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0 
-      ENDIF 
-C...Boost interfering initial partons to rest frame 
-C...and reconstruct their polar and azimuthal angles. 
-      IF(MIIS.NE.0) THEN 
-        DO 200 I=1,2 
-        DO 190 J=1,5 
-        K(N+I,J)=K(IPA(I),J) 
-        P(N+I,J)=P(IPA(I),J) 
-        V(N+I,J)=0. 
-  190   CONTINUE 
-  200   CONTINUE 
-        DO 220 I=3,2+NIIS(1) 
-        DO 210 J=1,5 
-        K(N+I,J)=K(IIIS(1,I-2),J) 
-        P(N+I,J)=P(IIIS(1,I-2),J) 
-        V(N+I,J)=0. 
-  210   CONTINUE 
-  220   CONTINUE 
-        DO 240 I=3+NIIS(1),2+NIIS(1)+NIIS(2) 
-        DO 230 J=1,5 
-        K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J) 
-        P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J) 
-        V(N+I,J)=0. 
-  230   CONTINUE 
-  240   CONTINUE 
-        CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),0.,0.,-DBLE(PS(1)/PS(4)), 
-     &  -DBLE(PS(2)/PS(4)),-DBLE(PS(3)/PS(4))) 
-        PHI=ULANGL(P(N+1,1),P(N+1,2)) 
-        CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),0.,-PHI,0D0,0D0,0D0) 
-        THE=ULANGL(P(N+1,3),P(N+1,1)) 
-        CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),-THE,0.,0D0,0D0,0D0) 
-        DO 250 I=3,2+NIIS(1) 
-        THEIIS(1,I-2)=ULANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2)) 
-        PHIIIS(1,I-2)=ULANGL(P(N+I,1),P(N+I,2)) 
-  250   CONTINUE 
-        DO 260 I=3+NIIS(1),2+NIIS(1)+NIIS(2) 
-        THEIIS(2,I-2-NIIS(1))=PARU(1)-ULANGL(P(N+I,3), 
-     &  SQRT(P(N+I,1)**2+P(N+I,2)**2)) 
-        PHIIIS(2,I-2-NIIS(1))=ULANGL(P(N+I,1),P(N+I,2)) 
-  260   CONTINUE 
-      ENDIF 
-C...Define imagined single initiator of shower for parton system. 
-      NS=N 
-      IF(N.GT.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUSHOW:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(NPA.GE.2) THEN 
-        K(N+1,1)=11 
-        K(N+1,2)=21 
-        K(N+1,3)=0 
-        K(N+1,4)=0 
-        K(N+1,5)=0 
-        P(N+1,1)=0. 
-        P(N+1,2)=0. 
-        P(N+1,3)=0. 
-        P(N+1,4)=PS(5) 
-        P(N+1,5)=PS(5) 
-        V(N+1,5)=PS(5)**2 
-        N=N+1 
-      ENDIF 
-C...Loop over partons that may branch. 
-      NEP=NPA 
-      IM=NS 
-      IF(NPA.EQ.1) IM=NS-1 
-  270 IM=IM+1 
-      IF(N.GT.NS) THEN 
-        IF(IM.GT.N) GOTO 510 
-        KFLM=IABS(K(IM,2)) 
-        IF(KFLM.GT.40) GOTO 270 
-        IF(KSH(KFLM).EQ.0) GOTO 270 
-        IFLM=KFLM
-        IF(KFLM.GE.6.AND.KFLM.LE.8) IFLM=37+KFLM+ISIGN(2,K(IM,2)) 
-        IF(P(IM,5).LT.PMTH(2,IFLM)) GOTO 270 
-        IGM=K(IM,3) 
-      ELSE 
-        IGM=-1 
-      ENDIF 
-      IF(N+NEP.GT.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUSHOW:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Position of aunt (sister to branching parton). 
-C...Origin and flavour of daughters. 
-      IAU=0 
-      IF(IGM.GT.0) THEN 
-        IF(K(IM-1,3).EQ.IGM) IAU=IM-1 
-        IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1 
-      ENDIF 
-      IF(IGM.GE.0) THEN 
-        K(IM,4)=N+1 
-        DO 280 I=1,NEP 
-        K(N+I,3)=IM 
-  280   CONTINUE 
-      ELSE 
-        K(N+1,3)=IPA(1) 
-      ENDIF 
-      IF(IGM.LE.0) THEN 
-        DO 290 I=1,NEP 
-        K(N+I,2)=K(IPA(I),2) 
-  290   CONTINUE 
-      ELSEIF(KFLM.NE.21) THEN 
-        K(N+1,2)=K(IM,2) 
-        K(N+2,2)=K(IM,5) 
-      ELSEIF(K(IM,5).EQ.21) THEN 
-        K(N+1,2)=21 
-        K(N+2,2)=21 
-      ELSE 
-        K(N+1,2)=K(IM,5) 
-        K(N+2,2)=-K(IM,5) 
-      ENDIF 
-C...Reset flags on daughers and tries made. 
-      DO 300 IP=1,NEP 
-      K(N+IP,1)=3 
-      K(N+IP,4)=0 
-      K(N+IP,5)=0 
-      KFLD(IP)=IABS(K(N+IP,2)) 
-      IF(KCHG(LUCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1 
-      ITRY(IP)=0 
-      ISL(IP)=0 
-      ISI(IP)=0 
-      IF(KFLD(IP).LE.40) THEN 
-        IF(KSH(KFLD(IP)).EQ.1) ISI(IP)=1 
-      ENDIF 
-  300 CONTINUE 
-      ISLM=0 
-C...Maximum virtuality of daughters. 
-      IF(IGM.LE.0) THEN 
-        DO 310 I=1,NPA 
-        IF(NPA.GE.3) P(N+I,4)=(PS(4)*P(IPA(I),4)-PS(1)*P(IPA(I),1)- 
-     &  PS(2)*P(IPA(I),2)-PS(3)*P(IPA(I),3))/PS(5) 
-        P(N+I,5)=MIN(QMAX,PS(5)) 
-        IF(NPA.GE.3) P(N+I,5)=MIN(P(N+I,5),P(N+I,4)) 
-        IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5) 
-  310   CONTINUE 
-      ELSE 
-        IF(MSTJ(43).LE.2) PEM=V(IM,2) 
-        IF(MSTJ(43).GE.3) PEM=P(IM,4) 
-        P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM) 
-        P(N+2,5)=MIN(P(IM,5),(1.-V(IM,1))*PEM) 
-        IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22) 
-      ENDIF 
-      DO 320 I=1,NEP 
-      PMSD(I)=P(N+I,5) 
-      IF(ISI(I).EQ.1) THEN 
-        IFLD=KFLD(I)
-        IF(KFLD(I).GE.6.AND.KFLD(I).LE.8) IFLD=37+KFLD(I)+
-     &  ISIGN(2,K(N+I,2)) 
-        IF(P(N+I,5).LE.PMTH(3,IFLD)) P(N+I,5)=PMTH(1,IFLD) 
-      ENDIF 
-      V(N+I,5)=P(N+I,5)**2 
-  320 CONTINUE 
-C...Choose one of the daughters for evolution. 
-  330 INUM=0 
-      IF(NEP.EQ.1) INUM=1 
-      DO 340 I=1,NEP 
-      IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I 
-  340 CONTINUE 
-      DO 350 I=1,NEP 
-      IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN 
-        IFLD=KFLD(I)
-        IF(KFLD(I).GE.6.AND.KFLD(I).LE.8) IFLD=37+KFLD(I)+
-     &  ISIGN(2,K(N+I,2)) 
-        IF(P(N+I,5).GE.PMTH(2,IFLD)) INUM=I 
-      ENDIF 
-  350 CONTINUE 
-      IF(INUM.EQ.0) THEN 
-        RMAX=0. 
-        DO 360 I=1,NEP 
-        IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQTH2) THEN 
-          RPM=P(N+I,5)/PMSD(I) 
-          IFLD=KFLD(I)
-          IF(KFLD(I).GE.6.AND.KFLD(I).LE.8) IFLD=37+KFLD(I)+
-     &    ISIGN(2,K(N+I,2)) 
-          IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,IFLD)) THEN 
-            RMAX=RPM 
-            INUM=I 
-          ENDIF 
-        ENDIF 
-  360   CONTINUE 
-      ENDIF 
-C...Store information on choice of evolving daughter. 
-      INUM=MAX(1,INUM) 
-      IEP(1)=N+INUM 
-      DO 370 I=2,NEP 
-      IEP(I)=IEP(I-1)+1 
-      IF(IEP(I).GT.N+NEP) IEP(I)=N+1 
-  370 CONTINUE 
-      DO 380 I=1,NEP 
-      KFL(I)=IABS(K(IEP(I),2)) 
-  380 CONTINUE 
-      ITRY(INUM)=ITRY(INUM)+1 
-      IF(ITRY(INUM).GT.200) THEN 
-        CALL LUERRM(14,'(LUSHOW:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      Z=0.5 
-      IF(KFL(1).GT.40) GOTO 430 
-      IF(KSH(KFL(1)).EQ.0) GOTO 430 
-      IFL=KFL(1)
-      IF(KFL(1).GE.6.AND.KFL(1).LE.8) IFL=37+KFL(1)+
-     &ISIGN(2,K(IEP(1),2)) 
-      IF(P(IEP(1),5).LT.PMTH(2,IFL)) GOTO 430 
-C...Select side for interference with initial state partons. 
-      IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN 
-        III=IEP(1)-NS-1 
-        ISII(III)=0 
-        IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN 
-          ISII(III)=1 
-        ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN 
-          IF(RLU(0).GT.0.5) ISII(III)=1 
-        ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN 
-          ISII(III)=1 
-          IF(RLU(0).GT.0.5) ISII(III)=2 
-        ENDIF 
-      ENDIF 
-C...Calculate allowed z range. 
-      IF(NEP.EQ.1) THEN 
-        PMED=PS(4) 
-      ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
-        PMED=P(IM,5) 
-      ELSE 
-        IF(INUM.EQ.1) PMED=V(IM,1)*PEM 
-        IF(INUM.EQ.2) PMED=(1.-V(IM,1))*PEM 
-      ENDIF 
-      IF(MOD(MSTJ(43),2).EQ.1) THEN 
-        ZC=PMTH(2,21)/PMED 
-        ZCE=PMTH(2,22)/PMED 
-      ELSE 
-        ZC=0.5*(1.-SQRT(MAX(0.,1.-(2.*PMTH(2,21)/PMED)**2))) 
-        IF(ZC.LT.1E-4) ZC=(PMTH(2,21)/PMED)**2 
-        ZCE=0.5*(1.-SQRT(MAX(0.,1.-(2.*PMTH(2,22)/PMED)**2))) 
-        IF(ZCE.LT.1E-4) ZCE=(PMTH(2,22)/PMED)**2 
-      ENDIF 
-      ZC=MIN(ZC,0.491) 
-      ZCE=MIN(ZCE,0.491) 
-      IF((MSTJ(41).EQ.1.AND.ZC.GT.0.49).OR.(MSTJ(41).GE.2.AND. 
-     &MIN(ZC,ZCE).GT.0.49)) THEN 
-        P(IEP(1),5)=PMTH(1,IFL) 
-        V(IEP(1),5)=P(IEP(1),5)**2 
-        GOTO 430 
-      ENDIF 
-C...Integral of Altarelli-Parisi z kernel for QCD. 
-      IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN 
-        FBR=6.*LOG((1.-ZC)/ZC)+MSTJ(45)*(0.5-ZC) 
-      ELSEIF(MSTJ(49).EQ.0) THEN 
-        FBR=(8./3.)*LOG((1.-ZC)/ZC) 
-C...Integral of Altarelli-Parisi z kernel for scalar gluon. 
-      ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN 
-        FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1.-2.*ZC) 
-      ELSEIF(MSTJ(49).EQ.1) THEN 
-        FBR=(1.-2.*ZC)/3. 
-        IF(IGM.EQ.0.AND.M3JC.EQ.1) FBR=4.*FBR 
-C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon. 
-      ELSEIF(KFL(1).EQ.21) THEN 
-        FBR=6.*MSTJ(45)*(0.5-ZC) 
-      ELSE 
-        FBR=2.*LOG((1.-ZC)/ZC) 
-      ENDIF 
-C...Reset QCD probability for lepton. 
-      IF(KFL(1).GE.11.AND.KFL(1).LE.18) FBR=0. 
-C...Integral of Altarelli-Parisi kernel for photon emission. 
-      IF(MSTJ(41).GE.2.AND.KFL(1).GE.1.AND.KFL(1).LE.18) THEN 
-        FBRE=(KCHG(KFL(1),1)/3.)**2*2.*LOG((1.-ZCE)/ZCE) 
-        IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE 
-      ENDIF 
-C...Inner veto algorithm starts. Find maximum mass for evolution. 
-  390 PMS=V(IEP(1),5) 
-      IF(IGM.GE.0) THEN 
-        PM2=0. 
-        DO 400 I=2,NEP 
-        PM=P(IEP(I),5) 
-        IF(KFL(I).LE.40) THEN 
-          IFLI=KFL(I)
-          IF(KFL(I).GE.6.AND.KFL(I).LE.8) IFLI=37+KFL(I)+
-     &    ISIGN(2,K(IEP(I),2)) 
-          IF(KSH(KFL(I)).EQ.1) PM=PMTH(2,IFLI) 
-        ENDIF 
-        PM2=PM2+PM 
-  400   CONTINUE 
-        PMS=MIN(PMS,(P(IM,5)-PM2)**2) 
-      ENDIF 
-C...Select mass for daughter in QCD evolution. 
-      B0=27./6. 
-      DO 410 IFF=4,MSTJ(45) 
-      IF(PMS.GT.4.*PMTH(2,IFF)**2) B0=(33.-2.*IFF)/6. 
-  410 CONTINUE 
-      IF(FBR.LT.1E-3) THEN 
-        PMSQCD=0. 
-      ELSEIF(MSTJ(44).LE.0) THEN 
-        PMSQCD=PMS*EXP(MAX(-50.,LOG(RLU(0))*PARU(2)/(PARU(111)*FBR))) 
-      ELSEIF(MSTJ(44).EQ.1) THEN 
-        PMSQCD=4.*ALAMS*(0.25*PMS/ALAMS)**(RLU(0)**(B0/FBR)) 
-      ELSE 
-        PMSQCD=PMS*EXP(MAX(-50.,ALFM*B0*LOG(RLU(0))/FBR)) 
-      ENDIF 
-      IF(ZC.GT.0.49.OR.PMSQCD.LE.PMTH(4,IFL)**2) PMSQCD=PMTH(2,IFL)**2 
-      V(IEP(1),5)=PMSQCD 
-      MCE=1 
-C...Select mass for daughter in QED evolution. 
-      IF(MSTJ(41).GE.2.AND.KFL(1).GE.1.AND.KFL(1).LE.18) THEN 
-        PMSQED=PMS*EXP(MAX(-50.,LOG(RLU(0))*PARU(2)/(PARU(101)*FBRE))) 
-        IF(ZCE.GT.0.49.OR.PMSQED.LE.PMTH(5,IFL)**2) PMSQED= 
-     &  PMTH(2,IFL)**2 
-        IF(PMSQED.GT.PMSQCD) THEN 
-          V(IEP(1),5)=PMSQED 
-          MCE=2 
-        ENDIF 
-      ENDIF 
-C...Check whether daughter mass below cutoff. 
-      P(IEP(1),5)=SQRT(V(IEP(1),5)) 
-      IF(P(IEP(1),5).LE.PMTH(3,IFL)) THEN 
-        P(IEP(1),5)=PMTH(1,IFL) 
-        V(IEP(1),5)=P(IEP(1),5)**2 
-        GOTO 430 
-      ENDIF 
-C...Select z value of branching: q -> qgamma. 
-      IF(MCE.EQ.2) THEN 
-        Z=1.-(1.-ZCE)*(ZCE/(1.-ZCE))**RLU(0) 
-        IF(1.+Z**2.LT.2.*RLU(0)) GOTO 390 
-        K(IEP(1),5)=22 
-C...Select z value of branching: q -> qg, g -> gg, g -> qqbar. 
-      ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN 
-        Z=1.-(1.-ZC)*(ZC/(1.-ZC))**RLU(0) 
-        IF(1.+Z**2.LT.2.*RLU(0)) GOTO 390 
-        K(IEP(1),5)=21 
-      ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*(0.5-ZC).LT.RLU(0)*FBR) THEN 
-        Z=(1.-ZC)*(ZC/(1.-ZC))**RLU(0) 
-        IF(RLU(0).GT.0.5) Z=1.-Z 
-        IF((1.-Z*(1.-Z))**2.LT.RLU(0)) GOTO 390 
-        K(IEP(1),5)=21 
-      ELSEIF(MSTJ(49).NE.1) THEN 
-        Z=ZC+(1.-2.*ZC)*RLU(0) 
-        IF(Z**2+(1.-Z)**2.LT.RLU(0)) GOTO 390 
-        KFLB=1+INT(MSTJ(45)*RLU(0)) 
-        PMQ=4.*PMTH(2,KFLB)**2/V(IEP(1),5) 
-        IF(PMQ.GE.1.) GOTO 390 
-        PMQ0=4.*PMTH(2,21)**2/V(IEP(1),5) 
-        IF(MOD(MSTJ(43),2).EQ.0.AND.(1.+0.5*PMQ)*SQRT(1.-PMQ).LT. 
-     &  RLU(0)*(1.+0.5*PMQ0)*SQRT(1.-PMQ0)) GOTO 390 
-        K(IEP(1),5)=KFLB 
-C...Ditto for scalar gluon model. 
-      ELSEIF(KFL(1).NE.21) THEN 
-        Z=1.-SQRT(ZC**2+RLU(0)*(1.-2.*ZC)) 
-        K(IEP(1),5)=21 
-      ELSEIF(RLU(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN 
-        Z=ZC+(1.-2.*ZC)*RLU(0) 
-        K(IEP(1),5)=21 
-      ELSE 
-        Z=ZC+(1.-2.*ZC)*RLU(0) 
-        KFLB=1+INT(MSTJ(45)*RLU(0)) 
-        PMQ=4.*PMTH(2,KFLB)**2/V(IEP(1),5) 
-        IF(PMQ.GE.1.) GOTO 390 
-        K(IEP(1),5)=KFLB 
-      ENDIF 
-      IF(MCE.EQ.1.AND.MSTJ(44).GE.2) THEN 
-        IF(Z*(1.-Z)*V(IEP(1),5).LT.PT2MIN) GOTO 390 
-        IF(ALFM/LOG(V(IEP(1),5)*Z*(1.-Z)/ALAMS).LT.RLU(0)) GOTO 390 
-      ENDIF 
-C...Check if z consistent with chosen m. 
-      IF(KFL(1).EQ.21) THEN 
-        KFLGD1=IABS(K(IEP(1),5)) 
-        KFLGD2=KFLGD1 
-      ELSE 
-        KFLGD1=KFL(1) 
-        KFLGD2=IABS(K(IEP(1),5)) 
-      ENDIF 
-      IF(NEP.EQ.1) THEN 
-        PED=PS(4) 
-      ELSEIF(NEP.GE.3) THEN 
-        PED=P(IEP(1),4) 
-      ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
-        PED=0.5*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5) 
-      ELSE 
-        IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM 
-        IF(IEP(1).EQ.N+2) PED=(1.-V(IM,1))*PEM 
-      ENDIF 
-      IF(MOD(MSTJ(43),2).EQ.1) THEN 
-        IFLGD1=KFLGD1
-        IF(KFLGD1.GE.6.AND.KFLGD1.LE.8) IFLGD1=IFL
-        PMQTH3=0.5*PARJ(82) 
-        IF(KFLGD2.EQ.22) PMQTH3=0.5*PARJ(83) 
-        PMQ1=(PMTH(1,IFLGD1)**2+PMQTH3**2)/V(IEP(1),5) 
-        PMQ2=(PMTH(1,KFLGD2)**2+PMQTH3**2)/V(IEP(1),5) 
-        ZD=SQRT(MAX(0.,(1.-V(IEP(1),5)/PED**2)*((1.-PMQ1-PMQ2)**2- 
-     &  4.*PMQ1*PMQ2))) 
-        ZH=1.+PMQ1-PMQ2 
-      ELSE 
-        ZD=SQRT(MAX(0.,1.-V(IEP(1),5)/PED**2)) 
-        ZH=1. 
-      ENDIF 
-      ZL=0.5*(ZH-ZD) 
-      ZU=0.5*(ZH+ZD) 
-      IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 390 
-      IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1.-ZL)/MAX(1E-20,ZL* 
-     &(1.-ZU))) 
-      IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1.-ZL)/MAX(1E-10,1.-ZU)) 
-C...Width suppression for q -> q + g.
-      IF(MSTJ(40).NE.0.AND.KFL(1).NE.21) THEN
-        IF(IGM.EQ.0) THEN
-          EGLU=0.5*PS(5)*(1.-Z)*(1.+V(IEP(1),5)/V(NS+1,5))
-        ELSE
-          EGLU=PMED*(1.-Z)
-        ENDIF
-        CHI=PARJ(89)**2/(PARJ(89)**2+EGLU**2)
-        IF(MSTJ(40).EQ.1) THEN
-          IF(CHI.LT.RLU(0)) GOTO 390  
-        ELSEIF(MSTJ(40).EQ.2) THEN
-          IF(1.-CHI.LT.RLU(0)) GOTO 390
-        ENDIF
-      ENDIF
-C...Three-jet matrix element correction. 
-      IF(IGM.EQ.0.AND.M3JC.EQ.1) THEN 
-        X1=Z*(1.+V(IEP(1),5)/V(NS+1,5)) 
-        X2=1.-V(IEP(1),5)/V(NS+1,5) 
-        X3=(1.-X1)+(1.-X2) 
-        IF(MCE.EQ.2) THEN 
-          KI1=K(IPA(INUM),2) 
-          KI2=K(IPA(3-INUM),2) 
-          QF1=KCHG(IABS(KI1),1)*ISIGN(1,KI1)/3. 
-          QF2=KCHG(IABS(KI2),1)*ISIGN(1,KI2)/3. 
-          WSHOW=QF1**2*(1.-X1)/X3*(1.+(X1/(2.-X2))**2)+ 
-     &    QF2**2*(1.-X2)/X3*(1.+(X2/(2.-X1))**2) 
-          WME=(QF1*(1.-X1)/X3-QF2*(1.-X2)/X3)**2*(X1**2+X2**2) 
-        ELSEIF(MSTJ(49).NE.1) THEN 
-          WSHOW=1.+(1.-X1)/X3*(X1/(2.-X2))**2+ 
-     &    (1.-X2)/X3*(X2/(2.-X1))**2 
-          WME=X1**2+X2**2 
-          IF(M3JCM.EQ.1) WME=WME-QME*X3-0.5*QME**2- 
-     &    (0.5*QME+0.25*QME**2)*((1.-X2)/MAX(1E-7,1.-X1)+
-     &    (1.-X1)/MAX(1E-7,1.-X2)) 
-        ELSE 
-          WSHOW=4.*X3*((1.-X1)/(2.-X2)**2+(1.-X2)/(2.-X1)**2) 
-          WME=X3**2 
-          IF(MSTJ(102).GE.2) WME=X3**2-2.*(1.+X3)*(1.-X1)*(1.-X2)* 
-     &    PARJ(171) 
-        ENDIF 
-        IF(WME.LT.RLU(0)*WSHOW) GOTO 390 
-C...Impose angular ordering by rejection of nonordered emission. 
-      ELSEIF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2) THEN 
-        MAOM=1 
-        ZM=V(IM,1) 
-        IF(IEP(1).EQ.N+2) ZM=1.-V(IM,1) 
-        THE2ID=Z*(1.-Z)*(ZM*P(IM,4))**2/V(IEP(1),5) 
-        IAOM=IM 
-  420   IF(K(IAOM,5).EQ.22) THEN 
-          IAOM=K(IAOM,3) 
-          IF(K(IAOM,3).LE.NS) MAOM=0 
-          IF(MAOM.EQ.1) GOTO 420 
-        ENDIF 
-        IF(MAOM.EQ.1) THEN 
-          THE2IM=V(IAOM,1)*(1.-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5) 
-          IF(THE2ID.LT.THE2IM) GOTO 390 
-        ENDIF 
-      ENDIF 
-C...Impose user-defined maximum angle at first branching. 
-      IF(MSTJ(48).EQ.1) THEN 
-        IF(NEP.EQ.1.AND.IM.EQ.NS) THEN 
-          THE2ID=Z*(1.-Z)*PS(4)**2/V(IEP(1),5) 
-          IF(THE2ID.LT.1./PARJ(85)**2) GOTO 390 
-        ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN 
-          THE2ID=Z*(1.-Z)*(0.5*P(IM,4))**2/V(IEP(1),5) 
-          IF(THE2ID.LT.1./PARJ(85)**2) GOTO 390 
-        ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN 
-          THE2ID=Z*(1.-Z)*(0.5*P(IM,4))**2/V(IEP(1),5) 
-          IF(THE2ID.LT.1./PARJ(86)**2) GOTO 390 
-        ENDIF 
-      ENDIF 
-C...Impose angular constraint in first branching from interference 
-C...with initial state partons. 
-      IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN 
-        THE2D=MAX((1.-Z)/Z,Z/(1.-Z))*V(IEP(1),5)/(0.5*P(IM,4))**2 
-        IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN 
-          IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 390 
-        ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN 
-          IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 390 
-        ENDIF 
-      ENDIF 
-C...End of inner veto algorithm. Check if only one leg evolved so far. 
-  430 V(IEP(1),1)=Z 
-      ISL(1)=0 
-      ISL(2)=0 
-      IF(NEP.EQ.1) GOTO 460 
-      IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 330 
-      DO 440 I=1,NEP 
-      IF(ITRY(I).EQ.0.AND.KFLD(I).LE.40) THEN 
-        IF(KSH(KFLD(I)).EQ.1) THEN 
-          IFLD=KFLD(I)
-          IF(KFLD(I).GE.6.AND.KFLD(I).LE.8) IFLD=37+KFLD(I)+
-     &    ISIGN(2,K(N+I,2)) 
-          IF(P(N+I,5).GE.PMTH(2,IFLD)) GOTO 330 
-        ENDIF 
-      ENDIF 
-  440 CONTINUE 
-C...Check if chosen multiplet m1,m2,z1,z2 is physical. 
-      IF(NEP.EQ.3) THEN 
-        PA1S=(P(N+1,4)+P(N+1,5))*(P(N+1,4)-P(N+1,5)) 
-        PA2S=(P(N+2,4)+P(N+2,5))*(P(N+2,4)-P(N+2,5)) 
-        PA3S=(P(N+3,4)+P(N+3,5))*(P(N+3,4)-P(N+3,5)) 
-        PTS=0.25*(2.*PA1S*PA2S+2.*PA1S*PA3S+2.*PA2S*PA3S- 
-     &  PA1S**2-PA2S**2-PA3S**2)/PA1S 
-        IF(PTS.LE.0.) GOTO 330 
-      ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN 
-        DO 450 I1=N+1,N+2 
-        KFLDA=IABS(K(I1,2)) 
-        IF(KFLDA.GT.40) GOTO 450 
-        IF(KSH(KFLDA).EQ.0) GOTO 450 
-        IFLDA=KFLDA 
-        IF(KFLDA.GE.6.AND.KFLDA.LE.8) IFLDA=37+KFLDA+
-     &  ISIGN(2,K(I1,2)) 
-        IF(P(I1,5).LT.PMTH(2,IFLDA)) GOTO 450 
-        IF(KFLDA.EQ.21) THEN 
-          KFLGD1=IABS(K(I1,5)) 
-          KFLGD2=KFLGD1 
-        ELSE 
-          KFLGD1=KFLDA 
-          KFLGD2=IABS(K(I1,5)) 
-        ENDIF 
-        I2=2*N+3-I1 
-        IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
-          PED=0.5*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5) 
-        ELSE 
-          IF(I1.EQ.N+1) ZM=V(IM,1) 
-          IF(I1.EQ.N+2) ZM=1.-V(IM,1) 
-          PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2- 
-     &    4.*V(N+1,5)*V(N+2,5)) 
-          PED=PEM*(0.5*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/V(IM,5) 
-        ENDIF 
-        IF(MOD(MSTJ(43),2).EQ.1) THEN 
-          PMQTH3=0.5*PARJ(82) 
-          IF(KFLGD2.EQ.22) PMQTH3=0.5*PARJ(83) 
-          IFLGD1=KFLGD1
-          IF(KFLGD1.GE.6.AND.KFLGD1.LE.8) IFLGD1=IFLDA
-          PMQ1=(PMTH(1,IFLGD1)**2+PMQTH3**2)/V(I1,5) 
-          PMQ2=(PMTH(1,KFLGD2)**2+PMQTH3**2)/V(I1,5) 
-          ZD=SQRT(MAX(0.,(1.-V(I1,5)/PED**2)*((1.-PMQ1-PMQ2)**2- 
-     &    4.*PMQ1*PMQ2))) 
-          ZH=1.+PMQ1-PMQ2 
-        ELSE 
-          ZD=SQRT(MAX(0.,1.-V(I1,5)/PED**2)) 
-          ZH=1. 
-        ENDIF 
-        ZL=0.5*(ZH-ZD) 
-        ZU=0.5*(ZH+ZD) 
-        IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU)) ISL(1)=1 
-        IF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU)) ISL(2)=1 
-        IF(KFLDA.EQ.21) V(I1,4)=LOG(ZU*(1.-ZL)/MAX(1E-20,ZL*(1.-ZU))) 
-        IF(KFLDA.NE.21) V(I1,4)=LOG((1.-ZL)/MAX(1E-10,1.-ZU)) 
-  450   CONTINUE 
-        IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN 
-          ISL(3-ISLM)=0 
-          ISLM=3-ISLM 
-        ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN 
-          ZDR1=MAX(0.,V(N+1,3)/MAX(1E-6,V(N+1,4))-1.) 
-          ZDR2=MAX(0.,V(N+2,3)/MAX(1E-6,V(N+2,4))-1.) 
-          IF(ZDR2.GT.RLU(0)*(ZDR1+ZDR2)) ISL(1)=0 
-          IF(ISL(1).EQ.1) ISL(2)=0 
-          IF(ISL(1).EQ.0) ISLM=1 
-          IF(ISL(2).EQ.0) ISLM=2 
-        ENDIF 
-        IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 330 
-      ENDIF 
-      IFLD1=KFLD(1)
-      IF(KFLD(1).GE.6.AND.KFLD(1).LE.8) IFLD1=37+KFLD(1)+
-     &ISIGN(2,K(N+1,2)) 
-      IFLD2=KFLD(2)
-      IF(KFLD(2).GE.6.AND.KFLD(2).LE.8) IFLD2=37+KFLD(2)+
-     &ISIGN(2,K(N+2,2)) 
-      IF(IGM.GT.0.AND.MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE. 
-     &PMTH(2,IFLD1).OR.P(N+2,5).GE.PMTH(2,IFLD2))) THEN 
-        PMQ1=V(N+1,5)/V(IM,5) 
-        PMQ2=V(N+2,5)/V(IM,5) 
-        ZD=SQRT(MAX(0.,(1.-V(IM,5)/PEM**2)*((1.-PMQ1-PMQ2)**2- 
-     &  4.*PMQ1*PMQ2))) 
-        ZH=1.+PMQ1-PMQ2 
-        ZL=0.5*(ZH-ZD) 
-        ZU=0.5*(ZH+ZD) 
-        IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 330 
-      ENDIF 
-C...Accepted branch. Construct four-momentum for initial partons. 
-  460 MAZIP=0 
-      MAZIC=0 
-      IF(NEP.EQ.1) THEN 
-        P(N+1,1)=0. 
-        P(N+1,2)=0. 
-        P(N+1,3)=SQRT(MAX(0.,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)- 
-     &  P(N+1,5)))) 
-        P(N+1,4)=P(IPA(1),4) 
-        V(N+1,2)=P(N+1,4) 
-      ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN 
-        PED1=0.5*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5) 
-        P(N+1,1)=0. 
-        P(N+1,2)=0. 
-        P(N+1,3)=SQRT(MAX(0.,(PED1+P(N+1,5))*(PED1-P(N+1,5)))) 
-        P(N+1,4)=PED1 
-        P(N+2,1)=0. 
-        P(N+2,2)=0. 
-        P(N+2,3)=-P(N+1,3) 
-        P(N+2,4)=P(IM,5)-PED1 
-        V(N+1,2)=P(N+1,4) 
-        V(N+2,2)=P(N+2,4) 
-      ELSEIF(NEP.EQ.3) THEN 
-        P(N+1,1)=0. 
-        P(N+1,2)=0. 
-        P(N+1,3)=SQRT(MAX(0.,PA1S)) 
-        P(N+2,1)=SQRT(PTS) 
-        P(N+2,2)=0. 
-        P(N+2,3)=0.5*(PA3S-PA2S-PA1S)/P(N+1,3) 
-        P(N+3,1)=-P(N+2,1) 
-        P(N+3,2)=0. 
-        P(N+3,3)=-(P(N+1,3)+P(N+2,3)) 
-        V(N+1,2)=P(N+1,4) 
-        V(N+2,2)=P(N+2,4) 
-        V(N+3,2)=P(N+3,4) 
-C...Construct transverse momentum for ordinary branching in shower. 
-      ELSE 
-        ZM=V(IM,1) 
-        PZM=SQRT(MAX(0.,(PEM+P(IM,5))*(PEM-P(IM,5)))) 
-        PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4.*V(N+1,5)*V(N+2,5) 
-        IF(PZM.LE.0.) THEN 
-          PTS=0. 
-        ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN 
-          PTS=(PEM**2*(ZM*(1.-ZM)*V(IM,5)-(1.-ZM)*V(N+1,5)- 
-     &    ZM*V(N+2,5))-0.25*PMLS)/PZM**2 
-        ELSE 
-          PTS=PMLS*(ZM*(1.-ZM)*PEM**2/V(IM,5)-0.25)/PZM**2 
-        ENDIF 
-        PT=SQRT(MAX(0.,PTS)) 
-C...Find coefficient of azimuthal asymmetry due to gluon polarization. 
-        HAZIP=0. 
-        IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21. 
-     &  AND.IAU.NE.0) THEN 
-          IF(K(IGM,3).NE.0) MAZIP=1 
-          ZAU=V(IGM,1) 
-          IF(IAU.EQ.IM+1) ZAU=1.-V(IGM,1) 
-          IF(MAZIP.EQ.0) ZAU=0. 
-          IF(K(IGM,2).NE.21) THEN 
-            HAZIP=2.*ZAU/(1.+ZAU**2) 
-          ELSE 
-            HAZIP=(ZAU/(1.-ZAU*(1.-ZAU)))**2 
-          ENDIF 
-          IF(K(N+1,2).NE.21) THEN 
-            HAZIP=HAZIP*(-2.*ZM*(1.-ZM))/(1.-2.*ZM*(1.-ZM)) 
-          ELSE 
-            HAZIP=HAZIP*(ZM*(1.-ZM)/(1.-ZM*(1.-ZM)))**2 
-          ENDIF 
-        ENDIF 
-C...Find coefficient of azimuthal asymmetry due to soft gluon 
-C...interference. 
-        HAZIC=0. 
-        IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR. 
-     &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN 
-          IF(K(IGM,3).NE.0) MAZIC=N+1 
-          IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2 
-          IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND. 
-     &    ZM.GT.0.5) MAZIC=N+2 
-          IF(K(IAU,2).EQ.22) MAZIC=0 
-          ZS=ZM 
-          IF(MAZIC.EQ.N+2) ZS=1.-ZM 
-          ZGM=V(IGM,1) 
-          IF(IAU.EQ.IM-1) ZGM=1.-V(IGM,1) 
-          IF(MAZIC.EQ.0) ZGM=1. 
-          IF(MAZIC.NE.0) HAZIC=(P(IM,5)/P(IGM,5))*
-     &    SQRT((1.-ZS)*(1.-ZGM)/(ZS*ZGM)) 
-          HAZIC=MIN(0.95,HAZIC) 
-        ENDIF 
-      ENDIF 
-C...Construct kinematics for ordinary branching in shower. 
-  470 IF(NEP.EQ.2.AND.IGM.GT.0) THEN 
-        IF(MOD(MSTJ(43),2).EQ.1) THEN 
-          P(N+1,4)=PEM*V(IM,1) 
-        ELSE 
-          P(N+1,4)=PEM*(0.5*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+ 
-     &    SQRT(PMLS)*ZM)/V(IM,5) 
-        ENDIF 
-        PHI=PARU(2)*RLU(0) 
-        P(N+1,1)=PT*COS(PHI) 
-        P(N+1,2)=PT*SIN(PHI) 
-        IF(PZM.GT.0.) THEN 
-          P(N+1,3)=0.5*(V(N+2,5)-V(N+1,5)-V(IM,5)+2.*PEM*P(N+1,4))/PZM 
-        ELSE 
-          P(N+1,3)=0. 
-        ENDIF 
-        P(N+2,1)=-P(N+1,1) 
-        P(N+2,2)=-P(N+1,2) 
-        P(N+2,3)=PZM-P(N+1,3) 
-        P(N+2,4)=PEM-P(N+1,4) 
-        IF(MSTJ(43).LE.2) THEN 
-          V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5) 
-          V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5) 
-        ENDIF 
-      ENDIF 
-C...Rotate and boost daughters. 
-      IF(IGM.GT.0) THEN 
-        IF(MSTJ(43).LE.2) THEN 
-          BEX=P(IGM,1)/P(IGM,4) 
-          BEY=P(IGM,2)/P(IGM,4) 
-          BEZ=P(IGM,3)/P(IGM,4) 
-          GA=P(IGM,4)/P(IGM,5) 
-          GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1.+GA)- 
-     &    P(IM,4)) 
-        ELSE 
-          BEX=0. 
-          BEY=0. 
-          BEZ=0. 
-          GA=1. 
-          GABEP=0. 
-        ENDIF 
-        THE=ULANGL(P(IM,3)+GABEP*BEZ,SQRT((P(IM,1)+GABEP*BEX)**2+ 
-     &  (P(IM,2)+GABEP*BEY)**2)) 
-        PHI=ULANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY) 
-        DO 480 I=N+1,N+2 
-        DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+ 
-     &  SIN(THE)*COS(PHI)*P(I,3) 
-        DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+ 
-     &  SIN(THE)*SIN(PHI)*P(I,3) 
-        DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3) 
-        DP(4)=P(I,4) 
-        DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3) 
-        DGABP=GA*(GA*DBP/(1D0+GA)+DP(4)) 
-        P(I,1)=DP(1)+DGABP*BEX 
-        P(I,2)=DP(2)+DGABP*BEY 
-        P(I,3)=DP(3)+DGABP*BEZ 
-        P(I,4)=GA*(DP(4)+DBP) 
-  480   CONTINUE 
-      ENDIF 
-C...Weight with azimuthal distribution, if required. 
-      IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN 
-        DO 490 J=1,3 
-        DPT(1,J)=P(IM,J) 
-        DPT(2,J)=P(IAU,J) 
-        DPT(3,J)=P(N+1,J) 
-  490   CONTINUE 
-        DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3) 
-        DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3) 
-        DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2 
-        DO 500 J=1,3 
-        DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/DPMM 
-        DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/DPMM 
-  500   CONTINUE 
-        DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2) 
-        DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2) 
-        IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1*PARJ(82)) THEN 
-          CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+ 
-     &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4)) 
-          IF(MAZIP.NE.0) THEN 
-            IF(1.+HAZIP*(2.*CAD**2-1.).LT.RLU(0)*(1.+ABS(HAZIP))) 
-     &      GOTO 470 
-          ENDIF 
-          IF(MAZIC.NE.0) THEN 
-            IF(MAZIC.EQ.N+2) CAD=-CAD 
-            IF((1.-HAZIC)*(1.-HAZIC*CAD)/(1.+HAZIC**2-2.*HAZIC*CAD) 
-     &      .LT.RLU(0)) GOTO 470 
-          ENDIF 
-        ENDIF 
-      ENDIF 
-C...Azimuthal anisotropy due to interference with initial state partons. 
-      IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR. 
-     &K(N+2,2).EQ.21)) THEN 
-        III=IM-NS-1 
-        IF(ISII(III).GE.1) THEN 
-          IAZIID=N+1 
-          IF(K(N+1,2).NE.21) IAZIID=N+2 
-          IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND. 
-     &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2 
-          THEIID=ULANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2)) 
-          IF(III.EQ.2) THEIID=PARU(1)-THEIID 
-          PHIIID=ULANGL(P(IAZIID,1),P(IAZIID,2)) 
-          HAZII=MIN(0.95,THEIID/THEIIS(III,ISII(III))) 
-          CAD=COS(PHIIID-PHIIIS(III,ISII(III))) 
-          PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III))) 
-          IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL 
-          IF((1.-HAZII)*(1.-HAZII*CAD)/(1.+HAZII**2-2.*HAZII*CAD) 
-     &    .LT.RLU(0)) GOTO 470 
-        ENDIF 
-      ENDIF 
-C...Continue loop over partons that may branch, until none left. 
-      IF(IGM.GE.0) K(IM,1)=14 
-      N=N+NEP 
-      NEP=2 
-      IF(N.GT.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUSHOW:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) N=NS 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      GOTO 270 
-C...Set information on imagined shower initiator. 
-  510 IF(NPA.GE.2) THEN 
-        K(NS+1,1)=11 
-        K(NS+1,2)=94 
-        K(NS+1,3)=IP1 
-        IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2 
-        K(NS+1,4)=NS+2 
-        K(NS+1,5)=NS+1+NPA 
-        IIM=1 
-      ELSE 
-        IIM=0 
-      ENDIF 
-C...Reconstruct string drawing information. 
-      DO 520 I=NS+1+IIM,N 
-      IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN 
-        K(I,1)=1 
-      ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND. 
-     &IABS(K(I,2)).LE.18) THEN 
-        K(I,1)=1 
-      ELSEIF(K(I,1).LE.10) THEN 
-        K(I,4)=MSTU(5)*(K(I,4)/MSTU(5)) 
-        K(I,5)=MSTU(5)*(K(I,5)/MSTU(5)) 
-      ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN 
-        ID1=MOD(K(I,4),MSTU(5)) 
-        IF(K(I,2).GE.1.AND.K(I,2).LE.8) ID1=MOD(K(I,4),MSTU(5))+1 
-        ID2=2*MOD(K(I,4),MSTU(5))+1-ID1 
-        K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1 
-        K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2 
-        K(ID1,4)=K(ID1,4)+MSTU(5)*I 
-        K(ID1,5)=K(ID1,5)+MSTU(5)*ID2 
-        K(ID2,4)=K(ID2,4)+MSTU(5)*ID1 
-        K(ID2,5)=K(ID2,5)+MSTU(5)*I 
-      ELSE 
-        ID1=MOD(K(I,4),MSTU(5)) 
-        ID2=ID1+1 
-        K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1 
-        K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1 
-        IF(IABS(K(I,2)).LE.10.OR.K(ID1,1).GE.11) THEN 
-          K(ID1,4)=K(ID1,4)+MSTU(5)*I 
-          K(ID1,5)=K(ID1,5)+MSTU(5)*I 
-        ELSE 
-          K(ID1,4)=0 
-          K(ID1,5)=0 
-        ENDIF 
-        K(ID2,4)=0 
-        K(ID2,5)=0 
-      ENDIF 
-  520 CONTINUE 
-C...Transformation from CM frame. 
-      IF(NPA.GE.2) THEN 
-        BEX=PS(1)/PS(4) 
-        BEY=PS(2)/PS(4) 
-        BEZ=PS(3)/PS(4) 
-        GA=PS(4)/PS(5) 
-        GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3)) 
-     &  /(1.+GA)-P(IPA(1),4)) 
-      ELSE 
-        BEX=0. 
-        BEY=0. 
-        BEZ=0. 
-        GABEP=0. 
-      ENDIF 
-      THE=ULANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1) 
-     &+GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2)) 
-      PHI=ULANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY) 
-      IF(NPA.EQ.3) THEN 
-        CHI=ULANGL(COS(THE)*COS(PHI)*(P(IPA(2),1)+GABEP*BEX)+COS(THE)* 
-     &  SIN(PHI)*(P(IPA(2),2)+GABEP*BEY)-SIN(THE)*(P(IPA(2),3)+GABEP* 
-     &  BEZ),-SIN(PHI)*(P(IPA(2),1)+GABEP*BEX)+COS(PHI)*(P(IPA(2),2)+ 
-     &  GABEP*BEY)) 
-        MSTU(33)=1 
-        CALL LUDBRB(NS+1,N,0.,CHI,0D0,0D0,0D0) 
-      ENDIF 
-      DBEX=DBLE(BEX) 
-      DBEY=DBLE(BEY) 
-      DBEZ=DBLE(BEZ) 
-      MSTU(33)=1 
-      CALL LUDBRB(NS+1,N,THE,PHI,DBEX,DBEY,DBEZ) 
-C...Decay vertex of shower. 
-      DO 540 I=NS+1,N 
-      DO 530 J=1,5 
-      V(I,J)=V(IP1,J) 
-  530 CONTINUE 
-  540 CONTINUE 
-C...Delete trivial shower, else connect initiators. 
-      IF(N.EQ.NS+NPA+IIM) THEN 
-        N=NS 
-      ELSE 
-        DO 550 IP=1,NPA 
-        K(IPA(IP),1)=14 
-        K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP 
-        K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP 
-        K(NS+IIM+IP,3)=IPA(IP) 
-        IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1 
-        IF(K(NS+IIM+IP,1).NE.1) THEN 
-          K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4) 
-          K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5) 
-        ENDIF 
-  550   CONTINUE 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lusphe.F b/PYTHIA/jetset/lusphe.F
deleted file mode 100644 (file)
index c5658d4..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUSPHE(SPH,APL) 
-C...Purpose: to perform sphericity tensor analysis to give sphericity, 
-C...aplanarity and the related event axes. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION SM(3,3),SV(3,3) 
-C...Calculate matrix to be diagonalized. 
-      NP=0 
-      DO 110 J1=1,3 
-      DO 100 J2=J1,3 
-      SM(J1,J2)=0. 
-  100 CONTINUE 
-  110 CONTINUE 
-      PS=0. 
-      DO 140 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LUCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 140 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &  GOTO 140 
-      ENDIF 
-      NP=NP+1 
-      PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      PWT=1. 
-      IF(ABS(PARU(41)-2.).GT.0.001) PWT=MAX(1E-10,PA)**(PARU(41)-2.) 
-      DO 130 J1=1,3 
-      DO 120 J2=J1,3 
-      SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2) 
-  120 CONTINUE 
-  130 CONTINUE 
-      PS=PS+PWT*PA**2 
-  140 CONTINUE 
-C...Very low multiplicities (0 or 1) not considered. 
-      IF(NP.LE.1) THEN 
-        CALL LUERRM(8,'(LUSPHE:) too few particles for analysis') 
-        SPH=-1. 
-        APL=-1. 
-        RETURN 
-      ENDIF 
-      DO 160 J1=1,3 
-      DO 150 J2=J1,3 
-      SM(J1,J2)=SM(J1,J2)/PS 
-  150 CONTINUE 
-  160 CONTINUE 
-C...Find eigenvalues to matrix (third degree equation). 
-      SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-SM(1,2)**2- 
-     &SM(1,3)**2-SM(2,3)**2)/3.-1./9. 
-      SR=-0.5*(SQ+1./9.+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+SM(3,3)* 
-     &SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+SM(1,2)*SM(1,3)*SM(2,3)+1./27. 
-      SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1.),-1.))/3.) 
-      P(N+1,4)=1./3.+SQRT(-SQ)*MAX(2.*SP,SQRT(3.*(1.-SP**2))-SP) 
-      P(N+3,4)=1./3.+SQRT(-SQ)*MIN(2.*SP,-SQRT(3.*(1.-SP**2))-SP) 
-      P(N+2,4)=1.-P(N+1,4)-P(N+3,4) 
-      IF(P(N+2,4).LT.1E-5) THEN 
-        CALL LUERRM(8,'(LUSPHE:) all particles back-to-back') 
-        SPH=-1. 
-        APL=-1. 
-        RETURN 
-      ENDIF 
-C...Find first and last eigenvector by solving equation system. 
-      DO 240 I=1,3,2 
-      DO 180 J1=1,3 
-      SV(J1,J1)=SM(J1,J1)-P(N+I,4) 
-      DO 170 J2=J1+1,3 
-      SV(J1,J2)=SM(J1,J2) 
-      SV(J2,J1)=SM(J1,J2) 
-  170 CONTINUE 
-  180 CONTINUE 
-      SMAX=0. 
-      DO 200 J1=1,3 
-      DO 190 J2=1,3 
-      IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190 
-      JA=J1 
-      JB=J2 
-      SMAX=ABS(SV(J1,J2)) 
-  190 CONTINUE 
-  200 CONTINUE 
-      SMAX=0. 
-      DO 220 J3=JA+1,JA+2 
-      J1=J3-3*((J3-1)/3) 
-      RL=SV(J1,JB)/SV(JA,JB) 
-      DO 210 J2=1,3 
-      SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2) 
-      IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210 
-      JC=J1 
-      SMAX=ABS(SV(J1,J2)) 
-  210 CONTINUE 
-  220 CONTINUE 
-      JB1=JB+1-3*(JB/3) 
-      JB2=JB+2-3*((JB+1)/3) 
-      P(N+I,JB1)=-SV(JC,JB2) 
-      P(N+I,JB2)=SV(JC,JB1) 
-      P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/ 
-     &SV(JA,JB) 
-      PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2) 
-      SGN=(-1.)**INT(RLU(0)+0.5) 
-      DO 230 J=1,3 
-      P(N+I,J)=SGN*P(N+I,J)/PA 
-  230 CONTINUE 
-  240 CONTINUE 
-C...Middle axis orthogonal to other two. Fill other codes. 
-      SGN=(-1.)**INT(RLU(0)+0.5) 
-      P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2)) 
-      P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3)) 
-      P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1)) 
-      DO 260 I=1,3 
-      K(N+I,1)=31 
-      K(N+I,2)=95 
-      K(N+I,3)=I 
-      K(N+I,4)=0 
-      K(N+I,5)=0 
-      P(N+I,5)=0. 
-      DO 250 J=1,5 
-      V(I,J)=0. 
-  250 CONTINUE 
-  260 CONTINUE 
-C...Calculate sphericity and aplanarity. Select storing option. 
-      SPH=1.5*(P(N+2,4)+P(N+3,4)) 
-      APL=1.5*P(N+3,4) 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      IF(MSTU(43).LE.1) MSTU(3)=3 
-      IF(MSTU(43).GE.2) N=N+3 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lustrf.F b/PYTHIA/jetset/lustrf.F
deleted file mode 100644 (file)
index 7bc63cc..0000000
+++ /dev/null
@@ -1,1115 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUSTRF(IP) 
-C...Purpose: to handle the fragmentation of an arbitrary colour singlet 
-C...jet system according to the Lund string fragmentation model. 
-      IMPLICIT DOUBLE PRECISION(D) 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2), 
-     &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(3),PJU(5,5), 
-     &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8) 
-C...Function: four-product of two vectors. 
-      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) 
-      DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)- 
-     &DP(I,3)*DP(J,3) 
-C...Reset counters. Identify parton system. 
-      MSTJ(91)=0 
-      NSAV=N 
-      MSTU90=MSTU(90) 
-      NP=0 
-      KQSUM=0 
-      DO 100 J=1,5 
-      DPS(J)=0D0 
-  100 CONTINUE 
-      MJU(1)=0 
-      MJU(2)=0 
-      I=IP-1 
-  110 I=I+1 
-      IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN 
-        CALL LUERRM(12,'(LUSTRF:) failed to reconstruct jet system') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110 
-      KC=LUCOMP(K(I,2)) 
-      IF(KC.EQ.0) GOTO 110 
-      KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
-      IF(KQ.EQ.0) GOTO 110 
-      IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUSTRF:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Take copy of partons to be considered. Check flavour sum. 
-      NP=NP+1 
-      DO 120 J=1,5 
-      K(N+NP,J)=K(I,J) 
-      P(N+NP,J)=P(I,J) 
-      IF(J.NE.4) DPS(J)=DPS(J)+P(I,J) 
-  120 CONTINUE 
-      DPS(4)=DPS(4)+SQRT(DBLE(P(I,1))**2+DBLE(P(I,2))**2+ 
-     &DBLE(P(I,3))**2+DBLE(P(I,5))**2) 
-      K(N+NP,3)=I 
-      IF(KQ.NE.2) KQSUM=KQSUM+KQ 
-      IF(K(I,1).EQ.41) THEN 
-        KQSUM=KQSUM+2*KQ 
-        IF(KQSUM.EQ.KQ) MJU(1)=N+NP 
-        IF(KQSUM.NE.KQ) MJU(2)=N+NP 
-      ENDIF 
-      IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110 
-      IF(KQSUM.NE.0) THEN 
-        CALL LUERRM(12,'(LUSTRF:) unphysical flavour combination') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Boost copied system to CM frame (for better numerical precision). 
-      IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN 
-        MBST=0 
-        MSTU(33)=1 
-        CALL LUDBRB(N+1,N+NP,0.,0.,-DPS(1)/DPS(4),-DPS(2)/DPS(4), 
-     &  -DPS(3)/DPS(4)) 
-      ELSE 
-        MBST=1 
-        HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3))) 
-        DO 130 I=N+1,N+NP 
-        HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2 
-        IF(P(I,3).GT.0.) THEN 
-          HHPEZ=(P(I,4)+P(I,3))/HHBZ 
-          P(I,3)=0.5*(HHPEZ-HHPMT/HHPEZ) 
-          P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
-        ELSE 
-          HHPEZ=(P(I,4)-P(I,3))*HHBZ 
-          P(I,3)=-0.5*(HHPEZ-HHPMT/HHPEZ) 
-          P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
-        ENDIF 
-  130   CONTINUE 
-      ENDIF 
-C...Search for very nearby partons that may be recombined. 
-      NTRYR=0 
-      PARU12=PARU(12) 
-      PARU13=PARU(13) 
-      MJU(3)=MJU(1) 
-      MJU(4)=MJU(2) 
-      NR=NP 
-  140 IF(NR.GE.3) THEN 
-        PDRMIN=2.*PARU12 
-        DO 150 I=N+1,N+NR 
-        IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150 
-        I1=I+1 
-        IF(I.EQ.N+NR) I1=N+1 
-        IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150 
-        IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21) 
-     &  GOTO 150 
-        IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21) GOTO 150 
-        PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+ 
-     &  P(I1,2)**2+P(I1,3)**2)) 
-        PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3) 
-        PDR=4.*(PAP-PVP)**2/MAX(1E-6,PARU13**2*PAP+2.*(PAP-PVP)) 
-        IF(PDR.LT.PDRMIN) THEN 
-          IR=I 
-          PDRMIN=PDR 
-        ENDIF 
-  150   CONTINUE 
-C...Recombine very nearby partons to avoid machine precision problems. 
-        IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN 
-          DO 160 J=1,4 
-          P(N+1,J)=P(N+1,J)+P(N+NR,J) 
-  160     CONTINUE 
-          P(N+1,5)=SQRT(MAX(0.,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2- 
-     &    P(N+1,3)**2)) 
-          NR=NR-1 
-          GOTO 140 
-        ELSEIF(PDRMIN.LT.PARU12) THEN 
-          DO 170 J=1,4 
-          P(IR,J)=P(IR,J)+P(IR+1,J) 
-  170     CONTINUE 
-          P(IR,5)=SQRT(MAX(0.,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2- 
-     &    P(IR,3)**2)) 
-          DO 190 I=IR+1,N+NR-1 
-          K(I,2)=K(I+1,2) 
-          DO 180 J=1,5 
-          P(I,J)=P(I+1,J) 
-  180     CONTINUE 
-  190     CONTINUE 
-          IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2) 
-          NR=NR-1 
-          IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1 
-          IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1 
-          GOTO 140 
-        ENDIF 
-      ENDIF 
-      NTRYR=NTRYR+1 
-C...Reset particle counter. Skip ahead if no junctions are present; 
-C...this is usually the case! 
-      NRS=MAX(5*NR+11,NP) 
-      NTRY=0 
-  200 NTRY=NTRY+1 
-      IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
-        PARU12=4.*PARU12 
-        PARU13=2.*PARU13 
-        GOTO 140 
-      ELSEIF(NTRY.GT.100) THEN 
-        CALL LUERRM(14,'(LUSTRF:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      I=N+NRS 
-      MSTU(90)=MSTU90 
-      IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 580 
-      DO 570 JT=1,2 
-      NJS(JT)=0 
-      IF(MJU(JT).EQ.0) GOTO 570 
-      JS=3-2*JT 
-C...Find and sum up momentum on three sides of junction. Check flavours. 
-      DO 220 IU=1,3 
-      IJU(IU)=0 
-      DO 210 J=1,5 
-      PJU(IU,J)=0. 
-  210 CONTINUE 
-  220 CONTINUE 
-      IU=0 
-      DO 240 I1=N+1+(JT-1)*(NR-1),N+NR+(JT-1)*(1-NR),JS 
-      IF(K(I1,2).NE.21.AND.IU.LE.2) THEN 
-        IU=IU+1 
-        IJU(IU)=I1 
-      ENDIF 
-      DO 230 J=1,4 
-      PJU(IU,J)=PJU(IU,J)+P(I1,J) 
-  230 CONTINUE 
-  240 CONTINUE 
-      DO 250 IU=1,3 
-      PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2) 
-  250 CONTINUE 
-      IF(K(IJU(3),2)/100.NE.10*K(IJU(1),2)+K(IJU(2),2).AND. 
-     &K(IJU(3),2)/100.NE.10*K(IJU(2),2)+K(IJU(1),2)) THEN 
-        CALL LUERRM(12,'(LUSTRF:) unphysical flavour combination') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-C...Calculate (approximate) boost to rest frame of junction. 
-      T12=(PJU(1,1)*PJU(2,1)+PJU(1,2)*PJU(2,2)+PJU(1,3)*PJU(2,3))/ 
-     &(PJU(1,5)*PJU(2,5)) 
-      T13=(PJU(1,1)*PJU(3,1)+PJU(1,2)*PJU(3,2)+PJU(1,3)*PJU(3,3))/ 
-     &(PJU(1,5)*PJU(3,5)) 
-      T23=(PJU(2,1)*PJU(3,1)+PJU(2,2)*PJU(3,2)+PJU(2,3)*PJU(3,3))/ 
-     &(PJU(2,5)*PJU(3,5)) 
-      T11=SQRT((2./3.)*(1.-T12)*(1.-T13)/(1.-T23)) 
-      T22=SQRT((2./3.)*(1.-T12)*(1.-T23)/(1.-T13)) 
-      TSQ=SQRT((2.*T11*T22+T12-1.)*(1.+T12)) 
-      T1F=(TSQ-T22*(1.+T12))/(1.-T12**2) 
-      T2F=(TSQ-T11*(1.+T12))/(1.-T12**2) 
-      DO 260 J=1,3 
-      TJU(J)=-(T1F*PJU(1,J)/PJU(1,5)+T2F*PJU(2,J)/PJU(2,5)) 
-  260 CONTINUE 
-      TJU(4)=SQRT(1.+TJU(1)**2+TJU(2)**2+TJU(3)**2) 
-      DO 270 IU=1,3 
-      PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)- 
-     &TJU(3)*PJU(IU,3) 
-  270 CONTINUE 
-C...Put junction at rest if motion could give inconsistencies. 
-      IF(PJU(1,5)+PJU(2,5).GT.PJU(1,4)+PJU(2,4)) THEN 
-        DO 280 J=1,3 
-        TJU(J)=0. 
-  280   CONTINUE 
-        TJU(4)=1. 
-        PJU(1,5)=PJU(1,4) 
-        PJU(2,5)=PJU(2,4) 
-        PJU(3,5)=PJU(3,4) 
-      ENDIF 
-C...Start preparing for fragmentation of two strings from junction. 
-      ISTA=I 
-      DO 550 IU=1,2 
-      NS=IJU(IU+1)-IJU(IU) 
-C...Junction strings: find longitudinal string directions. 
-      DO 310 IS=1,NS 
-      IS1=IJU(IU)+IS-1 
-      IS2=IJU(IU)+IS 
-      DO 290 J=1,5 
-      DP(1,J)=0.5*P(IS1,J) 
-      IF(IS.EQ.1) DP(1,J)=P(IS1,J) 
-      DP(2,J)=0.5*P(IS2,J) 
-      IF(IS.EQ.NS) DP(2,J)=-PJU(IU,J) 
-  290 CONTINUE 
-      IF(IS.EQ.NS) DP(2,4)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2) 
-      IF(IS.EQ.NS) DP(2,5)=0. 
-      DP(3,5)=DFOUR(1,1) 
-      DP(4,5)=DFOUR(2,2) 
-      DHKC=DFOUR(1,2) 
-      IF(DP(3,5)+2.*DHKC+DP(4,5).LE.0.) THEN 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-        DP(3,5)=0D0 
-        DP(4,5)=0D0 
-        DHKC=DFOUR(1,2) 
-      ENDIF 
-      DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5)) 
-      DHK1=0.5*((DP(4,5)+DHKC)/DHKS-1.) 
-      DHK2=0.5*((DP(3,5)+DHKC)/DHKS-1.) 
-      IN1=N+NR+4*IS-3 
-      P(IN1,5)=SQRT(DP(3,5)+2.*DHKC+DP(4,5)) 
-      DO 300 J=1,4 
-      P(IN1,J)=(1.+DHK1)*DP(1,J)-DHK2*DP(2,J) 
-      P(IN1+1,J)=(1.+DHK2)*DP(2,J)-DHK1*DP(1,J) 
-  300 CONTINUE 
-  310 CONTINUE 
-C...Junction strings: initialize flavour, momentum and starting pos. 
-      ISAV=I 
-      MSTU91=MSTU(90) 
-  320 NTRY=NTRY+1 
-      IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
-        PARU12=4.*PARU12 
-        PARU13=2.*PARU13 
-        GOTO 140 
-      ELSEIF(NTRY.GT.100) THEN 
-        CALL LUERRM(14,'(LUSTRF:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      I=ISAV 
-      MSTU(90)=MSTU91 
-      IRANKJ=0 
-      IE(1)=K(N+1+(JT/2)*(NP-1),3) 
-      IN(4)=N+NR+1 
-      IN(5)=IN(4)+1 
-      IN(6)=N+NR+4*NS+1 
-      DO 340 JQ=1,2 
-      DO 330 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4 
-      P(IN1,1)=2-JQ 
-      P(IN1,2)=JQ-1 
-      P(IN1,3)=1. 
-  330 CONTINUE 
-  340 CONTINUE 
-      KFL(1)=K(IJU(IU),2) 
-      PX(1)=0. 
-      PY(1)=0. 
-      GAM(1)=0. 
-      DO 350 J=1,5 
-      PJU(IU+3,J)=0. 
-  350 CONTINUE 
-C...Junction strings: find initial transverse directions. 
-      DO 360 J=1,4 
-      DP(1,J)=P(IN(4),J) 
-      DP(2,J)=P(IN(4)+1,J) 
-      DP(3,J)=0. 
-      DP(4,J)=0. 
-  360 CONTINUE 
-      DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-      DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-      DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
-      DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
-      DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
-      IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
-      IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
-      IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
-      IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
-      DHC12=DFOUR(1,2) 
-      DHCX1=DFOUR(3,1)/DHC12 
-      DHCX2=DFOUR(3,2)/DHC12 
-      DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
-      DHCY1=DFOUR(4,1)/DHC12 
-      DHCY2=DFOUR(4,2)/DHC12 
-      DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
-      DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
-      DO 370 J=1,4 
-      DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
-      P(IN(6),J)=DP(3,J) 
-      P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
-     &DHCYX*DP(3,J)) 
-  370 CONTINUE 
-C...Junction strings: produce new particle, origin. 
-  380 I=I+1 
-      IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUSTRF:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      IRANKJ=IRANKJ+1 
-      K(I,1)=1 
-      K(I,3)=IE(1) 
-      K(I,4)=0 
-      K(I,5)=0 
-C...Junction strings: generate flavour, hadron, pT, z and Gamma. 
-  390 CALL LUKFDI(KFL(1),0,KFL(3),K(I,2)) 
-      IF(K(I,2).EQ.0) GOTO 320 
-      IF(MSTJ(12).GE.3.AND.IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND. 
-     &IABS(KFL(3)).GT.10) THEN 
-        IF(RLU(0).GT.PARJ(19)) GOTO 390 
-      ENDIF 
-      P(I,5)=ULMASS(K(I,2)) 
-      CALL LUPTDI(KFL(1),PX(3),PY(3)) 
-      PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2 
-      CALL LUZDIS(KFL(1),KFL(3),PR(1),Z) 
-      IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND. 
-     &MSTU(90).LT.8) THEN 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I 
-        PARU(90+MSTU(90))=Z 
-      ENDIF 
-      GAM(3)=(1.-Z)*(GAM(1)+PR(1)/Z) 
-      DO 400 J=1,3 
-      IN(J)=IN(3+J) 
-  400 CONTINUE 
-C...Junction strings: stepping within or from 'low' string region easy. 
-      IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)* 
-     &P(IN(1),5)**2.GE.PR(1)) THEN 
-        P(IN(1)+2,4)=Z*P(IN(1)+2,3) 
-        P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2) 
-        DO 410 J=1,4 
-        P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J) 
-  410   CONTINUE 
-        GOTO 500 
-      ELSEIF(IN(1)+1.EQ.IN(2)) THEN 
-        P(IN(2)+2,4)=P(IN(2)+2,3) 
-        P(IN(2)+2,1)=1. 
-        IN(2)=IN(2)+4 
-        IF(IN(2).GT.N+NR+4*NS) GOTO 320 
-        IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
-          P(IN(1)+2,4)=P(IN(1)+2,3) 
-          P(IN(1)+2,1)=0. 
-          IN(1)=IN(1)+4 
-        ENDIF 
-      ENDIF 
-C...Junction strings: find new transverse directions. 
-  420 IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR. 
-     &IN(1).GT.IN(2)) GOTO 320 
-      IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN 
-        DO 430 J=1,4 
-        DP(1,J)=P(IN(1),J) 
-        DP(2,J)=P(IN(2),J) 
-        DP(3,J)=0. 
-        DP(4,J)=0. 
-  430   CONTINUE 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-        DHC12=DFOUR(1,2) 
-        IF(DHC12.LE.1E-2) THEN 
-          P(IN(1)+2,4)=P(IN(1)+2,3) 
-          P(IN(1)+2,1)=0. 
-          IN(1)=IN(1)+4 
-          GOTO 420 
-        ENDIF 
-        IN(3)=N+NR+4*NS+5 
-        DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
-        DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
-        DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
-        IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
-        IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
-        IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
-        IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
-        DHCX1=DFOUR(3,1)/DHC12 
-        DHCX2=DFOUR(3,2)/DHC12 
-        DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
-        DHCY1=DFOUR(4,1)/DHC12 
-        DHCY2=DFOUR(4,2)/DHC12 
-        DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
-        DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
-        DO 440 J=1,4 
-        DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
-        P(IN(3),J)=DP(3,J) 
-        P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
-     &  DHCYX*DP(3,J)) 
-  440   CONTINUE 
-C...Express pT with respect to new axes, if sensible. 
-        PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3))) 
-        PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1)) 
-        IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01) THEN 
-          PX(3)=PXP 
-          PY(3)=PYP 
-        ENDIF 
-      ENDIF 
-C...Junction strings: sum up known four-momentum, coefficients for m2. 
-      DO 470 J=1,4 
-      DHG(J)=0. 
-      P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+ 
-     &PY(3)*P(IN(3)+1,J) 
-      DO 450 IN1=IN(4),IN(1)-4,4 
-      P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J) 
-  450 CONTINUE 
-      DO 460 IN2=IN(5),IN(2)-4,4 
-      P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J) 
-  460 CONTINUE 
-  470 CONTINUE 
-      DHM(1)=FOUR(I,I) 
-      DHM(2)=2.*FOUR(I,IN(1)) 
-      DHM(3)=2.*FOUR(I,IN(2)) 
-      DHM(4)=2.*FOUR(IN(1),IN(2)) 
-C...Junction strings: find coefficients for Gamma expression. 
-      DO 490 IN2=IN(1)+1,IN(2),4 
-      DO 480 IN1=IN(1),IN2-1,4 
-      DHC=2.*FOUR(IN1,IN2) 
-      DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC 
-      IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC 
-      IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC 
-      IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC 
-  480 CONTINUE 
-  490 CONTINUE 
-C...Junction strings: solve (m2, Gamma) equation system for energies. 
-      DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3) 
-      IF(ABS(DHS1).LT.1E-4) GOTO 320 
-      DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)* 
-     &(P(I,5)**2-DHM(1))+DHG(2)*DHM(3) 
-      DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1)) 
-      P(IN(2)+2,4)=0.5*(SQRT(MAX(0D0,DHS2**2-4.*DHS1*DHS3))/ABS(DHS1)- 
-     &DHS2/DHS1) 
-      IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0.) GOTO 320 
-      P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/ 
-     &(DHM(2)+DHM(4)*P(IN(2)+2,4)) 
-C...Junction strings: step to new region if necessary. 
-      IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN 
-        P(IN(2)+2,4)=P(IN(2)+2,3) 
-        P(IN(2)+2,1)=1. 
-        IN(2)=IN(2)+4 
-        IF(IN(2).GT.N+NR+4*NS) GOTO 320 
-        IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
-          P(IN(1)+2,4)=P(IN(1)+2,3) 
-          P(IN(1)+2,1)=0. 
-          IN(1)=IN(1)+4 
-        ENDIF 
-        GOTO 420 
-      ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN 
-        P(IN(1)+2,4)=P(IN(1)+2,3) 
-        P(IN(1)+2,1)=0. 
-        IN(1)=IN(1)+JS 
-        GOTO 820 
-      ENDIF 
-C...Junction strings: particle four-momentum, remainder, loop back. 
-  500 DO 510 J=1,4 
-      P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J) 
-      PJU(IU+3,J)=PJU(IU+3,J)+P(I,J) 
-  510 CONTINUE 
-      IF(P(I,4).LT.P(I,5)) GOTO 320 
-      PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)- 
-     &TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3) 
-      IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN 
-        KFL(1)=-KFL(3) 
-        PX(1)=-PX(3) 
-        PY(1)=-PY(3) 
-        GAM(1)=GAM(3) 
-        IF(IN(3).NE.IN(6)) THEN 
-          DO 520 J=1,4 
-          P(IN(6),J)=P(IN(3),J) 
-          P(IN(6)+1,J)=P(IN(3)+1,J) 
-  520     CONTINUE 
-        ENDIF 
-        DO 530 JQ=1,2 
-        IN(3+JQ)=IN(JQ) 
-        P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4) 
-        P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4) 
-  530   CONTINUE 
-        GOTO 380 
-      ENDIF 
-C...Junction strings: save quantities left after each string. 
-      IF(IABS(KFL(1)).GT.10) GOTO 320 
-      I=I-1 
-      KFJH(IU)=KFL(1) 
-      DO 540 J=1,4 
-      PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J) 
-  540 CONTINUE 
-  550 CONTINUE 
-C...Junction strings: put together to new effective string endpoint. 
-      NJS(JT)=I-ISTA 
-      KFJS(JT)=K(K(MJU(JT+2),3),2) 
-      KFLS=2*INT(RLU(0)+3.*PARJ(4)/(1.+3.*PARJ(4)))+1 
-      IF(KFJH(1).EQ.KFJH(2)) KFLS=3 
-      IF(ISTA.NE.I) KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)), 
-     &IABS(KFJH(2)))+100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+ 
-     &KFLS,KFJH(1)) 
-      DO 560 J=1,4 
-      PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J) 
-      PJS(JT+2,J)=PJU(4,J)+PJU(5,J) 
-  560 CONTINUE 
-      PJS(JT,5)=SQRT(MAX(0.,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2- 
-     &PJS(JT,3)**2)) 
-  570 CONTINUE 
-C...Open versus closed strings. Choose breakup region for latter. 
-  580 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN 
-        NS=MJU(2)-MJU(1) 
-        NB=MJU(1)-N 
-      ELSEIF(MJU(1).NE.0) THEN 
-        NS=N+NR-MJU(1) 
-        NB=MJU(1)-N 
-      ELSEIF(MJU(2).NE.0) THEN 
-        NS=MJU(2)-N 
-        NB=1 
-      ELSEIF(IABS(K(N+1,2)).NE.21) THEN 
-        NS=NR-1 
-        NB=1 
-      ELSE 
-        NS=NR+1 
-        W2SUM=0. 
-        DO 590 IS=1,NR 
-        P(N+NR+IS,1)=0.5*FOUR(N+IS,N+IS+1-NR*(IS/NR)) 
-        W2SUM=W2SUM+P(N+NR+IS,1) 
-  590   CONTINUE 
-        W2RAN=RLU(0)*W2SUM 
-        NB=0 
-  600   NB=NB+1 
-        W2SUM=W2SUM-P(N+NR+NB,1) 
-        IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 600 
-      ENDIF 
-C...Find longitudinal string directions (i.e. lightlike four-vectors). 
-      DO 630 IS=1,NS 
-      IS1=N+IS+NB-1-NR*((IS+NB-2)/NR) 
-      IS2=N+IS+NB-NR*((IS+NB-1)/NR) 
-      DO 610 J=1,5 
-      DP(1,J)=P(IS1,J) 
-      IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5*DP(1,J) 
-      IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J) 
-      DP(2,J)=P(IS2,J) 
-      IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5*DP(2,J) 
-      IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J) 
-  610 CONTINUE 
-      DP(3,5)=DFOUR(1,1) 
-      DP(4,5)=DFOUR(2,2) 
-      DHKC=DFOUR(1,2) 
-      IF(DP(3,5)+2.*DHKC+DP(4,5).LE.0.) THEN 
-        DP(3,5)=DP(1,5)**2 
-        DP(4,5)=DP(2,5)**2 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2+DP(1,5)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2+DP(2,5)**2) 
-        DHKC=DFOUR(1,2) 
-      ENDIF 
-      DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5)) 
-      DHK1=0.5*((DP(4,5)+DHKC)/DHKS-1.) 
-      DHK2=0.5*((DP(3,5)+DHKC)/DHKS-1.) 
-      IN1=N+NR+4*IS-3 
-      P(IN1,5)=SQRT(DP(3,5)+2.*DHKC+DP(4,5)) 
-      DO 620 J=1,4 
-      P(IN1,J)=(1.+DHK1)*DP(1,J)-DHK2*DP(2,J) 
-      P(IN1+1,J)=(1.+DHK2)*DP(2,J)-DHK1*DP(1,J) 
-  620 CONTINUE 
-  630 CONTINUE 
-C...Begin initialization: sum up energy, set starting position. 
-      ISAV=I 
-      MSTU91=MSTU(90) 
-  640 NTRY=NTRY+1 
-      IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
-        PARU12=4.*PARU12 
-        PARU13=2.*PARU13 
-        GOTO 140 
-      ELSEIF(NTRY.GT.100) THEN 
-        CALL LUERRM(14,'(LUSTRF:) caught in infinite loop') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      I=ISAV 
-      MSTU(90)=MSTU91 
-      DO 660 J=1,4 
-      P(N+NRS,J)=0. 
-      DO 650 IS=1,NR 
-      P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J) 
-  650 CONTINUE 
-  660 CONTINUE 
-      DO 680 JT=1,2 
-      IRANK(JT)=0 
-      IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT) 
-      IF(NS.GT.NR) IRANK(JT)=1 
-      IE(JT)=K(N+1+(JT/2)*(NP-1),3) 
-      IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1) 
-      IN(3*JT+2)=IN(3*JT+1)+1 
-      IN(3*JT+3)=N+NR+4*NS+2*JT-1 
-      DO 670 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4 
-      P(IN1,1)=2-JT 
-      P(IN1,2)=JT-1 
-      P(IN1,3)=1. 
-  670 CONTINUE 
-  680 CONTINUE 
-C...Initialize flavour and pT variables for open string. 
-      IF(NS.LT.NR) THEN 
-        PX(1)=0. 
-        PY(1)=0. 
-        IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL LUPTDI(0,PX(1),PY(1)) 
-        PX(2)=-PX(1) 
-        PY(2)=-PY(1) 
-        DO 690 JT=1,2 
-        KFL(JT)=K(IE(JT),2) 
-        IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT) 
-        MSTJ(93)=1 
-        PMQ(JT)=ULMASS(KFL(JT)) 
-        GAM(JT)=0. 
-  690   CONTINUE 
-C...Closed string: random initial breakup flavour, pT and vertex. 
-      ELSE 
-        KFL(3)=INT(1.+(2.+PARJ(2))*RLU(0))*(-1)**INT(RLU(0)+0.5) 
-        CALL LUKFDI(KFL(3),0,KFL(1),KDUMP) 
-        KFL(2)=-KFL(1) 
-        IF(IABS(KFL(1)).GT.10.AND.RLU(0).GT.0.5) THEN 
-          KFL(2)=-(KFL(1)+ISIGN(10000,KFL(1))) 
-        ELSEIF(IABS(KFL(1)).GT.10) THEN 
-          KFL(1)=-(KFL(2)+ISIGN(10000,KFL(2))) 
-        ENDIF 
-        CALL LUPTDI(KFL(1),PX(1),PY(1)) 
-        PX(2)=-PX(1) 
-        PY(2)=-PY(1) 
-        PR3=MIN(25.,0.1*P(N+NR+1,5)**2) 
-  700   CALL LUZDIS(KFL(1),KFL(2),PR3,Z) 
-        ZR=PR3/(Z*P(N+NR+1,5)**2) 
-        IF(ZR.GE.1.) GOTO 700 
-        DO 710 JT=1,2 
-        MSTJ(93)=1 
-        PMQ(JT)=ULMASS(KFL(JT)) 
-        GAM(JT)=PR3*(1.-Z)/Z 
-        IN1=N+NR+3+4*(JT/2)*(NS-1) 
-        P(IN1,JT)=1.-Z 
-        P(IN1,3-JT)=JT-1 
-        P(IN1,3)=(2-JT)*(1.-Z)+(JT-1)*Z 
-        P(IN1+1,JT)=ZR 
-        P(IN1+1,3-JT)=2-JT 
-        P(IN1+1,3)=(2-JT)*(1.-ZR)+(JT-1)*ZR 
-  710   CONTINUE 
-      ENDIF 
-C...Find initial transverse directions (i.e. spacelike four-vectors). 
-      DO 750 JT=1,2 
-      IF(JT.EQ.1.OR.NS.EQ.NR-1) THEN 
-        IN1=IN(3*JT+1) 
-        IN3=IN(3*JT+3) 
-        DO 720 J=1,4 
-        DP(1,J)=P(IN1,J) 
-        DP(2,J)=P(IN1+1,J) 
-        DP(3,J)=0. 
-        DP(4,J)=0. 
-  720   CONTINUE 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-        DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
-        DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
-        DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
-        IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
-        IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
-        IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
-        IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
-        DHC12=DFOUR(1,2) 
-        DHCX1=DFOUR(3,1)/DHC12 
-        DHCX2=DFOUR(3,2)/DHC12 
-        DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
-        DHCY1=DFOUR(4,1)/DHC12 
-        DHCY2=DFOUR(4,2)/DHC12 
-        DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
-        DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
-        DO 730 J=1,4 
-        DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
-        P(IN3,J)=DP(3,J) 
-        P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
-     &  DHCYX*DP(3,J)) 
-  730   CONTINUE 
-      ELSE 
-        DO 740 J=1,4 
-        P(IN3+2,J)=P(IN3,J) 
-        P(IN3+3,J)=P(IN3+1,J) 
-  740   CONTINUE 
-      ENDIF 
-  750 CONTINUE 
-C...Remove energy used up in junction string fragmentation. 
-      IF(MJU(1)+MJU(2).GT.0) THEN 
-        DO 770 JT=1,2 
-        IF(NJS(JT).EQ.0) GOTO 770 
-        DO 760 J=1,4 
-        P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J) 
-  760   CONTINUE 
-  770   CONTINUE 
-      ENDIF 
-C...Produce new particle: side, origin. 
-  780 I=I+1 
-      IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUSTRF:) no more memory left in LUJETS') 
-        IF(MSTU(21).GE.1) RETURN 
-      ENDIF 
-      JT=1.5+RLU(0) 
-      IF(IABS(KFL(3-JT)).GT.10) JT=3-JT 
-      IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT 
-      JR=3-JT 
-      JS=3-2*JT 
-      IRANK(JT)=IRANK(JT)+1 
-      K(I,1)=1 
-      K(I,3)=IE(JT) 
-      K(I,4)=0 
-      K(I,5)=0 
-C...Generate flavour, hadron and pT. 
-  790 CALL LUKFDI(KFL(JT),0,KFL(3),K(I,2)) 
-      IF(K(I,2).EQ.0) GOTO 640 
-      IF(MSTJ(12).GE.3.AND.IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND. 
-     &IABS(KFL(3)).GT.10) THEN 
-        IF(RLU(0).GT.PARJ(19)) GOTO 790 
-      ENDIF 
-      P(I,5)=ULMASS(K(I,2)) 
-      CALL LUPTDI(KFL(JT),PX(3),PY(3)) 
-      PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2 
-C...Final hadrons for small invariant mass. 
-      MSTJ(93)=1 
-      PMQ(3)=ULMASS(KFL(3)) 
-      PARJST=PARJ(33) 
-      IF(MSTJ(11).EQ.2) PARJST=PARJ(34) 
-      WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3) 
-      IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN= 
-     &WMIN-0.5*PARJ(36)*PMQ(3) 
-      WREM2=FOUR(N+NRS,N+NRS) 
-      IF(WREM2.LT.0.10) GOTO 640 
-      IF(WREM2.LT.MAX(WMIN*(1.+(2.*RLU(0)-1.)*PARJ(37)), 
-     &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 940 
-C...Choose z, which gives Gamma. Shift z for heavy flavours. 
-      CALL LUZDIS(KFL(JT),KFL(3),PR(JT),Z) 
-      IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND. 
-     &MSTU(90).LT.8) THEN 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I 
-        PARU(90+MSTU(90))=Z 
-      ENDIF 
-      KFL1A=IABS(KFL(1)) 
-      KFL2A=IABS(KFL(2)) 
-      IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10), 
-     &MOD(KFL2A/1000,10)).GE.4) THEN 
-        PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
-        PW12=SQRT(MAX(0.,(WREM2-PR(1)-PR(2))**2-4.*PR(1)*PR(2))) 
-        Z=(WREM2+PR(JT)-PR(JR)+PW12*(2.*Z-1.))/(2.*WREM2) 
-        PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
-        IF((1.-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 940 
-      ENDIF 
-      GAM(3)=(1.-Z)*(GAM(JT)+PR(JT)/Z) 
-      DO 800 J=1,3 
-      IN(J)=IN(3*JT+J) 
-  800 CONTINUE 
-C...Stepping within or from 'low' string region easy. 
-      IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)* 
-     &P(IN(1),5)**2.GE.PR(JT)) THEN 
-        P(IN(JT)+2,4)=Z*P(IN(JT)+2,3) 
-        P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2) 
-        DO 810 J=1,4 
-        P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J) 
-  810   CONTINUE 
-        GOTO 900 
-      ELSEIF(IN(1)+1.EQ.IN(2)) THEN 
-        P(IN(JR)+2,4)=P(IN(JR)+2,3) 
-        P(IN(JR)+2,JT)=1. 
-        IN(JR)=IN(JR)+4*JS 
-        IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 640 
-        IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
-          P(IN(JT)+2,4)=P(IN(JT)+2,3) 
-          P(IN(JT)+2,JT)=0. 
-          IN(JT)=IN(JT)+4*JS 
-        ENDIF 
-      ENDIF 
-C...Find new transverse directions (i.e. spacelike string vectors). 
-  820 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR. 
-     &IN(1).GT.IN(2)) GOTO 640 
-      IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN 
-        DO 830 J=1,4 
-        DP(1,J)=P(IN(1),J) 
-        DP(2,J)=P(IN(2),J) 
-        DP(3,J)=0. 
-        DP(4,J)=0. 
-  830   CONTINUE 
-        DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
-        DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
-        DHC12=DFOUR(1,2) 
-        IF(DHC12.LE.1E-2) THEN 
-          P(IN(JT)+2,4)=P(IN(JT)+2,3) 
-          P(IN(JT)+2,JT)=0. 
-          IN(JT)=IN(JT)+4*JS 
-          GOTO 820 
-        ENDIF 
-        IN(3)=N+NR+4*NS+5 
-        DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
-        DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
-        DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
-        IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
-        IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
-        IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
-        IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
-        DHCX1=DFOUR(3,1)/DHC12 
-        DHCX2=DFOUR(3,2)/DHC12 
-        DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
-        DHCY1=DFOUR(4,1)/DHC12 
-        DHCY2=DFOUR(4,2)/DHC12 
-        DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
-        DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
-        DO 840 J=1,4 
-        DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
-        P(IN(3),J)=DP(3,J) 
-        P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
-     &  DHCYX*DP(3,J)) 
-  840   CONTINUE 
-C...Express pT with respect to new axes, if sensible. 
-        PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)* 
-     &  FOUR(IN(3*JT+3)+1,IN(3))) 
-        PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)* 
-     &  FOUR(IN(3*JT+3)+1,IN(3)+1)) 
-        IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01) THEN 
-          PX(3)=PXP 
-          PY(3)=PYP 
-        ENDIF 
-      ENDIF 
-C...Sum up known four-momentum. Gives coefficients for m2 expression. 
-      DO 870 J=1,4 
-      DHG(J)=0. 
-      P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+ 
-     &PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J) 
-      DO 850 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS 
-      P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J) 
-  850 CONTINUE 
-      DO 860 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS 
-      P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J) 
-  860 CONTINUE 
-  870 CONTINUE 
-      DHM(1)=FOUR(I,I) 
-      DHM(2)=2.*FOUR(I,IN(1)) 
-      DHM(3)=2.*FOUR(I,IN(2)) 
-      DHM(4)=2.*FOUR(IN(1),IN(2)) 
-C...Find coefficients for Gamma expression. 
-      DO 890 IN2=IN(1)+1,IN(2),4 
-      DO 880 IN1=IN(1),IN2-1,4 
-      DHC=2.*FOUR(IN1,IN2) 
-      DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC 
-      IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC 
-      IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC 
-      IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC 
-  880 CONTINUE 
-  890 CONTINUE 
-C...Solve (m2, Gamma) equation system for energies taken. 
-      DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1) 
-      IF(ABS(DHS1).LT.1E-4) GOTO 640 
-      DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)* 
-     &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1) 
-      DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1)) 
-      P(IN(JR)+2,4)=0.5*(SQRT(MAX(0D0,DHS2**2-4.*DHS1*DHS3))/ABS(DHS1)- 
-     &DHS2/DHS1) 
-      IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0.) GOTO 640 
-      P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/ 
-     &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4)) 
-C...Step to new region if necessary. 
-      IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN 
-        P(IN(JR)+2,4)=P(IN(JR)+2,3) 
-        P(IN(JR)+2,JT)=1. 
-        IN(JR)=IN(JR)+4*JS 
-        IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 640 
-        IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
-          P(IN(JT)+2,4)=P(IN(JT)+2,3) 
-          P(IN(JT)+2,JT)=0. 
-          IN(JT)=IN(JT)+4*JS 
-        ENDIF 
-        GOTO 820 
-      ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN 
-        P(IN(JT)+2,4)=P(IN(JT)+2,3) 
-        P(IN(JT)+2,JT)=0. 
-        IN(JT)=IN(JT)+4*JS 
-        GOTO 820 
-      ENDIF 
-C...Four-momentum of particle. Remaining quantities. Loop back. 
-  900 DO 910 J=1,4 
-      P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J) 
-      P(N+NRS,J)=P(N+NRS,J)-P(I,J) 
-  910 CONTINUE 
-      IF(P(I,4).LT.P(I,5)) GOTO 640 
-      KFL(JT)=-KFL(3) 
-      PMQ(JT)=PMQ(3) 
-      PX(JT)=-PX(3) 
-      PY(JT)=-PY(3) 
-      GAM(JT)=GAM(3) 
-      IF(IN(3).NE.IN(3*JT+3)) THEN 
-        DO 920 J=1,4 
-        P(IN(3*JT+3),J)=P(IN(3),J) 
-        P(IN(3*JT+3)+1,J)=P(IN(3)+1,J) 
-  920   CONTINUE 
-      ENDIF 
-      DO 930 JQ=1,2 
-      IN(3*JT+JQ)=IN(JQ) 
-      P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4) 
-      P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4) 
-  930 CONTINUE 
-      GOTO 780 
-C...Final hadron: side, flavour, hadron, mass. 
-  940 I=I+1 
-      K(I,1)=1 
-      K(I,3)=IE(JR) 
-      K(I,4)=0 
-      K(I,5)=0 
-      CALL LUKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2)) 
-      IF(K(I,2).EQ.0) GOTO 640 
-      P(I,5)=ULMASS(K(I,2)) 
-      PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
-C...Final two hadrons: find common setup of four-vectors. 
-      JQ=1 
-      IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.P(IN(7),3)* 
-     &P(IN(8),3)*FOUR(IN(7),IN(8))) JQ=2 
-      DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2)) 
-      DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12 
-      DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12 
-      IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN 
-        PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ) 
-        PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ) 
-        PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS* 
-     &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2 
-      ENDIF 
-C...Solve kinematics for final two hadrons, if possible. 
-      WREM2=WREM2+(PX(1)+PX(2))**2+(PY(1)+PY(2))**2 
-      FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2) 
-      IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1.) GOTO 200 
-      IF(FD.GE.1.) GOTO 640 
-      FA=WREM2+PR(JT)-PR(JR) 
-      IF(MSTJ(11).NE.2) PREV=0.5*EXP(MAX(-50.,LOG(FD)*PARJ(38)* 
-     &(PR(1)+PR(2))**2)) 
-      IF(MSTJ(11).EQ.2) PREV=0.5*FD**PARJ(39) 
-      FB=SIGN(SQRT(MAX(0.,FA**2-4.*WREM2*PR(JT))),JS*(RLU(0)-PREV)) 
-      KFL1A=IABS(KFL(1)) 
-      KFL2A=IABS(KFL(2)) 
-      IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10), 
-     &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0.,FA**2- 
-     &4.*WREM2*PR(JT))),FLOAT(JS)) 
-      DO 950 J=1,4 
-      P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))* 
-     &P(IN(3*JQ+3)+1,J)+0.5*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+ 
-     &DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2 
-      P(I,J)=P(N+NRS,J)-P(I-1,J) 
-  950 CONTINUE 
-      IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 640 
-C...Mark jets as fragmented and give daughter pointers. 
-      N=I-NRS+1 
-      DO 960 I=NSAV+1,NSAV+NP 
-      IM=K(I,3) 
-      K(IM,1)=K(IM,1)+10 
-      IF(MSTU(16).NE.2) THEN 
-        K(IM,4)=NSAV+1 
-        K(IM,5)=NSAV+1 
-      ELSE 
-        K(IM,4)=NSAV+2 
-        K(IM,5)=N 
-      ENDIF 
-  960 CONTINUE 
-C...Document string system. Move up particles. 
-      NSAV=NSAV+1 
-      K(NSAV,1)=11 
-      K(NSAV,2)=92 
-      K(NSAV,3)=IP 
-      K(NSAV,4)=NSAV+1 
-      K(NSAV,5)=N 
-      DO 970 J=1,4 
-      P(NSAV,J)=DPS(J) 
-      V(NSAV,J)=V(IP,J) 
-  970 CONTINUE 
-      P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2)) 
-      V(NSAV,5)=0. 
-      DO 990 I=NSAV+1,N 
-      DO 980 J=1,5 
-      K(I,J)=K(I+NRS-1,J) 
-      P(I,J)=P(I+NRS-1,J) 
-      V(I,J)=0. 
-  980 CONTINUE 
-  990 CONTINUE 
-      MSTU91=MSTU(90) 
-      DO 1000 IZ=MSTU90+1,MSTU91 
-      MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N 
-      PARU9T(IZ)=PARU(90+IZ) 
- 1000 CONTINUE 
-      MSTU(90)=MSTU90 
-C...Order particles in rank along the chain. Update mother pointer. 
-      DO 1020 I=NSAV+1,N 
-      DO 1010 J=1,5 
-      K(I-NSAV+N,J)=K(I,J) 
-      P(I-NSAV+N,J)=P(I,J) 
- 1010 CONTINUE 
- 1020 CONTINUE 
-      I1=NSAV 
-      DO 1050 I=N+1,2*N-NSAV 
-      IF(K(I,3).NE.IE(1)) GOTO 1050 
-      I1=I1+1 
-      DO 1030 J=1,5 
-      K(I1,J)=K(I,J) 
-      P(I1,J)=P(I,J) 
- 1030 CONTINUE 
-      IF(MSTU(16).NE.2) K(I1,3)=NSAV 
-      DO 1040 IZ=MSTU90+1,MSTU91 
-      IF(MSTU9T(IZ).EQ.I) THEN 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I1 
-        PARU(90+MSTU(90))=PARU9T(IZ) 
-      ENDIF 
- 1040 CONTINUE 
- 1050 CONTINUE 
-      DO 1080 I=2*N-NSAV,N+1,-1 
-      IF(K(I,3).EQ.IE(1)) GOTO 1080 
-      I1=I1+1 
-      DO 1060 J=1,5 
-      K(I1,J)=K(I,J) 
-      P(I1,J)=P(I,J) 
- 1060 CONTINUE 
-      IF(MSTU(16).NE.2) K(I1,3)=NSAV 
-      DO 1070 IZ=MSTU90+1,MSTU91 
-      IF(MSTU9T(IZ).EQ.I) THEN 
-        MSTU(90)=MSTU(90)+1 
-        MSTU(90+MSTU(90))=I1 
-        PARU(90+MSTU(90))=PARU9T(IZ) 
-      ENDIF 
- 1070 CONTINUE 
- 1080 CONTINUE 
-C...Boost back particle system. Set production vertices. 
-      IF(MBST.EQ.0) THEN 
-        MSTU(33)=1 
-        CALL LUDBRB(NSAV+1,N,0.,0.,DPS(1)/DPS(4),DPS(2)/DPS(4), 
-     &  DPS(3)/DPS(4)) 
-      ELSE 
-        DO 1090 I=NSAV+1,N 
-        HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2 
-        IF(P(I,3).GT.0.) THEN 
-          HHPEZ=(P(I,4)+P(I,3))*HHBZ 
-          P(I,3)=0.5*(HHPEZ-HHPMT/HHPEZ) 
-          P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
-        ELSE 
-          HHPEZ=(P(I,4)-P(I,3))/HHBZ 
-          P(I,3)=-0.5*(HHPEZ-HHPMT/HHPEZ) 
-          P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
-        ENDIF 
- 1090   CONTINUE 
-      ENDIF 
-      DO 1110 I=NSAV+1,N 
-      DO 1100 J=1,4 
-      V(I,J)=V(IP,J) 
- 1100 CONTINUE 
- 1110 CONTINUE 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lutabu.F b/PYTHIA/jetset/lutabu.F
deleted file mode 100644 (file)
index b65aefc..0000000
+++ /dev/null
@@ -1,740 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUTABU(MTABU) 
-C...Purpose: to evaluate various properties of an event, with 
-C...statistics accumulated during the course of the run and 
-C...printed at the end. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
-      DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4), 
-     &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4), 
-     &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25), 
-     &KFDM(8),KFDC(200,0:8),NPDC(200) 
-      SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS, 
-     &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA, 
-     &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC 
-      CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12 
-      DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/, 
-     &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0./,FM2FM/120*0./, 
-     &NEVEE/0/,FE1EC/50*0./,FE2EC/50*0./,FE1EA/25*0./,FE2EA/25*0./, 
-     &NEVDC/0/,NKFDC/0/,NREDC/0/ 
-C...Reset statistics on initial parton state. 
-      IF(MTABU.EQ.10) THEN 
-        NEVIS=0 
-        NKFIS=0 
-C...Identify and order flavour content of initial state. 
-      ELSEIF(MTABU.EQ.11) THEN 
-        NEVIS=NEVIS+1 
-        KFM1=2*IABS(MSTU(161)) 
-        IF(MSTU(161).GT.0) KFM1=KFM1-1 
-        KFM2=2*IABS(MSTU(162)) 
-        IF(MSTU(162).GT.0) KFM2=KFM2-1 
-        KFMN=MIN(KFM1,KFM2) 
-        KFMX=MAX(KFM1,KFM2) 
-        DO 100 I=1,NKFIS 
-        IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN 
-          IKFIS=-I 
-          GOTO 110 
-        ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND. 
-     &  KFMX.LT.KFIS(I,2))) THEN 
-          IKFIS=I 
-          GOTO 110 
-        ENDIF 
-  100   CONTINUE 
-        IKFIS=NKFIS+1 
-  110   IF(IKFIS.LT.0) THEN 
-          IKFIS=-IKFIS 
-        ELSE 
-          IF(NKFIS.GE.100) RETURN 
-          DO 130 I=NKFIS,IKFIS,-1 
-          KFIS(I+1,1)=KFIS(I,1) 
-          KFIS(I+1,2)=KFIS(I,2) 
-          DO 120 J=0,10 
-          NPIS(I+1,J)=NPIS(I,J) 
-  120     CONTINUE 
-  130   CONTINUE 
-          NKFIS=NKFIS+1 
-          KFIS(IKFIS,1)=KFMN 
-          KFIS(IKFIS,2)=KFMX 
-          DO 140 J=0,10 
-          NPIS(IKFIS,J)=0 
-  140     CONTINUE 
-        ENDIF 
-        NPIS(IKFIS,0)=NPIS(IKFIS,0)+1 
-C...Count number of partons in initial state. 
-        NP=0 
-        DO 160 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN 
-        ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN 
-        ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0) 
-     &  THEN 
-        ELSE 
-          IM=I 
-  150     IM=K(IM,3) 
-          IF(IM.LE.0.OR.IM.GT.N) THEN 
-            NP=NP+1 
-          ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN 
-            NP=NP+1 
-          ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN 
-          ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10).NE.0) 
-     &    THEN 
-          ELSE 
-            GOTO 150 
-          ENDIF 
-        ENDIF 
-  160   CONTINUE 
-        NPCO=MAX(NP,1) 
-        IF(NP.GE.6) NPCO=6 
-        IF(NP.GE.8) NPCO=7 
-        IF(NP.GE.11) NPCO=8 
-        IF(NP.GE.16) NPCO=9 
-        IF(NP.GE.26) NPCO=10 
-        NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1 
-        MSTU(62)=NP 
-C...Write statistics on initial parton state. 
-      ELSEIF(MTABU.EQ.12) THEN 
-        FAC=1./MAX(1,NEVIS) 
-        WRITE(MSTU(11),5000) NEVIS 
-        DO 170 I=1,NKFIS 
-        KFMN=KFIS(I,1) 
-        IF(KFMN.EQ.0) KFMN=KFIS(I,2) 
-        KFM1=(KFMN+1)/2 
-        IF(2*KFM1.EQ.KFMN) KFM1=-KFM1 
-        CALL LUNAME(KFM1,CHAU) 
-        CHIS(1)=CHAU(1:12) 
-        IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?' 
-        KFMX=KFIS(I,2) 
-        IF(KFIS(I,1).EQ.0) KFMX=0 
-        KFM2=(KFMX+1)/2 
-        IF(2*KFM2.EQ.KFMX) KFM2=-KFM2 
-        CALL LUNAME(KFM2,CHAU) 
-        CHIS(2)=CHAU(1:12) 
-        IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?' 
-        WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0), 
-     &  (NPIS(I,J)/FLOAT(NPIS(I,0)),J=1,10) 
-  170   CONTINUE 
-C...Copy statistics on initial parton state into /LUJETS/. 
-      ELSEIF(MTABU.EQ.13) THEN 
-        FAC=1./MAX(1,NEVIS) 
-        DO 190 I=1,NKFIS 
-        KFMN=KFIS(I,1) 
-        IF(KFMN.EQ.0) KFMN=KFIS(I,2) 
-        KFM1=(KFMN+1)/2 
-        IF(2*KFM1.EQ.KFMN) KFM1=-KFM1 
-        KFMX=KFIS(I,2) 
-        IF(KFIS(I,1).EQ.0) KFMX=0 
-        KFM2=(KFMX+1)/2 
-        IF(2*KFM2.EQ.KFMX) KFM2=-KFM2 
-        K(I,1)=32 
-        K(I,2)=99 
-        K(I,3)=KFM1 
-        K(I,4)=KFM2 
-        K(I,5)=NPIS(I,0) 
-        DO 180 J=1,5 
-        P(I,J)=FAC*NPIS(I,J) 
-        V(I,J)=FAC*NPIS(I,J+5) 
-  180   CONTINUE 
-  190   CONTINUE 
-        N=NKFIS 
-        DO 200 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  200   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVIS 
-        MSTU(3)=1 
-C...Reset statistics on number of particles/partons. 
-      ELSEIF(MTABU.EQ.20) THEN 
-        NEVFS=0 
-        NPRFS=0 
-        NFIFS=0 
-        NCHFS=0 
-        NKFFS=0 
-C...Identify whether particle/parton is primary or not. 
-      ELSEIF(MTABU.EQ.21) THEN 
-        NEVFS=NEVFS+1 
-        MSTU(62)=0 
-        DO 260 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260 
-        MSTU(62)=MSTU(62)+1 
-        KC=LUCOMP(K(I,2)) 
-        MPRI=0 
-        IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN 
-          MPRI=1 
-        ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN 
-          MPRI=1 
-        ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN 
-          MPRI=1 
-        ELSEIF(KC.EQ.0) THEN 
-        ELSEIF(K(K(I,3),1).EQ.13) THEN 
-          IM=K(K(I,3),3) 
-          IF(IM.LE.0.OR.IM.GT.N) THEN 
-            MPRI=1 
-          ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN 
-            MPRI=1 
-          ENDIF 
-        ELSEIF(KCHG(KC,2).EQ.0) THEN 
-          KCM=LUCOMP(K(K(I,3),2)) 
-          IF(KCM.NE.0) THEN 
-            IF(KCHG(KCM,2).NE.0) MPRI=1 
-          ENDIF 
-        ENDIF 
-        IF(KC.NE.0.AND.MPRI.EQ.1) THEN 
-          IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1 
-        ENDIF 
-        IF(K(I,1).LE.10) THEN 
-          NFIFS=NFIFS+1 
-          IF(LUCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1 
-        ENDIF 
-C...Fill statistics on number of particles/partons in event. 
-        KFA=IABS(K(I,2)) 
-        KFS=3-ISIGN(1,K(I,2))-MPRI 
-        DO 210 IP=1,NKFFS 
-        IF(KFA.EQ.KFFS(IP)) THEN 
-          IKFFS=-IP 
-          GOTO 220 
-        ELSEIF(KFA.LT.KFFS(IP)) THEN 
-          IKFFS=IP 
-          GOTO 220 
-        ENDIF 
-  210   CONTINUE 
-        IKFFS=NKFFS+1 
-  220   IF(IKFFS.LT.0) THEN 
-          IKFFS=-IKFFS 
-        ELSE 
-          IF(NKFFS.GE.400) RETURN 
-          DO 240 IP=NKFFS,IKFFS,-1 
-          KFFS(IP+1)=KFFS(IP) 
-          DO 230 J=1,4 
-          NPFS(IP+1,J)=NPFS(IP,J) 
-  230     CONTINUE 
-  240   CONTINUE 
-          NKFFS=NKFFS+1 
-          KFFS(IKFFS)=KFA 
-          DO 250 J=1,4 
-          NPFS(IKFFS,J)=0 
-  250     CONTINUE 
-        ENDIF 
-        NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1 
-  260   CONTINUE 
-C...Write statistics on particle/parton composition of events. 
-      ELSEIF(MTABU.EQ.22) THEN 
-        FAC=1./MAX(1,NEVFS) 
-        WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS 
-        DO 270 I=1,NKFFS 
-        CALL LUNAME(KFFS(I),CHAU) 
-        KC=LUCOMP(KFFS(I)) 
-        MDCYF=0 
-        IF(KC.NE.0) MDCYF=MDCY(KC,1) 
-        WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4), 
-     &  FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)) 
-  270   CONTINUE 
-C...Copy particle/parton composition information into /LUJETS/. 
-      ELSEIF(MTABU.EQ.23) THEN 
-        FAC=1./MAX(1,NEVFS) 
-        DO 290 I=1,NKFFS 
-        K(I,1)=32 
-        K(I,2)=99 
-        K(I,3)=KFFS(I) 
-        K(I,4)=0 
-        K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4) 
-        DO 280 J=1,4 
-        P(I,J)=FAC*NPFS(I,J) 
-        V(I,J)=0. 
-  280   CONTINUE 
-        P(I,5)=FAC*K(I,5) 
-        V(I,5)=0. 
-  290   CONTINUE 
-        N=NKFFS 
-        DO 300 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  300   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVFS 
-        P(N+1,1)=FAC*NPRFS 
-        P(N+1,2)=FAC*NFIFS 
-        P(N+1,3)=FAC*NCHFS 
-        MSTU(3)=1 
-C...Reset factorial moments statistics. 
-      ELSEIF(MTABU.EQ.30) THEN 
-        NEVFM=0 
-        NMUFM=0 
-        DO 330 IM=1,3 
-        DO 320 IB=1,10 
-        DO 310 IP=1,4 
-        FM1FM(IM,IB,IP)=0. 
-        FM2FM(IM,IB,IP)=0. 
-  310   CONTINUE 
-  320   CONTINUE 
-  330   CONTINUE 
-C...Find particles to include, with (pion,pseudo)rapidity and azimuth. 
-      ELSEIF(MTABU.EQ.31) THEN 
-        NEVFM=NEVFM+1 
-        NLOW=N+MSTU(3) 
-        NUPP=NLOW 
-        DO 410 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410 
-        IF(MSTU(41).GE.2) THEN 
-          KC=LUCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &    KC.EQ.18) GOTO 410 
-          IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &    GOTO 410 
-        ENDIF 
-        PMR=0. 
-        IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=ULMASS(211) 
-        IF(MSTU(42).GE.2) PMR=P(I,5) 
-        PR=MAX(1E-20,PMR**2+P(I,1)**2+P(I,2)**2) 
-        YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR), 
-     &  1E20)),P(I,3)) 
-        IF(ABS(YETA).GT.PARU(57)) GOTO 410 
-        PHI=ULANGL(P(I,1),P(I,2)) 
-        IYETA=512.*(YETA+PARU(57))/(2.*PARU(57)) 
-        IYETA=MAX(0,MIN(511,IYETA)) 
-        IPHI=512.*(PHI+PARU(1))/PARU(2) 
-        IPHI=MAX(0,MIN(511,IPHI)) 
-        IYEP=0 
-        DO 340 IB=0,9 
-        IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2)) 
-  340   CONTINUE 
-C...Order particles in (pseudo)rapidity and/or azimuth. 
-        IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN 
-          CALL LUERRM(11,'(LUTABU:) no more memory left in LUJETS') 
-          RETURN 
-        ENDIF 
-        NUPP=NUPP+1 
-        IF(NUPP.EQ.NLOW+1) THEN 
-          K(NUPP,1)=IYETA 
-          K(NUPP,2)=IPHI 
-          K(NUPP,3)=IYEP 
-        ELSE 
-          DO 350 I1=NUPP-1,NLOW+1,-1 
-          IF(IYETA.GE.K(I1,1)) GOTO 360 
-          K(I1+1,1)=K(I1,1) 
-  350     CONTINUE 
-  360     K(I1+1,1)=IYETA 
-          DO 370 I1=NUPP-1,NLOW+1,-1 
-          IF(IPHI.GE.K(I1,2)) GOTO 380 
-          K(I1+1,2)=K(I1,2) 
-  370     CONTINUE 
-  380     K(I1+1,2)=IPHI 
-          DO 390 I1=NUPP-1,NLOW+1,-1 
-          IF(IYEP.GE.K(I1,3)) GOTO 400 
-          K(I1+1,3)=K(I1,3) 
-  390     CONTINUE 
-  400     K(I1+1,3)=IYEP 
-        ENDIF 
-  410   CONTINUE 
-        K(NUPP+1,1)=2**10 
-        K(NUPP+1,2)=2**10 
-        K(NUPP+1,3)=4**10 
-C...Calculate sum of factorial moments in event. 
-        DO 480 IM=1,3 
-        DO 430 IB=1,10 
-        DO 420 IP=1,4 
-        FEVFM(IB,IP)=0. 
-  420   CONTINUE 
-  430   CONTINUE 
-        DO 450 IB=1,10 
-        IF(IM.LE.2) IBIN=2**(10-IB) 
-        IF(IM.EQ.3) IBIN=4**(10-IB) 
-        IAGR=K(NLOW+1,IM)/IBIN 
-        NAGR=1 
-        DO 440 I=NLOW+2,NUPP+1 
-        ICUT=K(I,IM)/IBIN 
-        IF(ICUT.EQ.IAGR) THEN 
-          NAGR=NAGR+1 
-        ELSE 
-          IF(NAGR.EQ.1) THEN 
-          ELSEIF(NAGR.EQ.2) THEN 
-            FEVFM(IB,1)=FEVFM(IB,1)+2. 
-          ELSEIF(NAGR.EQ.3) THEN 
-            FEVFM(IB,1)=FEVFM(IB,1)+6. 
-            FEVFM(IB,2)=FEVFM(IB,2)+6. 
-          ELSEIF(NAGR.EQ.4) THEN 
-            FEVFM(IB,1)=FEVFM(IB,1)+12. 
-            FEVFM(IB,2)=FEVFM(IB,2)+24. 
-            FEVFM(IB,3)=FEVFM(IB,3)+24. 
-          ELSE 
-            FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1.) 
-            FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1.)*(NAGR-2.) 
-            FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1.)*(NAGR-2.)*(NAGR-3.) 
-            FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1.)*(NAGR-2.)*(NAGR-3.)* 
-     &      (NAGR-4.) 
-          ENDIF 
-          IAGR=ICUT 
-          NAGR=1 
-        ENDIF 
-  440   CONTINUE 
-  450   CONTINUE 
-C...Add results to total statistics. 
-        DO 470 IB=10,1,-1 
-        DO 460 IP=1,4 
-        IF(FEVFM(1,IP).LT.0.5) THEN 
-          FEVFM(IB,IP)=0. 
-        ELSEIF(IM.LE.2) THEN 
-          FEVFM(IB,IP)=2.**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP) 
-        ELSE 
-          FEVFM(IB,IP)=4.**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP) 
-        ENDIF 
-        FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP) 
-        FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2 
-  460   CONTINUE 
-  470   CONTINUE 
-  480   CONTINUE 
-        NMUFM=NMUFM+(NUPP-NLOW) 
-        MSTU(62)=NUPP-NLOW 
-C...Write accumulated statistics on factorial moments. 
-      ELSEIF(MTABU.EQ.32) THEN 
-        FAC=1./MAX(1,NEVFM) 
-        IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta' 
-        IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi' 
-        IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  ' 
-        DO 510 IM=1,3 
-        WRITE(MSTU(11),5500) 
-        DO 500 IB=1,10 
-        BYETA=2.*PARU(57) 
-        IF(IM.NE.2) BYETA=BYETA/2**(IB-1) 
-        BPHI=PARU(2) 
-        IF(IM.NE.1) BPHI=BPHI/2**(IB-1) 
-        IF(IM.LE.2) BNAVE=FAC*NMUFM/FLOAT(2**(IB-1)) 
-        IF(IM.EQ.3) BNAVE=FAC*NMUFM/FLOAT(4**(IB-1)) 
-        DO 490 IP=1,4 
-        FMOMA(IP)=FAC*FM1FM(IM,IB,IP) 
-        FMOMS(IP)=SQRT(MAX(0.,FAC*(FAC*FM2FM(IM,IB,IP)-FMOMA(IP)**2))) 
-  490   CONTINUE 
-        WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP), 
-     &  IP=1,4) 
-  500   CONTINUE 
-  510   CONTINUE 
-C...Copy statistics on factorial moments into /LUJETS/. 
-      ELSEIF(MTABU.EQ.33) THEN 
-        FAC=1./MAX(1,NEVFM) 
-        DO 540 IM=1,3 
-        DO 530 IB=1,10 
-        I=10*(IM-1)+IB 
-        K(I,1)=32 
-        K(I,2)=99 
-        K(I,3)=1 
-        IF(IM.NE.2) K(I,3)=2**(IB-1) 
-        K(I,4)=1 
-        IF(IM.NE.1) K(I,4)=2**(IB-1) 
-        K(I,5)=0 
-        P(I,1)=2.*PARU(57)/K(I,3) 
-        V(I,1)=PARU(2)/K(I,4) 
-        DO 520 IP=1,4 
-        P(I,IP+1)=FAC*FM1FM(IM,IB,IP) 
-        V(I,IP+1)=SQRT(MAX(0.,FAC*(FAC*FM2FM(IM,IB,IP)-P(I,IP+1)**2))) 
-  520   CONTINUE 
-  530   CONTINUE 
-  540   CONTINUE 
-        N=30 
-        DO 550 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  550   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVFM 
-        MSTU(3)=1 
-C...Reset statistics on Energy-Energy Correlation. 
-      ELSEIF(MTABU.EQ.40) THEN 
-        NEVEE=0 
-        DO 560 J=1,25 
-        FE1EC(J)=0. 
-        FE2EC(J)=0. 
-        FE1EC(51-J)=0. 
-        FE2EC(51-J)=0. 
-        FE1EA(J)=0. 
-        FE2EA(J)=0. 
-  560   CONTINUE 
-C...Find particles to include, with proper assumed mass. 
-      ELSEIF(MTABU.EQ.41) THEN 
-        NEVEE=NEVEE+1 
-        NLOW=N+MSTU(3) 
-        NUPP=NLOW 
-        ECM=0. 
-        DO 570 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570 
-        IF(MSTU(41).GE.2) THEN 
-          KC=LUCOMP(K(I,2)) 
-          IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &    KC.EQ.18) GOTO 570 
-          IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &    GOTO 570 
-        ENDIF 
-        PMR=0. 
-        IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=ULMASS(211) 
-        IF(MSTU(42).GE.2) PMR=P(I,5) 
-        IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN 
-          CALL LUERRM(11,'(LUTABU:) no more memory left in LUJETS') 
-          RETURN 
-        ENDIF 
-        NUPP=NUPP+1 
-        P(NUPP,1)=P(I,1) 
-        P(NUPP,2)=P(I,2) 
-        P(NUPP,3)=P(I,3) 
-        P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-        P(NUPP,5)=MAX(1E-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)) 
-        ECM=ECM+P(NUPP,4) 
-  570   CONTINUE 
-        IF(NUPP.EQ.NLOW) RETURN 
-C...Analyze Energy-Energy Correlation in event. 
-        FAC=(2./ECM**2)*50./PARU(1) 
-        DO 580 J=1,50 
-        FEVEE(J)=0. 
-  580   CONTINUE 
-        DO 600 I1=NLOW+2,NUPP 
-        DO 590 I2=NLOW+1,I1-1 
-        CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/ 
-     &  (P(I1,5)*P(I2,5)) 
-        THE=ACOS(MAX(-1.,MIN(1.,CTHE))) 
-        ITHE=MAX(1,MIN(50,1+INT(50.*THE/PARU(1)))) 
-        FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4) 
-  590   CONTINUE 
-  600   CONTINUE 
-        DO 610 J=1,25 
-        FE1EC(J)=FE1EC(J)+FEVEE(J) 
-        FE2EC(J)=FE2EC(J)+FEVEE(J)**2 
-        FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J) 
-        FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2 
-        FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J)) 
-        FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2 
-  610   CONTINUE 
-        MSTU(62)=NUPP-NLOW 
-C...Write statistics on Energy-Energy Correlation. 
-      ELSEIF(MTABU.EQ.42) THEN 
-        FAC=1./MAX(1,NEVEE) 
-        WRITE(MSTU(11),5700) NEVEE 
-        DO 620 J=1,25 
-        FEEC1=FAC*FE1EC(J) 
-        FEES1=SQRT(MAX(0.,FAC*(FAC*FE2EC(J)-FEEC1**2))) 
-        FEEC2=FAC*FE1EC(51-J) 
-        FEES2=SQRT(MAX(0.,FAC*(FAC*FE2EC(51-J)-FEEC2**2))) 
-        FEECA=FAC*FE1EA(J) 
-        FEESA=SQRT(MAX(0.,FAC*(FAC*FE2EA(J)-FEECA**2))) 
-        WRITE(MSTU(11),5800) 3.6*(J-1),3.6*J,FEEC1,FEES1,FEEC2,FEES2, 
-     &  FEECA,FEESA 
-  620   CONTINUE 
-C...Copy statistics on Energy-Energy Correlation into /LUJETS/. 
-      ELSEIF(MTABU.EQ.43) THEN 
-        FAC=1./MAX(1,NEVEE) 
-        DO 630 I=1,25 
-        K(I,1)=32 
-        K(I,2)=99 
-        K(I,3)=0 
-        K(I,4)=0 
-        K(I,5)=0 
-        P(I,1)=FAC*FE1EC(I) 
-        V(I,1)=SQRT(MAX(0.,FAC*(FAC*FE2EC(I)-P(I,1)**2))) 
-        P(I,2)=FAC*FE1EC(51-I) 
-        V(I,2)=SQRT(MAX(0.,FAC*(FAC*FE2EC(51-I)-P(I,2)**2))) 
-        P(I,3)=FAC*FE1EA(I) 
-        V(I,3)=SQRT(MAX(0.,FAC*(FAC*FE2EA(I)-P(I,3)**2))) 
-        P(I,4)=PARU(1)*(I-1)/50. 
-        P(I,5)=PARU(1)*I/50. 
-        V(I,4)=3.6*(I-1) 
-        V(I,5)=3.6*I 
-  630   CONTINUE 
-        N=25 
-        DO 640 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  640   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVEE 
-        MSTU(3)=1 
-C...Reset statistics on decay channels. 
-      ELSEIF(MTABU.EQ.50) THEN 
-        NEVDC=0 
-        NKFDC=0 
-        NREDC=0 
-C...Identify and order flavour content of final state. 
-      ELSEIF(MTABU.EQ.51) THEN 
-        NEVDC=NEVDC+1 
-        NDS=0 
-        DO 670 I=1,N 
-        IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670 
-        NDS=NDS+1 
-        IF(NDS.GT.8) THEN 
-          NREDC=NREDC+1 
-          RETURN 
-        ENDIF 
-        KFM=2*IABS(K(I,2)) 
-        IF(K(I,2).LT.0) KFM=KFM-1 
-        DO 650 IDS=NDS-1,1,-1 
-        IIN=IDS+1 
-        IF(KFM.LT.KFDM(IDS)) GOTO 660 
-        KFDM(IDS+1)=KFDM(IDS) 
-  650   CONTINUE 
-        IIN=1 
-  660   KFDM(IIN)=KFM 
-  670   CONTINUE 
-C...Find whether old or new final state. 
-        DO 690 IDC=1,NKFDC 
-        IF(NDS.LT.KFDC(IDC,0)) THEN 
-          IKFDC=IDC 
-          GOTO 700 
-        ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN 
-          DO 680 I=1,NDS 
-          IF(KFDM(I).LT.KFDC(IDC,I)) THEN 
-            IKFDC=IDC 
-            GOTO 700 
-          ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN 
-            GOTO 690 
-          ENDIF 
-  680     CONTINUE 
-          IKFDC=-IDC 
-          GOTO 700 
-        ENDIF 
-  690   CONTINUE 
-        IKFDC=NKFDC+1 
-  700   IF(IKFDC.LT.0) THEN 
-          IKFDC=-IKFDC 
-        ELSEIF(NKFDC.GE.200) THEN 
-          NREDC=NREDC+1 
-          RETURN 
-        ELSE 
-          DO 720 IDC=NKFDC,IKFDC,-1 
-          NPDC(IDC+1)=NPDC(IDC) 
-          DO 710 I=0,8 
-          KFDC(IDC+1,I)=KFDC(IDC,I) 
-  710     CONTINUE 
-  720     CONTINUE 
-          NKFDC=NKFDC+1 
-          KFDC(IKFDC,0)=NDS 
-          DO 730 I=1,NDS 
-          KFDC(IKFDC,I)=KFDM(I) 
-  730     CONTINUE 
-          NPDC(IKFDC)=0 
-        ENDIF 
-        NPDC(IKFDC)=NPDC(IKFDC)+1 
-C...Write statistics on decay channels. 
-      ELSEIF(MTABU.EQ.52) THEN 
-        FAC=1./MAX(1,NEVDC) 
-        WRITE(MSTU(11),5900) NEVDC 
-        DO 750 IDC=1,NKFDC 
-        DO 740 I=1,KFDC(IDC,0) 
-        KFM=KFDC(IDC,I) 
-        KF=(KFM+1)/2 
-        IF(2*KF.NE.KFM) KF=-KF 
-        CALL LUNAME(KF,CHAU) 
-        CHDC(I)=CHAU(1:12) 
-        IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?' 
-  740   CONTINUE 
-        WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0)) 
-  750   CONTINUE 
-        IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC 
-C...Copy statistics on decay channels into /LUJETS/. 
-      ELSEIF(MTABU.EQ.53) THEN 
-        FAC=1./MAX(1,NEVDC) 
-        DO 780 IDC=1,NKFDC 
-        K(IDC,1)=32 
-        K(IDC,2)=99 
-        K(IDC,3)=0 
-        K(IDC,4)=0 
-        K(IDC,5)=KFDC(IDC,0) 
-        DO 760 J=1,5 
-        P(IDC,J)=0. 
-        V(IDC,J)=0. 
-  760   CONTINUE 
-        DO 770 I=1,KFDC(IDC,0) 
-        KFM=KFDC(IDC,I) 
-        KF=(KFM+1)/2 
-        IF(2*KF.NE.KFM) KF=-KF 
-        IF(I.LE.5) P(IDC,I)=KF 
-        IF(I.GE.6) V(IDC,I-5)=KF 
-  770   CONTINUE 
-        V(IDC,5)=FAC*NPDC(IDC) 
-  780   CONTINUE 
-        N=NKFDC 
-        DO 790 J=1,5 
-        K(N+1,J)=0 
-        P(N+1,J)=0. 
-        V(N+1,J)=0. 
-  790   CONTINUE 
-        K(N+1,1)=32 
-        K(N+1,2)=99 
-        K(N+1,5)=NEVDC 
-        V(N+1,5)=FAC*NREDC 
-        MSTU(3)=1 
-      ENDIF 
-C...Format statements for output on unit MSTU(11) (default 6). 
- 5000 FORMAT(///20X,'Event statistics - initial state'/ 
-     &20X,'based on an analysis of ',I6,' events'// 
-     &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ', 
-     &'according to fragmenting system multiplicity'/ 
-     &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5', 
-     &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/) 
- 5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4) 
- 5200 FORMAT(///20X,'Event statistics - final state'/ 
-     &20X,'based on an analysis of ',I7,' events'// 
-     &5X,'Mean primary multiplicity =',F10.4/ 
-     &5X,'Mean final   multiplicity =',F10.4/ 
-     &5X,'Mean charged multiplicity =',F10.4// 
-     &5X,'Number of particles produced per event (directly and via ', 
-     &'decays/branchings)'/ 
-     &5X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles', 
-     &8X,'Total'/35X,'prim        seco        prim        seco'/) 
- 5300 FORMAT(1X,I6,4X,A16,I2,5(1X,F11.6)) 
- 5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/ 
-     &20X,'based on an analysis of ',I6,' events'// 
-     &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>', 
-     &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  ')) 
- 5500 FORMAT(10X) 
- 5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4)) 
- 5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/ 
-     &20X,'based on an analysis of ',I6,' events'// 
-     &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X, 
-     &'EECA(theta)'/2X,'in degrees ',3('      value    error')/) 
- 5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4)) 
- 5900 FORMAT(///20X,'Decay channel analysis - final state'/ 
-     &20X,'based on an analysis of ',I6,' events'// 
-     &2X,'Probability',10X,'Complete final state'/) 
- 6000 FORMAT(2X,F9.5,5X,8(A12,1X)) 
- 6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ', 
-     &'or table overflow)') 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lutaud.F b/PYTHIA/jetset/lutaud.F
deleted file mode 100644 (file)
index 0d9dc8b..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUTAUD(ITAU,IORIG,KFORIG,NDECAY) 
-C...Dummy routine, to be replaced by user, to handle the decay of a 
-C...polarized tau lepton. 
-C...Input: 
-C...ITAU is the position where the decaying tau is stored in /LUJETS/. 
-C...IORIG is the position where the mother of the tau is stored; 
-C...     is 0 when the mother is not stored. 
-C...KFORIG is the flavour of the mother of the tau; 
-C...     is 0 when the mother is not known. 
-C...Note that IORIG=0 does not necessarily imply KFORIG=0; 
-C...     e.g. in B hadron semileptonic decays the W  propagator 
-C...     is not explicitly stored but the W code is still unambiguous. 
-C...Output: 
-C...NDECAY is the number of decay products in the current tau decay. 
-C...These decay products should be added to the /LUJETS/ common block, 
-C...in positions N+1 through N+NDECAY. For each product I you must 
-C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2), 
-C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUJETS/,/LUDAT1/ 
-C...Stop program if this routine is ever called. 
-C...You should not copy these lines to your own routine. 
-      NDECAY=ITAU+IORIG+KFORIG      
-      WRITE(MSTU(11),5000) 
-      IF(RLU(0).LT.10.) STOP 
-C...Format for error printout. 
- 5000 FORMAT(1X,'Error: you did not link your LUTAUD routine ', 
-     &'correctly.'/1X,'Dummy routine in JETSET file called instead.'/ 
-     &1X,'Execution stopped!') 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lutest.F b/PYTHIA/jetset/lutest.F
deleted file mode 100644 (file)
index 0c9183c..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUTEST(MTEST) 
-C...Purpose: to provide a simple program (disguised as subroutine) to 
-C...run at installation as a check that the program works as intended. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUJETS/,/LUDAT1/ 
-      DIMENSION PSUM(5),PINI(6),PFIN(6) 
-C...Loop over events to be generated. 
-      IF(MTEST.GE.1) CALL LUTABU(20) 
-      NERR=0 
-      DO 180 IEV=1,600 
-C...Reset parameter values. Switch on some nonstandard features. 
-      MSTJ(1)=1 
-      MSTJ(3)=0 
-      MSTJ(11)=1 
-      MSTJ(42)=2 
-      MSTJ(43)=4 
-      MSTJ(44)=2 
-      PARJ(17)=0.1 
-      PARJ(22)=1.5 
-      PARJ(43)=1. 
-      PARJ(54)=-0.05 
-      MSTJ(101)=5 
-      MSTJ(104)=5 
-      MSTJ(105)=0 
-      MSTJ(107)=1 
-      IF(IEV.EQ.301.OR.IEV.EQ.351.OR.IEV.EQ.401) MSTJ(116)=3 
-C...Ten events each for some single jets configurations. 
-      IF(IEV.LE.50) THEN 
-        ITY=(IEV+9)/10 
-        MSTJ(3)=-1 
-        IF(ITY.EQ.3.OR.ITY.EQ.4) MSTJ(11)=2 
-        IF(ITY.EQ.1) CALL LU1ENT(1,1,15.,0.,0.) 
-        IF(ITY.EQ.2) CALL LU1ENT(1,3101,15.,0.,0.) 
-        IF(ITY.EQ.3) CALL LU1ENT(1,-2203,15.,0.,0.) 
-        IF(ITY.EQ.4) CALL LU1ENT(1,-4,30.,0.,0.) 
-        IF(ITY.EQ.5) CALL LU1ENT(1,21,15.,0.,0.) 
-C...Ten events each for some simple jet systems; string fragmentation. 
-      ELSEIF(IEV.LE.130) THEN 
-        ITY=(IEV-41)/10 
-        IF(ITY.EQ.1) CALL LU2ENT(1,1,-1,40.) 
-        IF(ITY.EQ.2) CALL LU2ENT(1,4,-4,30.) 
-        IF(ITY.EQ.3) CALL LU2ENT(1,2,2103,100.) 
-        IF(ITY.EQ.4) CALL LU2ENT(1,21,21,40.) 
-        IF(ITY.EQ.5) CALL LU3ENT(1,2101,21,-3203,30.,0.6,0.8) 
-        IF(ITY.EQ.6) CALL LU3ENT(1,5,21,-5,40.,0.9,0.8) 
-        IF(ITY.EQ.7) CALL LU3ENT(1,21,21,21,60.,0.7,0.5) 
-        IF(ITY.EQ.8) CALL LU4ENT(1,2,21,21,-2,40.,0.4,0.64,0.6,0.12,0.2) 
-C...Seventy events with independent fragmentation and momentum cons. 
-      ELSEIF(IEV.LE.200) THEN 
-        ITY=1+(IEV-131)/16 
-        MSTJ(2)=1+MOD(IEV-131,4) 
-        MSTJ(3)=1+MOD((IEV-131)/4,4) 
-        IF(ITY.EQ.1) CALL LU2ENT(1,4,-5,40.) 
-        IF(ITY.EQ.2) CALL LU3ENT(1,3,21,-3,40.,0.9,0.4) 
-        IF(ITY.EQ.3) CALL LU4ENT(1,2,21,21,-2,40.,0.4,0.64,0.6,0.12,0.2) 
-        IF(ITY.GE.4) CALL LU4ENT(1,2,-3,3,-2,40.,0.4,0.64,0.6,0.12,0.2) 
-C...A hundred events with random jets (check invariant mass). 
-      ELSEIF(IEV.LE.300) THEN 
-  100   DO 110 J=1,5 
-        PSUM(J)=0. 
-  110   CONTINUE 
-        NJET=2.+6.*RLU(0) 
-        DO 130 I=1,NJET 
-        KFL=21 
-        IF(I.EQ.1) KFL=INT(1.+4.*RLU(0)) 
-        IF(I.EQ.NJET) KFL=-INT(1.+4.*RLU(0)) 
-        EJET=5.+20.*RLU(0) 
-        THETA=ACOS(2.*RLU(0)-1.) 
-        PHI=6.2832*RLU(0) 
-        IF(I.LT.NJET) CALL LU1ENT(-I,KFL,EJET,THETA,PHI) 
-        IF(I.EQ.NJET) CALL LU1ENT(I,KFL,EJET,THETA,PHI) 
-        IF(I.EQ.1.OR.I.EQ.NJET) MSTJ(93)=1 
-        IF(I.EQ.1.OR.I.EQ.NJET) PSUM(5)=PSUM(5)+ULMASS(KFL) 
-        DO 120 J=1,4 
-        PSUM(J)=PSUM(J)+P(I,J) 
-  120   CONTINUE 
-  130   CONTINUE 
-        IF(PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2.LT. 
-     &  (PSUM(5)+PARJ(32))**2) GOTO 100 
-C...Fifty e+e- continuum events with matrix elements. 
-      ELSEIF(IEV.LE.350) THEN 
-        MSTJ(101)=2 
-        CALL LUEEVT(0,40.) 
-C...Fifty e+e- continuum event with varying shower options. 
-      ELSEIF(IEV.LE.400) THEN 
-        MSTJ(42)=1+MOD(IEV,2) 
-        MSTJ(43)=1+MOD(IEV/2,4) 
-        MSTJ(44)=MOD(IEV/8,3) 
-        CALL LUEEVT(0,90.) 
-C...Fifty e+e- continuum events with coherent shower, including top. 
-      ELSEIF(IEV.LE.450) THEN 
-        MSTJ(104)=6 
-        CALL LUEEVT(0,500.) 
-C...Fifty Upsilon decays to ggg or gammagg with coherent shower. 
-      ELSEIF(IEV.LE.500) THEN 
-        CALL LUONIA(5,9.46) 
-C...One decay each for some heavy mesons. 
-      ELSEIF(IEV.LE.560) THEN 
-        ITY=IEV-501 
-        KFLS=2*(ITY/20)+1 
-        KFLB=8-MOD(ITY/5,4) 
-        KFLC=KFLB-MOD(ITY,5) 
-        CALL LU1ENT(1,100*KFLB+10*KFLC+KFLS,0.,0.,0.) 
-C...One decay each for some heavy baryons. 
-      ELSEIF(IEV.LE.600) THEN 
-        ITY=IEV-561 
-        KFLS=2*(ITY/20)+2 
-        KFLA=8-MOD(ITY/5,4) 
-        KFLB=KFLA-MOD(ITY,5) 
-        KFLC=MAX(1,KFLB-1) 
-        CALL LU1ENT(1,1000*KFLA+100*KFLB+10*KFLC+KFLS,0.,0.,0.) 
-      ENDIF 
-C...Generate event. Find total momentum, energy and charge. 
-      DO 140 J=1,4 
-      PINI(J)=PLU(0,J) 
-  140 CONTINUE 
-      PINI(6)=PLU(0,6) 
-      CALL LUEXEC 
-      DO 150 J=1,4 
-      PFIN(J)=PLU(0,J) 
-  150 CONTINUE 
-      PFIN(6)=PLU(0,6) 
-C...Check conservation of energy, momentum and charge; 
-C...usually exact, but only approximate for single jets. 
-      MERR=0 
-      IF(IEV.LE.50) THEN 
-        IF((PFIN(1)-PINI(1))**2+(PFIN(2)-PINI(2))**2.GE.4.) MERR=MERR+1 
-        EPZREM=PINI(4)+PINI(3)-PFIN(4)-PFIN(3) 
-        IF(EPZREM.LT.0..OR.EPZREM.GT.2.*PARJ(31)) MERR=MERR+1 
-        IF(ABS(PFIN(6)-PINI(6)).GT.2.1) MERR=MERR+1 
-      ELSE 
-        DO 160 J=1,4 
-        IF(ABS(PFIN(J)-PINI(J)).GT.0.0001*PINI(4)) MERR=MERR+1 
-  160   CONTINUE 
-        IF(ABS(PFIN(6)-PINI(6)).GT.0.1) MERR=MERR+1 
-      ENDIF 
-      IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6), 
-     &(PFIN(J),J=1,4),PFIN(6) 
-C...Check that all KF codes are known ones, and that partons/particles 
-C...satisfy energy-momentum-mass relation. Store particle statistics. 
-      DO 170 I=1,N 
-      IF(K(I,1).GT.20) GOTO 170 
-      IF(LUCOMP(K(I,2)).EQ.0) THEN 
-        WRITE(MSTU(11),5100) I 
-        MERR=MERR+1 
-      ENDIF 
-      PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2 
-      IF(ABS(PD).GT.MAX(0.1,0.001*P(I,4)**2).OR.P(I,4).LT.0.) THEN 
-        WRITE(MSTU(11),5200) I 
-        MERR=MERR+1 
-      ENDIF 
-  170 CONTINUE 
-      IF(MTEST.GE.1) CALL LUTABU(21) 
-C...List all erroneous events and some normal ones. 
-      IF(MERR.NE.0.OR.MSTU(24).NE.0.OR.MSTU(28).NE.0) THEN 
-        CALL LULIST(2) 
-      ELSEIF(MTEST.GE.1.AND.MOD(IEV-5,100).EQ.0) THEN 
-        CALL LULIST(1) 
-      ENDIF 
-C...Stop execution if too many errors. 
-      IF(MERR.NE.0) NERR=NERR+1 
-      IF(NERR.GE.10) THEN 
-        WRITE(MSTU(11),5300) IEV 
-        STOP 
-      ENDIF 
-  180 CONTINUE 
-C...Summarize result of run. 
-      IF(MTEST.GE.1) CALL LUTABU(22) 
-      IF(NERR.EQ.0) WRITE(MSTU(11),5400) 
-      IF(NERR.GT.0) WRITE(MSTU(11),5500) NERR 
-C...Reset commonblock variables changed during run. 
-      MSTJ(2)=3 
-      PARJ(17)=0. 
-      PARJ(22)=1. 
-      PARJ(43)=0.5 
-      PARJ(54)=0. 
-      MSTJ(105)=1 
-      MSTJ(107)=0 
-C...Format statements for output. 
- 5000 FORMAT(/' Momentum, energy and/or charge were not conserved ', 
-     &'in following event'/' sum of',9X,'px',11X,'py',11X,'pz',11X, 
-     &'E',8X,'charge'/' before',2X,4(1X,F12.5),1X,F8.2/' after',3X, 
-     &4(1X,F12.5),1X,F8.2) 
- 5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code') 
- 5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ', 
-     &'kinematics') 
- 5300 FORMAT(/5X,'Ten errors experienced by event ',I3/ 
-     &5X,'Something is seriously wrong! Execution stopped now!') 
- 5400 FORMAT(//5X,'End result of LUTEST: no errors detected.') 
- 5500 FORMAT(//5X,'End result of LUTEST:',I2,' errors detected.'/ 
-     &5X,'This should not have happened!') 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luthru.F b/PYTHIA/jetset/luthru.F
deleted file mode 100644 (file)
index a891290..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUTHRU(THR,OBL) 
-C...Purpose: to perform thrust analysis to give thrust, oblateness 
-C...and the related event axes. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION TDI(3),TPR(3) 
-C...Take copy of particles that are to be considered in thrust analysis. 
-      NP=0 
-      PS=0. 
-      DO 100 I=1,N 
-      IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100 
-      IF(MSTU(41).GE.2) THEN 
-        KC=LUCOMP(K(I,2)) 
-        IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
-     &  KC.EQ.18) GOTO 100 
-        IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
-     &  GOTO 100 
-      ENDIF 
-      IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN 
-        CALL LUERRM(11,'(LUTHRU:) no more memory left in LUJETS') 
-        THR=-2. 
-        OBL=-2. 
-        RETURN 
-      ENDIF 
-      NP=NP+1 
-      K(N+NP,1)=23 
-      P(N+NP,1)=P(I,1) 
-      P(N+NP,2)=P(I,2) 
-      P(N+NP,3)=P(I,3) 
-      P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
-      P(N+NP,5)=1. 
-      IF(ABS(PARU(42)-1.).GT.0.001) P(N+NP,5)=P(N+NP,4)**(PARU(42)-1.) 
-      PS=PS+P(N+NP,4)*P(N+NP,5) 
-  100 CONTINUE 
-C...Very low multiplicities (0 or 1) not considered. 
-      IF(NP.LE.1) THEN 
-        CALL LUERRM(8,'(LUTHRU:) too few particles for analysis') 
-        THR=-1. 
-        OBL=-1. 
-        RETURN 
-      ENDIF 
-C...Loop over thrust and major. T axis along z direction in latter case. 
-      DO 320 ILD=1,2 
-      IF(ILD.EQ.2) THEN 
-        K(N+NP+1,1)=31 
-        PHI=ULANGL(P(N+NP+1,1),P(N+NP+1,2)) 
-        MSTU(33)=1 
-        CALL LUDBRB(N+1,N+NP+1,0.,-PHI,0D0,0D0,0D0) 
-        THE=ULANGL(P(N+NP+1,3),P(N+NP+1,1)) 
-        CALL LUDBRB(N+1,N+NP+1,-THE,0.,0D0,0D0,0D0) 
-      ENDIF 
-C...Find and order particles with highest p (pT for major). 
-      DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4 
-      P(ILF,4)=0. 
-  110 CONTINUE 
-      DO 160 I=N+1,N+NP 
-      IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2) 
-      DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1 
-      IF(P(I,4).LE.P(ILF,4)) GOTO 140 
-      DO 120 J=1,5 
-      P(ILF+1,J)=P(ILF,J) 
-  120 CONTINUE 
-  130 CONTINUE 
-      ILF=N+NP+3 
-  140 DO 150 J=1,5 
-      P(ILF+1,J)=P(I,J) 
-  150 CONTINUE 
-  160 CONTINUE 
-C...Find and order initial axes with highest thrust (major). 
-      DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15 
-      P(ILG,4)=0. 
-  170 CONTINUE 
-      NC=2**(MIN(MSTU(44),NP)-1) 
-      DO 250 ILC=1,NC 
-      DO 180 J=1,3 
-      TDI(J)=0. 
-  180 CONTINUE 
-      DO 200 ILF=1,MIN(MSTU(44),NP) 
-      SGN=P(N+NP+ILF+3,5) 
-      IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN 
-      DO 190 J=1,4-ILD 
-      TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J) 
-  190 CONTINUE 
-  200 CONTINUE 
-      TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2 
-      DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1 
-      IF(TDS.LE.P(ILG,4)) GOTO 230 
-      DO 210 J=1,4 
-      P(ILG+1,J)=P(ILG,J) 
-  210 CONTINUE 
-  220 CONTINUE 
-      ILG=N+NP+MSTU(44)+4 
-  230 DO 240 J=1,3 
-      P(ILG+1,J)=TDI(J) 
-  240 CONTINUE 
-      P(ILG+1,4)=TDS 
-  250 CONTINUE 
-C...Iterate direction of axis until stable maximum. 
-      P(N+NP+ILD,4)=0. 
-      ILG=0 
-  260 ILG=ILG+1 
-      THP=0. 
-  270 THPS=THP 
-      DO 280 J=1,3 
-      IF(THP.LE.1E-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J) 
-      IF(THP.GT.1E-10) TDI(J)=TPR(J) 
-      TPR(J)=0. 
-  280 CONTINUE 
-      DO 300 I=N+1,N+NP 
-      SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3)) 
-      DO 290 J=1,4-ILD 
-      TPR(J)=TPR(J)+SGN*P(I,J) 
-  290 CONTINUE 
-  300 CONTINUE 
-      THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS 
-      IF(THP.GE.THPS+PARU(48)) GOTO 270 
-C...Save good axis. Try new initial axis until a number of tries agree. 
-      IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260 
-      IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN 
-        IAGR=0 
-        SGN=(-1.)**INT(RLU(0)+0.5) 
-        DO 310 J=1,3 
-        P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP) 
-  310   CONTINUE 
-        P(N+NP+ILD,4)=THP 
-        P(N+NP+ILD,5)=0. 
-      ENDIF 
-      IAGR=IAGR+1 
-      IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260 
-  320 CONTINUE 
-C...Find minor axis and value by orthogonality. 
-      SGN=(-1.)**INT(RLU(0)+0.5) 
-      P(N+NP+3,1)=-SGN*P(N+NP+2,2) 
-      P(N+NP+3,2)=SGN*P(N+NP+2,1) 
-      P(N+NP+3,3)=0. 
-      THP=0. 
-      DO 330 I=N+1,N+NP 
-      THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2)) 
-  330 CONTINUE 
-      P(N+NP+3,4)=THP/PS 
-      P(N+NP+3,5)=0. 
-C...Fill axis information. Rotate back to original coordinate system. 
-      DO 350 ILD=1,3 
-      K(N+ILD,1)=31 
-      K(N+ILD,2)=96 
-      K(N+ILD,3)=ILD 
-      K(N+ILD,4)=0 
-      K(N+ILD,5)=0 
-      DO 340 J=1,5 
-      P(N+ILD,J)=P(N+NP+ILD,J) 
-      V(N+ILD,J)=0. 
-  340 CONTINUE 
-  350 CONTINUE 
-      CALL LUDBRB(N+1,N+3,THE,PHI,0D0,0D0,0D0) 
-C...Calculate thrust and oblateness. Select storing option. 
-      THR=P(N+1,4) 
-      OBL=P(N+2,4)-P(N+3,4) 
-      MSTU(61)=N+1 
-      MSTU(62)=NP 
-      IF(MSTU(43).LE.1) MSTU(3)=3 
-      IF(MSTU(43).GE.2) N=N+3 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luupda.F b/PYTHIA/jetset/luupda.F
deleted file mode 100644 (file)
index ab9f95b..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUUPDA(MUPDA,LFN) 
-C...Purpose: to facilitate the updating of particle and decay data. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
-      COMMON/LUDAT4/CHAF(500) 
-      CHARACTER CHAF*8 
-      SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/,/LUDAT4/ 
-      CHARACTER CHINL*80,CHKC*4,CHVAR(19)*9,CHLIN*72, 
-     &CHBLK(20)*72,CHOLD*12,CHTMP*12,CHNEW*12,CHCOM*12 
-      DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','PMAS(I,1)', 
-     &'PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)','MDCY(I,2)', 
-     &'MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ','KFDP(I,1)', 
-     &'KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)','CHAF(I)  '/ 
-C...Write information on file for editing. 
-      IF(MSTU(12).GE.1) CALL LULIST(0) 
-      IF(MUPDA.EQ.1) THEN 
-        DO 110 KC=1,MSTU(6) 
-        WRITE(LFN,5000) KC,CHAF(KC),(KCHG(KC,J1),J1=1,3), 
-     &  (PMAS(KC,J2),J2=1,4),MDCY(KC,1) 
-        DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
-        WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
-     &  (KFDP(IDC,J),J=1,5) 
-  100   CONTINUE 
-  110   CONTINUE 
-C...Reset variables and read information from edited file. 
-      ELSEIF(MUPDA.EQ.2) THEN 
-        DO 130 I=1,MSTU(7) 
-        MDME(I,1)=1 
-        MDME(I,2)=0 
-        BRAT(I)=0. 
-        DO 120 J=1,5 
-        KFDP(I,J)=0 
-  120   CONTINUE 
-  130   CONTINUE 
-        KC=0 
-        IDC=0 
-        NDC=0 
-  140   READ(LFN,5200,END=150) CHINL 
-        IF(CHINL(2:5).NE.'    ') THEN 
-          CHKC=CHINL(2:5) 
-          IF(KC.NE.0) THEN 
-            MDCY(KC,2)=0 
-            IF(NDC.NE.0) MDCY(KC,2)=IDC+1-NDC 
-            MDCY(KC,3)=NDC 
-          ENDIF 
-          READ(CHKC,5300) KC 
-          IF(KC.LE.0.OR.KC.GT.MSTU(6)) CALL LUERRM(27, 
-     &    '(LUUPDA:) Read KC code illegal, KC ='//CHKC) 
-          READ(CHINL,5000) KCR,CHAF(KC),(KCHG(KC,J1),J1=1,3), 
-     &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1) 
-          NDC=0 
-        ELSE 
-          IDC=IDC+1 
-          NDC=NDC+1 
-          IF(IDC.GE.MSTU(7)) CALL LUERRM(27, 
-     &    '(LUUPDA:) Decay data arrays full by KC ='//CHKC) 
-          READ(CHINL,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
-     &    (KFDP(IDC,J),J=1,5) 
-        ENDIF 
-        GOTO 140 
-  150   MDCY(KC,2)=0 
-        IF(NDC.NE.0) MDCY(KC,2)=IDC+1-NDC 
-        MDCY(KC,3)=NDC 
-C...Perform possible tests that new information is consistent. 
-        MSTJ24=MSTJ(24) 
-        MSTJ(24)=0 
-        DO 180 KC=1,MSTU(6) 
-        WRITE(CHKC,5300) KC 
-        IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3), 
-     &  PMAS(KC,4)).LT.0..OR.MDCY(KC,3).LT.0) CALL LUERRM(17, 
-     &  '(LUUPDA:) Mass/width/life/(# channels) wrong for KC ='//CHKC) 
-        BRSUM=0. 
-        DO 170 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
-        IF(MDME(IDC,2).GT.80) GOTO 170 
-        KQ=KCHG(KC,1) 
-        PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64) 
-        MERR=0 
-        DO 160 J=1,5 
-        KP=KFDP(IDC,J) 
-        IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN 
-        ELSEIF(LUCOMP(KP).EQ.0) THEN 
-          MERR=3 
-        ELSE 
-          KQ=KQ-LUCHGE(KP) 
-          PMS=PMS-ULMASS(KP) 
-        ENDIF 
-  160   CONTINUE 
-        IF(KQ.NE.0) MERR=MAX(2,MERR) 
-        IF(KFDP(IDC,2).NE.0.AND.(KC.LE.20.OR.KC.GT.40).AND. 
-     &  (KC.LE.80.OR.KC.GT.100).AND.MDME(IDC,2).NE.34.AND. 
-     &  MDME(IDC,2).NE.61.AND.PMS.LT.0.) MERR=MAX(1,MERR) 
-        IF(MERR.EQ.3) CALL LUERRM(17, 
-     &  '(LUUPDA:) Unknown particle code in decay of KC ='//CHKC) 
-        IF(MERR.EQ.2) CALL LUERRM(17, 
-     &  '(LUUPDA:) Charge not conserved in decay of KC ='//CHKC) 
-        IF(MERR.EQ.1) CALL LUERRM(7, 
-     &  '(LUUPDA:) Kinematically unallowed decay of KC ='//CHKC) 
-        BRSUM=BRSUM+BRAT(IDC) 
-  170   CONTINUE 
-        WRITE(CHTMP,5500) BRSUM 
-        IF(ABS(BRSUM).GT.0.0005.AND.ABS(BRSUM-1.).GT.0.0005) CALL 
-     &  LUERRM(7,'(LUUPDA:) Sum of branching ratios is '//CHTMP(5:12)// 
-     &  ' for KC ='//CHKC) 
-  180   CONTINUE 
-        MSTJ(24)=MSTJ24 
-C...Initialize writing of DATA statements for inclusion in program. 
-      ELSEIF(MUPDA.EQ.3) THEN 
-        DO 250 IVAR=1,19 
-        NDIM=MSTU(6) 
-        IF(IVAR.GE.11.AND.IVAR.LE.18) NDIM=MSTU(7) 
-        NLIN=1 
-        CHLIN=' ' 
-        CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/' 
-        LLIN=35 
-        CHOLD='START' 
-C...Loop through variables for conversion to characters. 
-        DO 230 IDIM=1,NDIM 
-        IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1) 
-        IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2) 
-        IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3) 
-        IF(IVAR.EQ.4) WRITE(CHTMP,5500) PMAS(IDIM,1) 
-        IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,2) 
-        IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,3) 
-        IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,4) 
-        IF(IVAR.EQ.8) WRITE(CHTMP,5400) MDCY(IDIM,1) 
-        IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,2) 
-        IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,3) 
-        IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDME(IDIM,1) 
-        IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,2) 
-        IF(IVAR.EQ.13) WRITE(CHTMP,5500) BRAT(IDIM) 
-        IF(IVAR.EQ.14) WRITE(CHTMP,5400) KFDP(IDIM,1) 
-        IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,2) 
-        IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,3) 
-        IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,4) 
-        IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,5) 
-        IF(IVAR.EQ.19) CHTMP=CHAF(IDIM) 
-C...Length of variable, trailing decimal zeros, quotation marks. 
-        LLOW=1 
-        LHIG=1 
-        DO 190 LL=1,12 
-        IF(CHTMP(13-LL:13-LL).NE.' ') LLOW=13-LL 
-        IF(CHTMP(LL:LL).NE.' ') LHIG=LL 
-  190   CONTINUE 
-        CHNEW=CHTMP(LLOW:LHIG)//' ' 
-        LNEW=1+LHIG-LLOW 
-        IF((IVAR.GE.4.AND.IVAR.LE.7).OR.IVAR.EQ.13) THEN 
-          LNEW=LNEW+1 
-  200     LNEW=LNEW-1 
-          IF(CHNEW(LNEW:LNEW).EQ.'0') GOTO 200 
-          IF(LNEW.EQ.1) CHNEW(1:2)='0.' 
-          IF(LNEW.EQ.1) LNEW=2 
-        ELSEIF(IVAR.EQ.19) THEN 
-          DO 210 LL=LNEW,1,-1 
-          IF(CHNEW(LL:LL).EQ.'''') THEN 
-            CHTMP=CHNEW 
-            CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11) 
-            LNEW=LNEW+1 
-          ENDIF 
-  210     CONTINUE 
-          CHTMP=CHNEW 
-          CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//'''' 
-          LNEW=LNEW+2 
-        ENDIF 
-C...Form composite character string, often including repetition counter. 
-        IF(CHNEW.NE.CHOLD) THEN 
-          NRPT=1 
-          CHOLD=CHNEW 
-          CHCOM=CHNEW 
-          LCOM=LNEW 
-        ELSE 
-          LRPT=LNEW+1 
-          IF(NRPT.GE.2) LRPT=LNEW+3 
-          IF(NRPT.GE.10) LRPT=LNEW+4 
-          IF(NRPT.GE.100) LRPT=LNEW+5 
-          IF(NRPT.GE.1000) LRPT=LNEW+6 
-          LLIN=LLIN-LRPT 
-          NRPT=NRPT+1 
-          WRITE(CHTMP,5400) NRPT 
-          LRPT=1 
-          IF(NRPT.GE.10) LRPT=2 
-          IF(NRPT.GE.100) LRPT=3 
-          IF(NRPT.GE.1000) LRPT=4 
-          CHCOM(1:LRPT+1+LNEW)=CHTMP(13-LRPT:12)//'*'//CHNEW(1:LNEW) 
-          LCOM=LRPT+1+LNEW 
-        ENDIF 
-C...Add characters to end of line, to new line (after storing old line), 
-C...or to new block of lines (after writing old block). 
-        IF(LLIN+LCOM.LE.70) THEN 
-          CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//',' 
-          LLIN=LLIN+LCOM+1 
-        ELSEIF(NLIN.LE.19) THEN 
-          CHLIN(LLIN+1:72)=' ' 
-          CHBLK(NLIN)=CHLIN 
-          NLIN=NLIN+1 
-          CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//',' 
-          LLIN=6+LCOM+1 
-        ELSE 
-          CHLIN(LLIN:72)='/'//' ' 
-          CHBLK(NLIN)=CHLIN 
-          WRITE(CHTMP,5400) IDIM-NRPT 
-          CHBLK(1)(30:33)=CHTMP(9:12) 
-          DO 220 ILIN=1,NLIN 
-          WRITE(LFN,5600) CHBLK(ILIN) 
-  220     CONTINUE 
-          NLIN=1 
-          CHLIN=' ' 
-          CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//',I=    ,    )/'// 
-     &    CHCOM(1:LCOM)//',' 
-          WRITE(CHTMP,5400) IDIM-NRPT+1 
-          CHLIN(25:28)=CHTMP(9:12) 
-          LLIN=35+LCOM+1 
-        ENDIF 
-  230   CONTINUE 
-C...Write final block of lines. 
-        CHLIN(LLIN:72)='/'//' ' 
-        CHBLK(NLIN)=CHLIN 
-        WRITE(CHTMP,5400) NDIM 
-        CHBLK(1)(30:33)=CHTMP(9:12) 
-        DO 240 ILIN=1,NLIN 
-        WRITE(LFN,5600) CHBLK(ILIN) 
-  240   CONTINUE 
-  250   CONTINUE 
-      ENDIF 
-C...Formats for reading and writing particle data. 
- 5000 FORMAT(1X,I4,2X,A8,3I3,3F12.5,2X,F12.5,I3) 
- 5100 FORMAT(5X,2I5,F12.5,5I8) 
- 5200 FORMAT(A80) 
- 5300 FORMAT(I4) 
- 5400 FORMAT(I12) 
- 5500 FORMAT(F12.5) 
- 5600 FORMAT(A72) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lux3jt.F b/PYTHIA/jetset/lux3jt.F
deleted file mode 100644 (file)
index e8fd953..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUX3JT(NJET,CUT,KFL,ECM,X1,X2) 
-C...Purpose: to select the kinematical variables of three-jet events. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUDAT1/ 
-      DIMENSION ZHUP(5,12) 
-C...Coefficients of Zhu second order parametrization. 
-      DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/ 
-     &    18.29,    89.56,    4.541,   -52.09,   -109.8,    24.90, 
-     &    11.63,    3.683,    17.50, 0.002440,   -1.362,  -0.3537, 
-     &    11.42,    6.299,   -22.55,   -8.915,    59.25,   -5.855, 
-     &   -32.85,   -1.054,   -16.90, 0.006489,  -0.8156,  0.01095, 
-     &    7.847,   -3.964,   -35.83,    1.178,    29.39,   0.2806, 
-     &    47.82,   -12.36,   -56.72,  0.04054,  -0.4365,   0.6062, 
-     &    5.441,   -56.89,   -50.27,    15.13,    114.3,   -18.19, 
-     &    97.05,   -1.890,   -139.9,  0.08153,  -0.4984,   0.9439, 
-     &   -17.65,    51.44,   -58.32,    70.95,   -255.7,   -78.99, 
-     &    476.9,    29.65,   -239.3,   0.4745,   -1.174,    6.081/ 
-C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick). 
-      DILOG(X)=X+X**2/4.+X**3/9.+X**4/16.+X**5/25.+X**6/36.+X**7/49. 
-C...Event type. Mass effect factors and other common constants. 
-      MSTJ(120)=2 
-      MSTJ(121)=0 
-      PMQ=ULMASS(KFL) 
-      QME=(2.*PMQ/ECM)**2 
-      IF(MSTJ(109).NE.1) THEN 
-        CUTL=LOG(CUT) 
-        CUTD=LOG(1./CUT-2.) 
-        IF(MSTJ(109).EQ.0) THEN 
-          CF=4./3. 
-          CN=3. 
-          TR=2. 
-          WTMX=MIN(20.,37.-6.*CUTD) 
-          IF(MSTJ(110).EQ.2) WTMX=2.*(7.5+80.*CUT) 
-        ELSE 
-          CF=1. 
-          CN=0. 
-          TR=12. 
-          WTMX=0. 
-        ENDIF 
-C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight. 
-        ALS2PI=PARU(118)/PARU(2) 
-        WTOPT=0. 
-        IF(MSTJ(111).EQ.1) WTOPT=(33.-2.*MSTU(112))/6.*LOG(PARJ(169))* 
-     &  ALS2PI 
-        WTMAX=MAX(0.,1.+WTOPT+ALS2PI*WTMX) 
-C...Choose three-jet events in allowed region. 
-  100   NJET=3 
-  110   Y13L=CUTL+CUTD*RLU(0) 
-        Y23L=CUTL+CUTD*RLU(0) 
-        Y13=EXP(Y13L) 
-        Y23=EXP(Y23L) 
-        Y12=1.-Y13-Y23 
-        IF(Y12.LE.CUT) GOTO 110 
-        IF(Y13**2+Y23**2+2.*Y12.LE.2.*RLU(0)) GOTO 110 
-C...Second order corrections. 
-        IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN 
-          Y12L=LOG(Y12) 
-          Y13M=LOG(1.-Y13) 
-          Y23M=LOG(1.-Y23) 
-          Y12M=LOG(1.-Y12) 
-          IF(Y13.LE.0.5) Y13I=DILOG(Y13) 
-          IF(Y13.GE.0.5) Y13I=1.644934-Y13L*Y13M-DILOG(1.-Y13) 
-          IF(Y23.LE.0.5) Y23I=DILOG(Y23) 
-          IF(Y23.GE.0.5) Y23I=1.644934-Y23L*Y23M-DILOG(1.-Y23) 
-          IF(Y12.LE.0.5) Y12I=DILOG(Y12) 
-          IF(Y12.GE.0.5) Y12I=1.644934-Y12L*Y12M-DILOG(1.-Y12) 
-          WT1=(Y13**2+Y23**2+2.*Y12)/(Y13*Y23) 
-          WT2=CF*(-2.*(CUTL-Y12L)**2-3.*CUTL-1.+3.289868+ 
-     &    2.*(2.*CUTL-Y12L)*CUT/Y12)+ 
-     &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-11.*CUTL/6.+ 
-     &    67./18.+1.644934-(2.*CUTL-Y12L)*CUT/Y12+(2.*CUTL-Y13L)* 
-     &    CUT/Y13+(2.*CUTL-Y23L)*CUT/Y23)+ 
-     &    TR*(2.*CUTL/3.-10./9.)+ 
-     &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+ 
-     &    Y13L*(4.*Y12**2+2.*Y12*Y13+4.*Y12*Y23+Y13*Y23)/(Y12+Y23)**2+ 
-     &    Y23L*(4.*Y12**2+2.*Y12*Y23+4.*Y12*Y13+Y13*Y23)/(Y12+Y13)**2)/ 
-     &    WT1+ 
-     &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+ 
-     &    (CN-2.*CF)*((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L* 
-     &    Y23M+1.644934-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)* 
-     &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934-Y12I-Y13I)/ 
-     &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))- 
-     &    2.*Y12L*Y12**2/(Y13+Y23)**2-4.*Y12L*Y12/(Y13+Y23))/WT1- 
-     &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934-Y13I-Y23I) 
-          IF(1.+WTOPT+ALS2PI*WT2.LE.0.) MSTJ(121)=1 
-          IF(1.+WTOPT+ALS2PI*WT2.LE.WTMAX*RLU(0)) GOTO 110 
-          PARJ(156)=(WTOPT+ALS2PI*WT2)/(1.+WTOPT+ALS2PI*WT2) 
-        ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN 
-C...Second order corrections; Zhu parametrization of ERT. 
-          ZX=(Y23-Y13)**2 
-          ZY=1.-Y12 
-          IZA=0 
-          DO 120 IY=1,5 
-          IF(ABS(CUT-0.01*IY).LT.0.0001) IZA=IY 
-  120     CONTINUE 
-          IF(IZA.NE.0) THEN 
-            IZ=IZA 
-            WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
-     &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
-     &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
-     &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
-          ELSE 
-            IZ=100.*CUT 
-            WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
-     &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
-     &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
-     &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
-            IZ=IZ+1 
-            WTU=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
-     &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
-     &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
-     &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
-            WT2=WTL+(WTU-WTL)*(100.*CUT+1.-IZ) 
-          ENDIF 
-          IF(1.+WTOPT+2.*ALS2PI*WT2.LE.0.) MSTJ(121)=1 
-          IF(1.+WTOPT+2.*ALS2PI*WT2.LE.WTMAX*RLU(0)) GOTO 110 
-          PARJ(156)=(WTOPT+2.*ALS2PI*WT2)/(1.+WTOPT+2.*ALS2PI*WT2) 
-        ENDIF 
-C...Impose mass cuts (gives two jets). For fixed jet number new try. 
-        X1=1.-Y23 
-        X2=1.-Y13 
-        X3=1.-Y12 
-        IF(4.*Y23*Y13*Y12/X3**2.LE.QME) NJET=2 
-        IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+ 
-     &  0.5*QME**2+(0.5*QME+0.25*QME**2)*((1.-X2)/(1.-X1)+ 
-     &  (1.-X1)/(1.-X2)).GT.(X1**2+X2**2)*RLU(0)) NJET=2 
-        IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100 
-C...Scalar gluon model (first order only, no mass effects). 
-      ELSE 
-  130   NJET=3 
-  140   X3=SQRT(4.*CUT**2+RLU(0)*((1.-CUT)**2-4.*CUT**2)) 
-        IF(LOG((X3-CUT)/CUT).LE.RLU(0)*LOG((1.-2.*CUT)/CUT)) GOTO 140 
-        YD=SIGN(2.*CUT*((X3-CUT)/CUT)**RLU(0)-X3,RLU(0)-0.5) 
-        X1=1.-0.5*(X3+YD) 
-        X2=1.-0.5*(X3-YD) 
-        IF(4.*(1.-X1)*(1.-X2)*(1.-X3)/X3**2.LE.QME) NJET=2 
-        IF(MSTJ(102).GE.2) THEN 
-          IF(X3**2-2.*(1.+X3)*(1.-X1)*(1.-X2)*PARJ(171).LT. 
-     &    X3**2*RLU(0)) NJET=2 
-        ENDIF 
-        IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/lux4jt.F b/PYTHIA/jetset/lux4jt.F
deleted file mode 100644 (file)
index fcfd06f..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14) 
-C...Purpose: to select the kinematical variables of four-jet events. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUDAT1/ 
-      DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4) 
-C...Common constants. Colour factors for QCD and Abelian gluon theory. 
-      PMQ=ULMASS(KFL) 
-      QME=(2.*PMQ/ECM)**2 
-      CT=LOG(1./CUT-5.) 
-      IF(MSTJ(109).EQ.0) THEN 
-        CF=4./3. 
-        CN=3. 
-        TR=2.5 
-      ELSE 
-        CF=1. 
-        CN=0. 
-        TR=15. 
-      ENDIF 
-C...Choice of process (qqbargg or qqbarqqbar). 
-  100 NJET=4 
-      IT=1 
-      IF(PARJ(155).GT.RLU(0)) IT=2 
-      IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2 
-      IF(IT.EQ.1) WTMX=0.7/CUT**2 
-      IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6/CUT**2 
-      IF(IT.EQ.2) WTMX=0.1125*CF*TR/CUT**2 
-      ID=1 
-C...Sample the five kinematical variables (for qqgg preweighted in y34). 
-  110 Y134=3.*CUT+(1.-6.*CUT)*RLU(0) 
-      Y234=3.*CUT+(1.-6.*CUT)*RLU(0) 
-      IF(IT.EQ.1) Y34=(1.-5.*CUT)*EXP(-CT*RLU(0)) 
-      IF(IT.EQ.2) Y34=CUT+(1.-6.*CUT)*RLU(0) 
-      IF(Y34.LE.Y134+Y234-1..OR.Y34.GE.Y134*Y234) GOTO 110 
-      VT=RLU(0) 
-      CP=COS(PARU(1)*RLU(0)) 
-      Y14=(Y134-Y34)*VT 
-      Y13=Y134-Y14-Y34 
-      VB=Y34*(1.-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34)) 
-      Y24=0.5*(Y234-Y34)*(1.-4.*SQRT(MAX(0.,VT*(1.-VT)*VB*(1.-VB)))* 
-     &CP-(1.-2.*VT)*(1.-2.*VB)) 
-      Y23=Y234-Y34-Y24 
-      Y12=1.-Y134-Y23-Y24 
-      IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110 
-      Y123=Y12+Y13+Y23 
-      Y124=Y12+Y14+Y24 
-C...Calculate matrix elements for qqgg or qqqq process. 
-      IC=0 
-      WTTOT=0. 
-  120 IC=IC+1 
-      IF(IT.EQ.1) THEN 
-        WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3.*Y12*Y23*Y34+ 
-     &  3.*Y12*Y14*Y34+4.*Y12**2*Y34-Y13*Y23*Y24+2.*Y12*Y23*Y24- 
-     &  Y13*Y14*Y24-2.*Y12*Y13*Y24+2.*Y12**2*Y24+Y14*Y23**2+2.*Y12* 
-     &  Y23**2+Y14**2*Y23+4.*Y12*Y14*Y23+4.*Y12**2*Y23+2.*Y12*Y14**2+ 
-     &  2.*Y12*Y13*Y14+4.*Y12**2*Y14+2.*Y12**2*Y13+2.*Y12**3)/(2.*Y13* 
-     &  Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-Y14*Y23+Y12*Y13)/(Y13* 
-     &  Y134**2)+2.*Y23*(1.-Y13)/(Y13*Y134*Y24)+Y34/(2.*Y13*Y24) 
-        WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2.*Y12* 
-     &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1.+Y34)*Y124/(Y134*Y234*Y14* 
-     &  Y24)-(2.*Y13*Y24+Y14**2+Y13*Y23+2.*Y12*Y13)/(Y13*Y134*Y14)+ 
-     &  Y12*Y123*Y124/(2.*Y13*Y14*Y23*Y24) 
-        WTC(IC)=-(5.*Y12*Y34**2+2.*Y12*Y24*Y34+2.*Y12*Y23*Y34+2.*Y12* 
-     &  Y14*Y34+2.*Y12*Y13*Y34+4.*Y12**2*Y34-Y13*Y24**2+Y14*Y23*Y24+ 
-     &  Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-3.*Y12*Y13*Y24- 
-     &  Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-3.*Y12*Y14*Y23-Y12*Y13*Y23)/ 
-     &  (4.*Y134*Y234*Y34**2)+(3.*Y12*Y34**2-3.*Y13*Y24*Y34+3.*Y12*Y24* 
-     &  Y34+3.*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6.*Y12*Y14*Y34+2.*Y12* 
-     &  Y13*Y34-2.*Y12**2*Y34+Y14*Y23*Y24-3.*Y13*Y23*Y24-2.*Y13*Y14* 
-     &  Y24+4.*Y12*Y14*Y24+2.*Y12*Y13*Y24+3.*Y14*Y23**2+2.*Y14**2*Y23+ 
-     &  2.*Y14**2*Y12+2.*Y12**2*Y14+6.*Y12*Y14*Y23-2.*Y12*Y13**2- 
-     &  2.*Y12**2*Y13)/(4.*Y13*Y134*Y234*Y34) 
-        WTC(IC)=WTC(IC)+(2.*Y12*Y34**2-2.*Y13*Y24*Y34+Y12*Y24*Y34+ 
-     &  4.*Y13*Y23*Y34+4.*Y12*Y14*Y34+2.*Y12*Y13*Y34+2.*Y12**2*Y34- 
-     &  Y13*Y24**2+3.*Y14*Y23*Y24+4.*Y13*Y23*Y24-2.*Y13*Y14*Y24+ 
-     &  4.*Y12*Y14*Y24+2.*Y12*Y13*Y24+2.*Y14*Y23**2+4.*Y13*Y23**2+ 
-     &  2.*Y13*Y14*Y23+2.*Y12*Y14*Y23+4.*Y12*Y13*Y23+2.*Y12*Y14**2+4.* 
-     &  Y12**2*Y13+4.*Y12*Y13*Y14+2.*Y12**2*Y14)/(4.*Y13*Y134*Y24*Y34)- 
-     &  (Y12*Y34**2-2.*Y14*Y24*Y34-2.*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23* 
-     &  Y34+Y12*Y14*Y34+2.*Y12*Y13*Y34-2.*Y14**2*Y24-4.*Y13*Y14*Y24- 
-     &  4.*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-Y12*Y13**2)/ 
-     &  (2.*Y13*Y34*Y134**2)+(Y12*Y34**2-4.*Y14*Y24*Y34-2.*Y13*Y24*Y34- 
-     &  2.*Y14*Y23*Y34-4.*Y13*Y23*Y34-4.*Y12*Y14*Y34-4.*Y12*Y13*Y34- 
-     &  2.*Y13*Y14*Y24+2.*Y13**2*Y24+2.*Y14**2*Y23-2.*Y13*Y14*Y23- 
-     &  Y12*Y14**2-6.*Y12*Y13*Y14-Y12*Y13**2)/(4.*Y34**2*Y134**2) 
-        WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5*CN)*WTB(IC)+CN*WTC(IC))/ 
-     &  8. 
-      ELSE 
-        WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2.*Y12* 
-     &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2* 
-     &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12* 
-     &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14* 
-     &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+ 
-     &  Y13*Y14*Y24+2.*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+ 
-     &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24* 
-     &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24- 
-     &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123) 
-        WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13* 
-     &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23* 
-     &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13* 
-     &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+ 
-     &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+ 
-     &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134* 
-     &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14* 
-     &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124) 
-        WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5*CN)*WTE(IC))/16. 
-      ENDIF 
-C...Permutations of momenta in matrix element. Weighting. 
-  130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN 
-        YSAV=Y13 
-        Y13=Y14 
-        Y14=YSAV 
-        YSAV=Y23 
-        Y23=Y24 
-        Y24=YSAV 
-        YSAV=Y123 
-        Y123=Y124 
-        Y124=YSAV 
-      ENDIF 
-      IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN 
-        YSAV=Y13 
-        Y13=Y23 
-        Y23=YSAV 
-        YSAV=Y14 
-        Y14=Y24 
-        Y24=YSAV 
-        YSAV=Y134 
-        Y134=Y234 
-        Y234=YSAV 
-      ENDIF 
-      IF(IC.LE.3) GOTO 120 
-      IF(ID.EQ.1.AND.WTTOT.LT.RLU(0)*WTMX) GOTO 110 
-      IC=5 
-C...qqgg events: string configuration and event type. 
-      IF(IT.EQ.1) THEN 
-        IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN 
-          PARJ(156)=Y34*(2.*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4.*(WTC(1)+ 
-     &    WTC(2)+WTC(3)+WTC(4)))/(9.*WTTOT) 
-          IF(WTA(2)+WTA(4)+2.*(WTC(2)+WTC(4)).GT.RLU(0)*(WTA(1)+WTA(2)+ 
-     &    WTA(3)+WTA(4)+2.*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2 
-          IF(ID.EQ.2) GOTO 130 
-        ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN 
-          PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8.*WTTOT) 
-          IF(WTA(2)+WTA(4).GT.RLU(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2 
-          IF(ID.EQ.2) GOTO 130 
-        ENDIF 
-        MSTJ(120)=3 
-        IF(MSTJ(109).EQ.0.AND.0.5*Y34*(WTC(1)+WTC(2)+WTC(3)+WTC(4)).GT. 
-     &  RLU(0)*WTTOT) MSTJ(120)=4 
-        KFLN=21 
-C...Mass cuts. Kinematical variables out. 
-        IF(Y12.LE.CUT+QME) NJET=2 
-        IF(NJET.EQ.2) GOTO 150 
-        Q12=0.5*(1.-SQRT(1.-QME/Y12)) 
-        X1=1.-(1.-Q12)*Y234-Q12*Y134 
-        X4=1.-(1.-Q12)*Y134-Q12*Y234 
-        X2=1.-Y124 
-        X12=(1.-Q12)*Y13+Q12*Y23 
-        X14=Y12-0.5*QME 
-        IF(Y134*Y234/((1.-X1)*(1.-X4)).LE.RLU(0)) NJET=2 
-C...qqbarqqbar events: string configuration, choose new flavour. 
-      ELSE 
-        IF(ID.EQ.1) THEN 
-          WTR=RLU(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4)) 
-          IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2 
-          IF(WTR.LT.WTD(3)+WTD(4)) ID=3 
-          IF(WTR.LT.WTD(4)) ID=4 
-          IF(ID.GE.2) GOTO 130 
-        ENDIF 
-        MSTJ(120)=5 
-        PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16.*WTTOT) 
-  140   KFLN=1+INT(5.*RLU(0)) 
-        IF(KFLN.NE.KFL.AND.0.2*PARJ(156).LE.RLU(0)) GOTO 140 
-        IF(KFLN.EQ.KFL.AND.1.-0.8*PARJ(156).LE.RLU(0)) GOTO 140 
-        IF(KFLN.GT.MSTJ(104)) NJET=2 
-        PMQN=ULMASS(KFLN) 
-        QMEN=(2.*PMQN/ECM)**2 
-C...Mass cuts. Kinematical variables out. 
-        IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1*QMEN) NJET=2 
-        IF(NJET.EQ.2) GOTO 150 
-        Q24=0.5*(1.-SQRT(1.-QME/Y24)) 
-        Q13=0.5*(1.-SQRT(1.-QMEN/Y13)) 
-        X1=1.-(1.-Q24)*Y123-Q24*Y134 
-        X4=1.-(1.-Q24)*Y134-Q24*Y123 
-        X2=1.-(1.-Q13)*Y234-Q13*Y124 
-        X12=(1.-Q24)*((1.-Q13)*Y14+Q13*Y34)+Q24*((1.-Q13)*Y12+Q13*Y23) 
-        X14=Y24-0.5*QME 
-        X34=(1.-Q24)*((1.-Q13)*Y23+Q13*Y12)+Q24*((1.-Q13)*Y34+Q13*Y14) 
-        IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE. 
-     &  (PARJ(127)+PMQ+PMQN)**2) NJET=2 
-        IF(Y123*Y134/((1.-X1)*(1.-X4)).LE.RLU(0)) NJET=2 
-      ENDIF 
-  150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luxdif.F b/PYTHIA/jetset/luxdif.F
deleted file mode 100644 (file)
index aa11f35..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI) 
-C...Purpose: to give the angular orientation of events. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-C...Charge. Factors depending on polarization for QED case. 
-      QF=KCHG(KFL,1)/3. 
-      POLL=1.-PARJ(131)*PARJ(132) 
-      POLD=PARJ(132)-PARJ(131) 
-      IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN 
-        HF1=POLL 
-        HF2=0. 
-        HF3=PARJ(133)**2 
-        HF4=0. 
-C...Factors depending on flavour, energy and polarization for QFD case. 
-      ELSE 
-        SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
-        SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
-        SFI=SFW*(1.-(PARJ(123)/ECM)**2) 
-        AE=-1. 
-        VE=4.*PARU(102)-1. 
-        AF=SIGN(1.,QF) 
-        VF=AF-4.*QF*PARU(102) 
-        HF1=QF**2*POLL-2.*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+ 
-     &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2.*VE*AE*POLD) 
-        HF2=-2.*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2.*VF*AF*SFW*SFF**2* 
-     &  (2.*VE*AE*POLL-(VE**2+AE**2)*POLD) 
-        HF3=PARJ(133)**2*(QF**2-2.*QF*VF*SFI*SFF*VE+(VF**2+AF**2)* 
-     &  SFW*SFF**2*(VE**2-AE**2)) 
-        HF4=-PARJ(133)**2*2.*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)* 
-     &  SFF*AE 
-      ENDIF 
-C...Mass factor. Differential cross-sections for two-jet events. 
-      SQ2=SQRT(2.) 
-      QME=0. 
-      IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND. 
-     &MSTJ(109).NE.1) QME=(2.*ULMASS(KFL)/ECM)**2 
-      IF(NJET.EQ.2) THEN 
-        SIGU=4.*SQRT(1.-QME) 
-        SIGL=2.*QME*SQRT(1.-QME) 
-        SIGT=0. 
-        SIGI=0. 
-        SIGA=0. 
-        SIGP=4. 
-C...Kinematical variables. Reduce four-jet event to three-jet one. 
-      ELSE 
-        IF(NJET.EQ.3) THEN 
-          X1=2.*P(NC+1,4)/ECM 
-          X2=2.*P(NC+3,4)/ECM 
-        ELSE 
-          ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+ 
-     &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2) 
-          X1=2.*P(NC+1,4)/ECMR 
-          X2=2.*P(NC+4,4)/ECMR 
-        ENDIF 
-C...Differential cross-sections for three-jet (or reduced four-jet). 
-        XQ=(1.-X1)/(1.-X2) 
-        CT12=(X1*X2-2.*X1-2.*X2+2.+QME)/SQRT((X1**2-QME)*(X2**2-QME)) 
-        ST12=SQRT(1.-CT12**2) 
-        IF(MSTJ(109).NE.1) THEN 
-          SIGU=2.*X1**2+X2**2*(1.+CT12**2)-QME*(3.+CT12**2-X1-X2)- 
-     &    QME*X1/XQ+0.5*QME*((X2**2-QME)*ST12**2-2.*X2)*XQ 
-          SIGL=(X2*ST12)**2-QME*(3.-CT12**2-2.5*(X1+X2)+X1*X2+QME)+ 
-     &    0.5*QME*(X1**2-X1-QME)/XQ+0.5*QME*((X2**2-QME)*CT12**2-X2)*XQ 
-          SIGT=0.5*(X2**2-QME-0.5*QME*(X2**2-QME)/XQ)*ST12**2 
-          SIGI=((1.-0.5*QME*XQ)*(X2**2-QME)*ST12*CT12+QME*(1.-X1-X2+ 
-     &    0.5*X1*X2+0.5*QME)*ST12/CT12)/SQ2 
-          SIGA=X2**2*ST12/SQ2 
-          SIGP=2.*(X1**2-X2**2*CT12) 
-C...Differential cross-sect for scalar gluons (no mass effects). 
-        ELSE 
-          X3=2.-X1-X2 
-          XT=X2*ST12 
-          CT13=SQRT(MAX(0.,1.-(XT/X3)**2)) 
-          SIGU=(1.-PARJ(171))*(X3**2-0.5*XT**2)+ 
-     &    PARJ(171)*(X3**2-0.5*XT**2-4.*(1.-X1)*(1.-X2)**2/X1) 
-          SIGL=(1.-PARJ(171))*0.5*XT**2+ 
-     &    PARJ(171)*0.5*(1.-X1)**2*XT**2 
-          SIGT=(1.-PARJ(171))*0.25*XT**2+ 
-     &    PARJ(171)*0.25*XT**2*(1.-2.*X1) 
-          SIGI=-(0.5/SQ2)*((1.-PARJ(171))*XT*X3*CT13+ 
-     &    PARJ(171)*XT*((1.-2.*X1)*X3*CT13-X1*(X1-X2))) 
-          SIGA=(0.25/SQ2)*XT*(2.*(1.-X1)-X1*X3) 
-          SIGP=X3**2-2.*(1.-X1)*(1.-X2)/X1 
-        ENDIF 
-      ENDIF 
-C...Upper bounds for differential cross-section. 
-      HF1A=ABS(HF1) 
-      HF2A=ABS(HF2) 
-      HF3A=ABS(HF3) 
-      HF4A=ABS(HF4) 
-      SIGMAX=(2.*HF1A+HF3A+HF4A)*ABS(SIGU)+2.*(HF1A+HF3A+HF4A)* 
-     &ABS(SIGL)+2.*(HF1A+2.*HF3A+2.*HF4A)*ABS(SIGT)+2.*SQ2* 
-     &(HF1A+2.*HF3A+2.*HF4A)*ABS(SIGI)+4.*SQ2*HF2A*ABS(SIGA)+ 
-     &2.*HF2A*ABS(SIGP) 
-C...Generate angular orientation according to differential cross-sect. 
-  100 CHI=PARU(2)*RLU(0) 
-      CTHE=2.*RLU(0)-1. 
-      PHI=PARU(2)*RLU(0) 
-      CCHI=COS(CHI) 
-      SCHI=SIN(CHI) 
-      C2CHI=COS(2.*CHI) 
-      S2CHI=SIN(2.*CHI) 
-      THE=ACOS(CTHE) 
-      STHE=SIN(THE) 
-      C2PHI=COS(2.*(PHI-PARJ(134))) 
-      S2PHI=SIN(2.*(PHI-PARJ(134))) 
-      SIG=((1.+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+ 
-     &2.*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+ 
-     &2.*(STHE**2*C2CHI*HF1+((1.+CTHE**2)*C2CHI*C2PHI-2.*CTHE*S2CHI* 
-     &S2PHI)*HF3-((1.+CTHE**2)*C2CHI*S2PHI+2.*CTHE*S2CHI*C2PHI)*HF4)* 
-     &SIGT-2.*SQ2*(2.*STHE*CTHE*CCHI*HF1-2.*STHE*(CTHE*CCHI*C2PHI- 
-     &SCHI*S2PHI)*HF3+2.*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+ 
-     &4.*SQ2*STHE*CCHI*HF2*SIGA+2.*CTHE*HF2*SIGP 
-      IF(SIG.LT.SIGMAX*RLU(0)) GOTO 100 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luxjet.F b/PYTHIA/jetset/luxjet.F
deleted file mode 100644 (file)
index 8ec82ed..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUXJET(ECM,NJET,CUT) 
-C...Purpose: to select number of jets in matrix element approach. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUDAT1/ 
-      DIMENSION ZHUT(5) 
-C...Relative three-jet rate in Zhu second order parametrization. 
-      DATA ZHUT/3.0922, 6.2291, 7.4782, 7.8440, 8.2560/ 
-C...Trivial result for two-jets only, including parton shower. 
-      IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN 
-        CUT=0. 
-C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R. 
-      ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN 
-        CF=4./3. 
-        IF(MSTJ(109).EQ.2) CF=1. 
-        IF(MSTJ(111).EQ.0) THEN 
-          Q2=ECM**2 
-          Q2R=ECM**2 
-        ELSEIF(MSTU(111).EQ.0) THEN 
-          PARJ(169)=MIN(1.,PARJ(129)) 
-          Q2=PARJ(169)*ECM**2 
-          PARJ(168)=MIN(1.,MAX(PARJ(128),EXP(-12.*PARU(1)/ 
-     &    ((33.-2.*MSTU(112))*PARU(111))))) 
-          Q2R=PARJ(168)*ECM**2 
-        ELSE 
-          PARJ(169)=MIN(1.,MAX(PARJ(129),(2.*PARU(112)/ECM)**2)) 
-          Q2=PARJ(169)*ECM**2 
-          PARJ(168)=MIN(1.,MAX(PARJ(128),PARU(112)/ECM, 
-     &    (2.*PARU(112)/ECM)**2)) 
-          Q2R=PARJ(168)*ECM**2 
-        ENDIF 
-C...alpha_strong for R and R itself. 
-        ALSPI=(3./4.)*CF*ULALPS(Q2R)/PARU(1) 
-        IF(IABS(MSTJ(101)).EQ.1) THEN 
-          RQCD=1.+ALSPI 
-        ELSEIF(MSTJ(109).EQ.0) THEN 
-          RQCD=1.+ALSPI+(1.986-0.115*MSTU(118))*ALSPI**2 
-          IF(MSTJ(111).EQ.1) RQCD=MAX(1.,RQCD+(33.-2.*MSTU(112))/12.* 
-     &    LOG(PARJ(168))*ALSPI**2) 
-        ELSE 
-          RQCD=1.+ALSPI-(3./32.+0.519*MSTU(118))*(4.*ALSPI/3.)**2 
-        ENDIF 
-C...alpha_strong for jet rate. Initial value for y cut. 
-        ALSPI=(3./4.)*CF*ULALPS(Q2)/PARU(1) 
-        CUT=MAX(0.001,PARJ(125),(PARJ(126)/ECM)**2) 
-        IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0)) 
-     &  CUT=MAX(CUT,EXP(-SQRT(0.75/ALSPI))/2.) 
-        IF(MSTJ(110).EQ.2) CUT=MAX(0.01,MIN(0.05,CUT)) 
-C...Parametrization of first order three-jet cross-section. 
-  100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25) THEN 
-          PARJ(152)=0. 
-        ELSE 
-          PARJ(152)=(2.*ALSPI/3.)*((3.-6.*CUT+2.*LOG(CUT))* 
-     &    LOG(CUT/(1.-2.*CUT))+(2.5+1.5*CUT-6.571)*(1.-3.*CUT)+ 
-     &    5.833*(1.-3.*CUT)**2-3.894*(1.-3.*CUT)**3+ 
-     &    1.342*(1.-3.*CUT)**4)/RQCD 
-          IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2)) 
-     &    PARJ(152)=0. 
-        ENDIF 
-C...Parametrization of second order three-jet cross-section. 
-        IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR. 
-     &  CUT.GE.0.25) THEN 
-          PARJ(153)=0. 
-        ELSEIF(MSTJ(110).LE.1) THEN 
-          CT=LOG(1./CUT-2.) 
-          PARJ(153)=ALSPI**2*CT**2*(2.419+0.5989*CT+0.6782*CT**2- 
-     &    0.2661*CT**3+0.01159*CT**4)/RQCD 
-C...Interpolation in second/first order ratio for Zhu parametrization. 
-        ELSEIF(MSTJ(110).EQ.2) THEN 
-          IZA=0 
-          DO 110 IY=1,5 
-          IF(ABS(CUT-0.01*IY).LT.0.0001) IZA=IY 
-  110     CONTINUE 
-          IF(IZA.NE.0) THEN 
-            ZHURAT=ZHUT(IZA) 
-          ELSE 
-            IZ=100.*CUT 
-            ZHURAT=ZHUT(IZ)+(100.*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ)) 
-          ENDIF 
-          PARJ(153)=ALSPI*PARJ(152)*ZHURAT 
-        ENDIF 
-C...Shift in second order three-jet cross-section with optimized Q^2. 
-        IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3. 
-     &  AND.CUT.LT.0.25) PARJ(153)=PARJ(153)+(33.-2.*MSTU(112))/12.* 
-     &  LOG(PARJ(169))*ALSPI*PARJ(152) 
-C...Parametrization of second order four-jet cross-section. 
-        IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125) THEN 
-          PARJ(154)=0. 
-        ELSE 
-          CT=LOG(1./CUT-5.) 
-          IF(CUT.LE.0.018) THEN 
-            XQQGG=6.349-4.330*CT+0.8304*CT**2 
-            IF(MSTJ(109).EQ.2) XQQGG=(4./3.)**2*(3.035-2.091*CT+ 
-     &      0.4059*CT**2) 
-            XQQQQ=1.25*(-0.1080+0.01486*CT+0.009364*CT**2) 
-            IF(MSTJ(109).EQ.2) XQQQQ=8.*XQQQQ 
-          ELSE 
-            XQQGG=-0.09773+0.2959*CT-0.2764*CT**2+0.08832*CT**3 
-            IF(MSTJ(109).EQ.2) XQQGG=(4./3.)**2*(-0.04079+0.1340*CT- 
-     &      0.1326*CT**2+0.04365*CT**3) 
-            XQQQQ=1.25*(0.003661-0.004888*CT-0.001081*CT**2+0.002093* 
-     &      CT**3) 
-            IF(MSTJ(109).EQ.2) XQQQQ=8.*XQQQQ 
-          ENDIF 
-          PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD 
-          PARJ(155)=XQQQQ/(XQQGG+XQQQQ) 
-        ENDIF 
-C...If negative three-jet rate, change y' optimization parameter. 
-        IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0..AND. 
-     &  PARJ(169).LT.0.99) THEN 
-          PARJ(169)=MIN(1.,1.2*PARJ(169)) 
-          Q2=PARJ(169)*ECM**2 
-          ALSPI=(3./4.)*CF*ULALPS(Q2)/PARU(1) 
-          GOTO 100 
-        ENDIF 
-C...If too high cross-section, use harder cuts, or fail. 
-        IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN 
-          IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499.AND.MSTJ(111).EQ.1.AND. 
-     &    PARJ(169).LT.0.99) THEN 
-            PARJ(169)=MIN(1.,1.2*PARJ(169)) 
-            Q2=PARJ(169)*ECM**2 
-            ALSPI=(3./4.)*CF*ULALPS(Q2)/PARU(1) 
-            GOTO 100 
-          ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499) THEN 
-            CALL LUERRM(26, 
-     &      '(LUXJET:) no allowed y cut value for Zhu parametrization') 
-          ENDIF 
-          CUT=0.26*(4.*CUT)**(PARJ(152)+PARJ(153)+PARJ(154))**(-1./3.) 
-          IF(MSTJ(110).EQ.2) CUT=MAX(0.01,MIN(0.05,CUT)) 
-          GOTO 100 
-        ENDIF 
-C...Scalar gluon (first order only). 
-      ELSE 
-        ALSPI=ULALPS(ECM**2)/PARU(1) 
-        CUT=MAX(0.001,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3./ALSPI)) 
-        PARJ(152)=0. 
-        IF(CUT.LT.0.25) PARJ(152)=(ALSPI/3.)*((1.-2.*CUT)* 
-     &  LOG((1.-2.*CUT)/CUT)+0.5*(9.*CUT**2-1.)) 
-        PARJ(153)=0. 
-        PARJ(154)=0. 
-      ENDIF 
-C...Select number of jets. 
-      PARJ(150)=CUT 
-      IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN 
-        NJET=2 
-      ELSEIF(MSTJ(101).LE.0) THEN 
-        NJET=MIN(4,2-MSTJ(101)) 
-      ELSE 
-        RNJ=RLU(0) 
-        NJET=2 
-        IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3 
-        IF(PARJ(154).GT.RNJ) NJET=4 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luxkfl.F b/PYTHIA/jetset/luxkfl.F
deleted file mode 100644 (file)
index c9024dc..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUXKFL(KFL,ECM,ECMC,KFLC) 
-C...Purpose: to select flavour for produced qqbar pair. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUDAT1/,/LUDAT2/ 
-C...Calculate maximum weight in QED or QFD case. 
-      IF(MSTJ(102).LE.1) THEN 
-        RFMAX=4./9. 
-      ELSE 
-        POLL=1.-PARJ(131)*PARJ(132) 
-        SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
-        SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
-        SFI=SFW*(1.-(PARJ(123)/ECMC)**2) 
-        VE=4.*PARU(102)-1. 
-        HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131)) 
-        HF1W=SFW*SFF**2*((VE**2+1.)*POLL+2.*VE*(PARJ(132)-PARJ(131))) 
-        RFMAX=MAX(4./9.*POLL-4./3.*(1.-8.*PARU(102)/3.)*HF1I+ 
-     &  ((1.-8.*PARU(102)/3.)**2+1.)*HF1W,1./9.*POLL+2./3.* 
-     &  (-1.+4.*PARU(102)/3.)*HF1I+((-1.+4.*PARU(102)/3.)**2+1.)*HF1W) 
-      ENDIF 
-C...Choose flavour. Gives charge and velocity. 
-      NTRY=0 
-  100 NTRY=NTRY+1 
-      IF(NTRY.GT.100) THEN 
-        CALL LUERRM(14,'(LUXKFL:) caught in an infinite loop') 
-        KFLC=0 
-        RETURN 
-      ENDIF 
-      KFLC=KFL 
-      IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*RLU(0)) 
-      MSTJ(93)=1 
-      PMQ=ULMASS(KFLC) 
-      IF(ECM.LT.2.*PMQ+PARJ(127)) GOTO 100 
-      QF=KCHG(KFLC,1)/3. 
-      VQ=1. 
-      IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0.,1.-(2.*PMQ/ECMC)**2)) 
-C...Calculate weight in QED or QFD case. 
-      IF(MSTJ(102).LE.1) THEN 
-        RF=QF**2 
-        RFV=0.5*VQ*(3.-VQ**2)*QF**2 
-      ELSE 
-        VF=SIGN(1.,QF)-4.*QF*PARU(102) 
-        RF=QF**2*POLL-2.*QF*VF*HF1I+(VF**2+1.)*HF1W 
-        RFV=0.5*VQ*(3.-VQ**2)*(QF**2*POLL-2.*QF*VF*HF1I+VF**2*HF1W)+ 
-     &  VQ**3*HF1W 
-        IF(RFV.GT.0.) PARJ(171)=MIN(1.,VQ**3*HF1W/RFV) 
-      ENDIF 
-C...Weighting or new event (radiative photon). Cross-section update. 
-      IF(KFL.LE.0.AND.RF.LT.RLU(0)*RFMAX) GOTO 100 
-      PARJ(158)=PARJ(158)+1. 
-      IF(ECMC.LT.2.*PMQ+PARJ(127).OR.RFV.LT.RLU(0)*RF) KFLC=0 
-      IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100 
-      IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1. 
-      PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158) 
-      PARJ(148)=PARJ(144)*86.8/ECM**2 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luxtot.F b/PYTHIA/jetset/luxtot.F
deleted file mode 100644 (file)
index c552145..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUXTOT(KFL,ECM,XTOT) 
-C...Purpose: to calculate total cross-section, including initial 
-C...state radiation effects. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUDAT1/,/LUDAT2/ 
-C...Status, (optimized) Q^2 scale, alpha_strong. 
-      PARJ(151)=ECM 
-      MSTJ(119)=10*MSTJ(102)+KFL 
-      IF(MSTJ(111).EQ.0) THEN 
-        Q2R=ECM**2 
-      ELSEIF(MSTU(111).EQ.0) THEN 
-        PARJ(168)=MIN(1.,MAX(PARJ(128),EXP(-12.*PARU(1)/ 
-     &  ((33.-2.*MSTU(112))*PARU(111))))) 
-        Q2R=PARJ(168)*ECM**2 
-      ELSE 
-        PARJ(168)=MIN(1.,MAX(PARJ(128),PARU(112)/ECM, 
-     &  (2.*PARU(112)/ECM)**2)) 
-        Q2R=PARJ(168)*ECM**2 
-      ENDIF 
-      ALSPI=ULALPS(Q2R)/PARU(1) 
-C...QCD corrections factor in R. 
-      IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN 
-        RQCD=1. 
-      ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN 
-        RQCD=1.+ALSPI 
-      ELSEIF(MSTJ(109).EQ.0) THEN 
-        RQCD=1.+ALSPI+(1.986-0.115*MSTU(118))*ALSPI**2 
-        IF(MSTJ(111).EQ.1) RQCD=MAX(1.,RQCD+(33.-2.*MSTU(112))/12.* 
-     &  LOG(PARJ(168))*ALSPI**2) 
-      ELSEIF(IABS(MSTJ(101)).EQ.1) THEN 
-        RQCD=1.+(3./4.)*ALSPI 
-      ELSE 
-        RQCD=1.+(3./4.)*ALSPI-(3./32.+0.519*MSTU(118))*ALSPI**2 
-      ENDIF 
-C...Calculate Z0 width if default value not acceptable. 
-      IF(MSTJ(102).GE.3) THEN 
-        RVA=3.*(3.+(4.*PARU(102)-1.)**2)+6.*RQCD*(2.+(1.-8.*PARU(102)/ 
-     &  3.)**2+(4.*PARU(102)/3.-1.)**2) 
-        DO 100 KFLC=5,6 
-        VQ=1. 
-        IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0.,1.-(2.*ULMASS(KFLC)/ 
-     &  ECM)**2)) 
-        IF(KFLC.EQ.5) VF=4.*PARU(102)/3.-1. 
-        IF(KFLC.EQ.6) VF=1.-8.*PARU(102)/3. 
-        RVA=RVA+3.*RQCD*(0.5*VQ*(3.-VQ**2)*VF**2+VQ**3) 
-  100   CONTINUE 
-        PARJ(124)=PARU(101)*PARJ(123)*RVA/(48.*PARU(102)*(1.-PARU(102))) 
-      ENDIF 
-C...Calculate propagator and related constants for QFD case. 
-      POLL=1.-PARJ(131)*PARJ(132) 
-      IF(MSTJ(102).GE.2) THEN 
-        SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
-        SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
-        SFI=SFW*(1.-(PARJ(123)/ECM)**2) 
-        VE=4.*PARU(102)-1. 
-        SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131)) 
-        SF1W=SFF**2*((VE**2+1.)*POLL+2.*VE*(PARJ(132)-PARJ(131))) 
-        HF1I=SFI*SF1I 
-        HF1W=SFW*SF1W 
-      ENDIF 
-C...Loop over different flavours: charge, velocity. 
-      RTOT=0. 
-      RQQ=0. 
-      RQV=0. 
-      RVA=0. 
-      DO 110 KFLC=1,MAX(MSTJ(104),KFL) 
-      IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110 
-      MSTJ(93)=1 
-      PMQ=ULMASS(KFLC) 
-      IF(ECM.LT.2.*PMQ+PARJ(127)) GOTO 110 
-      QF=KCHG(KFLC,1)/3. 
-      VQ=1. 
-      IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1.-(2.*PMQ/ECM)**2) 
-C...Calculate R and sum of charges for QED or QFD case. 
-      RQQ=RQQ+3.*QF**2*POLL 
-      IF(MSTJ(102).LE.1) THEN 
-        RTOT=RTOT+3.*0.5*VQ*(3.-VQ**2)*QF**2*POLL 
-      ELSE 
-        VF=SIGN(1.,QF)-4.*QF*PARU(102) 
-        RQV=RQV-6.*QF*VF*SF1I 
-        RVA=RVA+3.*(VF**2+1.)*SF1W 
-        RTOT=RTOT+3.*(0.5*VQ*(3.-VQ**2)*(QF**2*POLL-2.*QF*VF*HF1I+ 
-     &  VF**2*HF1W)+VQ**3*HF1W) 
-      ENDIF 
-  110 CONTINUE 
-      RSUM=RQQ 
-      IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA 
-C...Calculate cross-section, including QCD corrections. 
-      PARJ(141)=RQQ 
-      PARJ(142)=RTOT 
-      PARJ(143)=RTOT*RQCD 
-      PARJ(144)=PARJ(143) 
-      PARJ(145)=PARJ(141)*86.8/ECM**2 
-      PARJ(146)=PARJ(142)*86.8/ECM**2 
-      PARJ(147)=PARJ(143)*86.8/ECM**2 
-      PARJ(148)=PARJ(147) 
-      PARJ(157)=RSUM*RQCD 
-      PARJ(158)=0. 
-      PARJ(159)=0. 
-      XTOT=PARJ(147) 
-      IF(MSTJ(107).LE.0) RETURN 
-C...Virtual cross-section. 
-      XKL=PARJ(135) 
-      XKU=MIN(PARJ(136),1.-(2.*PARJ(127)/ECM)**2) 
-      ALE=2.*LOG(ECM/ULMASS(11))-1. 
-      SIGV=ALE/3.+2.*LOG(ECM**2/(ULMASS(13)*ULMASS(15)))/3.-4./3.+ 
-     &1.526*LOG(ECM**2/0.932) 
-C...Soft and hard radiative cross-section in QED case. 
-      IF(MSTJ(102).LE.1) THEN 
-        SIGV=1.5*ALE-0.5+PARU(1)**2/3.+2.*SIGV 
-        SIGS=ALE*(2.*LOG(XKL)-LOG(1.-XKL)-XKL) 
-        SIGH=ALE*(2.*LOG(XKU/XKL)-LOG((1.-XKU)/(1.-XKL))-(XKU-XKL)) 
-C...Soft and hard radiative cross-section in QFD case. 
-      ELSE 
-        SZM=1.-(PARJ(123)/ECM)**2 
-        SZW=PARJ(123)*PARJ(124)/ECM**2 
-        PARJ(161)=-RQQ/RSUM 
-        PARJ(162)=-(RQQ+RQV+RVA)/RSUM 
-        PARJ(163)=(RQV*(1.-0.5*SZM-SFI)+RVA*(1.5-SZM-SFW))/RSUM 
-        PARJ(164)=(RQV*SZW**2*(1.-2.*SFW)+RVA*(2.*SFI+SZW**2-4.+3.*SZM- 
-     &  SZM**2))/(SZW*RSUM) 
-        SIGV=1.5*ALE-0.5+PARU(1)**2/3.+((2.*RQQ+SFI*RQV)/RSUM)*SIGV+ 
-     &  (SZW*SFW*RQV/RSUM)*PARU(1)*20./9. 
-        SIGS=ALE*(2.*LOG(XKL)+PARJ(161)*LOG(1.-XKL)+PARJ(162)*XKL+ 
-     &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+ 
-     &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW))) 
-        SIGH=ALE*(2.*LOG(XKU/XKL)+PARJ(161)*LOG((1.-XKU)/(1.-XKL))+ 
-     &  PARJ(162)*(XKU-XKL)+PARJ(163)*LOG(((XKU-SZM)**2+SZW**2)/ 
-     &  ((XKL-SZM)**2+SZW**2))+PARJ(164)*(ATAN((XKU-SZM)/SZW)- 
-     &  ATAN((XKL-SZM)/SZW))) 
-      ENDIF 
-C...Total cross-section and fraction of hard photon events. 
-      PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH) 
-      PARJ(157)=RSUM*(1.+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD 
-      PARJ(144)=PARJ(157) 
-      PARJ(148)=PARJ(144)*86.8/ECM**2 
-      XTOT=PARJ(148) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/luzdis.F b/PYTHIA/jetset/luzdis.F
deleted file mode 100644 (file)
index 146ec22..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE LUZDIS(KFL1,KFL2,PR,Z) 
-C...Purpose: to generate the longitudinal splitting variable z. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUDAT1/,/LUDAT2/ 
-C...Check if heavy flavour fragmentation. 
-      KFLA=IABS(KFL1) 
-      KFLB=IABS(KFL2) 
-      KFLH=KFLA 
-      IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10) 
-C...Lund symmetric scaling function: determine parameters of shape. 
-      IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR. 
-     &MSTJ(11).GE.4) THEN 
-        FA=PARJ(41) 
-        IF(MSTJ(91).EQ.1) FA=PARJ(43) 
-        IF(KFLB.GE.10) FA=FA+PARJ(45) 
-        FBB=PARJ(42) 
-        IF(MSTJ(91).EQ.1) FBB=PARJ(44) 
-        FB=FBB*PR 
-        FC=1. 
-        IF(KFLA.GE.10) FC=FC-PARJ(45) 
-        IF(KFLB.GE.10) FC=FC+PARJ(45) 
-        IF(MSTJ(11).GE.4.AND.KFLH.GE.4.AND.KFLH.LE.5) THEN 
-          FRED=PARJ(46) 
-          IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47) 
-          FC=FC+FRED*FBB*PARF(100+KFLH)**2 
-        ELSEIF(MSTJ(11).GE.4.AND.KFLH.GE.6.AND.KFLH.LE.8) THEN 
-          FRED=PARJ(46) 
-          IF(MSTJ(11).EQ.5) FRED=PARJ(48) 
-          FC=FC+FRED*FBB*PMAS(KFLH,1)**2 
-        ENDIF 
-        MC=1 
-        IF(ABS(FC-1.).GT.0.01) MC=2 
-C...Determine position of maximum. Special cases for a = 0 or a = c. 
-        IF(FA.LT.0.02) THEN 
-          MA=1 
-          ZMAX=1. 
-          IF(FC.GT.FB) ZMAX=FB/FC 
-        ELSEIF(ABS(FC-FA).LT.0.01) THEN 
-          MA=2 
-          ZMAX=FB/(FB+FC) 
-        ELSE 
-          MA=3 
-          ZMAX=0.5*(FB+FC-SQRT((FB-FC)**2+4.*FA*FB))/(FC-FA) 
-          IF(ZMAX.GT.0.9999.AND.FB.GT.100.) ZMAX=MIN(ZMAX,1.-FA/FB) 
-        ENDIF 
-C...Subdivide z range if distribution very peaked near endpoint. 
-        MMAX=2 
-        IF(ZMAX.LT.0.1) THEN 
-          MMAX=1 
-          ZDIV=2.75*ZMAX 
-          IF(MC.EQ.1) THEN 
-            FINT=1.-LOG(ZDIV) 
-          ELSE 
-            ZDIVC=ZDIV**(1.-FC) 
-            FINT=1.+(1.-1./ZDIVC)/(FC-1.) 
-          ENDIF 
-        ELSEIF(ZMAX.GT.0.85.AND.FB.GT.1.) THEN 
-          MMAX=3 
-          FSCB=SQRT(4.+(FC/FB)**2) 
-          ZDIV=FSCB-1./ZMAX-(FC/FB)*LOG(ZMAX*0.5*(FSCB+FC/FB)) 
-          IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1.-ZMAX) 
-          ZDIV=MIN(ZMAX,MAX(0.,ZDIV)) 
-          FINT=1.+FB*(1.-ZDIV) 
-        ENDIF 
-C...Choice of z, preweighted for peaks at low or high z. 
-  100   Z=RLU(0) 
-        FPRE=1. 
-        IF(MMAX.EQ.1) THEN 
-          IF(FINT*RLU(0).LE.1.) THEN 
-            Z=ZDIV*Z 
-          ELSEIF(MC.EQ.1) THEN 
-            Z=ZDIV**Z 
-            FPRE=ZDIV/Z 
-          ELSE 
-            Z=1./(ZDIVC+Z*(1.-ZDIVC))**(1./(1.-FC)) 
-            FPRE=(ZDIV/Z)**FC 
-          ENDIF 
-        ELSEIF(MMAX.EQ.3) THEN 
-          IF(FINT*RLU(0).LE.1.) THEN 
-            Z=ZDIV+LOG(Z)/FB 
-            FPRE=EXP(FB*(Z-ZDIV)) 
-          ELSE 
-            Z=ZDIV+Z*(1.-ZDIV) 
-          ENDIF 
-        ENDIF 
-C...Weighting according to correct formula. 
-        IF(Z.LE.0..OR.Z.GE.1.) GOTO 100 
-        FEXP=FC*LOG(ZMAX/Z)+FB*(1./ZMAX-1./Z) 
-        IF(MA.GE.2) FEXP=FEXP+FA*LOG((1.-Z)/(1.-ZMAX)) 
-        FVAL=EXP(MAX(-50.,MIN(50.,FEXP))) 
-        IF(FVAL.LT.RLU(0)*FPRE) GOTO 100 
-C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c. 
-      ELSE 
-        FC=PARJ(50+MAX(1,KFLH)) 
-        IF(MSTJ(91).EQ.1) FC=PARJ(59) 
-  110   Z=RLU(0) 
-        IF(FC.GE.0..AND.FC.LE.1.) THEN 
-          IF(FC.GT.RLU(0)) Z=1.-Z**(1./3.) 
-        ELSEIF(FC.GT.-1.AND.FC.LT.0.) THEN 
-          IF(-4.*FC*Z*(1.-Z)**2.LT.RLU(0)*((1.-Z)**2-FC*Z)**2) GOTO 110 
-        ELSE 
-          IF(FC.GT.0.) Z=1.-Z**(1./FC) 
-          IF(FC.LT.0.) Z=Z**(-1./FC) 
-        ENDIF 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/plu.F b/PYTHIA/jetset/plu.F
deleted file mode 100644 (file)
index 7bbd6fa..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-C********************************************************************* 
-      FUNCTION PLU(I,J) 
-C...Purpose: to provide various real-valued event related data. 
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
-      DIMENSION PSUM(4) 
-C...Set default value. For I = 0 sum of momenta or charges, 
-C...or invariant mass of system. 
-      PLU=0. 
-      IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN 
-      ELSEIF(I.EQ.0.AND.J.LE.4) THEN 
-        DO 100 I1=1,N 
-        IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PLU=PLU+P(I1,J) 
-  100   CONTINUE 
-      ELSEIF(I.EQ.0.AND.J.EQ.5) THEN 
-        DO 120 J1=1,4 
-        PSUM(J1)=0. 
-        DO 110 I1=1,N 
-        IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+P(I1,J1) 
-  110   CONTINUE 
-  120 CONTINUE 
-        PLU=SQRT(MAX(0.,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2)) 
-      ELSEIF(I.EQ.0.AND.J.EQ.6) THEN 
-        DO 130 I1=1,N 
-        IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PLU=PLU+LUCHGE(K(I1,2))/3. 
-  130   CONTINUE 
-      ELSEIF(I.EQ.0) THEN 
-C...Direct readout of P matrix. 
-      ELSEIF(J.LE.5) THEN 
-        PLU=P(I,J) 
-C...Charge, total momentum, transverse momentum, transverse mass. 
-      ELSEIF(J.LE.12) THEN 
-        IF(J.EQ.6) PLU=LUCHGE(K(I,2))/3. 
-        IF(J.EQ.7.OR.J.EQ.8) PLU=P(I,1)**2+P(I,2)**2+P(I,3)**2 
-        IF(J.EQ.9.OR.J.EQ.10) PLU=P(I,1)**2+P(I,2)**2 
-        IF(J.EQ.11.OR.J.EQ.12) PLU=P(I,5)**2+P(I,1)**2+P(I,2)**2 
-        IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PLU=SQRT(PLU) 
-C...Theta and phi angle in radians or degrees. 
-      ELSEIF(J.LE.16) THEN 
-        IF(J.LE.14) PLU=ULANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2)) 
-        IF(J.GE.15) PLU=ULANGL(P(I,1),P(I,2)) 
-        IF(J.EQ.14.OR.J.EQ.16) PLU=PLU*180./PARU(1) 
-C...True rapidity, rapidity with pion mass, pseudorapidity. 
-      ELSEIF(J.LE.19) THEN 
-        PMR=0. 
-        IF(J.EQ.17) PMR=P(I,5) 
-        IF(J.EQ.18) PMR=ULMASS(211) 
-        PR=MAX(1E-20,PMR**2+P(I,1)**2+P(I,2)**2) 
-        PLU=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR), 
-     &  1E20)),P(I,3)) 
-C...Energy and momentum fractions (only to be used in CM frame). 
-      ELSEIF(J.LE.25) THEN 
-        IF(J.EQ.20) PLU=2.*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21) 
-        IF(J.EQ.21) PLU=2.*P(I,3)/PARU(21) 
-        IF(J.EQ.22) PLU=2.*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21) 
-        IF(J.EQ.23) PLU=2.*P(I,4)/PARU(21) 
-        IF(J.EQ.24) PLU=(P(I,4)+P(I,3))/PARU(21) 
-        IF(J.EQ.25) PLU=(P(I,4)-P(I,3))/PARU(21) 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/rlu.F b/PYTHIA/jetset/rlu.F
deleted file mode 100644 (file)
index 80b5db9..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-C********************************************************************* 
-      FUNCTION RLU(IDUMMY) 
-C...Purpose: to generate random numbers uniformly distributed between 
-C...0 and 1, excluding the endpoints. 
-      COMMON/LUDATR/MRLU(6),RRLU(100) 
-      SAVE /LUDATR/ 
-      EQUIVALENCE (MRLU1,MRLU(1)),(MRLU2,MRLU(2)),(MRLU3,MRLU(3)), 
-     &(MRLU4,MRLU(4)),(MRLU5,MRLU(5)),(MRLU6,MRLU(6)), 
-     &(RRLU98,RRLU(98)),(RRLU99,RRLU(99)),(RRLU00,RRLU(100)) 
-C...Initialize generation from given seed. 
-      IF(MRLU2.EQ.0) THEN 
-        IJ=MOD(MRLU1/30082,31329) 
-        KL=MOD(MRLU1,30082) 
-        I=MOD(IJ/177,177)+2 
-        J=MOD(IJ,177)+2 
-        K=MOD(KL/169,178)+1 
-        L=MOD(KL,169) 
-        DO 110 II=1,97 
-        S=0. 
-        T=0.5 
-        DO 100 JJ=1,24 
-        M=MOD(MOD(I*J,179)*K,179) 
-        I=J 
-        J=K 
-        K=M 
-        L=MOD(53*L+1,169) 
-        IF(MOD(L*M,64).GE.32) S=S+T 
-        T=0.5*T 
-  100   CONTINUE 
-        RRLU(II)=S 
-  110   CONTINUE 
-        TWOM24=1. 
-        DO 120 I24=1,24 
-        TWOM24=0.5*TWOM24 
-  120   CONTINUE 
-        RRLU98=362436.*TWOM24 
-        RRLU99=7654321.*TWOM24 
-        RRLU00=16777213.*TWOM24 
-        MRLU2=1 
-        MRLU3=0 
-        MRLU4=97 
-        MRLU5=33 
-      ENDIF 
-C...Generate next random number. 
-  130 RUNI=RRLU(MRLU4)-RRLU(MRLU5) 
-      IF(RUNI.LT.0.) RUNI=RUNI+1. 
-      RRLU(MRLU4)=RUNI 
-      MRLU4=MRLU4-1 
-      IF(MRLU4.EQ.0) MRLU4=97 
-      MRLU5=MRLU5-1 
-      IF(MRLU5.EQ.0) MRLU5=97 
-      RRLU98=RRLU98-RRLU99 
-      IF(RRLU98.LT.0.) RRLU98=RRLU98+RRLU00 
-      RUNI=RUNI-RRLU98 
-      IF(RUNI.LT.0.) RUNI=RUNI+1. 
-      IF(RUNI.LE.0.OR.RUNI.GE.1.) GOTO 130 
-C...Update counters. Random number to output. 
-      MRLU3=MRLU3+1 
-      IF(MRLU3.EQ.1000000000) THEN 
-        MRLU2=MRLU2+1 
-        MRLU3=0 
-      ENDIF 
-      RLU=RUNI 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/rluget.F b/PYTHIA/jetset/rluget.F
deleted file mode 100644 (file)
index d09695f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE RLUGET(LFN,MOVE) 
-C...Purpose: to dump the state of the random number generator on a file 
-C...for subsequent startup from this state onwards. 
-      COMMON/LUDATR/MRLU(6),RRLU(100) 
-      SAVE /LUDATR/ 
-      CHARACTER CHERR*8 
-C...Backspace required number of records (or as many as there are). 
-      IF(MOVE.LT.0) THEN 
-        NBCK=MIN(MRLU(6),-MOVE) 
-        DO 100 IBCK=1,NBCK 
-        BACKSPACE(LFN,ERR=110,IOSTAT=IERR) 
-  100   CONTINUE 
-        MRLU(6)=MRLU(6)-NBCK 
-      ENDIF 
-C...Unformatted write on unit LFN. 
-      WRITE(LFN,ERR=110,IOSTAT=IERR) (MRLU(I1),I1=1,5), 
-     &(RRLU(I2),I2=1,100) 
-      MRLU(6)=MRLU(6)+1 
-      RETURN 
-C...Write error. 
-  110 WRITE(CHERR,'(I8)') IERR 
-      CALL LUERRM(18,'(RLUGET:) error when accessing file, IOSTAT ='// 
-     &CHERR) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/rluset.F b/PYTHIA/jetset/rluset.F
deleted file mode 100644 (file)
index 0cab9ec..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-C********************************************************************* 
-      SUBROUTINE RLUSET(LFN,MOVE) 
-C...Purpose: to read a state of the random number generator from a file 
-C...for subsequent generation from this state onwards. 
-      COMMON/LUDATR/MRLU(6),RRLU(100) 
-      SAVE /LUDATR/ 
-      CHARACTER CHERR*8 
-C...Backspace required number of records (or as many as there are). 
-      IF(MOVE.LT.0) THEN 
-        NBCK=MIN(MRLU(6),-MOVE) 
-        DO 100 IBCK=1,NBCK 
-        BACKSPACE(LFN,ERR=120,IOSTAT=IERR) 
-  100   CONTINUE 
-        MRLU(6)=MRLU(6)-NBCK 
-      ENDIF 
-C...Unformatted read from unit LFN. 
-      NFOR=1+MAX(0,MOVE) 
-      DO 110 IFOR=1,NFOR 
-      READ(LFN,ERR=120,IOSTAT=IERR) (MRLU(I1),I1=1,5), 
-     &(RRLU(I2),I2=1,100) 
-  110 CONTINUE 
-      MRLU(6)=MRLU(6)+NFOR 
-      RETURN 
-C...Write error. 
-  120 WRITE(CHERR,'(I8)') IERR 
-      CALL LUERRM(18,'(RLUSET:) error when accessing file, IOSTAT ='// 
-     &CHERR) 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/ulalem.F b/PYTHIA/jetset/ulalem.F
deleted file mode 100644 (file)
index 602281b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-C********************************************************************* 
-      FUNCTION ULALEM(Q2) 
-C...Purpose: to calculate the running alpha_electromagnetic. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUDAT1/ 
-C...Calculate real part of photon vacuum polarization. 
-C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions. 
-C...For hadrons use parametrization of H. Burkhardt et al. 
-C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131. 
-      AEMPI=PARU(101)/(3.*PARU(1)) 
-      IF(MSTU(101).LE.0.OR.Q2.LT.2E-6) THEN 
-        RPIGG=0. 
-      ELSEIF(MSTU(101).EQ.2.AND.Q2.LT.PARU(104)) THEN
-        RPIGG=0.
-      ELSEIF(MSTU(101).EQ.2) THEN
-        RPIGG=1.-PARU(101)/PARU(103) 
-      ELSEIF(Q2.LT.0.09) THEN 
-        RPIGG=AEMPI*(13.4916+LOG(Q2))+0.00835*LOG(1.+Q2) 
-      ELSEIF(Q2.LT.9.) THEN 
-        RPIGG=AEMPI*(16.3200+2.*LOG(Q2))+0.00238*LOG(1.+3.927*Q2) 
-      ELSEIF(Q2.LT.1E4) THEN 
-        RPIGG=AEMPI*(13.4955+3.*LOG(Q2))+0.00165+0.00299*LOG(1.+Q2) 
-      ELSE 
-        RPIGG=AEMPI*(13.4955+3.*LOG(Q2))+0.00221+0.00293*LOG(1.+Q2) 
-      ENDIF 
-C...Calculate running alpha_em. 
-      ULALEM=PARU(101)/(1.-RPIGG) 
-      PARU(108)=ULALEM 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/ulalps.F b/PYTHIA/jetset/ulalps.F
deleted file mode 100644 (file)
index 7f8ce13..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-C********************************************************************* 
-      FUNCTION ULALPS(Q2) 
-C...Purpose: to give the value of alpha_strong. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUDAT1/,/LUDAT2/ 
-C...Constant alpha_strong trivial. 
-      IF(MSTU(111).LE.0) THEN 
-        ULALPS=PARU(111) 
-        MSTU(118)=MSTU(112) 
-        PARU(117)=0. 
-        PARU(118)=PARU(111) 
-        RETURN 
-      ENDIF 
-C...Find effective Q2, number of flavours and Lambda. 
-      Q2EFF=Q2 
-      IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114)) 
-      NF=MSTU(112) 
-      ALAM2=PARU(112)**2 
-  100 IF(NF.GT.MAX(2,MSTU(113))) THEN 
-        Q2THR=PARU(113)*PMAS(NF,1)**2 
-        IF(Q2EFF.LT.Q2THR) THEN 
-          NF=NF-1 
-          ALAM2=ALAM2*(Q2THR/ALAM2)**(2./(33.-2.*NF)) 
-          GOTO 100 
-        ENDIF 
-      ENDIF 
-  110 IF(NF.LT.MIN(8,MSTU(114))) THEN 
-        Q2THR=PARU(113)*PMAS(NF+1,1)**2 
-        IF(Q2EFF.GT.Q2THR) THEN 
-          NF=NF+1 
-          ALAM2=ALAM2*(ALAM2/Q2THR)**(2./(33.-2.*NF)) 
-          GOTO 110 
-        ENDIF 
-      ENDIF 
-      IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2 
-      PARU(117)=SQRT(ALAM2) 
-C...Evaluate first or second order alpha_strong. 
-      B0=(33.-2.*NF)/6. 
-      ALGQ=LOG(MAX(1.0001,Q2EFF/ALAM2)) 
-      IF(MSTU(111).EQ.1) THEN 
-        ULALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)) 
-      ELSE 
-        B1=(153.-19.*NF)/6. 
-        ULALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1.-B1*LOG(ALGQ)/ 
-     &  (B0**2*ALGQ))) 
-      ENDIF 
-      MSTU(118)=NF 
-      PARU(118)=ULALPS 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/ulangl.F b/PYTHIA/jetset/ulangl.F
deleted file mode 100644 (file)
index f9b6da0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-C********************************************************************* 
-      FUNCTION ULANGL(X,Y) 
-C...Purpose: to reconstruct an angle from given x and y coordinates. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      SAVE /LUDAT1/ 
-      ULANGL=0. 
-      R=SQRT(X**2+Y**2) 
-      IF(R.LT.1E-20) RETURN 
-      IF(ABS(X)/R.LT.0.8) THEN 
-        ULANGL=SIGN(ACOS(X/R),Y) 
-      ELSE 
-        ULANGL=ASIN(Y/R) 
-        IF(X.LT.0..AND.ULANGL.GE.0.) THEN 
-          ULANGL=PARU(1)-ULANGL 
-        ELSEIF(X.LT.0.) THEN 
-          ULANGL=-PARU(1)-ULANGL 
-        ENDIF 
-      ENDIF 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset/ulmass.F b/PYTHIA/jetset/ulmass.F
deleted file mode 100644 (file)
index 3116eca..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-C********************************************************************* 
-      FUNCTION ULMASS(KF) 
-C...Purpose: to give the mass of a particle/parton. 
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
-      SAVE /LUDAT1/,/LUDAT2/ 
-C...Reset variables. Compressed code. 
-      ULMASS=0. 
-      KFA=IABS(KF) 
-      KC=LUCOMP(KF) 
-      IF(KC.EQ.0) RETURN 
-      PARF(106)=PMAS(6,1) 
-      PARF(107)=PMAS(7,1) 
-      PARF(108)=PMAS(8,1) 
-C...Guarantee use of constituent masses for internal checks. 
-      IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.KFA.LE.10) THEN 
-        ULMASS=PARF(100+KFA) 
-        IF(MSTJ(93).EQ.2) ULMASS=MAX(0.,ULMASS-PARF(121)) 
-C...Masses that can be read directly off table. 
-      ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN 
-        ULMASS=PMAS(KC,1) 
-C...Find constituent partons and their masses. 
-      ELSE 
-        KFLA=MOD(KFA/1000,10) 
-        KFLB=MOD(KFA/100,10) 
-        KFLC=MOD(KFA/10,10) 
-        KFLS=MOD(KFA,10) 
-        KFLR=MOD(KFA/10000,10) 
-        PMA=PARF(100+KFLA) 
-        PMB=PARF(100+KFLB) 
-        PMC=PARF(100+KFLC) 
-C...Construct masses for various meson, diquark and baryon cases. 
-        IF(KFLA.EQ.0.AND.KFLR.EQ.0.AND.KFLS.LE.3) THEN 
-          IF(KFLS.EQ.1) PMSPL=-3./(PMB*PMC) 
-          IF(KFLS.GE.3) PMSPL=1./(PMB*PMC) 
-          ULMASS=PARF(111)+PMB+PMC+PARF(113)*PARF(101)**2*PMSPL 
-        ELSEIF(KFLA.EQ.0) THEN 
-          KMUL=2 
-          IF(KFLS.EQ.1) KMUL=3 
-          IF(KFLR.EQ.2) KMUL=4 
-          IF(KFLS.EQ.5) KMUL=5 
-          ULMASS=PARF(113+KMUL)+PMB+PMC 
-        ELSEIF(KFLC.EQ.0) THEN 
-          IF(KFLS.EQ.1) PMSPL=-3./(PMA*PMB) 
-          IF(KFLS.EQ.3) PMSPL=1./(PMA*PMB) 
-          ULMASS=2.*PARF(112)/3.+PMA+PMB+PARF(114)*PARF(101)**2*PMSPL 
-          IF(MSTJ(93).EQ.1) ULMASS=PMA+PMB 
-          IF(MSTJ(93).EQ.2) ULMASS=MAX(0.,ULMASS-PARF(122)- 
-     &    2.*PARF(112)/3.) 
-        ELSE 
-          IF(KFLS.EQ.2.AND.KFLA.EQ.KFLB) THEN 
-            PMSPL=1./(PMA*PMB)-2./(PMA*PMC)-2./(PMB*PMC) 
-          ELSEIF(KFLS.EQ.2.AND.KFLB.GE.KFLC) THEN 
-            PMSPL=-2./(PMA*PMB)-2./(PMA*PMC)+1./(PMB*PMC) 
-          ELSEIF(KFLS.EQ.2) THEN 
-            PMSPL=-3./(PMB*PMC) 
-          ELSE 
-            PMSPL=1./(PMA*PMB)+1./(PMA*PMC)+1./(PMB*PMC) 
-          ENDIF 
-          ULMASS=PARF(112)+PMA+PMB+PMC+PARF(114)*PARF(101)**2*PMSPL 
-        ENDIF 
-      ENDIF 
-C...Optional mass broadening according to truncated Breit-Wigner 
-C...(either in m or in m^2). 
-      IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1E-4) THEN 
-        IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN 
-          ULMASS=ULMASS+0.5*PMAS(KC,2)*TAN((2.*RLU(0)-1.)* 
-     &    ATAN(2.*PMAS(KC,3)/PMAS(KC,2))) 
-        ELSE 
-          PM0=ULMASS 
-          PMLOW=ATAN((MAX(0.,PM0-PMAS(KC,3))**2-PM0**2)/ 
-     &    (PM0*PMAS(KC,2))) 
-          PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2))) 
-          ULMASS=SQRT(MAX(0.,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+ 
-     &    (PMUPP-PMLOW)*RLU(0)))) 
-        ENDIF 
-      ENDIF 
-      MSTJ(93)=0 
-      RETURN 
-      END 
diff --git a/PYTHIA/jetset74/hepevt.inc b/PYTHIA/jetset74/hepevt.inc
deleted file mode 100644 (file)
index 31b6d89..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.2  1996/05/24 16:02:35  cernlib
-* Add Double Precision  PHEP,VHEP
-*
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_HEPEVT_INC
-#define CERNLIB_JETSET74_HEPEVT_INC
-*
-*
-* hepevt.inc
-*
-#include "jetset74/nmxhep.inc"
-      COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
-     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
-      DOUBLE PRECISION PHEP,VHEP
-      SAVE /HEPEVT/
-
-#endif
diff --git a/PYTHIA/jetset74/ludat1.inc b/PYTHIA/jetset74/ludat1.inc
deleted file mode 100644 (file)
index 403b443..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_LUDAT1_INC
-#define CERNLIB_JETSET74_LUDAT1_INC
-*
-*
-* ludat1.inc
-*
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-
-#endif
diff --git a/PYTHIA/jetset74/ludat2.inc b/PYTHIA/jetset74/ludat2.inc
deleted file mode 100644 (file)
index 78fe591..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_LUDAT2_INC
-#define CERNLIB_JETSET74_LUDAT2_INC
-*
-*
-* ludat2.inc
-*
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      SAVE /LUDAT2/
-
-#endif
diff --git a/PYTHIA/jetset74/ludat3.inc b/PYTHIA/jetset74/ludat3.inc
deleted file mode 100644 (file)
index 4e9739e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_LUDAT3_INC
-#define CERNLIB_JETSET74_LUDAT3_INC
-*
-*
-* ludat3.inc
-*
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      SAVE /LUDAT3/
-
-#endif
diff --git a/PYTHIA/jetset74/ludat4.inc b/PYTHIA/jetset74/ludat4.inc
deleted file mode 100644 (file)
index aa16545..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_LUDAT4_INC
-#define CERNLIB_JETSET74_LUDAT4_INC
-*
-*
-* ludat4.inc
-*
-      COMMON/LUDAT4/CHAF(500)
-      CHARACTER CHAF*8
-      SAVE /LUDAT4/
-
-#endif
diff --git a/PYTHIA/jetset74/ludatr.inc b/PYTHIA/jetset74/ludatr.inc
deleted file mode 100644 (file)
index 610dbc4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_LUDATR_INC
-#define CERNLIB_JETSET74_LUDATR_INC
-*
-*
-* ludatr.inc
-*
-      COMMON/LUDATR/MRLU(6),RRLU(100)
-      SAVE /LUDATR/
-
-#endif
diff --git a/PYTHIA/jetset74/lujets.inc b/PYTHIA/jetset74/lujets.inc
deleted file mode 100644 (file)
index 9373161..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_LUJETS_INC
-#define CERNLIB_JETSET74_LUJETS_INC
-*
-*
-* lujets.inc
-*
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      SAVE /LUJETS/
-
-#endif
diff --git a/PYTHIA/jetset74/nmxhep.inc b/PYTHIA/jetset74/nmxhep.inc
deleted file mode 100644 (file)
index c6db2b8..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_NMXHEP_INC
-#define CERNLIB_JETSET74_NMXHEP_INC
-*
-*
-* nmxhep.inc
-*
-      PARAMETER (NMXHEP=2000)
-
-#endif
diff --git a/PYTHIA/jetset74/pilot.h b/PYTHIA/jetset74/pilot.h
deleted file mode 100644 (file)
index 241e951..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#if 0
-* This pilot patch was created from jetset74.car patch _jetset
-#endif
diff --git a/PYTHIA/jetset74/pyint1.inc b/PYTHIA/jetset74/pyint1.inc
deleted file mode 100644 (file)
index 7c915d9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_PYINT1_INC
-#define CERNLIB_JETSET74_PYINT1_INC
-*
-*
-* pyint1.inc
-*
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /PYINT1/
-
-#endif
diff --git a/PYTHIA/jetset74/pyint2.inc b/PYTHIA/jetset74/pyint2.inc
deleted file mode 100644 (file)
index 8d93071..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_PYINT2_INC
-#define CERNLIB_JETSET74_PYINT2_INC
-*
-*
-* pyint2.inc
-*
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      SAVE /PYINT2/
-
-#endif
diff --git a/PYTHIA/jetset74/pyint3.inc b/PYTHIA/jetset74/pyint3.inc
deleted file mode 100644 (file)
index e39830c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_PYINT3_INC
-#define CERNLIB_JETSET74_PYINT3_INC
-*
-*
-* pyint3.inc
-*
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
-      SAVE /PYINT3/
-
-#endif
diff --git a/PYTHIA/jetset74/pyint4.inc b/PYTHIA/jetset74/pyint4.inc
deleted file mode 100644 (file)
index 107e3b2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_PYINT4_INC
-#define CERNLIB_JETSET74_PYINT4_INC
-*
-*
-* pyint4.inc
-*
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      SAVE /PYINT4/
-
-#endif
diff --git a/PYTHIA/jetset74/pyint5.inc b/PYTHIA/jetset74/pyint5.inc
deleted file mode 100644 (file)
index bfdea5a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_PYINT5_INC
-#define CERNLIB_JETSET74_PYINT5_INC
-*
-*
-* pyint5.inc
-*
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      SAVE /PYINT5/
-
-#endif
diff --git a/PYTHIA/jetset74/pyint6.inc b/PYTHIA/jetset74/pyint6.inc
deleted file mode 100644 (file)
index 5256b25..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_PYINT6_INC
-#define CERNLIB_JETSET74_PYINT6_INC
-*
-*
-* pyint6.inc
-*
-      COMMON/PYINT6/PROC(0:200)
-      CHARACTER PROC*28
-      SAVE /PYINT6/
-
-#endif
diff --git a/PYTHIA/jetset74/pypars.inc b/PYTHIA/jetset74/pypars.inc
deleted file mode 100644 (file)
index cd301bf..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_PYPARS_INC
-#define CERNLIB_JETSET74_PYPARS_INC
-*
-*
-* pypars.inc
-*
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      SAVE /PYPARS/
-
-#endif
diff --git a/PYTHIA/jetset74/pysubs.inc b/PYTHIA/jetset74/pysubs.inc
deleted file mode 100644 (file)
index 416b3cf..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_PYSUBS_INC
-#define CERNLIB_JETSET74_PYSUBS_INC
-*
-*
-* pysubs.inc
-*
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      SAVE /PYSUBS/
-
-#endif
diff --git a/PYTHIA/jetset74/rkbbvc.inc b/PYTHIA/jetset74/rkbbvc.inc
deleted file mode 100644 (file)
index 267a9c6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_RKBBVC_INC
-#define CERNLIB_JETSET74_RKBBVC_INC
-*
-*
-* rkbbvc.inc
-*
-      COMMON/RKBBVC/RKMQ,RKMZ,RKGZ,RKVQ,RKAQ,RKVL,RKAL
-      SAVE /RKBBVC/
-
-#endif
diff --git a/PYTHIA/jetset74/rkzfco.inc b/PYTHIA/jetset74/rkzfco.inc
deleted file mode 100644 (file)
index 1f94113..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_RKZFCO_INC
-#define CERNLIB_JETSET74_RKZFCO_INC
-*
-*
-* rkzfco.inc
-*
-      COMMON/RKZFCO/ANSF,DONF
-      SAVE /RKZFCO/
-      COMPLEX ANSF(-1:1,1:4,1:8,-1:1,1:4)
-      INTEGER DONF(-1:1,1:4,1:8,-1:1,1:4)
-
-#endif
diff --git a/PYTHIA/jetset74/rkzsco.inc b/PYTHIA/jetset74/rkzsco.inc
deleted file mode 100644 (file)
index f27fda1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/03/08 17:32:19  mclareni
-* jetset74
-*
-*
-#ifndef CERNLIB_JETSET74_RKZSCO_INC
-#define CERNLIB_JETSET74_RKZSCO_INC
-*
-*
-* rkzsco.inc
-*
-      COMMON/RKZSCO/ANSS,DONS
-      SAVE /RKZSCO/
-      COMPLEX ANSS(-1:1,1:4,-1:1,1:4)
-      INTEGER DONS(-1:1,1:4,-1:1,1:4)
-
-#endif
diff --git a/PYTHIA/libpythia.pkg b/PYTHIA/libpythia.pkg
deleted file mode 100644 (file)
index 5f0c40b..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-FSRCS= \
-jetset/lu1ent.F \
-jetset/klu.F \
-jetset/lu2ent.F \
-jetset/lu3ent.F \
-jetset/lu4ent.F \
-jetset/luboei.F \
-jetset/lucell.F \
-jetset/luchge.F \
-jetset/luclus.F \
-jetset/lucomp.F \
-jetset/ludata.F \
-jetset/ludecy.F \
-jetset/luedit.F \
-jetset/lueevt.F \
-jetset/luerrm.F \
-jetset/luexec.F \
-jetset/lufowo.F \
-jetset/lugive.F \
-jetset/luhepc.F \
-jetset/luindf.F \
-jetset/lujmas.F \
-jetset/lujoin.F \
-jetset/lukfdi.F \
-jetset/lulist.F \
-jetset/lulogo.F \
-jetset/luname.F \
-jetset/luonia.F \
-jetset/luprep.F \
-jetset/luptdi.F \
-jetset/luradk.F \
-jetset/lurobo.F \
-jetset/lushow.F \
-jetset/lusphe.F \
-jetset/lustrf.F \
-jetset/lutabu.F \
-jetset/lutaud.F \
-jetset/lutest.F \
-jetset/luthru.F \
-jetset/luupda.F \
-jetset/lux3jt.F \
-jetset/lux4jt.F \
-jetset/luxdif.F \
-jetset/luxjet.F \
-jetset/luxkfl.F \
-jetset/luxtot.F \
-jetset/luzdis.F \
-jetset/plu.F \
-jetset/rlu.F \
-jetset/rluget.F \
-jetset/rluset.F \
-jetset/ulalem.F \
-jetset/ulalps.F \
-jetset/ulangl.F \
-jetset/ulmass.F \
-pythia/pyctq2.F \
-pythia/pydata.F \
-pythia/pydiff.F \
-pythia/pydocu.F \
-pythia/pyevnt.F \
-pythia/pyevwt.F \
-pythia/pyfram.F \
-pythia/pygamm.F \
-pythia/pygano.F \
-pythia/pygbeh.F \
-pythia/pygdir.F \
-pythia/pyggam.F \
-pythia/pygvmd.F \
-pythia/pyhfth.F \
-pythia/pyi3au.F \
-pythia/pyinbm.F \
-pythia/pyinit.F \
-pythia/pyinki.F \
-pythia/pyinpr.F \
-pythia/pyinre.F \
-pythia/pykcut.F \
-pythia/pyklim.F \
-pythia/pykmap.F \
-pythia/pymaxi.F \
-pythia/pymult.F \
-pythia/pyofsh.F \
-pythia/pypile.F \
-pythia/pyqqbh.F \
-pythia/pyrand.F \
-pythia/pyremn.F \
-pythia/pyresd.F \
-pythia/pysave.F \
-pythia/pyscat.F \
-pythia/pysigh.F \
-pythia/pyspen.F \
-pythia/pyspli.F \
-pythia/pysspa.F \
-pythia/pystat.F \
-pythia/pystel.F \
-pythia/pystfl.F \
-pythia/pystfu.F \
-pythia/pystga.F \
-pythia/pystpi.F \
-pythia/pystpr.F \
-pythia/pytest.F \
-pythia/pyupev.F \
-pythia/pyupin.F \
-pythia/pywaux.F \
-pythia/pywidt.F \
-pythia/pyxtot.F \
-pythia/rkbbv.F \
-pythia/rkdot.F \
-pythia/rkhlpk.F \
-pythia/rkrand.F \
-pythia/rkzf.F \
-pythia/rkzpr.F \
-pythia/rkzsf.F 
\ No newline at end of file
diff --git a/PYTHIA/pythia/pdfset.F b/PYTHIA/pythia/pdfset.F
deleted file mode 100644 (file)
index 30c11df..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PDFSET(PARM,VALUE)
-C...Dummy routine, to be removed when PDFLIB is to be linked.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-      CHARACTER*20 PARM(20)
-      DOUBLE PRECISION VALUE(20)
-C...Stop program if this routine is ever called.
-      WRITE(MSTU(11),5000)
-      IF(RLU(0).LT.10.) STOP
-      PARM(20)=PARM(1)
-      VALUE(20)=VALUE(1)
-C...Format for error printout.
- 5000 FORMAT(1X,'Error: you did not link PDFLIB correctly.'/
-     &1X,'Dummy routine PDFSET in PYTHIA file called instead.'/
-     &1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyctq2.F b/PYTHIA/pythia/pyctq2.F
deleted file mode 100644 (file)
index f63e087..0000000
+++ /dev/null
@@ -1,447 +0,0 @@
-C*********************************************************************
-      FUNCTION PYCTQ2 (Iset, Iprt, X, Q)
-C...This routine gives the CTEQ 2 parton distribution function sets in
-C...parametrized form. It is adapted from the revised parametrization
-C...with extended range of November 12, 1993.
-C...Authors: J. Botts, H.L. Lai, J.G. Morfin, J.F. Owens, J. Qiu,
-C...W.K. Tung and H. Weerts.
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      SAVE /LUDAT2/
-C...Data on Lambda values of fits, minimum Q and quark masses.
-      DIMENSION Alm(6), Qms(4:6)
-      DATA Alm / 0.213, 0.208, 0.208, 0.322, 0.190, 0.235 /
-      DATA Qmn / 1.60 /, (Qms(I), I=4,6) / 1.60, 5.00, 180.0 /
-      Qms(6) = PMAS(6,1)
-C....Check flavour thresholds. Set up Qi for SB.
-      Ip = IABS(Iprt)
-      If (Ip .GE. 4) then
-        If (Q .LE. Qms(Ip)) then
-          PYCTQ2 = 0.0
-          Return
-        Endif
-        Qi = Qms(ip)
-      Else
-        Qi = Qmn
-      Endif
-C...Use "standard lambda" of parametrization program for expansion.
-      Alam = Alm (Iset)
-      SBL = LOG(Q/Alam) / LOG(Qi/Alam)
-      SB = LOG (SBL)
-      SB2 = SB*SB
-      SB3 = SB2*SB
-C...Expansion for run le26 - CTEQ2M
-      If (Iset .EQ. 1) then
-      If (Iprt .EQ. 2) then
-      A0=Exp( 0.2143E+00+0.8417E+00*SB -0.2451E+01*SB2+0.9875E+00*SB3)
-      A1= 0.5209E+00-0.2384E+00*SB +0.5086E+00*SB2-0.2123E+00*SB3
-      A2= 0.3178E+01+0.5258E+01*SB -0.8102E+01*SB2+0.3334E+01*SB3
-      A3=-0.8537E+00+0.5921E+01*SB -0.1007E+02*SB2+0.4146E+01*SB3
-      A4= 0.1821E+01+0.2822E-01*SB +0.1662E+00*SB2-0.1058E+00*SB3
-      A5= 0.0000E+00-0.1090E+01*SB +0.3136E+01*SB2-0.1301E+01*SB3
-      Elseif (Iprt .EQ. 1) then
-      A0=Exp(-0.1314E+01-0.1342E-01*SB +0.1136E+00*SB2-0.1557E+00*SB3)
-      A1= 0.2780E+00+0.2558E-01*SB +0.4467E-02*SB2-0.2472E-02*SB3
-      A2= 0.3672E+01+0.5324E+00*SB +0.3531E-01*SB2+0.7928E-03*SB3
-      A3= 0.2957E+02-0.2000E+02*SB +0.5929E+01*SB2+0.3390E+00*SB3
-      A4= 0.8069E+00-0.2877E+00*SB +0.3574E-01*SB2+0.5622E-02*SB3
-      A5= 0.0000E+00+0.2287E+00*SB -0.4052E-01*SB2+0.5589E-01*SB3
-      Elseif (Iprt .EQ. 0) then
-      A0=Exp(-0.1059E+00-0.1461E+01*SB -0.2544E+00*SB2+0.4526E-01*SB3)
-      A1=-0.2578E+00+0.1385E+00*SB -0.1383E+00*SB2+0.3811E-01*SB3
-      A2= 0.5195E+01+0.9648E+00*SB -0.2103E+00*SB2-0.6701E-01*SB3
-      A3= 0.5131E+01+0.2151E+01*SB -0.2880E+01*SB2+0.6608E+00*SB3
-      A4= 0.1118E+01+0.2636E+00*SB -0.5140E+00*SB2+0.1613E+00*SB3
-      A5= 0.0000E+00+0.2456E+01*SB -0.8741E+00*SB2+0.2136E+00*SB3
-      Elseif (Iprt .EQ. -1) then
-      A0=Exp(-0.2732E+00-0.3523E+01*SB +0.3657E+01*SB2-0.1415E+01*SB3)
-      A1=-0.3807E+00+0.1211E+00*SB -0.1231E+00*SB2+0.3753E-01*SB3
-      A2= 0.9698E+01-0.2596E+01*SB +0.2412E+01*SB2-0.9257E+00*SB3
-      A3=-0.6165E+00+0.1120E+01*SB -0.1708E+01*SB2+0.6383E+00*SB3
-      A4= 0.7292E-01-0.1339E+00*SB +0.2104E+00*SB2-0.7987E-01*SB3
-      A5=-0.1370E+01+0.2452E+01*SB -0.1804E+01*SB2+0.6459E+00*SB3
-      Elseif (Iprt .EQ. -2) then
-      A0=Exp(-0.2319E+01-0.3182E+01*SB +0.3572E+01*SB2-0.1431E+01*SB3)
-      A1=-0.2622E+00+0.3085E+00*SB -0.4394E+00*SB2+0.1496E+00*SB3
-      A2= 0.9481E+01-0.3627E+01*SB +0.5640E+01*SB2-0.2265E+01*SB3
-      A3= 0.5000E+02-0.1851E+02*SB +0.2640E+01*SB2-0.6001E+00*SB3
-      A4= 0.1566E+01-0.7375E+00*SB +0.8736E+00*SB2-0.3449E+00*SB3
-      A5=-0.7983E-01+0.3236E+01*SB -0.3373E+01*SB2+0.1236E+01*SB3
-      Elseif (Iprt .EQ. -3) then
-      A0=Exp(-0.1855E+01-0.5302E+01*SB +0.8433E+00*SB2-0.1236E+00*SB3)
-      A1=-0.4000E-02-0.1345E+01*SB +0.1192E+01*SB2-0.3039E+00*SB3
-      A2= 0.6870E+01+0.1246E+01*SB -0.8968E+00*SB2-0.9791E-01*SB3
-      A3= 0.0000E+00+0.4616E+01*SB +0.1026E+02*SB2+0.2844E+02*SB3
-      A4= 0.1000E-02+0.4098E+00*SB -0.4250E+00*SB2+0.1100E+00*SB3
-      A5= 0.0000E+00-0.2151E+01*SB +0.2991E+01*SB2-0.7717E+00*SB3
-      Elseif (Iprt .EQ. -4) then
-      A0=SB** 0.7722E+00*Exp(-0.7241E+01-0.7885E-01*SB -0.1124E+01*SB2)
-      A1=-0.3971E+00+0.9132E+00*SB -0.1175E+01*SB2+0.3573E+00*SB3
-      A2= 0.6367E+01-0.6565E+01*SB +0.8114E+01*SB2-0.2666E+01*SB3
-      A3= 0.2878E+02-0.2000E+02*SB +0.7000E+00*SB2+0.3000E+02*SB3
-      A4= 0.1010E+00-0.4592E+00*SB +0.5877E+00*SB2-0.1472E+00*SB3
-      A5= 0.1749E+00+0.3875E+01*SB -0.3768E+01*SB2+0.1316E+01*SB3
-      Elseif (Iprt .EQ. -5) then
-      A0=SB** 0.1299E+00*Exp(-0.4868E+01-0.4339E+01*SB +0.7080E+00*SB2)
-      A1=-0.1705E+00-0.3381E+00*SB +0.5287E+00*SB2-0.2644E+00*SB3
-      A2= 0.5610E+01-0.1365E+01*SB +0.1835E+01*SB2-0.5655E+00*SB3
-      A3=-0.1001E+01+0.3044E+01*SB +0.2680E+01*SB2+0.1426E+02*SB3
-      A4= 0.3814E-02+0.3430E+00*SB -0.6926E+00*SB2+0.3486E+00*SB3
-      A5= 0.1156E+01+0.2016E+01*SB -0.1674E+01*SB2+0.5981E+00*SB3
-      Elseif (Iprt .EQ. -6) then
-      A0=SB** 0.9819E+00*Exp(-0.7859E+01+0.6819E+00*SB -0.3386E+01*SB2)
-      A1=-0.1055E+00-0.1413E+01*SB +0.3451E+01*SB2-0.2466E+01*SB3
-      A2= 0.4055E+01+0.8107E+01*SB -0.1576E+02*SB2+0.8094E+01*SB3
-      A3= 0.3799E+01+0.9616E+01*SB -0.1984E+02*SB2+0.2641E+02*SB3
-      A4= 0.3619E+00-0.8627E+00*SB -0.9390E-01*SB2+0.9196E+00*SB3
-      A5= 0.3779E+01-0.6073E+01*SB +0.9999E+01*SB2-0.4304E+01*SB3
-      Endif
-C...Expansion for run sa17 - CTEQ2MS
-      Elseif (Iset .EQ. 2) then
-      If (Iprt .EQ. 2) then
-      A0=Exp( 0.2790E+00+0.7294E+00*SB -0.2202E+01*SB2+0.8599E+00*SB3)
-      A1= 0.5380E+00-0.2261E+00*SB +0.4636E+00*SB2-0.1871E+00*SB3
-      A2= 0.3259E+01+0.2141E+01*SB -0.2947E+01*SB2+0.1245E+01*SB3
-      A3=-0.8390E+00+0.1448E+01*SB -0.2331E+01*SB2+0.8658E+00*SB3
-      A4= 0.1847E+01-0.3943E+01*SB +0.5998E+01*SB2-0.2191E+01*SB3
-      A5= 0.0000E+00-0.9719E+00*SB +0.2830E+01*SB2-0.1137E+01*SB3
-      Elseif (Iprt .EQ. 1) then
-      A0=Exp(-0.1318E+01+0.2328E-01*SB +0.5179E-01*SB2-0.1305E+00*SB3)
-      A1= 0.2760E+00+0.4429E-01*SB -0.2626E-01*SB2+0.7143E-02*SB3
-      A2= 0.3660E+01+0.5232E+00*SB +0.5491E-01*SB2-0.4115E-02*SB3
-      A3= 0.2910E+02-0.2000E+02*SB +0.6631E+01*SB2-0.3050E-01*SB3
-      A4= 0.8010E+00-0.2688E+00*SB +0.1051E-01*SB2+0.1195E-01*SB3
-      A5= 0.0000E+00+0.2887E+00*SB -0.1398E+00*SB2+0.8194E-01*SB3
-      Elseif (Iprt .EQ. 0) then
-      A0=Exp(-0.1623E+01-0.7232E+00*SB +0.1889E+00*SB2+0.1140E+00*SB3)
-      A1=-0.5000E+00+0.8611E-01*SB +0.2203E-01*SB2-0.1401E-01*SB3
-      A2= 0.3821E+01+0.8976E+00*SB +0.1400E+00*SB2-0.9163E-01*SB3
-      A3= 0.5809E+01-0.5060E+01*SB +0.3808E+00*SB2+0.2519E+00*SB3
-      A4= 0.4500E+00-0.5121E+00*SB +0.1979E+00*SB2-0.2705E-01*SB3
-      A5= 0.0000E+00+0.1210E+01*SB -0.2921E+00*SB2+0.1240E+00*SB3
-      Elseif (Iprt .EQ. -1) then
-      A0=Exp(-0.6986E-01-0.5954E+00*SB -0.1582E+01*SB2+0.5104E+00*SB3)
-      A1=-0.8461E+00+0.2127E+00*SB +0.9425E-01*SB2-0.5264E-01*SB3
-      A2= 0.1200E+02+0.1659E+01*SB -0.5354E+01*SB2+0.1795E+01*SB3
-      A3= 0.2958E+02+0.3000E+02*SB +0.3000E+02*SB2-0.1965E+02*SB3
-      A4= 0.4000E+01-0.4865E+00*SB +0.9460E+00*SB2+0.3432E+00*SB3
-      A5=-0.3378E+01+0.1656E+01*SB +0.1123E+01*SB2-0.4667E+00*SB3
-      Elseif (Iprt .EQ. -2) then
-      A0=Exp(-0.1929E+01-0.2626E+01*SB +0.2926E+01*SB2-0.1297E+01*SB3)
-      A1=-0.6627E+00+0.4561E+00*SB -0.3818E+00*SB2+0.1239E+00*SB3
-      A2= 0.9506E+01-0.2724E+01*SB +0.4283E+01*SB2-0.1804E+01*SB3
-      A3= 0.1897E+02+0.1642E+01*SB -0.8390E+01*SB2+0.3894E+01*SB3
-      A4= 0.1024E+01-0.1786E+00*SB +0.4535E+00*SB2-0.2075E+00*SB3
-      A5=-0.1746E+01+0.3572E+01*SB -0.2908E+01*SB2+0.1093E+01*SB3
-      Elseif (Iprt .EQ. -3) then
-      A0=Exp(-0.4913E+00-0.6866E+01*SB +0.1432E+01*SB2-0.1749E+00*SB3)
-      A1=-0.1157E+00-0.1567E+01*SB +0.1439E+01*SB2-0.3724E+00*SB3
-      A2= 0.7730E+01+0.9748E+00*SB -0.1157E+01*SB2-0.8358E-02*SB3
-      A3=-0.6050E+00+0.1835E+01*SB +0.3788E+01*SB2+0.3000E+02*SB3
-      A4= 0.1620E-08+0.4590E+00*SB -0.4070E+00*SB2+0.8900E-01*SB3
-      A5=-0.7048E+00-0.2505E+01*SB +0.4000E+01*SB2-0.1161E+01*SB3
-      Elseif (Iprt .EQ. -4) then
-      A0=SB** 0.7393E+00*Exp(-0.6518E+01-0.3998E+00*SB -0.1111E+01*SB2)
-      A1=-0.6482E+00+0.1125E+01*SB -0.1290E+01*SB2+0.3940E+00*SB3
-      A2= 0.8487E+01-0.9235E+01*SB +0.9353E+01*SB2-0.2913E+01*SB3
-      A3= 0.2265E+02-0.1999E+02*SB +0.4105E+01*SB2+0.2144E+02*SB3
-      A4= 0.8990E-01-0.4372E+00*SB +0.5941E+00*SB2-0.1469E+00*SB3
-      A5=-0.9690E+00+0.5068E+01*SB -0.4368E+01*SB2+0.1503E+01*SB3
-      Elseif (Iprt .EQ. -5) then
-      A0=SB** 0.9880E+00*Exp(-0.7180E+01-0.2494E+01*SB +0.3561E-01*SB2)
-      A1=-0.4301E+00-0.2611E+00*SB +0.3914E+00*SB2-0.1638E+00*SB3
-      A2= 0.5137E+01+0.1506E+01*SB -0.9588E+00*SB2-0.1596E+00*SB3
-      A3= 0.1483E+02+0.2998E+02*SB +0.2357E+02*SB2-0.9353E+01*SB3
-      A4= 0.2426E+00+0.1371E+00*SB -0.3791E+00*SB2+0.1948E+00*SB3
-      A5= 0.1463E+01+0.1907E+00*SB +0.3557E+00*SB2+0.2097E-01*SB3
-      Elseif (Iprt .EQ. -6) then
-      A0=SB** 0.1005E+01*Exp(-0.5255E+01-0.9866E-01*SB -0.2737E+01*SB2)
-      A1=-0.3140E+00-0.2055E+00*SB +0.5594E+00*SB2-0.2960E+00*SB3
-      A2= 0.9227E+01-0.4569E+01*SB -0.9724E+01*SB2+0.1026E+02*SB3
-      A3= 0.1131E+02-0.1972E+02*SB -0.1107E+02*SB2+0.2311E+02*SB3
-      A4= 0.1488E+01+0.1737E+01*SB +0.4323E+01*SB2-0.9925E+01*SB3
-      A5= 0.1895E+01-0.7350E+00*SB +0.3780E+01*SB2-0.1408E+01*SB3
-      Endif
-      Elseif (Iset .EQ. 3) then
-C...Expansion for run fa06 - CTEQ2MF
-      If (Iprt .EQ. 2) then
-      A0=Exp(-0.7913E+00-0.2789E+01*SB -0.7289E-01*SB2+0.1770E+00*SB3)
-      A1= 0.4942E+00-0.7886E-01*SB +0.9057E-01*SB2-0.5259E-01*SB3
-      A2= 0.3727E+01+0.1089E+01*SB -0.1004E+01*SB2+0.4345E+00*SB3
-      A3= 0.1944E+01+0.7846E+01*SB +0.7984E+01*SB2+0.5548E+01*SB3
-      A4= 0.2940E-02+0.8428E-04*SB +0.1266E+00*SB2-0.3517E-01*SB3
-      A5=-0.1060E+00-0.1192E-01*SB +0.1130E+01*SB2-0.4527E+00*SB3
-      Elseif (Iprt .EQ. 1) then
-      A0=Exp(-0.1344E+01+0.7859E-02*SB +0.4623E-01*SB2-0.1273E+00*SB3)
-      A1= 0.2760E+00+0.4201E-01*SB -0.1795E-01*SB2+0.3212E-02*SB3
-      A2= 0.3660E+01+0.5247E+00*SB +0.4405E-01*SB2+0.1391E-02*SB3
-      A3= 0.2981E+02-0.2000E+02*SB +0.6566E+01*SB2+0.2479E-01*SB3
-      A4= 0.7950E+00-0.2732E+00*SB +0.2470E-01*SB2+0.6157E-02*SB3
-      A5= 0.0000E+00+0.2793E+00*SB -0.9197E-01*SB2+0.5953E-01*SB3
-      Elseif (Iprt .EQ. 0) then
-      A0=Exp( 0.9746E+00-0.3252E+01*SB +0.1664E+01*SB2-0.6410E+00*SB3)
-      A1=-0.5271E-02-0.3198E+00*SB +0.1279E+00*SB2-0.1256E-02*SB3
-      A2= 0.5740E+01-0.3139E+01*SB +0.3841E+01*SB2-0.1415E+01*SB3
-      A3= 0.7161E-01-0.4363E+01*SB +0.4925E+01*SB2-0.1614E+01*SB3
-      A4= 0.1860E+01+0.1342E+01*SB -0.2234E+01*SB2+0.1047E+01*SB3
-      A5= 0.7409E-01+0.2390E+01*SB -0.1457E+01*SB2+0.5853E+00*SB3
-      Elseif (Iprt .EQ. -1) then
-      A0=Exp(-0.8454E+00-0.3334E+01*SB +0.3591E+01*SB2-0.1485E+01*SB3)
-      A1=-0.2826E-02-0.2810E+00*SB -0.3809E-01*SB2+0.6585E-01*SB3
-      A2= 0.9139E+01-0.2811E+01*SB +0.4730E+01*SB2-0.2157E+01*SB3
-      A3=-0.3120E+00+0.1217E+01*SB -0.1726E+01*SB2+0.6220E+00*SB3
-      A4= 0.1793E-01-0.4608E-01*SB +0.5294E-01*SB2-0.1709E-01*SB3
-      A5=-0.1471E+00+0.1104E+01*SB -0.1358E+01*SB2+0.7200E+00*SB3
-      Elseif (Iprt .EQ. -2) then
-      A0=Exp(-0.1398E+01-0.3536E+01*SB +0.3849E+01*SB2-0.1549E+01*SB3)
-      A1=-0.1332E-01-0.2155E-01*SB -0.3404E+00*SB2+0.1569E+00*SB3
-      A2= 0.9981E+01-0.3499E+01*SB +0.5448E+01*SB2-0.2198E+01*SB3
-      A3= 0.3736E+02-0.2000E+02*SB +0.6675E+01*SB2-0.7276E+00*SB3
-      A4= 0.1705E+01-0.1013E+01*SB +0.1122E+01*SB2-0.4057E+00*SB3
-      A5=-0.1189E-01+0.2698E+01*SB -0.3429E+01*SB2+0.1389E+01*SB3
-      Elseif (Iprt .EQ. -3) then
-      A0=Exp(-0.2979E+01-0.6085E+01*SB +0.2428E+01*SB2-0.6482E+00*SB3)
-      A1=-0.1372E+00-0.1281E+00*SB +0.1587E+00*SB2-0.9637E-01*SB3
-      A2= 0.7009E+01-0.1609E+01*SB +0.2765E+01*SB2-0.1177E+01*SB3
-      A3= 0.1308E+01+0.9583E+01*SB +0.2360E+02*SB2+0.2999E+02*SB3
-      A4= 0.2509E-01+0.2106E+00*SB -0.4405E+00*SB2+0.2075E+00*SB3
-      A5=-0.2069E-01+0.1971E+01*SB -0.1615E+01*SB2+0.6039E+00*SB3
-      Elseif (Iprt .EQ. -4) then
-      A0=SB** 0.8072E+00*Exp(-0.6920E+01-0.5031E+00*SB -0.9965E+00*SB2)
-      A1=-0.2118E+00+0.7930E+00*SB -0.1101E+01*SB2+0.3302E+00*SB3
-      A2= 0.8039E+01-0.7170E+01*SB +0.8657E+01*SB2-0.2893E+01*SB3
-      A3= 0.2926E+02-0.1993E+02*SB +0.1841E+01*SB2+0.2996E+02*SB3
-      A4= 0.1339E+00-0.5531E+00*SB +0.6505E+00*SB2-0.1595E+00*SB3
-      A5= 0.7439E+00+0.3307E+01*SB -0.3284E+01*SB2+0.1152E+01*SB3
-      Elseif (Iprt .EQ. -5) then
-      A0=SB** 0.9925E+00*Exp(-0.2190E+01-0.3393E+01*SB -0.8631E+00*SB2)
-      A1=-0.1261E+00-0.2368E+00*SB +0.4143E+00*SB2-0.1577E+00*SB3
-      A2= 0.4585E+01+0.5227E+01*SB -0.3248E+01*SB2-0.2599E+00*SB3
-      A3=-0.1094E+01+0.4927E+00*SB -0.9921E+00*SB2+0.3138E+01*SB3
-      A4= 0.1396E+00+0.2562E+00*SB +0.1844E+00*SB2-0.1599E+00*SB3
-      A5= 0.8621E+00+0.4715E+00*SB +0.2547E+01*SB2-0.8429E+00*SB3
-      Elseif (Iprt .EQ. -6) then
-      A0=SB** 0.1016E+01*Exp(-0.5397E+01-0.1979E+01*SB -0.2441E+00*SB2)
-      A1=-0.1426E+00-0.2861E+00*SB +0.7434E+00*SB2-0.5214E+00*SB3
-      A2= 0.6363E+01+0.4028E+00*SB -0.8356E+01*SB2+0.6814E+01*SB3
-      A3=-0.2526E+00+0.2425E+01*SB -0.1407E+02*SB2+0.3000E+02*SB3
-      A4= 0.1125E+00-0.1089E+01*SB +0.9977E+01*SB2+0.1000E+02*SB3
-      A5= 0.2669E+01-0.6366E+00*SB +0.4355E+01*SB2-0.2919E+01*SB3
-      Endif
-      Elseif (Iset .EQ. 4) then
-C...Expansion for run ll25 - CTEQ2ML
-      If (Iprt .EQ. 2) then
-      A0=Exp( 0.3760E+00+0.5491E+00*SB -0.1845E+01*SB2+0.6803E+00*SB3)
-      A1= 0.5650E+00-0.1953E+00*SB +0.3761E+00*SB2-0.1419E+00*SB3
-      A2= 0.3464E+01+0.3817E+01*SB -0.5384E+01*SB2+0.2057E+01*SB3
-      A3=-0.5850E+00+0.5566E+01*SB -0.9000E+01*SB2+0.3433E+01*SB3
-      A4= 0.2322E+01-0.1431E+00*SB +0.3901E+00*SB2-0.1678E+00*SB3
-      A5= 0.0000E+00-0.7370E+00*SB +0.2310E+01*SB2-0.8743E+00*SB3
-      Elseif (Iprt .EQ. 1) then
-      A0=Exp(-0.1324E+01+0.1169E-01*SB +0.1969E-01*SB2-0.7583E-01*SB3)
-      A1= 0.2890E+00+0.5832E-01*SB -0.2921E-01*SB2+0.4701E-02*SB3
-      A2= 0.3580E+01+0.5291E+00*SB -0.5662E-02*SB2+0.2746E-01*SB3
-      A3= 0.3021E+02-0.1999E+02*SB +0.6250E+01*SB2-0.3035E+00*SB3
-      A4= 0.7990E+00-0.2531E+00*SB +0.5556E-02*SB2+0.8272E-02*SB3
-      A5= 0.0000E+00+0.3674E+00*SB -0.1383E+00*SB2+0.4665E-01*SB3
-      Elseif (Iprt .EQ. 0) then
-      A0=Exp(-0.1920E+00-0.7015E+00*SB -0.9113E+00*SB2+0.2352E+00*SB3)
-      A1=-0.2120E+00+0.1133E-01*SB -0.1553E-01*SB2+0.2822E-02*SB3
-      A2= 0.4549E+01+0.1250E+01*SB -0.4647E+00*SB2+0.9617E-01*SB3
-      A3= 0.1197E+02-0.4156E+01*SB +0.1413E+00*SB2+0.1607E+00*SB3
-      A4= 0.1616E+01+0.1082E+00*SB -0.6651E+00*SB2+0.2356E+00*SB3
-      A5= 0.0000E+00+0.1824E+01*SB -0.2063E+00*SB2+0.1148E-01*SB3
-      Elseif (Iprt .EQ. -1) then
-      A0=Exp(-0.1388E+01-0.7408E+00*SB -0.6454E+00*SB2+0.2373E+00*SB3)
-      A1=-0.2928E+00-0.1726E-01*SB +0.4033E-01*SB2-0.2514E-01*SB3
-      A2= 0.9975E+01-0.2048E+01*SB -0.6060E+00*SB2+0.5225E+00*SB3
-      A3= 0.2687E+02-0.4683E+01*SB -0.1999E+02*SB2+0.1188E+02*SB3
-      A4= 0.4000E+01-0.6773E+00*SB +0.4301E+00*SB2+0.4524E+00*SB3
-      A5=-0.7164E+00+0.7488E+00*SB +0.5766E+00*SB2-0.2609E+00*SB3
-      Elseif (Iprt .EQ. -2) then
-      A0=Exp(-0.2272E+01-0.2998E+01*SB +0.3282E+01*SB2-0.1203E+01*SB3)
-      A1=-0.2062E+00+0.3320E+00*SB -0.5074E+00*SB2+0.1655E+00*SB3
-      A2= 0.9667E+01-0.3497E+01*SB +0.5271E+01*SB2-0.1984E+01*SB3
-      A3= 0.4996E+02-0.3241E+01*SB -0.1425E+02*SB2+0.3849E+01*SB3
-      A4= 0.1619E+01-0.5354E+00*SB +0.5753E+00*SB2-0.2238E+00*SB3
-      A5= 0.8755E-01+0.3195E+01*SB -0.3496E+01*SB2+0.1197E+01*SB3
-      Elseif (Iprt .EQ. -3) then
-      A0=Exp(-0.1864E+01-0.5258E+01*SB +0.1034E+01*SB2-0.1550E+00*SB3)
-      A1= 0.1000E-02-0.1090E+01*SB +0.8345E+00*SB2-0.1887E+00*SB3
-      A2= 0.6898E+01-0.4951E+00*SB +0.4279E+00*SB2-0.2727E+00*SB3
-      A3= 0.0000E+00+0.4322E+01*SB +0.8181E+01*SB2+0.2309E+02*SB3
-      A4= 0.1000E-02+0.3550E+00*SB -0.3220E+00*SB2+0.7294E-01*SB3
-      A5= 0.0000E+00-0.1347E+01*SB +0.1896E+01*SB2-0.4491E+00*SB3
-      Elseif (Iprt .EQ. -4) then
-      A0=SB** 0.7528E+00*Exp(-0.7684E+01+0.6791E-01*SB -0.9094E+00*SB2)
-      A1=-0.3732E+00+0.8408E+00*SB -0.1020E+01*SB2+0.3046E+00*SB3
-      A2= 0.4984E+01-0.5534E+01*SB +0.6418E+01*SB2-0.1856E+01*SB3
-      A3= 0.3761E+02-0.1999E+02*SB -0.3358E+01*SB2+0.2999E+02*SB3
-      A4= 0.1161E+00-0.4680E+00*SB +0.5567E+00*SB2-0.1633E+00*SB3
-      A5= 0.3028E+00+0.3339E+01*SB -0.3004E+01*SB2+0.9160E+00*SB3
-      Elseif (Iprt .EQ. -5) then
-      A0=SB** 0.1011E+01*Exp(-0.7217E+01-0.2288E+01*SB +0.3450E+00*SB2)
-      A1=-0.1955E+00-0.3371E+00*SB +0.5111E+00*SB2-0.2210E+00*SB3
-      A2= 0.4302E+01-0.1214E+01*SB +0.3104E+01*SB2-0.1408E+01*SB3
-      A3= 0.1487E+02+0.1549E+02*SB +0.2875E+02*SB2-0.1922E+02*SB3
-      A4= 0.8935E-02+0.3571E+00*SB -0.6668E+00*SB2+0.3037E+00*SB3
-      A5= 0.1570E+01+0.7105E+00*SB -0.6070E+00*SB2+0.3796E+00*SB3
-      Elseif (Iprt .EQ. -6) then
-      A0=SB** 0.9986E+00*Exp(-0.5847E+01-0.2798E+00*SB -0.9882E+00*SB2)
-      A1=-0.2154E+00-0.8282E-01*SB +0.3611E-01*SB2+0.2623E-01*SB3
-      A2= 0.3250E+01+0.9635E+01*SB -0.1274E+02*SB2+0.4453E+01*SB3
-      A3=-0.2594E+01+0.9097E+01*SB +0.1581E+02*SB2-0.9123E+01*SB3
-      A4= 0.1768E+01-0.2749E+01*SB +0.9999E+01*SB2+0.9995E+01*SB3
-      A5= 0.2521E+01-0.1802E-01*SB +0.4820E+00*SB2+0.2004E+00*SB3
-      Endif
-      Elseif (Iset .EQ. 5) then
-C...Expansion for run lo24 - CTEQ2L
-      If (Iprt .EQ. 2) then
-      A0=Exp( 0.7248E-01+0.3941E+00*SB -0.1772E+01*SB2+0.7629E+00*SB3)
-      A1= 0.4964E+00-0.1224E+00*SB +0.3646E+00*SB2-0.1685E+00*SB3
-      A2= 0.3000E+01+0.2780E+01*SB -0.4028E+01*SB2+0.1816E+01*SB3
-      A3=-0.1064E+01+0.3062E+01*SB -0.5927E+01*SB2+0.2785E+01*SB3
-      A4= 0.3193E+01+0.1499E+01*SB -0.2765E+01*SB2+0.1019E+01*SB3
-      A5= 0.1524E-01-0.4541E+00*SB +0.2281E+01*SB2-0.1033E+01*SB3
-      Elseif (Iprt .EQ. 1) then
-      A0=Exp(-0.1794E+01-0.2055E+00*SB -0.3350E-01*SB2-0.5084E-01*SB3)
-      A1= 0.1748E+00+0.4637E-01*SB -0.2048E-01*SB2+0.2596E-02*SB3
-      A2= 0.3321E+01+0.6253E+00*SB +0.2148E-01*SB2+0.1288E-01*SB3
-      A3= 0.4355E+02-0.2000E+02*SB +0.5486E+01*SB2+0.1536E+00*SB3
-      A4= 0.9586E+00-0.3217E+00*SB +0.4458E-01*SB2-0.1404E-03*SB3
-      A5=-0.6595E-02+0.3499E+00*SB -0.7048E-01*SB2+0.2619E-01*SB3
-      Elseif (Iprt .EQ. 0) then
-      A0=Exp(-0.6194E+00-0.2643E+00*SB -0.1875E+01*SB2+0.6011E+00*SB3)
-      A1=-0.2600E+00+0.8704E-01*SB -0.7375E-01*SB2+0.1876E-01*SB3
-      A2= 0.4620E+01+0.1578E+01*SB -0.8411E+00*SB2+0.1527E+00*SB3
-      A3= 0.1604E+02-0.1230E+02*SB +0.6939E+01*SB2-0.2012E+01*SB3
-      A4= 0.1255E+01+0.4769E+00*SB -0.9915E+00*SB2+0.3439E+00*SB3
-      A5= 0.1116E-02+0.2409E+01*SB -0.4442E+00*SB2+0.3431E-01*SB3
-      Elseif (Iprt .EQ. -1) then
-      A0=Exp(-0.1571E+01-0.1905E+00*SB -0.8672E+00*SB2+0.2070E+00*SB3)
-      A1=-0.3266E+00+0.6428E-01*SB -0.8694E-01*SB2+0.1778E-01*SB3
-      A2= 0.8921E+01-0.5010E+00*SB -0.9658E+00*SB2+0.3893E+00*SB3
-      A3= 0.1329E+02+0.4652E+01*SB -0.2000E+02*SB2+0.1001E+02*SB3
-      A4= 0.3283E+01-0.3400E+00*SB -0.1957E+00*SB2+0.8063E+00*SB3
-      A5=-0.5701E+00+0.4042E+00*SB +0.5239E+00*SB2-0.1665E+00*SB3
-      Elseif (Iprt .EQ. -2) then
-      A0=Exp(-0.2281E+01-0.2768E+01*SB +0.3137E+01*SB2-0.1278E+01*SB3)
-      A1=-0.2624E+00+0.4142E+00*SB -0.5936E+00*SB2+0.1937E+00*SB3
-      A2= 0.9438E+01-0.3179E+01*SB +0.5107E+01*SB2-0.2179E+01*SB3
-      A3= 0.5000E+02-0.1802E+02*SB -0.7515E+01*SB2+0.2991E+01*SB3
-      A4= 0.1809E+01-0.9121E+00*SB +0.8854E+00*SB2-0.3582E+00*SB3
-      A5= 0.4056E-01+0.3033E+01*SB -0.3431E+01*SB2+0.1253E+01*SB3
-      Elseif (Iprt .EQ. -3) then
-      A0=Exp(-0.2318E+01-0.4104E+01*SB -0.1502E+00*SB2+0.1693E+00*SB3)
-      A1=-0.2251E-01-0.1101E+01*SB +0.1037E+01*SB2-0.3290E+00*SB3
-      A2= 0.6989E+01+0.1794E+01*SB -0.1811E+01*SB2+0.3061E+00*SB3
-      A3= 0.7972E+00+0.7806E+01*SB +0.1869E+02*SB2+0.2999E+02*SB3
-      A4= 0.4795E-01+0.1622E+00*SB -0.3977E+00*SB2+0.1920E+00*SB3
-      A5=-0.5275E-01-0.2616E+01*SB +0.3076E+01*SB2-0.7425E+00*SB3
-      Elseif (Iprt .EQ. -4) then
-      A0=SB** 0.8431E+00*Exp(-0.6539E+01-0.1875E+00*SB -0.1346E+01*SB2)
-      A1=-0.4970E+00+0.9062E+00*SB -0.1169E+01*SB2+0.3703E+00*SB3
-      A2= 0.4939E+01-0.2995E+01*SB +0.4483E+01*SB2-0.1704E+01*SB3
-      A3= 0.3113E+02-0.1997E+02*SB +0.1540E+01*SB2+0.3000E+02*SB3
-      A4= 0.1349E+00-0.5418E+00*SB +0.6142E+00*SB2-0.1360E+00*SB3
-      A5=-0.8590E+00+0.3956E+01*SB -0.3612E+01*SB2+0.1401E+01*SB3
-      Elseif (Iprt .EQ. -5) then
-      A0=SB** 0.2639E-01*Exp(-0.2099E+01-0.2681E+01*SB +0.2925E+00*SB2)
-      A1=-0.2243E+00-0.5343E-01*SB -0.1953E-01*SB2+0.1586E-01*SB3
-      A2= 0.4294E+01+0.1102E+01*SB -0.1822E+00*SB2-0.2481E+00*SB3
-      A3=-0.9998E+00+0.8275E-01*SB +0.5494E+00*SB2-0.1982E+00*SB3
-      A4= 0.5904E-04+0.9222E-01*SB -0.9293E-01*SB2+0.9159E-01*SB3
-      A5= 0.2657E+00+0.1770E+01*SB -0.7111E+00*SB2+0.2525E+00*SB3
-      Elseif (Iprt .EQ. -6) then
-      A0=SB** 0.1009E+01*Exp(-0.7032E+01+0.4562E+01*SB -0.9081E+01*SB2)
-      A1=-0.1412E+00-0.5076E+00*SB +0.9513E+00*SB2-0.4326E+00*SB3
-      A2= 0.5385E+01+0.3023E+01*SB -0.1162E+02*SB2+0.7006E+01*SB3
-      A3= 0.4997E+01-0.1600E+02*SB +0.1342E+02*SB2+0.1197E+02*SB3
-      A4= 0.5825E+00+0.3994E+00*SB -0.1255E+01*SB2+0.6486E+00*SB3
-      A5= 0.3365E+01-0.4026E+01*SB +0.8385E+01*SB2-0.2260E+01*SB3
-      Endif
-      Elseif (Iset .EQ. 6) then
-C...Expansion for run da06 - CTEQ2D
-      If (Iprt .EQ. 2) then
-      A0=Exp( 0.1590E+00+0.5580E+00*SB -0.1838E+01*SB2+0.7018E+00*SB3)
-      A1= 0.5110E+00-0.1625E+00*SB +0.3547E+00*SB2-0.1412E+00*SB3
-      A2= 0.3158E+01+0.3962E+01*SB -0.5866E+01*SB2+0.2375E+01*SB3
-      A3=-0.6000E+00+0.6144E+01*SB -0.1056E+02*SB2+0.4345E+01*SB3
-      A4= 0.2306E+01-0.4669E-01*SB +0.2711E+00*SB2-0.1640E+00*SB3
-      A5= 0.0000E+00-0.6638E+00*SB +0.2239E+01*SB2-0.8843E+00*SB3
-      Elseif (Iprt .EQ. 1) then
-      A0=Exp(-0.1182E+01+0.1449E+00*SB +0.2753E-01*SB2-0.1009E+00*SB3)
-      A1= 0.2540E+00+0.2686E-01*SB -0.1546E-01*SB2+0.5396E-02*SB3
-      A2= 0.3442E+01+0.5576E+00*SB +0.1937E-01*SB2+0.6696E-02*SB3
-      A3= 0.2545E+02-0.2000E+02*SB +0.7355E+01*SB2-0.7058E+00*SB3
-      A4= 0.9170E+00-0.3090E+00*SB +0.1705E-01*SB2+0.8534E-02*SB3
-      A5= 0.0000E+00+0.1449E+00*SB -0.7821E-01*SB2+0.6405E-01*SB3
-      Elseif (Iprt .EQ. 0) then
-      A0=Exp(-0.3410E+00-0.9613E+00*SB -0.4969E+00*SB2+0.9360E-01*SB3)
-      A1=-0.2400E+00+0.1473E+00*SB -0.1593E+00*SB2+0.4538E-01*SB3
-      A2= 0.4841E+01+0.9311E+00*SB +0.1601E-03*SB2-0.1331E+00*SB3
-      A3= 0.7427E+01-0.1397E+01*SB +0.1489E+00*SB2-0.2848E+00*SB3
-      A4= 0.9600E+00+0.3697E+00*SB -0.4246E+00*SB2+0.1032E+00*SB3
-      A5= 0.0000E+00+0.2484E+01*SB -0.9908E+00*SB2+0.2568E+00*SB3
-      Elseif (Iprt .EQ. -1) then
-      A0=Exp( 0.1176E+00-0.3418E+01*SB +0.3529E+01*SB2-0.1367E+01*SB3)
-      A1=-0.3654E+00+0.1914E+00*SB -0.2192E+00*SB2+0.6933E-01*SB3
-      A2= 0.1099E+02-0.4281E+01*SB +0.3729E+01*SB2-0.1254E+01*SB3
-      A3=-0.7514E+00+0.7696E+00*SB -0.1134E+01*SB2+0.4245E+00*SB3
-      A4= 0.7690E-01-0.6558E-01*SB +0.8726E-01*SB2-0.3345E-01*SB3
-      A5=-0.1447E+01+0.2617E+01*SB -0.2094E+01*SB2+0.7536E+00*SB3
-      Elseif (Iprt .EQ. -2) then
-      A0=Exp(-0.2412E+01-0.2522E+01*SB +0.3126E+01*SB2-0.1305E+01*SB3)
-      A1=-0.2353E+00+0.3118E+00*SB -0.4864E+00*SB2+0.1689E+00*SB3
-      A2= 0.9017E+01-0.2437E+01*SB +0.4659E+01*SB2-0.2044E+01*SB3
-      A3= 0.5000E+02-0.1158E+02*SB -0.9260E+01*SB2+0.2847E+01*SB3
-      A4= 0.1726E+01-0.6849E+00*SB +0.7864E+00*SB2-0.3300E+00*SB3
-      A5= 0.5080E-01+0.2858E+01*SB -0.3297E+01*SB2+0.1246E+01*SB3
-      Elseif (Iprt .EQ. -3) then
-      A0=Exp(-0.1966E+01-0.4405E+01*SB +0.2436E+00*SB2+0.4576E-01*SB3)
-      A1=-0.4000E-02-0.1229E+01*SB +0.1118E+01*SB2-0.2988E+00*SB3
-      A2= 0.6902E+01+0.1266E+01*SB -0.1068E+01*SB2+0.3062E-01*SB3
-      A3= 0.0000E+00+0.3987E+01*SB +0.9389E+01*SB2+0.1881E+02*SB3
-      A4= 0.1000E-02+0.3528E+00*SB -0.4201E+00*SB2+0.1248E+00*SB3
-      A5= 0.0000E+00-0.2149E+01*SB +0.2925E+01*SB2-0.7609E+00*SB3
-      Elseif (Iprt .EQ. -4) then
-      A0=SB** 0.7561E+00*Exp(-0.6960E+01+0.5634E-01*SB -0.1170E+01*SB2)
-      A1=-0.4232E+00+0.9269E+00*SB -0.1161E+01*SB2+0.3470E+00*SB3
-      A2= 0.6057E+01-0.5790E+01*SB +0.7352E+01*SB2-0.2435E+01*SB3
-      A3= 0.2941E+02-0.1999E+02*SB -0.8345E+00*SB2+0.3000E+02*SB3
-      A4= 0.1069E+00-0.4620E+00*SB +0.5614E+00*SB2-0.1336E+00*SB3
-      A5=-0.1865E+00+0.3953E+01*SB -0.3791E+01*SB2+0.1315E+01*SB3
-      Elseif (Iprt .EQ. -5) then
-      A0=SB** 0.5661E-02*Exp(-0.2123E+01-0.3026E+01*SB +0.1912E+00*SB2)
-      A1=-0.2011E+00-0.1338E-01*SB -0.3974E-01*SB2+0.1948E-01*SB3
-      A2= 0.4906E+01+0.1740E+01*SB -0.1387E+01*SB2+0.1263E+00*SB3
-      A3=-0.1000E+01+0.5767E-01*SB +0.6377E+00*SB2+0.4736E-01*SB3
-      A4= 0.5927E-04+0.1039E+00*SB -0.9797E-01*SB2+0.6881E-01*SB3
-      A5= 0.4017E+00+0.1981E+01*SB -0.7758E+00*SB2+0.2916E+00*SB3
-      Elseif (Iprt .EQ. -6) then
-      A0=SB** 0.1008E+01*Exp(-0.7211E+01+0.3273E+01*SB -0.6979E+01*SB2)
-      A1=-0.1026E+00-0.4948E+00*SB +0.1188E+01*SB2-0.8016E+00*SB3
-      A2= 0.5397E+01+0.2135E+01*SB -0.9531E+01*SB2+0.6115E+01*SB3
-      A3= 0.4966E+01-0.1111E+02*SB +0.4732E+01*SB2+0.1568E+02*SB3
-      A4= 0.5345E+00-0.1935E+00*SB +0.5816E+00*SB2-0.6794E+00*SB3
-      A5= 0.3569E+01-0.3477E+01*SB +0.8756E+01*SB2-0.4139E+01*SB3
-      Endif
-      Endif
-C...Calculation of x * f(x, Q).
-      PYCTQ2 = MAX(0., A0 *(X**A1) *((1.-X)**A2) *(1.+A3*(X**A4))
-     &                 *(log(1.+1./X))**A5 )
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pydata.F b/PYTHIA/pythia/pydata.F
deleted file mode 100644 (file)
index 16b4cb2..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-C*********************************************************************
-      BLOCK DATA PYDATA
-C...Give sensible default values to all status codes and parameters.
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT6/PROC(0:200)
-      CHARACTER PROC*28
-      COMMON/PYINT7/SIGT(0:6,0:6,0:5)
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
-     &/PYINT5/,/PYINT6/,/PYINT7/
-C...Default values for allowed processes and kinematics constraints.
-      DATA MSEL/1/
-      DATA MSUB/200*0/
-      DATA ((KFIN(I,J),J=-40,40),I=1,2)/16*0,4*1,4*0,6*1,5*0,5*1,0,
-     &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,
-     &6*1,4*0,4*1,16*0/
-      DATA CKIN/
-     &   2.0, -1.0,  0.0, -1.0,  1.0,  1.0, -10.,  10., -10.,  10.,
-     1  -10.,  10., -10.,  10., -10.,  10., -1.0,  1.0, -1.0,  1.0,
-     2   0.0,  1.0,  0.0,  1.0, -1.0,  1.0, -1.0,  1.0,   0.,   0.,
-     3   2.0, -1.0,   0.,   0.,  0.0, -1.0,  0.0, -1.0,  4.0, -1.0,
-     4  12.0, -1.0, 12.0, -1.0, 12.0, -1.0, 12.0, -1.0,   0.,   0.,
-     5   0.0, -1.0,  0.0, -1.0,  0.0, -1.0,   0.,   0.,   0.,   0.,
-     6   140*0./
-C...Default values for main switches and parameters. Reset information.
-      DATA (MSTP(I),I=1,100)/
-     &     3,    1,    2,    0,    0,    0,    0,    0,    0,    0,
-     1     1,    0,    1,    0,    5,    0,    0,    0,    0,    0,
-     2     1,    0,    1,    0,    0,    0,    0,    0,    0,    1,
-     3     1,    2,    0,    1,    0,    2,    1,    5,    2,    0,
-     4     1,    1,    3,    7,    3,    1,    1,    2,    2,    0,
-     5     9,    1,    1,    1,    5,    1,    1,    6,    1,    0,
-     6     1,    3,    2,    2,    1,    1,    2,    0,    0,    0,
-     7     1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     8     1,    1,  100,    0,    0,    0,    0,    0,    0,    0,
-     9     1,    4,    1,    2,    0,    0,    0,    0,    0,    0/
-      DATA (MSTP(I),I=101,200)/
-     &     3,    1,    0,    0,    0,    0,    0,    0,    0,    0,
-     1     1,    1,    1,    0,    0,    0,    0,    0,    0,    0,
-     2     0,    1,    2,    1,    1,   20,    0,    0,   10,    0,
-     3     0,    4,    0,    1,    0,    0,    0,    0,    0,    0,
-     4     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     5     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     6     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     7     0,    2,    0,    0,    0,    0,    0,    0,    0,    0,
-     8     5,  720, 1995,   11,   29,  408,    0,    0,    0,    0,
-     9     0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
-      DATA (PARP(I),I=1,100)/
-     &  0.25,  10.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     1    0.,   0.,  1.0, 0.01,  0.6,  1.0,  1.0,   0.,   0.,   0.,
-     2    0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     3   1.5,  2.0, 0.075, 1.0,  0.2,   0.,  2.0, 0.70, 0.006,  0.,
-     4  0.02,  2.0, 0.10, 1000., 2054., 123., 246., 0.,   0.,   0.,
-     5   1.0,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     6  0.25,  1.0, 0.25,  1.0,  2.0, 1E-3,  4.0, 1E-3,   0.,   0.,
-     7   4.0, 0.25,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     8  1.40, 1.55,  0.5,  0.2, 0.33, 0.66,  0.7,  0.5,   0.,   0.,
-     9  0.44, 0.20,  2.0,  1.0,   0.,  3.0,  1.0, 0.75, 0.44,  2.0/
-      DATA (PARP(I),I=101,200)/
-     &   0.5, 0.28,  1.0,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     1   2.0,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     2   1.0,  0.4,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     3  0.01,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     4    0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     5    0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     6  2.20, 23.6, 18.4, 11.5,   0.,   0.,   0.,   0.,   0.,   0.,
-     7    0.,   0.,   0.,  1.0,   0.,   0.,   0.,   0.,   0.,   0.,
-     8    0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
-     9    0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0./
-      DATA MSTI/200*0/
-      DATA PARI/200*0./
-      DATA MINT/400*0/
-      DATA VINT/400*0./
-C...Constants for the generation of the various processes.
-      DATA (ISET(I),I=1,100)/
-     &    1,    1,    1,   -1,    3,   -1,   -1,    3,   -2,    2,
-     1    2,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
-     2   -1,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
-     3    2,   -1,    2,    2,    2,    2,   -1,   -1,   -1,   -1,
-     4   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     5   -1,   -1,    2,    2,   -1,   -1,   -1,    2,   -1,   -1,
-     6   -1,   -1,   -1,   -1,   -1,   -1,   -1,    2,    2,    2,
-     7    4,    4,    4,   -1,   -1,    4,    4,   -1,   -1,    2,
-     8    2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
-     9    0,    0,    0,    0,    0,    9,   -2,   -2,   -2,   -2/
-      DATA (ISET(I),I=101,200)/
-     &   -1,    1,    1,   -2,   -2,   -2,   -2,   -2,   -2,    2,
-     1    2,    2,    2,    2,    2,   -1,   -1,   -1,   -2,   -2,
-     2    5,    5,    5,    5,   -2,   -2,   -2,   -2,   -2,   -2,
-     3    6,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
-     4    1,    1,    1,    1,    1,   -2,    1,    1,    1,   -2,
-     5    1,    1,    1,   -2,   -2,    1,    1,    1,   -2,   -2,
-     6    2,    2,    2,    2,    2,    2,    2,    2,   -2,   -2,
-     7    2,    2,    5,    5,   -2,    2,    2,    5,    5,   -2,
-     8    5,    5,   -2,   -2,   -2,    5,    5,   -2,   -2,   -2,
-     9   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2/
-      DATA ((KFPR(I,J),J=1,2),I=1,50)/
-     &   23,    0,   24,    0,   25,    0,   24,    0,   25,    0,
-     &   24,    0,   23,    0,   25,    0,    0,    0,    0,    0,
-     1    0,    0,    0,    0,   21,   21,   21,   22,   21,   23,
-     1   21,   24,   21,   25,   22,   22,   22,   23,   22,   24,
-     2   22,   25,   23,   23,   23,   24,   23,   25,   24,   24,
-     2   24,   25,   25,   25,    0,   21,    0,   22,    0,   23,
-     3    0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
-     3    0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
-     4    0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
-     4    0,   24,    0,   25,    0,   21,    0,   22,    0,   23/
-      DATA ((KFPR(I,J),J=1,2),I=51,100)/
-     5    0,   24,    0,   25,    0,    0,    0,    0,    0,    0,
-     5    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     6    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     6    0,    0,    0,    0,   21,   21,   24,   24,   23,   24,
-     7   23,   23,   24,   24,   23,   24,   23,   25,   22,   22,
-     7   23,   23,   24,   24,   24,   25,   25,   25,    0,  211,
-     8    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     8  443,   21,10441,   21,20443,   21,  445,   21,    0,    0,
-     9    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     9    0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
-      DATA ((KFPR(I,J),J=1,2),I=101,150)/
-     &   23,    0,   25,    0,   25,    0,    0,    0,    0,    0,
-     &    0,    0,    0,    0,    0,    0,    0,    0,   22,   25,
-     1   21,   25,    0,   25,   21,   25,   22,   22,   21,   22,
-     1   22,   23,   23,   23,   24,   24,    0,    0,    0,    0,
-     2   25,    6,   25,    6,   25,    0,   25,    0,    0,    0,
-     2    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     3   23,    5,    0,    0,    0,    0,    0,    0,    0,    0,
-     3    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     4   32,    0,   34,    0,   37,    0,   40,    0,   39,    0,
-     4    0,    0,    7,    0,    8,    0,   38,    0,    0,    0/
-      DATA ((KFPR(I,J),J=1,2),I=151,200)/
-     5   35,    0,   35,    0,   35,    0,    0,    0,    0,    0,
-     5   36,    0,   36,    0,   36,    0,    0,    0,    0,    0,
-     6    6,   37,   39,    0,   39,   39,   39,   39,   11,    0,
-     6   11,    0,    0,    7,    0,    8,    0,    0,    0,    0,
-     7   23,   35,   24,   35,   35,    0,   35,    0,    0,    0,
-     7   23,   36,   24,   36,   36,    0,   36,    0,    0,    0,
-     8   35,    6,   35,    6,    0,    0,    0,    0,    0,    0,
-     8   36,    6,   36,    6,    0,    0,    0,    0,    0,    0,
-     9    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     9    0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
-      DATA COEF/4000*0./
-      DATA (((ICOL(I,J,K),K=1,2),J=1,4),I=1,40)/
-     1 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,
-     2 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,
-     3 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,
-     4 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,
-     5 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,
-     6 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,
-     7 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,
-     8 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,
-     9 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,
-     & 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/
-C...Character constants: name of processes.
-      DATA PROC(0)/                    'All included subprocesses   '/
-      DATA (PROC(I),I=1,20)/
-     1'f + f~ -> gamma*/Z0         ',  'f + f~'' -> W+/-             ',
-     2'f + f~ -> H0                ',  'gamma + W+/- -> W+/-        ',
-     3'Z0 + Z0 -> H0               ',  'Z0 + W+/- -> W+/-           ',
-     4'                            ',  'W+ + W- -> H0               ',
-     5'                            ',  'f + f'' -> f + f'' (QFD)      ',
-     6'f + f'' -> f + f'' (QCD)      ','f + f~ -> f'' + f~''          ',
-     7'f + f~ -> g + g             ',  'f + f~ -> g + gamma         ',
-     8'f + f~ -> g + Z0            ',  'f + f~'' -> g + W+/-         ',
-     9'f + f~ -> g + H0            ',  'f + f~ -> gamma + gamma     ',
-     &'f + f~ -> gamma + Z0        ',  'f + f~'' -> gamma + W+/-     '/
-      DATA (PROC(I),I=21,40)/
-     1'f + f~ -> gamma + H0        ',  'f + f~ -> Z0 + Z0           ',
-     2'f + f~'' -> Z0 + W+/-        ', 'f + f~ -> Z0 + H0           ',
-     3'f + f~ -> W+ + W-           ',  'f + f~'' -> W+/- + H0        ',
-     4'f + f~ -> H0 + H0           ',  'f + g -> f + g              ',
-     5'f + g -> f + gamma          ',  'f + g -> f + Z0             ',
-     6'f + g -> f'' + W+/-          ', 'f + g -> f + H0             ',
-     7'f + gamma -> f + g          ',  'f + gamma -> f + gamma      ',
-     8'f + gamma -> f + Z0         ',  'f + gamma -> f'' + W+/-      ',
-     9'f + gamma -> f + H0         ',  'f + Z0 -> f + g             ',
-     &'f + Z0 -> f + gamma         ',  'f + Z0 -> f + Z0            '/
-      DATA (PROC(I),I=41,60)/
-     1'f + Z0 -> f'' + W+/-         ', 'f + Z0 -> f + H0            ',
-     2'f + W+/- -> f'' + g          ', 'f + W+/- -> f'' + gamma      ',
-     3'f + W+/- -> f'' + Z0         ', 'f + W+/- -> f'' + W+/-       ',
-     4'f + W+/- -> f'' + H0         ', 'f + H0 -> f + g             ',
-     5'f + H0 -> f + gamma         ',  'f + H0 -> f + Z0            ',
-     6'f + H0 -> f'' + W+/-         ', 'f + H0 -> f + H0            ',
-     7'g + g -> f + f~             ',  'g + gamma -> f + f~         ',
-     8'g + Z0 -> f + f~            ',  'g + W+/- -> f + f~''         ',
-     9'g + H0 -> f + f~            ',  'gamma + gamma -> f + f~     ',
-     &'gamma + Z0 -> f + f~        ',  'gamma + W+/- -> f + f~''     '/
-      DATA (PROC(I),I=61,80)/
-     1'gamma + H0 -> f + f~        ',  'Z0 + Z0 -> f + f~           ',
-     2'Z0 + W+/- -> f + f~''        ', 'Z0 + H0 -> f + f~           ',
-     3'W+ + W- -> f + f~           ',  'W+/- + H0 -> f + f~''        ',
-     4'H0 + H0 -> f + f~           ',  'g + g -> g + g              ',
-     5'gamma + gamma -> W+ + W-    ',  'gamma + W+/- -> Z0 + W+/-   ',
-     6'Z0 + Z0 -> Z0 + Z0          ',  'Z0 + Z0 -> W+ + W-          ',
-     7'Z0 + W+/- -> Z0 + W+/-      ',  'Z0 + Z0 -> Z0 + H0          ',
-     8'W+ + W- -> gamma + gamma    ',  'W+ + W- -> Z0 + Z0          ',
-     9'W+/- + W+/- -> W+/- + W+/-  ',  'W+/- + H0 -> W+/- + H0      ',
-     &'H0 + H0 -> H0 + H0          ',  'q + gamma -> q'' + pi+/-     '/
-      DATA (PROC(I),I=81,100)/
-     1'q + q~ -> Q + Q~, massive   ',  'g + g -> Q + Q~, massive    ',
-     2'f + q -> f'' + Q, massive    ', 'g + gamma -> Q + Q~, massive',
-     3'gamma + gamma -> F + F~, mas',  'g + g -> J/Psi + g          ',
-     4'g + g -> chi_0c + g         ',  'g + g -> chi_1c + g         ',
-     5'g + g -> chi_2c + g         ',  '                            ',
-     6'Elastic scattering          ',  'Single diffractive (XB)     ',
-     7'Single diffractive (AX)     ',  'Double  diffractive         ',
-     8'Low-pT scattering           ',  'Semihard QCD 2 -> 2         ',
-     9'                            ',  '                            ',
-     &'                            ',  '                            '/
-      DATA (PROC(I),I=101,120)/
-     1'g + g -> gamma*/Z0          ',  'g + g -> H0                 ',
-     2'gamma + gamma -> H0         ',  '                            ',
-     3'                            ',  '                            ',
-     4'                            ',  '                            ',
-     5'                            ',  'f + f~ -> gamma + H0        ',
-     6'f + f~ -> g + H0            ',  'q + g -> q + H0             ',
-     7'g + g -> g + H0             ',  'g + g -> gamma + gamma      ',
-     8'g + g -> g + gamma          ',  'g + g -> gamma + Z0         ',
-     9'g + g -> Z0 + Z0            ',  'g + g -> W+ + W-            ',
-     &'                            ',  '                            '/
-      DATA (PROC(I),I=121,140)/
-     1'g + g -> Q + Q~ + H0        ',  'q + q~ -> Q + Q~ + H0       ',
-     2'f + f'' -> f + f'' + H0       ',
-     2'f + f'' -> f" + f"'' + H0     ',
-     3'                            ',  '                            ',
-     4'                            ',  '                            ',
-     5'                            ',  '                            ',
-     6'g + g -> Z0 + q + q~        ',  '                            ',
-     7'                            ',  '                            ',
-     8'                            ',  '                            ',
-     9'                            ',  '                            ',
-     &'                            ',  '                            '/
-      DATA (PROC(I),I=141,160)/
-     1'f + f~ -> gamma*/Z0/Z''0     ', 'f + f~'' -> W''+/-            ',
-     2'f + f~'' -> H+/-             ', 'f + f~'' -> R                ',
-     3'q + l -> LQ                 ',  '                            ',
-     4'd + g -> d*                 ',  'u + g -> u*                 ',
-     5'g + g -> eta_techni         ',  '                            ',
-     6'f + f~ -> H''0               ', 'g + g -> H''0                ',
-     7'gamma + gamma -> H''0        ', '                            ',
-     8'                            ',  'f + f~ -> A0                ',
-     9'g + g -> A0                 ',  'gamma + gamma -> A0         ',
-     &'                            ',  '                            '/
-      DATA (PROC(I),I=161,180)/
-     1'f + g -> f'' + H+/-          ', 'q + g -> LQ + l~            ',
-     2'g + g -> LQ + LQ~           ',  'q + q~ -> LQ + LQ~          ',
-     3'f + f~ -> f'' + f~'' (gamma/Z)',
-     3'f +f~'' -> f" + f~"'' (W)     ',
-     4'q + q'' -> q" + d*           ',  'q + q'' -> q" + u*           ',
-     5'                            ',  '                            ',
-     6'f + f~ -> Z0 + H''0          ', 'f + f~'' -> W+/- + H''0       ',
-     7'f + f'' -> f + f'' + H''0      ',
-     7'f + f'' -> f" + f"'' + H''0    ',
-     8'                            ',  'f + f~ -> Z0 + A0           ',
-     9'f + f~'' -> W+/- + A0        ',
-     9'f + f'' -> f + f'' + A0       ',
-     &'f + f'' -> f" + f"'' + A0     ',
-     &'                            '/
-      DATA (PROC(I),I=181,200)/
-     1'g + g -> Q + Q~ + H''0       ',  'q + q~ -> Q + Q~ + H''0      ',
-     2'                            ',  '                            ',
-     3'                            ',  'g + g -> Q + Q~ + A0        ',
-     4'q + q~ -> Q + Q~ + A0       ',  '                            ',
-     5'                            ',  '                            ',
-     6'                            ',  '                            ',
-     7'                            ',  '                            ',
-     8'                            ',  '                            ',
-     9'                            ',  '                            ',
-     &'                            ',  '                            '/
-C...Cross sections and slope offsets.
-      DATA SIGT/294*0./
-      END
diff --git a/PYTHIA/pythia/pydiff.F b/PYTHIA/pythia/pydiff.F
deleted file mode 100644 (file)
index aed19e8..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYDIFF
-C...Handles diffractive and elastic scattering.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUJETS/,/LUDAT1/
-      SAVE /PYPARS/,/PYINT1/
-      DOUBLE PRECISION DBETAZ
-C...Reset K, P and V vectors. Store incoming particles.
-      DO 110 JT=1,MSTP(126)+10
-      I=MINT(83)+JT
-      DO 100 J=1,5
-      K(I,J)=0
-      P(I,J)=0.
-      V(I,J)=0.
-  100 CONTINUE
-  110 CONTINUE
-      N=MINT(84)
-      MINT(3)=0
-      MINT(21)=0
-      MINT(22)=0
-      MINT(23)=0
-      MINT(24)=0
-      MINT(4)=4
-      DO 130 JT=1,2
-      I=MINT(83)+JT
-      K(I,1)=21
-      K(I,2)=MINT(10+JT)
-      DO 120 J=1,5
-      P(I,J)=VINT(285+5*JT+J)
-  120 CONTINUE
-  130 CONTINUE
-      MINT(6)=2
-C...Subprocess; kinematics.
-      SQLAM=(VINT(2)-VINT(63)-VINT(64))**2-4.*VINT(63)*VINT(64)
-      PZ=SQRT(SQLAM)/(2.*VINT(1))
-      DO 200 JT=1,2
-      I=MINT(83)+JT
-      PE=(VINT(2)+VINT(62+JT)-VINT(65-JT))/(2.*VINT(1))
-      KFH=MINT(102+JT)
-C...Elastically scattered particle.
-      IF(MINT(16+JT).LE.0) THEN
-        N=N+1
-        K(N,1)=1
-        K(N,2)=KFH
-        K(N,3)=I+2
-        P(N,3)=PZ*(-1)**(JT+1)
-        P(N,4)=PE
-        P(N,5)=SQRT(VINT(62+JT))
-C...Decay rho from elastic scattering of gamma with sin**2(theta)
-C...distribution of decay products (in rho rest frame).
-        IF(KFH.EQ.113.AND.MINT(10+JT).EQ.22.AND.MSTP(102).EQ.1) THEN
-          NSAV=N
-          DBETAZ=DBLE(P(N,3))/SQRT(DBLE(P(N,3))**2+DBLE(P(N,5))**2)
-          P(N,3)=0.
-          P(N,4)=P(N,5)
-          CALL LUDECY(NSAV)
-          IF(N.EQ.NSAV+2.AND.IABS(K(NSAV+1,2)).EQ.211) THEN
-            PHI=ULANGL(P(NSAV+1,1),P(NSAV+1,2))
-            CALL LUDBRB(NSAV+1,NSAV+2,0.,-PHI,0D0,0D0,0D0)
-            THE=ULANGL(P(NSAV+1,3),P(NSAV+1,1))
-            CALL LUDBRB(NSAV+1,NSAV+2,-THE,0.,0D0,0D0,0D0)
-  140       CTHE=2.*RLU(0)-1.
-            IF(1.-CTHE**2.LT.RLU(0)) GOTO 140
-            CALL LUDBRB(NSAV+1,NSAV+2,ACOS(CTHE),PHI,0D0,0D0,0D0)
-          ENDIF
-          CALL LUDBRB(NSAV,NSAV+2,0.,0.,0D0,0D0,DBETAZ)
-        ENDIF
-C...Diffracted particle: low-mass system to two particles.
-      ELSEIF(VINT(62+JT).LT.(VINT(66+JT)+PARP(103))**2) THEN
-        N=N+2
-        K(N-1,1)=1
-        K(N,1)=1
-        K(N-1,3)=I+2
-        K(N,3)=I+2
-        PMMAS=SQRT(VINT(62+JT))
-        NTRY=0
-  150   NTRY=NTRY+1
-        IF(NTRY.LT.20) THEN
-          MINT(105)=MINT(102+JT)
-          MINT(109)=MINT(106+JT)
-          CALL PYSPLI(KFH,21,KFL1,KFL2)
-          CALL LUKFDI(KFL1,0,KFL3,KF1)
-          IF(KF1.EQ.0) GOTO 150
-          CALL LUKFDI(KFL2,-KFL3,KFLDUM,KF2)
-          IF(KF2.EQ.0) GOTO 150
-        ELSE
-          KF1=KFH
-          KF2=111
-        ENDIF
-        PM1=ULMASS(KF1)
-        PM2=ULMASS(KF2)
-        IF(PM1+PM2+PARJ(64).GT.PMMAS) GOTO 150
-        K(N-1,2)=KF1
-        K(N,2)=KF2
-        P(N-1,5)=PM1
-        P(N,5)=PM2
-        PZP=SQRT(MAX(0.,(PMMAS**2-PM1**2-PM2**2)**2-4.*PM1**2*PM2**2))/
-     &  (2.*PMMAS)
-        P(N-1,3)=PZP
-        P(N,3)=-PZP
-        P(N-1,4)=SQRT(PM1**2+PZP**2)
-        P(N,4)=SQRT(PM2**2+PZP**2)
-        CALL LUDBRB(N-1,N,ACOS(2.*RLU(0)-1.),PARU(2)*RLU(0),0D0,0D0,0D0)
-        DBETAZ=DBLE(PZ)*(-1)**(JT+1)/SQRT(DBLE(PZ)**2+DBLE(PMMAS)**2)
-        CALL LUDBRB(N-1,N,0.,0.,0D0,0D0,DBETAZ)
-C...Diffracted particle: valence quark kicked out.
-      ELSEIF(MSTP(101).EQ.1.OR.(MSTP(101).EQ.3.AND.RLU(0).LT.PARP(101)))
-     &THEN
-        N=N+2
-        K(N-1,1)=2
-        K(N,1)=1
-        K(N-1,3)=I+2
-        K(N,3)=I+2
-        MINT(105)=MINT(102+JT)
-        MINT(109)=MINT(106+JT)
-        CALL PYSPLI(KFH,21,K(N,2),K(N-1,2))
-        P(N-1,5)=ULMASS(K(N-1,2))
-        P(N,5)=ULMASS(K(N,2))
-        SQLAM=(VINT(62+JT)-P(N-1,5)**2-P(N,5)**2)**2-
-     &  4.*P(N-1,5)**2*P(N,5)**2
-        P(N-1,3)=(PE*SQRT(SQLAM)+PZ*(VINT(62+JT)+P(N-1,5)**2-
-     &  P(N,5)**2))/(2.*VINT(62+JT))*(-1)**(JT+1)
-        P(N-1,4)=SQRT(P(N-1,3)**2+P(N-1,5)**2)
-        P(N,3)=PZ*(-1)**(JT+1)-P(N-1,3)
-        P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
-C...Diffracted particle: gluon kicked out.
-      ELSE
-        N=N+3
-        K(N-2,1)=2
-        K(N-1,1)=2
-        K(N,1)=1
-        K(N-2,3)=I+2
-        K(N-1,3)=I+2
-        K(N,3)=I+2
-        MINT(105)=MINT(102+JT)
-        MINT(109)=MINT(106+JT)
-        CALL PYSPLI(KFH,21,K(N,2),K(N-2,2))
-        K(N-1,2)=21
-        P(N-2,5)=ULMASS(K(N-2,2))
-        P(N-1,5)=0.
-        P(N,5)=ULMASS(K(N,2))
-C...Energy distribution for particle into two jets.
-  160   IMB=1
-        IF(MOD(KFH/1000,10).NE.0) IMB=2
-        CHIK=PARP(92+2*IMB)
-        IF(MSTP(92).LE.1) THEN
-          IF(IMB.EQ.1) CHI=RLU(0)
-          IF(IMB.EQ.2) CHI=1.-SQRT(RLU(0))
-        ELSEIF(MSTP(92).EQ.2) THEN
-          CHI=1.-RLU(0)**(1./(1.+CHIK))
-        ELSEIF(MSTP(92).EQ.3) THEN
-          CUT=2.*0.3/VINT(1)
-  170     CHI=RLU(0)**2
-          IF((CHI**2/(CHI**2+CUT**2))**0.25*(1.-CHI)**CHIK.LT.
-     &    RLU(0)) GOTO 170
-        ELSEIF(MSTP(92).EQ.4) THEN
-          CUT=2.*0.3/VINT(1)
-          CUTR=(1.+SQRT(1.+CUT**2))/CUT
-  180     CHIR=CUT*CUTR**RLU(0)
-          CHI=(CHIR**2-CUT**2)/(2.*CHIR)
-          IF((1.-CHI)**CHIK.LT.RLU(0)) GOTO 180
-        ELSE
-          CUT=2.*0.3/VINT(1)
-          CUTA=CUT**(1.-PARP(98))
-          CUTB=(1.+CUT)**(1.-PARP(98))
-  190     CHI=(CUTA+RLU(0)*(CUTB-CUTA))**(1./(1.-PARP(98)))
-          IF(((CHI+CUT)**2/(2.*(CHI**2+CUT**2)))**
-     &    (0.5*PARP(98))*(1.-CHI)**CHIK.LT.RLU(0)) GOTO 190
-        ENDIF
-        IF(CHI.LT.P(N,5)**2/VINT(62+JT).OR.CHI.GT.1.-P(N-2,5)**2/
-     &  VINT(62+JT)) GOTO 160
-        SQM=P(N-2,5)**2/(1.-CHI)+P(N,5)**2/CHI
-        IF((SQRT(SQM)+PARJ(32))**2.GE.VINT(62+JT)) GOTO 160
-        PZI=(PE*(VINT(62+JT)-SQM)+PZ*(VINT(62+JT)+SQM))/
-     &  (2.*VINT(62+JT))
-        PEI=SQRT(PZI**2+SQM)
-        PQQP=(1.-CHI)*(PEI+PZI)
-        P(N-2,3)=0.5*(PQQP-P(N-2,5)**2/PQQP)*(-1)**(JT+1)
-        P(N-2,4)=SQRT(P(N-2,3)**2+P(N-2,5)**2)
-        P(N-1,4)=0.5*(VINT(62+JT)-SQM)/(PEI+PZI)
-        P(N-1,3)=P(N-1,4)*(-1)**JT
-        P(N,3)=PZI*(-1)**(JT+1)-P(N-2,3)
-        P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
-      ENDIF
-C...Documentation lines.
-      K(I+2,1)=21
-      IF(MINT(16+JT).EQ.0) K(I+2,2)=KFH
-      IF(MINT(16+JT).NE.0) K(I+2,2)=10*(KFH/10)
-      K(I+2,3)=I
-      P(I+2,3)=PZ*(-1)**(JT+1)
-      P(I+2,4)=PE
-      P(I+2,5)=SQRT(VINT(62+JT))
-  200 CONTINUE
-C...Rotate outgoing partons/particles using cos(theta).
-      IF(VINT(23).LT.0.9) THEN
-        CALL LUDBRB(MINT(83)+3,N,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
-      ELSE
-        CALL LUDBRB(MINT(83)+3,N,ASIN(VINT(59)),VINT(24),0D0,0D0,0D0)
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pydocu.F b/PYTHIA/pythia/pydocu.F
deleted file mode 100644 (file)
index 45c02ad..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYDOCU
-C...Handles the decumentation of the process in MSTI and PARI,
-C...and also computes cross-sections based on accumulated statistics.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT9/DXSEC(0:200)
-      DOUBLE PRECISION DXSEC
-      SAVE /LUJETS/,/LUDAT1/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT9/
-C...Calculate Monte Carlo estimates of cross-sections.
-      ISUB=MINT(1)
-      IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
-      NGEN(0,3)=NGEN(0,3)+1
-      XSEC(0,3)=0.
-      DO 100 I=1,200
-      IF(I.EQ.96.OR.I.EQ.97) THEN
-        XSEC(I,3)=0.
-      ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
-     &I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
-        XSEC(I,3)=DXSEC(96)*NGEN(I,3)/MAX(1.,FLOAT(NGEN(96,1))*
-     &  FLOAT(NGEN(96,2)))
-      ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
-        XSEC(I,3)=0.
-      ELSEIF(NGEN(I,2).EQ.0) THEN
-        XSEC(I,3)=DXSEC(I)*NGEN(0,3)/(FLOAT(NGEN(I,1))*
-     &  FLOAT(NGEN(0,2)))
-      ELSE
-        XSEC(I,3)=DXSEC(I)*NGEN(I,3)/(FLOAT(NGEN(I,1))*
-     &  FLOAT(NGEN(I,2)))
-      ENDIF
-      XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
-  100 CONTINUE
-C...Rescale to known low-pT cross-section for standard QCD processes.
-      IF(MSUB(95).EQ.1) THEN
-        XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
-     &  XSEC(68,3)+XSEC(95,3)
-        XSECW=DXSEC(97)/MAX(1.,FLOAT(NGEN(97,1)))
-        IF(XSECH.GT.1E-10.AND.XSECW.GT.1E-10) THEN
-          FAC=XSECW/XSECH
-          XSEC(11,3)=FAC*XSEC(11,3)
-          XSEC(12,3)=FAC*XSEC(12,3)
-          XSEC(13,3)=FAC*XSEC(13,3)
-          XSEC(28,3)=FAC*XSEC(28,3)
-          XSEC(53,3)=FAC*XSEC(53,3)
-          XSEC(68,3)=FAC*XSEC(68,3)
-          XSEC(95,3)=FAC*XSEC(95,3)
-          XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
-        ENDIF
-      ENDIF
-C...Save information for gamma-p and gamma-gamma.
-      IF(MINT(121).GT.1) THEN
-        IGA=MINT(122)
-        CALL PYSAVE(2,IGA)
-        CALL PYSAVE(5,0)
-      ENDIF
-C...Reset information on hard interaction.
-      DO 110 J=1,200
-      MSTI(J)=0
-      PARI(J)=0.
-  110 CONTINUE
-C...Copy integer valued information from MINT into MSTI.
-      DO 120 J=1,31
-      MSTI(J)=MINT(J)
-  120 CONTINUE
-      IF(MINT(121).GT.1) MSTI(9)=MINT(122)
-C...Store cross-section variables in PARI.
-      PARI(1)=XSEC(0,3)
-      PARI(2)=XSEC(0,3)/MINT(5)
-      PARI(9)=VINT(99)
-      PARI(10)=VINT(100)
-      VINT(98)=VINT(98)+VINT(100)
-      IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
-C...Store kinematics variables in PARI.
-      PARI(11)=VINT(1)
-      PARI(12)=VINT(2)
-      IF(ISUB.NE.95) THEN
-        DO 130 J=13,26
-        PARI(J)=VINT(30+J)
-  130   CONTINUE
-        PARI(31)=VINT(141)
-        PARI(32)=VINT(142)
-        PARI(33)=VINT(41)
-        PARI(34)=VINT(42)
-        PARI(35)=PARI(33)-PARI(34)
-        PARI(36)=VINT(21)
-        PARI(37)=VINT(22)
-        PARI(38)=VINT(26)
-        PARI(39)=VINT(157)
-        PARI(40)=VINT(158)
-        PARI(41)=VINT(23)
-        PARI(42)=2.*VINT(47)/VINT(1)
-      ENDIF
-C...Store information on scattered partons in PARI.
-      IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
-        DO 140 IS=7,8
-        I=MINT(IS)
-        PARI(36+IS)=P(I,3)/VINT(1)
-        PARI(38+IS)=P(I,4)/VINT(1)
-        PR=MAX(1E-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
-        PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
-     &  SQRT(PR),1E20)),P(I,3))
-        PR=MAX(1E-20,P(I,1)**2+P(I,2)**2)
-        PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
-     &  SQRT(PR),1E20)),P(I,3))
-        PARI(44+IS)=P(I,3)/SQRT(1E-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
-        PARI(46+IS)=ULANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
-        PARI(48+IS)=ULANGL(P(I,1),P(I,2))
-  140   CONTINUE
-      ENDIF
-C...Store sum up transverse and longitudinal momenta.
-      PARI(65)=2.*PARI(17)
-      IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
-        DO 150 I=MSTP(126)+1,N
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
-        PT=SQRT(P(I,1)**2+P(I,2)**2)
-        PARI(69)=PARI(69)+PT
-        IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
-        IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
-  150   CONTINUE
-        PARI(67)=PARI(68)
-        PARI(71)=VINT(151)
-        PARI(72)=VINT(152)
-        PARI(73)=VINT(151)
-        PARI(74)=VINT(152)
-      ELSE
-        PARI(66)=PARI(65)
-        PARI(69)=PARI(65)
-      ENDIF
-C...Store various other pieces of information into PARI.
-      PARI(61)=VINT(148)
-      PARI(75)=VINT(155)
-      PARI(76)=VINT(156)
-      PARI(77)=VINT(159)
-      PARI(78)=VINT(160)
-      PARI(81)=VINT(138)
-C...Set information for LUTABU.
-      IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
-        MSTU(161)=MINT(21)
-        MSTU(162)=0
-      ELSEIF(ISET(ISUB).EQ.5) THEN
-        MSTU(161)=MINT(23)
-        MSTU(162)=0
-      ELSE
-        MSTU(161)=MINT(21)
-        MSTU(162)=MINT(22)
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyevnt.F b/PYTHIA/pythia/pyevnt.F
deleted file mode 100644 (file)
index 46d2552..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYEVNT
-C...Administers the generation of a high-pT event via calls to
-C...a number of subroutines.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYUPPR/NUP,KUP(20,7),PUP(20,5),NFUP,IFUP(10,2),Q2UP(0:10)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
-      SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/
-      DIMENSION VTX(4)
-C...Initial values for some counters.
-      N=0
-      MINT(5)=MINT(5)+1
-      MINT(7)=0
-      MINT(8)=0
-      MINT(83)=0
-      MINT(84)=MSTP(126)
-      MSTU(24)=0
-      MSTU70=0
-      MSTJ14=MSTJ(14)
-C...If variable energies: redo incoming kinematics and cross-section.
-      MSTI(61)=0
-      IF(MSTP(171).EQ.1) THEN
-        CALL PYINKI(1)
-        IF(MSTI(61).EQ.1) THEN
-          MINT(5)=MINT(5)-1
-          RETURN
-        ENDIF
-        IF(MINT(121).GT.1) CALL PYSAVE(3,1)
-        CALL PYXTOT
-      ENDIF
-C...Loop over number of pileup events; check space left.
-      IF(MSTP(131).LE.0) THEN
-        NPILE=1
-      ELSE
-        CALL PYPILE(2)
-        NPILE=MINT(81)
-      ENDIF
-      DO 250 IPILE=1,NPILE
-      IF(MINT(84)+100.GE.MSTU(4)) THEN
-        CALL LUERRM(11,
-     &  '(PYEVNT:) no more space in LUJETS for pileup events')
-        IF(MSTU(21).GE.1) GOTO 260
-      ENDIF
-      MINT(82)=IPILE
-C...Generate variables of hard scattering.
-      MINT(51)=0
-      MSTI(52)=0
-  100 CONTINUE
-      IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
-      MINT(31)=0
-      MINT(51)=0
-      MINT(57)=0
-      CALL PYRAND
-      IF(MSTI(61).EQ.1) THEN
-        MINT(5)=MINT(5)-1
-        RETURN
-      ENDIF
-      IF(MINT(51).EQ.2) RETURN
-      ISUB=MINT(1)
-      IF(MSTP(111).EQ.-1) GOTO 240
-      IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
-C...Hard scattering (including low-pT):
-C...reconstruct kinematics and colour flow of hard scattering.
-  110   MINT(51)=0
-        CALL PYSCAT
-        IF(MINT(51).EQ.1) GOTO 100
-        IPU1=MINT(84)+1
-        IPU2=MINT(84)+2
-        IF(ISUB.EQ.95) GOTO 130
-C...Showering of initial state partons (optional).
-        ALAMSV=PARJ(81)
-        PARJ(81)=PARP(72)
-        IF(MSTP(61).GE.1.AND.MINT(47).GE.2) CALL PYSSPA(IPU1,IPU2)
-        PARJ(81)=ALAMSV
-        IF(MINT(51).EQ.1) GOTO 100
-C...Showering of final state partons (optional).
-        ALAMSV=PARJ(81)
-        PARJ(81)=PARP(72)
-        IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.2.AND.ISET(ISUB).LE.10) THEN
-          IPU3=MINT(84)+3
-          IPU4=MINT(84)+4
-          IF(ISET(ISUB).EQ.5.OR.ISET(ISUB).EQ.6) IPU4=-3
-          QMAX=VINT(55)
-          IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
-          CALL LUSHOW(IPU3,IPU4,QMAX)
-        ELSEIF(MSTP(71).GE.1.AND.ISET(ISUB).EQ.11.AND.NFUP.GE.1) THEN
-          DO 120 IUP=1,NFUP
-          IPU3=IFUP(IUP,1)+MINT(84)
-          IPU4=IFUP(IUP,2)+MINT(84)
-          QMAX=SQRT(MAX(0.,Q2UP(IUP)))
-          CALL LUSHOW(IPU3,IPU4,QMAX)
-  120     CONTINUE
-        ENDIF
-        PARJ(81)=ALAMSV
-C...Decay of final state resonances.
-        IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) CALL PYRESD
-        IF(MINT(51).EQ.1) GOTO 100
-        MINT(52)=N
-C...Multiple interactions.
-        IF(MSTP(81).GE.1.AND.MINT(50).EQ.1) CALL PYMULT(6)
-        MINT(53)=N
-C...Hadron remnants and primordial kT.
-  130   CALL PYREMN(IPU1,IPU2)
-        IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO 110
-        IF(MINT(51).EQ.1) GOTO 100
-      ELSE
-C...Diffractive and elastic scattering.
-        CALL PYDIFF
-      ENDIF
-C...Recalculate energies from momenta and masses (if desired).
-      IF(MSTP(113).GE.1) THEN
-        DO 140 I=MINT(83)+1,N
-        IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
-     &  P(I,2)**2+P(I,3)**2+P(I,5)**2)
-  140   CONTINUE
-        NRECAL=N
-      ENDIF
-C...Rearrange partons along strings, check invariant mass cuts.
-      MSTU(28)=0
-      IF(MSTP(111).LE.0) MSTJ(14)=-1
-      CALL LUPREP(MINT(84)+1)
-      MSTJ(14)=MSTJ14
-      IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
-      IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
-        DO 170 I=MINT(84)+1,N
-        IF(K(I,2).EQ.94) THEN
-          DO 160 I1=I+1,MIN(N,I+3)
-          IF(K(I1,3).EQ.I) THEN
-            K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
-            IF(K(I1,3).EQ.0) THEN
-              DO 150 II=MINT(84)+1,I-1
-              IF(K(II,2).EQ.K(I1,2)) THEN
-                IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
-     &          MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
-              ENDIF
-  150         CONTINUE
-              IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
-            ENDIF
-          ENDIF
-  160     CONTINUE
-        ENDIF
-  170   CONTINUE
-        CALL LUEDIT(12)
-        CALL LUEDIT(14)
-        IF(MSTP(125).EQ.0) CALL LUEDIT(15)
-        IF(MSTP(125).EQ.0) MINT(4)=0
-        DO 190 I=MINT(83)+1,N
-        IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
-          DO 180 I1=I+1,N
-          IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
-          IF(K(I1,3).EQ.I) K(I,5)=I1
-  180     CONTINUE
-        ENDIF
-  190   CONTINUE
-      ENDIF
-C...Introduce separators between sections in LULIST event listing.
-      IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
-        MSTU70=1
-        MSTU(71)=N
-      ELSEIF(IPILE.EQ.1) THEN
-        MSTU70=3
-        MSTU(71)=2
-        MSTU(72)=MINT(4)
-        MSTU(73)=N
-      ENDIF
-C...Go back to lab frame (needed for vertices, also in fragmentation).
-      CALL PYFRAM(1)
-C...Set nonvanishing production vertex (optional).
-      IF(MSTP(151).EQ.1) THEN
-        DO 200 J=1,4
-        VTX(J)=PARP(150+J)*SQRT(-2.*LOG(MAX(1E-10,RLU(0))))*
-     &  SIN(PARU(2)*RLU(0))
-  200   CONTINUE
-        DO 220 I=MINT(83)+1,N
-        DO 210 J=1,4
-        V(I,J)=V(I,J)+VTX(J)
-  210   CONTINUE
-  220   CONTINUE
-      ENDIF
-C...Perform hadronization (if desired).
-      IF(MSTP(111).GE.1) THEN
-        CALL LUEXEC
-        IF(MSTU(24).NE.0) GOTO 100
-      ENDIF
-      IF(MSTP(113).GE.1) THEN
-        DO 230 I=NRECAL,N
-        IF(P(I,5).GT.0.) P(I,4)=SQRT(P(I,1)**2+
-     &  P(I,2)**2+P(I,3)**2+P(I,5)**2)
-  230   CONTINUE
-      ENDIF
-      IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL LUEDIT(14)
-C...Store event information and calculate Monte Carlo estimates of
-C...subprocess cross-sections.
-  240 IF(IPILE.EQ.1) CALL PYDOCU
-C...Set counters for current pileup event and loop to next one.
-      MSTI(41)=IPILE
-      IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
-      IF(MSTU70.LT.10) THEN
-        MSTU70=MSTU70+1
-        MSTU(70+MSTU70)=N
-      ENDIF
-      MINT(83)=N
-      MINT(84)=N+MSTP(126)
-      IF(IPILE.LT.NPILE) CALL PYFRAM(2)
-  250 CONTINUE
-C...Generic information on pileup events. Reconstruct missing history.
-      IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
-        PARI(91)=VINT(132)
-        PARI(92)=VINT(133)
-        PARI(93)=VINT(134)
-        IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
-      ENDIF
-      CALL LUEDIT(16)
-C...Transform to the desired coordinate frame.
-  260 CALL PYFRAM(MSTP(124))
-      MSTU(70)=MSTU70
-      PARU(21)=VINT(1)
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyevwt.F b/PYTHIA/pythia/pyevwt.F
deleted file mode 100644 (file)
index 5aa0fca..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYEVWT(WTXS)
-C...Dummy routine, which the user can replace in order to multiply the
-C...standard PYTHIA differential cross-section by a process- and
-C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds
-C...to generation of weighted events, with weight 1/WTXS, while for
-C...MSTP(142)=2 it corresponds to a modification of the underlying
-C...physics.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      SAVE /PYINT1/,/PYINT2/
-C...Set default weight for WTXS.
-      WTXS=1.
-C...Read out subprocess number.
-      ISUB=MINT(1)
-      ISTSB=ISET(ISUB)
-C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
-      TAU=VINT(21)
-      YST=VINT(22)
-      CTH=0.
-      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) CTH=VINT(23)
-      TAUP=0.
-      IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
-C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2.
-      X1=VINT(41)
-      X2=VINT(42)
-      XF=X1-X2
-      SHAT=VINT(44)
-      THAT=VINT(45)
-      UHAT=VINT(46)
-      PT2=VINT(48)
-C...Modifications by user to be put here.
-C...Stop program if this routine is ever called.
-C...You should not copy these lines to your own routine.
-      WRITE(MSTU(11),5000)
-      IF(RLU(0).LT.10.) STOP
-C...Format for error printout.
- 5000 FORMAT(1X,'Error: you did not link your PYEVWT routine ',
-     &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
-     &1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyfram.F b/PYTHIA/pythia/pyfram.F
deleted file mode 100644 (file)
index c192659..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYFRAM(IFRAME)
-C...Performs transformations between different coordinate frames.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUDAT1/
-      SAVE /PYPARS/,/PYINT1/
-C...Check that transformation can and should be done.
-      IF(IFRAME.EQ.1.OR.IFRAME.EQ.2.OR.(IFRAME.EQ.3.AND.
-     &MINT(91).EQ.1)) THEN
-        IF(IFRAME.EQ.MINT(6)) RETURN
-      ELSE
-        WRITE(MSTU(11),5000) IFRAME,MINT(6)
-        RETURN
-      ENDIF
-      IF(MINT(6).EQ.1) THEN
-C...Transform from fixed target or user specified frame to
-C...overall CM frame.
-        CALL LUROBO(0.,0.,-VINT(8),-VINT(9),-VINT(10))
-        CALL LUROBO(0.,-VINT(7),0.,0.,0.)
-        CALL LUROBO(-VINT(6),0.,0.,0.,0.)
-      ELSEIF(MINT(6).EQ.3) THEN
-C...Transform from hadronic CM frame in DIS to overall CM frame.
-        CALL LUROBO(-VINT(221),-VINT(222),-VINT(223),-VINT(224),
-     &  -VINT(225))
-      ENDIF
-      IF(IFRAME.EQ.1) THEN
-C...Transform from overall CM frame to fixed target or user specified
-C...frame.
-        CALL LUROBO(VINT(6),VINT(7),VINT(8),VINT(9),VINT(10))
-      ELSEIF(IFRAME.EQ.3) THEN
-C...Transform from overall CM frame to hadronic CM frame in DIS.
-        CALL LUROBO(0.,0.,VINT(223),VINT(224),VINT(225))
-        CALL LUROBO(0.,VINT(222),0.,0.,0.)
-        CALL LUROBO(VINT(221),0.,0.,0.,0.)
-      ENDIF
-C...Set information about new frame.
-      MINT(6)=IFRAME
-      MSTI(6)=IFRAME
- 5000 FORMAT(1X,'Error: illegal values in subroutine PYFRAM.',1X,
-     &'No transformation performed.'/1X,'IFRAME =',1X,I5,'; MINT(6) =',
-     &1X,I5)
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pygamm.F b/PYTHIA/pythia/pygamm.F
deleted file mode 100644 (file)
index 83b5359..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-C*********************************************************************
-      FUNCTION PYGAMM(X)
-C...Gives ordinary Gamma function Gamma(x) for positive, real arguments;
-C...see M. Abramowitz, I. A. Stegun: Handbook of Mathematical Functions
-C...(Dover, 1965) 6.1.36.
-      DIMENSION B(8)
-      DATA B/-0.577191652,0.988205891,-0.897056937,0.918206857,
-     &-0.756704078,0.482199394,-0.193527818,0.035868343/
-      NX=INT(X)
-      DX=X-NX
-      PYGAMM=1.
-      DXP=1.
-      DO 100 I=1,8
-      DXP=DXP*DX
-      PYGAMM=PYGAMM+B(I)*DXP
-  100 CONTINUE
-      IF(X.LT.1.) THEN
-        PYGAMM=PYGAMM/X
-      ELSE
-        DO 110 IX=1,NX-1
-        PYGAMM=(X-IX)*PYGAMM
-  110   CONTINUE
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pygano.F b/PYTHIA/pythia/pygano.F
deleted file mode 100644 (file)
index 745a753..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYGANO(KF,X,Q2,P2,ALAM,XPGA)
-C...Purpose: to evaluate the parton distributions of the anomalous
-C...photon, inhomogeneously evolved from a scale P2 (where it vanishes)
-C...to Q2.
-C...KF=0 gives the sum over (up to) 5 flavours,
-C...KF<0 limits to flavours up to abs(KF),
-C...KF>0 is for flavour KF only.
-C...ALAM is the 4-flavour Lambda, which is automatically converted
-C...to 3- and 5-flavour equivalents as needed.
-      DIMENSION XPGA(-6:6),ALAMSQ(3:5)
-      DATA PMC/1.3/, PMB/4.6/, AEM/0.007297/, AEM2PI/0.0011614/
-C...Reset output.
-      DO 100 KFL=-6,6
-      XPGA(KFL)=0.
-  100 CONTINUE
-      IF(Q2.LE.P2) RETURN
-      KFA=IABS(KF)
-C...Calculate Lambda; protect against unphysical Q2 and P2 input.
-      ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2./27.))**2
-      ALAMSQ(4)=ALAM**2
-      ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2./23.))**2
-      P2EFF=MAX(P2,1.2*ALAMSQ(3))
-      IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
-      IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
-      Q2EFF=MAX(Q2,P2EFF)
-      XL=-LOG(X)
-C...Find number of flavours at lower and upper scale.
-      NFP=4
-      IF(P2EFF.LT.PMC**2) NFP=3
-      IF(P2EFF.GT.PMB**2) NFP=5
-      NFQ=4
-      IF(Q2EFF.LT.PMC**2) NFQ=3
-      IF(Q2EFF.GT.PMB**2) NFQ=5
-C...Define range of flavour loop.
-      IF(KF.EQ.0) THEN
-        KFLMN=1
-        KFLMX=5
-      ELSEIF(KF.LT.0) THEN
-        KFLMN=1
-        KFLMX=KFA
-      ELSE
-        KFLMN=KFA
-        KFLMX=KFA
-      ENDIF
-C...Loop over flavours the photon can branch into.
-      DO 110 KFL=KFLMN,KFLMX
-C...Light flavours: calculate t range and (approximate) s range.
-      IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
-        TDIFF=LOG(Q2EFF/P2EFF)
-        S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
-     &  LOG(P2EFF/ALAMSQ(NFQ)))
-        IF(NFQ.GT.NFP) THEN
-          Q2DIV=PMB**2
-          IF(NFQ.EQ.4) Q2DIV=PMC**2
-          SNFQ=(6./(33.-2.*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
-     &    LOG(P2EFF/ALAMSQ(NFQ)))
-          SNFP=(6./(33.-2.*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
-     &    LOG(P2EFF/ALAMSQ(NFQ-1)))
-          S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
-        ENDIF
-        IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
-          Q2DIV=PMC**2
-          SNF4=(6./(33.-2.*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
-     &    LOG(P2EFF/ALAMSQ(4)))
-          SNF3=(6./(33.-2.*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
-     &    LOG(P2EFF/ALAMSQ(3)))
-          S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
-        ENDIF
-C...u and s quark do not need a separate treatment when d has been done.
-      ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
-C...Charm: as above, but only include range above c threshold.
-      ELSEIF(KFL.EQ.4) THEN
-        IF(Q2.LE.PMC**2) GOTO 110
-        P2EFF=MAX(P2EFF,PMC**2)
-        Q2EFF=MAX(Q2EFF,P2EFF)
-        TDIFF=LOG(Q2EFF/P2EFF)
-        S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
-     &  LOG(P2EFF/ALAMSQ(NFQ)))
-        IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
-          Q2DIV=PMB**2
-          SNFQ=(6./(33.-2.*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
-     &    LOG(P2EFF/ALAMSQ(NFQ)))
-          SNFP=(6./(33.-2.*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
-     &    LOG(P2EFF/ALAMSQ(NFQ-1)))
-          S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
-        ENDIF
-C...Bottom: as above, but only include range above b threshold.
-      ELSEIF(KFL.EQ.5) THEN
-        IF(Q2.LE.PMB**2) GOTO 110
-        P2EFF=MAX(P2EFF,PMB**2)
-        Q2EFF=MAX(Q2,P2EFF)
-        TDIFF=LOG(Q2EFF/P2EFF)
-        S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
-     &  LOG(P2EFF/ALAMSQ(NFQ)))
-      ENDIF
-C...Evaluate flavour-dependent prefactor (charge^2 etc.).
-      CHSQ=1./9.
-      IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4./9.
-      FAC=AEM2PI*2.*CHSQ*TDIFF
-C...Evaluate parton distributions (normalized to unit momentum sum).
-      IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
-        XVAL= ((1.5+2.49*S+26.9*S**2)/(1.+32.3*S**2)*X**2 +
-     &  (1.5-0.49*S+7.83*S**2)/(1.+7.68*S**2)*(1.-X)**2 +
-     &  1.5*S/(1.-3.2*S+7.*S**2)*X*(1.-X)) *
-     &  X**(1./(1.+0.58*S)) * (1.-X**2)**(2.5*S/(1.+10.*S))
-        XGLU= 2.*S/(1.+4.*S+7.*S**2) *
-     &  X**(-1.67*S/(1.+2.*S)) * (1.-X**2)**(1.2*S) *
-     &  ((4.*X**2+7.*X+4.)*(1.-X)/3. - 2.*X*(1.+X)*XL)
-        XSEA= 0.333*S**2/(1.+4.90*S+4.69*S**2+21.4*S**3) *
-     &  X**(-1.18*S/(1.+1.22*S)) * (1.-X)**(1.2*S) *
-     &  ((8.-73.*X+62.*X**2)*(1.-X)/9. + (3.-8.*X**2/3.)*X*XL +
-     &  (2.*X-1.)*X*XL**2)
-C...Threshold factors for c and b sea.
-        SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
-        XCHM=0.
-        IF(Q2.GT.PMC**2.AND.Q2.GT.1.001*P2EFF) THEN
-          SCH=MAX(0.,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
-          XCHM=XSEA*(1.-(SCH/SLL)**3)
-        ENDIF
-        XBOT=0.
-        IF(Q2.GT.PMB**2.AND.Q2.GT.1.001*P2EFF) THEN
-          SBT=MAX(0.,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
-          XBOT=XSEA*(1.-(SBT/SLL)**3)
-        ENDIF
-      ENDIF
-C...Add contribution of each valence flavour.
-      XPGA(0)=XPGA(0)+FAC*XGLU
-      XPGA(1)=XPGA(1)+FAC*XSEA
-      XPGA(2)=XPGA(2)+FAC*XSEA
-      XPGA(3)=XPGA(3)+FAC*XSEA
-      XPGA(4)=XPGA(4)+FAC*XCHM
-      XPGA(5)=XPGA(5)+FAC*XBOT
-      XPGA(KFL)=XPGA(KFL)+FAC*XVAL
-  110 CONTINUE
-      DO 120 KFL=1,5
-      XPGA(-KFL)=XPGA(KFL)
-  120 CONTINUE
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pygbeh.F b/PYTHIA/pythia/pygbeh.F
deleted file mode 100644 (file)
index 02d81a4..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYGBEH(KF,X,Q2,P2,PM2,XPBH)
-C...Purpose: to evaluate the Bethe-Heitler cross section for
-C...heavy flavour production.
-      DATA AEM2PI/0.0011614/
-C...Reset output.
-      XPBH=0.
-      SIGBH=0.
-C...Check kinematics limits.
-      IF(X.GE.Q2/(4.*PM2+Q2+P2)) RETURN
-      W2=Q2*(1.-X)/X-P2
-      BETA2=1.-4.*PM2/W2
-      IF(BETA2.LT.1E-10) RETURN
-      RMQ=4.*PM2/Q2
-C...Simple case: P2 = 0.
-      IF(P2.LT.1E-4) THEN
-        BETA=SQRT(BETA2)
-        IF(BETA.LT.0.99) THEN
-          XBL=LOG((1.+BETA)/(1.-BETA))
-        ELSE
-          XBL=LOG((1.+BETA)**2*W2/(4.*PM2))
-        ENDIF
-        SIGBH=BETA*(8.*X*(1.-X)-1.-RMQ*X*(1.-X))+
-     &  XBL*(X**2+(1.-X)**2+RMQ*X*(1.-3.*X)-0.5*RMQ**2*X**2)
-C...Complicated case: P2 > 0, based on approximation of
-C...C.T. Hill and G.G. Ross, Nucl. Phys. B148 (1979) 373
-      ELSE
-        RPQ=1.-4.*X**2*P2/Q2
-        IF(RPQ.GT.1E-10) THEN
-          RPBE=SQRT(RPQ*BETA2)
-          IF(RPBE.LT.0.99) THEN
-            XBL=LOG((1.+RPBE)/(1.-RPBE))
-            XBI=2.*RPBE/(1.-RPBE**2)
-          ELSE
-            RPBESN=4.*PM2/W2+(4.*X**2*P2/Q2)*BETA2
-            XBL=LOG((1.+RPBE)**2/RPBESN)
-            XBI=2.*RPBE/RPBESN
-          ENDIF
-          SIGBH=BETA*(6.*X*(1.-X)-1.)+
-     &    XBL*(X**2+(1.-X)**2+RMQ*X*(1.-3.*X)-0.5*RMQ**2*X**2)+
-     &    XBI*(2.*X/Q2)*(PM2*X*(2.-RMQ)-P2*X)
-        ENDIF
-      ENDIF
-C...Multiply by charge-squared etc. to get parton distribution.
-      CHSQ=1./9.
-      IF(IABS(KF).EQ.2.OR.IABS(KF).EQ.4) CHSQ=4./9.
-      XPBH=3.*CHSQ*AEM2PI*X*SIGBH
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pygdir.F b/PYTHIA/pythia/pygdir.F
deleted file mode 100644 (file)
index 2113684..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-C*********************************************************************
-       SUBROUTINE PYGDIR(X,Q2,P2,AK0,XPGA)
-C...Purpose: to evaluate the direct contribution, i.e. the C^gamma term,
-C...as needed in MSbar parametrizations.
-      DIMENSION XPGA(-6:6)
-      DATA PMC/1.3/, PMB/4.6/, AEM2PI/0.0011614/
-C...Reset output.
-      DO 100 KFL=-6,6
-      XPGA(KFL)=0.
-  100 CONTINUE
-C...Evaluate common x-dependent expression.
-      XTMP = (X**2+(1.-X)**2) * (-LOG(X)) - 1.
-      CGAM = 3.*AEM2PI*X * (XTMP*(1.+P2/(P2+AK0**2)) + 6.*X*(1.-X))
-C...d, u, s part by simple charge factor.
-      XPGA(1)=(1./9.)*CGAM
-      XPGA(2)=(4./9.)*CGAM
-      XPGA(3)=(1./9.)*CGAM
-C...Also fill for antiquarks.
-      DO 110 KF=1,5
-      XPGA(-KF)=XPGA(KF)
-  110 CONTINUE
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyggam.F b/PYTHIA/pythia/pyggam.F
deleted file mode 100644 (file)
index e2b7c96..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-C*********************************************************************
-C...The following routines are adapted from
-C...SaSgam - parton distributions of the photon
-C...by Gerhard A. Schuler and Torbjorn Sjostrand
-C...For further information see CERN-TH/95-62.
-C...The version found here is NOT suitable for standalone usage.
-      SUBROUTINE PYGGAM(ISET,X,Q2,P2,F2GM,XPDFGM)
-C...Purpose: to construct the F2 and parton distributions of the photon
-C...by summing homogeneous (VMD) and inhomogeneous (anomalous) terms.
-C...For F2, c and b are included by the Bethe-Heitler formula;
-C...in the 'MSbar' scheme additionally a Cgamma term is added.
-      DIMENSION XPDFGM(-6:6)
-      COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
-     &XPDIR(-6:6)
-      SAVE /PYINT8/
-C...Temporary array.
-      DIMENSION XPGA(-6:6)
-C...Charm and bottom masses (low to compensate for J/psi etc.).
-      DATA PMC/1.3/, PMB/4.6/
-C...alpha_em and alpha_em/(2*pi).
-      DATA AEM/0.007297/, AEM2PI/0.0011614/
-C...Lambda value for 4 flavours.
-      DATA ALAM/0.20/
-C...Mixture u/(u+d), = 0.5 for incoherent and = 0.8 for coherent sum.
-      DATA FRACU/0.8/
-C...VMD couplings f_V**2/(4*pi).
-      DATA FRHO/2.20/, FOMEGA/23.6/, FPHI/18.4/
-C...Masses for rho (=omega) and phi.
-      DATA PMRHO/0.770/, PMPHI/1.020/
-C...Reset output.
-      F2GM=0.
-      DO 100 KFL=-6,6
-      XPDFGM(KFL)=0.
-      XPVMD(KFL)=0.
-      XPANL(KFL)=0.
-      XPANH(KFL)=0.
-      XPBEH(KFL)=0.
-      XPDIR(KFL)=0.
-  100 CONTINUE
-C...Set k0 cut-off parameter as function of set used.
-      IF(ISET.LE.2) THEN
-        AK0=0.6
-      ELSE
-        AK0=2.
-      ENDIF
-C...Call VMD parametrization for d quark and use to give rho+omega+ phi.
-C...Note scale choice and dipole dampening for off-shell photon.
-      P2MX=MAX(P2,AK0**2)
-      CALL PYGVMD(ISET,1,X,Q2,P2MX,ALAM,XPGA)
-      XFVAL=XPGA(1)-XPGA(2)
-      XPGA(1)=XPGA(2)
-      XPGA(-1)=XPGA(-2)
-      FACUD=AEM*(1./FRHO+1./FOMEGA)*(PMRHO**2/(PMRHO**2+P2))**2
-      FACS=AEM*(1./FPHI)*(PMPHI**2/(PMPHI**2+P2))**2
-      DO 110 KFL=-5,5
-      XPVMD(KFL)=(FACUD+FACS)*XPGA(KFL)
-  110 CONTINUE
-      XPVMD(1)=XPVMD(1)+(1.-FRACU)*FACUD*XFVAL
-      XPVMD(2)=XPVMD(2)+FRACU*FACUD*XFVAL
-      XPVMD(3)=XPVMD(3)+FACS*XFVAL
-      XPVMD(-1)=XPVMD(-1)+(1.-FRACU)*FACUD*XFVAL
-      XPVMD(-2)=XPVMD(-2)+FRACU*FACUD*XFVAL
-      XPVMD(-3)=XPVMD(-3)+FACS*XFVAL
-C...Call anomalous parametrization for d + u + s.
-      CALL PYGANO(-3,X,Q2,P2MX,ALAM,XPGA)
-      DO 120 KFL=-5,5
-      XPANL(KFL)=XPGA(KFL)
-  120 CONTINUE
-C...Call anomalous parametrization for c and b.
-      CALL PYGANO(4,X,Q2,P2MX,ALAM,XPGA)
-      DO 130 KFL=-5,5
-      XPANH(KFL)=XPGA(KFL)
-  130 CONTINUE
-      CALL PYGANO(5,X,Q2,P2MX,ALAM,XPGA)
-      DO 140 KFL=-5,5
-      XPANH(KFL)=XPANH(KFL)+XPGA(KFL)
-  140 CONTINUE
-C...Call Bethe-Heitler term expression for charm and bottom.
-      CALL PYGBEH(4,X,Q2,P2,PMC**2,XPBH)
-      XPBEH(4)=XPBH
-      XPBEH(-4)=XPBH
-      CALL PYGBEH(5,X,Q2,P2,PMB**2,XPBH)
-      XPBEH(5)=XPBH
-      XPBEH(-5)=XPBH
-C...For MSbar subtraction call C^gamma term expression for d, u, s.
-      IF(ISET.EQ.2.OR.ISET.EQ.4) THEN
-        CALL PYGDIR(X,Q2,P2,AK0,XPGA)
-        DO 150 KFL=-5,5
-        XPDIR(KFL)=XPGA(KFL)
-  150   CONTINUE
-      ENDIF
-C...Store result in output array.
-      DO 160 KFL=-5,5
-      CHSQ=1./9.
-      IF(IABS(KFL).EQ.2.OR.IABS(KFL).EQ.4) CHSQ=4./9.
-      XPF2=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
-      IF(KFL.NE.0) F2GM=F2GM+CHSQ*XPF2
-      XPDFGM(KFL)=XPVMD(KFL)+XPANL(KFL)+XPANH(KFL)
-  160 CONTINUE
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pygvmd.F b/PYTHIA/pythia/pygvmd.F
deleted file mode 100644 (file)
index b96a7c6..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYGVMD(ISET,KF,X,Q2,P2,ALAM,XPGA)
-C...Purpose: to evaluate the VMD parton distributions of a photon,
-C...evolved homogeneously from an initial scale P2 to Q2.
-C...Does not include dipole suppression factor.
-C...ISET is parton distribution set, see above;
-C...additionally ISET=0 is used for the evolution of an anomalous photon
-C...which branched at a scale P2 and then evolved homogeneously to Q2.
-C...ALAM is the 4-flavour Lambda, which is automatically converted
-C...to 3- and 5-flavour equivalents as needed.
-      DIMENSION XPGA(-6:6)
-      DATA PMC/1.3/, PMB/4.6/, AEM/0.007297/, AEM2PI/0.0011614/
-C...Reset output.
-      DO 100 KFL=-6,6
-      XPGA(KFL)=0.
-  100 CONTINUE
-      KFA=IABS(KF)
-C...Calculate Lambda; protect against unphysical Q2 and P2 input.
-      ALAM3=ALAM*(PMC/ALAM)**(2./27.)
-      ALAM5=ALAM*(ALAM/PMB)**(2./23.)
-      P2EFF=MAX(P2,1.2*ALAM3**2)
-      IF(KFA.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
-      IF(KFA.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
-      Q2EFF=MAX(Q2,P2EFF)
-C...Find number of flavours at lower and upper scale.
-      NFP=4
-      IF(P2EFF.LT.PMC**2) NFP=3
-      IF(P2EFF.GT.PMB**2) NFP=5
-      NFQ=4
-      IF(Q2EFF.LT.PMC**2) NFQ=3
-      IF(Q2EFF.GT.PMB**2) NFQ=5
-C...Find s as sum of 3-, 4- and 5-flavour parts.
-      S=0.
-      IF(NFP.EQ.3) THEN
-        Q2DIV=PMC**2
-        IF(NFQ.EQ.3) Q2DIV=Q2EFF
-        S=S+(6./27.)*LOG(LOG(Q2DIV/ALAM3**2)/LOG(P2EFF/ALAM3**2))
-      ENDIF
-      IF(NFP.LE.4.AND.NFQ.GE.4) THEN
-        P2DIV=P2EFF
-        IF(NFP.EQ.3) P2DIV=PMC**2
-        Q2DIV=Q2EFF
-        IF(NFQ.EQ.5) Q2DIV=PMB**2
-        S=S+(6./25.)*LOG(LOG(Q2DIV/ALAM**2)/LOG(P2DIV/ALAM**2))
-      ENDIF
-      IF(NFQ.EQ.5) THEN
-        P2DIV=PMB**2
-        IF(NFP.EQ.5) P2DIV=P2EFF
-        S=S+(6./23.)*LOG(LOG(Q2EFF/ALAM5**2)/LOG(P2DIV/ALAM5**2))
-      ENDIF
-C...Calculate frequent combinations of x and s.
-      X1=1.-X
-      XL=-LOG(X)
-      S2=S**2
-      S3=S**3
-      S4=S**4
-C...Evaluate homogeneous anomalous parton distributions below or
-C...above threshold.
-      IF(ISET.EQ.0) THEN
-      IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
-     &(KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
-        XVAL = X * 1.5 * (X**2+X1**2)
-        XGLU = 0.
-        XSEA = 0.
-      ELSE
-        XVAL = (1.5/(1.-0.197*S+4.33*S2)*X**2 + (1.5+2.10*S)/
-     &  (1.+3.29*S)*X1**2 + 5.23*S/(1.+1.17*S+19.9*S3)*X*X1) *
-     &  X**(1./(1.+1.5*S)) * (1.-X**2)**(2.667*S)
-        XGLU = 4.*S/(1.+4.76*S+15.2*S2+29.3*S4) *
-     &  X**(-2.03*S/(1.+2.44*S)) * (X1*XL)**(1.333*S) *
-     &  ((4.*X**2+7.*X+4.)*X1/3. - 2.*X*(1.+X)*XL)
-        XSEA = S2/(1.+4.54*S+8.19*S2+8.05*S3) *
-     &  X**(-1.54*S/(1.+1.29*S)) * X1**(2.667*S) *
-     &  ((8.-73.*X+62.*X**2)*X1/9. + (3.-8.*X**2/3.)*X*XL +
-     &  (2.*X-1.)*X*XL**2)
-      ENDIF
-C...Evaluate set 1D parton distributions below or above threshold.
-      ELSEIF(ISET.EQ.1) THEN
-      IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
-     &(KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
-        XVAL = 1.294 * X**0.80 * X1**0.76
-        XGLU = 1.273 * X**0.40 * X1**1.76
-        XSEA = 0.100 * X1**3.76
-      ELSE
-        XVAL = 1.294/(1.+0.252*S+3.079*S2) * X**(0.80-0.13*S) *
-     &  X1**(0.76+0.667*S) * XL**(2.*S)
-        XGLU = 7.90*S/(1.+5.50*S) * EXP(-5.16*S) *
-     &  X**(-1.90*S/(1.+3.60*S)) * X1**1.30 * XL**(0.50+3.*S) +
-     &  1.273 * EXP(-10.*S) * X**0.40 * X1**(1.76+3.*S)
-        XSEA = (0.1-0.397*S2+1.121*S3)/(1.+5.61*S2+5.26*S3) *
-     &  X**(-7.32*S2/(1.+10.3*S2)) *
-     &  X1**((3.76+15.*S+12.*S2)/(1.+4.*S))
-        XSEA0 = 0.100 * X1**3.76
-      ENDIF
-C...Evaluate set 1M parton distributions below or above threshold.
-      ELSEIF(ISET.EQ.2) THEN
-      IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
-     &(KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
-        XVAL = 0.8477 * X**0.51 * X1**1.37
-        XGLU = 3.42 * X**0.255 * X1**2.37
-        XSEA = 0.
-      ELSE
-        XVAL = 0.8477/(1.+1.37*S+2.18*S2+3.73*S3) * X**(0.51+0.21*S)
-     &  * X1**1.37 * XL**(2.667*S)
-        XGLU = 24.*S/(1.+9.6*S+0.92*S2+14.34*S3) * EXP(-5.94*S) *
-     &  X**((-0.013-1.80*S)/(1.+3.14*S)) * X1**(2.37+0.4*S) *
-     &  XL**(0.32+3.6*S) + 3.42 * EXP(-12.*S) * X**0.255 *
-     &  X1**(2.37+3.*S)
-        XSEA = 0.842*S/(1.+21.3*S-33.2*S2+229.*S3) *
-     &  X**((0.13-2.90*S)/(1.+5.44*S)) * X1**(3.45+0.5*S) *
-     &  XL**(2.8*S)
-        XSEA0 = 0.
-      ENDIF
-C...Evaluate set 2D parton distributions below or above threshold.
-      ELSEIF(ISET.EQ.3) THEN
-      IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
-     &(KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
-        XVAL = X**0.46 * X1**0.64 + 0.76 * X
-        XGLU = 1.925 * X1**2
-        XSEA = 0.242 * X1**4
-      ELSE
-        XVAL = (1.+0.186*S)/(1.-0.209*S+1.495*S2) * X**(0.46+0.25*S)
-     &  * X1**((0.64+0.14*S+5.*S2)/(1.+S)) * XL**(1.9*S) +
-     &  (0.76+0.4*S) * X * X1**(2.667*S)
-        XGLU = (1.925+5.55*S+147.*S2)/(1.-3.59*S+3.32*S2) *
-     &  EXP(-18.67*S) * X**((-5.81*S-5.34*S2)/(1.+29.*S-4.26*S2))
-     &  * X1**((2.-5.9*S)/(1.+1.7*S)) * XL**(9.3*S/(1.+1.7*S))
-        XSEA = (0.242-0.252*S+1.19*S2)/(1.-0.607*S+21.95*S2) *
-     &  X**(-12.1*S2/(1.+2.62*S+16.7*S2)) * X1**4 * XL**S
-        XSEA0 = 0.242 * X1**4
-      ENDIF
-C...Evaluate set 2M parton distributions below or above threshold.
-      ELSEIF(ISET.EQ.4) THEN
-      IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
-     &(KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
-        XVAL = 1.168 * X**0.50 * X1**2.60 + 0.965 * X
-        XGLU = 1.808 * X1**2
-        XSEA = 0.209 * X1**4
-      ELSE
-        XVAL = (1.168+1.771*S+29.35*S2) * EXP(-5.776*S) *
-     &  X**((0.5+0.208*S)/(1.-0.794*S+1.516*S2)) *
-     &  X1**((2.6+7.6*S)/(1.+5.*S)) * XL**(5.15*S/(1.+2.*S)) +
-     &  (0.965+22.35*S)/(1.+18.4*S) * X * X1**(2.667*S)
-        XGLU = (1.808+29.9*S)/(1.+26.4*S) * EXP(-5.28*S) *
-     &  X**((-5.35*S-10.11*S2)/(1.+31.71*S)) *
-     &  X1**((2.-7.3*S+4.*S2)/(1.+2.5*S)) *
-     &  XL**(10.9*S/(1.+2.5*S))
-        XSEA = (0.209+0.644*S2)/(1.+0.319*S+17.6*S2) *
-     &  X**((-0.373*S-7.71*S2)/(1.+0.815*S+11.0*S2)) *
-     &  X1**(4.+S) * XL**(0.45*S)
-        XSEA0 = 0.209 * X1**4
-      ENDIF
-      ENDIF
-C...Threshold factors for c and b sea.
-      SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
-      XCHM=0.
-      IF(Q2.GT.PMC**2.AND.Q2.GT.1.001*P2EFF) THEN
-        SCH=MAX(0.,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
-        IF(ISET.EQ.0) THEN
-          XCHM=XSEA*(1.-(SCH/SLL)**2)
-        ELSE
-          XCHM=MAX(0.,XSEA-XSEA0*X1**(2.667*S))*(1.-SCH/SLL)
-        ENDIF
-      ENDIF
-      XBOT=0.
-      IF(Q2.GT.PMB**2.AND.Q2.GT.1.001*P2EFF) THEN
-        SBT=MAX(0.,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
-        IF(ISET.EQ.0) THEN
-          XBOT=XSEA*(1.-(SBT/SLL)**2)
-        ELSE
-          XBOT=MAX(0.,XSEA-XSEA0*X1**(2.667*S))*(1.-SBT/SLL)
-        ENDIF
-      ENDIF
-C...Fill parton distributions.
-      XPGA(0)=XGLU
-      XPGA(1)=XSEA
-      XPGA(2)=XSEA
-      XPGA(3)=XSEA
-      XPGA(4)=XCHM
-      XPGA(5)=XBOT
-      XPGA(KFA)=XPGA(KFA)+XVAL
-      DO 110 KFL=1,5
-      XPGA(-KFL)=XPGA(KFL)
-  110 CONTINUE
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyhfth.F b/PYTHIA/pythia/pyhfth.F
deleted file mode 100644 (file)
index e7db7f5..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-C*********************************************************************
-      FUNCTION PYHFTH(SH,SQM,FRATT)
-C...Gives threshold attractive/repulsive factor for heavy flavour
-C...production.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUDAT1/
-      SAVE /PYPARS/,/PYINT1/
-C...Value for alpha_strong.
-      IF(MSTP(35).LE.1) THEN
-        ALSSG=PARP(35)
-      ELSE
-        MST115=MSTU(115)
-        MSTU(115)=MSTP(36)
-        Q2BN=SQRT(MAX(1.,SQM*((SQRT(SH)-2.*SQRT(SQM))**2+PARP(36)**2)))
-        ALSSG=ULALPS(Q2BN)
-        MSTU(115)=MST115
-      ENDIF
-C...Evaluate attractive and repulsive factors.
-      XATTR=4.*PARU(1)*ALSSG/(3.*SQRT(MAX(1E-20,1.-4.*SQM/SH)))
-      FATTR=XATTR/(1.-EXP(-MIN(50.,XATTR)))
-      XREPU=PARU(1)*ALSSG/(6.*SQRT(MAX(1E-20,1.-4.*SQM/SH)))
-      FREPU=XREPU/(EXP(MIN(50.,XREPU))-1.)
-      PYHFTH=FRATT*FATTR+(1.-FRATT)*FREPU
-      VINT(138)=PYHFTH
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyi3au.F b/PYTHIA/pythia/pyi3au.F
deleted file mode 100644 (file)
index 615fc64..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-C***********************************************************************
-      SUBROUTINE PYI3AU(EPS,RAT,Y3RE,Y3IM)
-C...Calculates real and imaginary parts of the auxiliary function I3;
-C...see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van der Bij,
-C...Nucl. Phys. B297 (1988) 221.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-      BE=0.5*(1.+SQRT(1.+RAT*EPS))
-      IF(EPS.LT.1.) GA=0.5*(1.+SQRT(1.-EPS))
-      IF(EPS.LT.0.) THEN
-        IF(ABS(EPS).LT.1.E-4.AND.ABS(RAT*EPS).LT.1.E-4) THEN
-          F3RE=PYSPEN(-0.25*EPS/(1.+0.25*(RAT-1.)*EPS),0.,1)-
-     &    PYSPEN((1.-0.25*EPS)/(1.+0.25*(RAT-1.)*EPS),0.,1)+
-     &    PYSPEN(0.25*(RAT+1.)*EPS/(1.+0.25*RAT*EPS),0.,1)-
-     &    PYSPEN((RAT+1.)/RAT,0.,1)+0.5*(LOG(1.+0.25*RAT*EPS)**2-
-     &    LOG(0.25*RAT*EPS)**2)+LOG(1.-0.25*EPS)*
-     &    LOG((1.+0.25*(RAT-1.)*EPS)/(1.+0.25*RAT*EPS))+
-     &    LOG(-0.25*EPS)*LOG(0.25*RAT*EPS/(1.+0.25*(RAT-1.)*EPS))
-        ELSEIF(ABS(EPS).LT.1.E-4.AND.ABS(RAT*EPS).GE.1.E-4) THEN
-          F3RE=PYSPEN(-0.25*EPS/(BE-0.25*EPS),0.,1)-
-     &    PYSPEN((1.-0.25*EPS)/(BE-0.25*EPS),0.,1)+
-     &    PYSPEN((BE-1.+0.25*EPS)/BE,0.,1)-
-     &    PYSPEN((BE-1.+0.25*EPS)/(BE-1.),0.,1)+
-     &    0.5*(LOG(BE)**2-LOG(BE-1.)**2)+
-     &    LOG(1.-0.25*EPS)*LOG((BE-0.25*EPS)/BE)+
-     &    LOG(-0.25*EPS)*LOG((BE-1.)/(BE-0.25*EPS))
-        ELSEIF(ABS(EPS).GE.1.E-4.AND.ABS(RAT*EPS).LT.1.E-4) THEN
-          F3RE=PYSPEN((GA-1.)/(GA+0.25*RAT*EPS),0.,1)-
-     &    PYSPEN(GA/(GA+0.25*RAT*EPS),0.,1)+
-     &    PYSPEN((1.+0.25*RAT*EPS-GA)/(1.+0.25*RAT*EPS),0.,1)-
-     &    PYSPEN((1.+0.25*RAT*EPS-GA)/(0.25*RAT*EPS),0.,1)+
-     &    0.5*(LOG(1.+0.25*RAT*EPS)**2-LOG(0.25*RAT*EPS)**2)+
-     &    LOG(GA)*LOG((GA+0.25*RAT*EPS)/(1.+0.25*RAT*EPS))+
-     &    LOG(GA-1.)*LOG(0.25*RAT*EPS/(GA+0.25*RAT*EPS))
-        ELSE
-          F3RE=PYSPEN((GA-1.)/(GA+BE-1.),0.,1)-
-     &    PYSPEN(GA/(GA+BE-1.),0.,1)+PYSPEN((BE-GA)/BE,0.,1)-
-     &    PYSPEN((BE-GA)/(BE-1.),0.,1)+0.5*(LOG(BE)**2-LOG(BE-1.)**2)+
-     &    LOG(GA)*LOG((GA+BE-1.)/BE)+LOG(GA-1.)*LOG((BE-1.)/(GA+BE-1.))
-        ENDIF
-        F3IM=0.
-      ELSEIF(EPS.LT.1.) THEN
-        IF(ABS(EPS).LT.1.E-4.AND.ABS(RAT*EPS).LT.1.E-4) THEN
-          F3RE=PYSPEN(-0.25*EPS/(1.+0.25*(RAT-1.)*EPS),0.,1)-
-     &    PYSPEN((1.-0.25*EPS)/(1.+0.25*(RAT-1.)*EPS),0.,1)+
-     &    PYSPEN((1.-0.25*EPS)/(-0.25*(RAT+1.)*EPS),0.,1)-
-     &    PYSPEN(1./(RAT+1.),0.,1)+LOG((1.-0.25*EPS)/(0.25*EPS))*
-     &    LOG((1.+0.25*(RAT-1.)*EPS)/(0.25*(RAT+1.)*EPS))
-          F3IM=-PARU(1)*LOG((1.+0.25*(RAT-1.)*EPS)/(0.25*(RAT+1.)*EPS))
-        ELSEIF(ABS(EPS).LT.1.E-4.AND.ABS(RAT*EPS).GE.1.E-4) THEN
-          F3RE=PYSPEN(-0.25*EPS/(BE-0.25*EPS),0.,1)-
-     &    PYSPEN((1.-0.25*EPS)/(BE-0.25*EPS),0.,1)+
-     &    PYSPEN((1.-0.25*EPS)/(1.-0.25*EPS-BE),0.,1)-
-     &    PYSPEN(-0.25*EPS/(1.-0.25*EPS-BE),0.,1)+
-     &    LOG((1.-0.25*EPS)/(0.25*EPS))*
-     &    LOG((BE-0.25*EPS)/(BE-1.+0.25*EPS))
-          F3IM=-PARU(1)*LOG((BE-0.25*EPS)/(BE-1.+0.25*EPS))
-        ELSEIF(ABS(EPS).GE.1.E-4.AND.ABS(RAT*EPS).LT.1.E-4) THEN
-          F3RE=PYSPEN((GA-1.)/(GA+0.25*RAT*EPS),0.,1)-
-     &    PYSPEN(GA/(GA+0.25*RAT*EPS),0.,1)+
-     &    PYSPEN(GA/(GA-1.-0.25*RAT*EPS),0.,1)-
-     &    PYSPEN((GA-1.)/(GA-1.-0.25*RAT*EPS),0.,1)+
-     &    LOG(GA/(1.-GA))*LOG((GA+0.25*RAT*EPS)/(1.+0.25*RAT*EPS-GA))
-          F3IM=-PARU(1)*LOG((GA+0.25*RAT*EPS)/(1.+0.25*RAT*EPS-GA))
-        ELSE
-          F3RE=PYSPEN((GA-1.)/(GA+BE-1.),0.,1)-
-     &    PYSPEN(GA/(GA+BE-1.),0.,1)+PYSPEN(GA/(GA-BE),0.,1)-
-     &    PYSPEN((GA-1.)/(GA-BE),0.,1)+LOG(GA/(1.-GA))*
-     &    LOG((GA+BE-1.)/(BE-GA))
-          F3IM=-PARU(1)*LOG((GA+BE-1.)/(BE-GA))
-         ENDIF
-      ELSE
-        RSQ=EPS/(EPS-1.+(2.*BE-1.)**2)
-        RCTHE=RSQ*(1.-2.*BE/EPS)
-        RSTHE=SQRT(MAX(0.,RSQ-RCTHE**2))
-        RCPHI=RSQ*(1.+2.*(BE-1.)/EPS)
-        RSPHI=SQRT(MAX(0.,RSQ-RCPHI**2))
-        R=SQRT(RSQ)
-        THE=ACOS(MAX(-0.999999,MIN(0.999999,RCTHE/R)))
-        PHI=ACOS(MAX(-0.999999,MIN(0.999999,RCPHI/R)))
-        F3RE=PYSPEN(RCTHE,RSTHE,1)+PYSPEN(RCTHE,-RSTHE,1)-
-     &  PYSPEN(RCPHI,RSPHI,1)-PYSPEN(RCPHI,-RSPHI,1)+
-     &  (PHI-THE)*(PHI+THE-PARU(1))
-        F3IM=PYSPEN(RCTHE,RSTHE,2)+PYSPEN(RCTHE,-RSTHE,2)-
-     &  PYSPEN(RCPHI,RSPHI,2)-PYSPEN(RCPHI,-RSPHI,2)
-      ENDIF
-      Y3RE=2./(2.*BE-1.)*F3RE
-      Y3IM=2./(2.*BE-1.)*F3IM
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyinbm.F b/PYTHIA/pythia/pyinbm.F
deleted file mode 100644 (file)
index c128ed7..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
-C...Identifies the two incoming particles and the choice of frame.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/
-      CHARACTER CHFRAM*8,CHBEAM*8,CHTARG*8,CHCOM(3)*8,CHALP(2)*26,
-     &CHIDNT(3)*8,CHTEMP*8,CHCDE(29)*8,CHINIT*76
-      DIMENSION LEN(3),KCDE(29),PM(2)
-      DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
-     &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
-      DATA CHCDE/'e-      ','e+      ','nu_e    ','nu_e~   ',
-     &'mu-     ','mu+     ','nu_mu   ','nu_mu~  ','tau-    ',
-     &'tau+    ','nu_tau  ','nu_tau~ ','pi+     ','pi-     ',
-     &'n0      ','n~0     ','p+      ','p~-     ','gamma   ',
-     &'lambda0 ','sigma-  ','sigma0  ','sigma+  ','xi-     ',
-     &'xi0     ','omega-  ','pi0     ','reggeon ','pomeron '/
-      DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
-     &211,-211,2112,-2112,2212,-2212,22,3122,3112,3212,3222,
-     &3312,3322,3334,111,28,29/
-C...Store initial energy. Default frame.
-      VINT(290)=WIN
-      MINT(111)=0
-C...Convert character variables to lowercase and find their length.
-      CHCOM(1)=CHFRAM
-      CHCOM(2)=CHBEAM
-      CHCOM(3)=CHTARG
-      DO 130 I=1,3
-      LEN(I)=8
-      DO 110 LL=8,1,-1
-      IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
-      DO 100 LA=1,26
-      IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
-     &CHALP(1)(LA:LA)
-  100 CONTINUE
-  110 CONTINUE
-      CHIDNT(I)=CHCOM(I)
-C...Fix up bar, underscore and charge in particle name (if needed).
-      DO 120 LL=1,6
-      IF(CHIDNT(I)(LL:LL+2).EQ.'bar') THEN
-        CHTEMP=CHIDNT(I)
-        CHIDNT(I)=CHTEMP(1:LL-1)//'~'//CHTEMP(LL+3:8)//'  '
-      ENDIF
-  120 CONTINUE
-      IF(CHIDNT(I)(1:2).EQ.'nu'.AND.CHIDNT(I)(3:3).NE.'_') THEN
-        CHTEMP=CHIDNT(I)
-        CHIDNT(I)='nu_'//CHTEMP(3:7)
-      ELSEIF(CHIDNT(I)(1:2).EQ.'n ') THEN
-        CHIDNT(I)(1:3)='n0 '
-      ELSEIF(CHIDNT(I)(1:2).EQ.'n~') THEN
-        CHIDNT(I)(1:3)='n~0'
-      ELSEIF(CHIDNT(I)(1:2).EQ.'p ') THEN
-        CHIDNT(I)(1:3)='p+ '
-      ELSEIF(CHIDNT(I)(1:2).EQ.'p~'.OR.CHIDNT(I)(1:2).EQ.'p-') THEN
-        CHIDNT(I)(1:3)='p~-'
-      ELSEIF(CHIDNT(I)(1:6).EQ.'lambda') THEN
-        CHIDNT(I)(7:7)='0'
-      ELSEIF(CHIDNT(I)(1:3).EQ.'reg') THEN
-        CHIDNT(I)(1:7)='reggeon'
-      ELSEIF(CHIDNT(I)(1:3).EQ.'pom') THEN
-        CHIDNT(I)(1:7)='pomeron'
-      ENDIF
-  130 CONTINUE
-C...Identify free initialization.
-      IF(CHCOM(1)(1:2).EQ.'no') THEN
-        MINT(65)=1
-        RETURN
-      ENDIF
-C...Identify incoming beam and target particles.
-      DO 150 I=1,2
-      DO 140 J=1,29
-      IF(CHIDNT(I+1).EQ.CHCDE(J)) MINT(10+I)=KCDE(J)
-  140 CONTINUE
-      PM(I)=ULMASS(MINT(10+I))
-      VINT(2+I)=PM(I)
-  150 CONTINUE
-      IF(MINT(11).EQ.0) WRITE(MSTU(11),5000) CHBEAM(1:LEN(2))
-      IF(MINT(12).EQ.0) WRITE(MSTU(11),5100) CHTARG(1:LEN(3))
-      IF(MINT(11).EQ.0.OR.MINT(12).EQ.0) STOP
-C...Identify choice of frame and input energies.
-      CHINIT=' '
-C...Events defined in the CM frame.
-      IF(CHCOM(1)(1:2).EQ.'cm') THEN
-        MINT(111)=1
-        S=WIN**2
-        IF(MSTP(122).GE.1) THEN
-          IF(CHCOM(2)(1:1).NE.'e') THEN
-            LOFFS=(31-(LEN(2)+LEN(3)))/2
-            CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
-     &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
-     &      ' collider'//' '
-          ELSE
-            LOFFS=(30-(LEN(2)+LEN(3)))/2
-            CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
-     &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
-     &      ' collider'//' '
-          ENDIF
-          WRITE(MSTU(11),5200) CHINIT
-          WRITE(MSTU(11),5300) WIN
-        ENDIF
-C...Events defined in fixed target frame.
-      ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
-        MINT(111)=2
-        S=PM(1)**2+PM(2)**2+2.*PM(2)*SQRT(PM(1)**2+WIN**2)
-        IF(MSTP(122).GE.1) THEN
-          LOFFS=(29-(LEN(2)+LEN(3)))/2
-          CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
-     &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
-     &    ' fixed target'//' '
-          WRITE(MSTU(11),5200) CHINIT
-          WRITE(MSTU(11),5400) WIN
-          WRITE(MSTU(11),5500) SQRT(S)
-        ENDIF
-C...Frame defined by user three-vectors.
-      ELSEIF(CHCOM(1)(1:3).EQ.'use') THEN
-        MINT(111)=3
-        P(1,5)=PM(1)
-        P(2,5)=PM(2)
-        P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
-        P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
-        S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
-     &  (P(1,3)+P(2,3))**2
-        IF(MSTP(122).GE.1) THEN
-          LOFFS=(12-(LEN(2)+LEN(3)))/2
-          CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
-     &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
-     &    ' user-specified configuration'//' '
-          WRITE(MSTU(11),5200) CHINIT
-          WRITE(MSTU(11),5600)
-          WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
-          WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
-          WRITE(MSTU(11),5500) SQRT(MAX(0.,S))
-        ENDIF
-C...Frame defined by user four-vectors.
-      ELSEIF(CHCOM(1)(1:4).EQ.'four') THEN
-        MINT(111)=4
-        PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
-        P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
-        PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
-        P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
-        S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
-     &  (P(1,3)+P(2,3))**2
-        IF(MSTP(122).GE.1) THEN
-          LOFFS=(12-(LEN(2)+LEN(3)))/2
-          CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
-     &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
-     &    ' user-specified configuration'//' '
-          WRITE(MSTU(11),5200) CHINIT
-          WRITE(MSTU(11),5600)
-          WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
-          WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
-          WRITE(MSTU(11),5500) SQRT(MAX(0.,S))
-        ENDIF
-C...Frame defined by user five-vectors.
-      ELSEIF(CHCOM(1)(1:4).EQ.'five') THEN
-        MINT(111)=5
-        S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
-     &  (P(1,3)+P(2,3))**2
-        IF(MSTP(122).GE.1) THEN
-          LOFFS=(12-(LEN(2)+LEN(3)))/2
-          CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
-     &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
-     &    ' user-specified configuration'//' '
-          WRITE(MSTU(11),5200) CHINIT
-          WRITE(MSTU(11),5600)
-          WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
-          WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
-          WRITE(MSTU(11),5500) SQRT(MAX(0.,S))
-        ENDIF
-C...Unknown frame. Error for too low CM energy.
-      ELSE
-        WRITE(MSTU(11),5800) CHFRAM(1:LEN(1))
-        STOP
-      ENDIF
-      IF(S.LT.PARP(2)**2) THEN
-        WRITE(MSTU(11),5900) SQRT(S)
-        STOP
-      ENDIF
-C...Formats for initialization and error information.
- 5000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''.'/
-     &1X,'Execution stopped!')
- 5100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''.'/
-     &1X,'Execution stopped!')
- 5200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
- 5300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
-     &19X,'I'/1X,'I',76X,'I'/1X,78('='))
- 5400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
- 5500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
-     &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
- 5600 FORMAT(1X,'I',76X,'I'/1X,'I',18X,'px (GeV/c)',3X,'py (GeV/c)',3X,
-     &'pz (GeV/c)',6X,'E (GeV)',9X,'I')
- 5700 FORMAT(1X,'I',8X,A8,4(2X,F10.3,1X),8X,'I')
- 5800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''.'/
-     &1X,'Execution stopped!')
- 5900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
-     &'generation.'/1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyinit.F b/PYTHIA/pythia/pyinit.F
deleted file mode 100644 (file)
index b6ef458..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-C*********************************************************************
-C*********************************************************************
-C*                                                                  **
-C*                                                 December 1993    **
-C*                                                                  **
-C*           The Lund Monte Carlo for Hadronic Processes            **
-C*                                                                  **
-C*                        PYTHIA version 5.7                        **
-C*                                                                  **
-C*                        Torbjorn Sjostrand                        **
-C*                Department of theoretical physics 2               **
-C*                        University of Lund                        **
-C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
-C*                    E-mail torbjorn@thep.lu.se                    **
-C*                    phone +46 - 46 - 222 48 16                    ** 
-C*                                                                  **
-C*         Several parts are written by Hans-Uno Bengtsson          **
-C*     CTEQ 2 parton distributions are by the CTEQ collaboration    **
-C*   SaS photon parton distributions together with Gerhard Schuler  **
-C*    g + g -> Z + b + bbar matrix element code by Ronald Kleiss    **
-C*     g + g and q + qbar -> t + tbar + H code by Zoltan Kunszt     **
-C*                                                                  **
-C*   The latest program version and documentation is found on WWW   **
-C*         http://thep.lu.se/tf2/staff/torbjorn/Welcome.html        **
-C*                                                                  **
-C*        Copyright Torbjorn Sjostrand and CERN, Geneva 1993        **
-C*                                                                  **
-C*********************************************************************
-C*********************************************************************
-C                                                                    *
-C  List of subprograms in order of appearance, with main purpose     *
-C  (S = subroutine, F = function, B = block data)                    *
-C                                                                    *
-C  S   PYINIT   to administer the initialization procedure           *
-C  S   PYEVNT   to administer the generation of an event             *
-C  S   PYSTAT   to print cross-section and other information         *
-C  S   PYINRE   to initialize treatment of resonances                *
-C  S   PYINBM   to read in beam, target and frame choices            *
-C  S   PYINKI   to initialize kinematics of incoming particles       *
-C  S   PYINPR   to set up the selection of included processes        *
-C  S   PYXTOT   to give total, elastic and diffractive cross-sect.   *
-C  S   PYMAXI   to find differential cross-section maxima            *
-C  S   PYPILE   to select multiplicity of pileup events              *
-C  S   PYSAVE   to save alternatives for gamma-p and gamma-gamma     *
-C  S   PYRAND   to select subprocess and kinematics for event        *
-C  S   PYSCAT   to set up kinematics and colour flow of event        *
-C  S   PYSSPA   to simulate initial state spacelike showers          *
-C  S   PYRESD   to perform resonance decays                          *
-C  S   PYMULT   to generate multiple interactions                    *
-C  S   PYREMN   to add on target remnants                            *
-C  S   PYDIFF   to set up kinematics for diffractive events          *
-C  S   PYDOCU   to compute cross-sections and handle documentation   *
-C  S   PYFRAM   to perform boosts between different frames           *
-C  S   PYWIDT   to calculate full and partial widths of resonances   *
-C  S   PYOFSH   to calculate partial width into off-shell channels   *
-C  S   PYKLIM   to calculate borders of allowed kinematical region   *
-C  S   PYKMAP   to construct value of kinematical variable           *
-C  S   PYSIGH   to calculate differential cross-sections             *
-C  S   PYSTFU   to evaluate structure functions                      *
-C  S   PYSTFL   to evaluate structure functions at low x and Q^2     *
-C  S   PYSTEL   to evaluate electron structure function              *
-C  S   PYSTGA   to evaluate photon structure function (generic)      *
-C  S   PYGGAM   to evaluate photon structure function (SaS sets)     *
-C  S   PYGVMD   to evaluate VMD part of photon structure functions   *
-C  S   PYGANO   to evaluate anomalous part of photon str. func.      *
-C  S   PYGBEH   to evaluate Bethe-Heitler part of photon str. func.  *
-C  S   PYGDIR   to evaluate direct contribution to photon str. func. *
-C  S   PYSTPI   to evaluate pion structure function                  *
-C  S   PYSTPR   to evaluate proton structure function                *
-C  F   PYCTQ2   to evaluate the CTEQ 2 proton structure function     *
-C  F   PYHFTH   to evaluate threshold factor for heavy flavour       *
-C  S   PYSPLI   to find flavours left in hadron when one removed     *
-C  F   PYGAMM   to evaluate ordinary Gamma function Gamma(x)         *
-C  S   PYWAUX   to evaluate auxiliary functions W1(s) and W2(s)      *
-C  S   PYI3AU   to evaluate auxiliary function I3(s,t,u,v)           *
-C  F   PYSPEN   to evaluate Spence (dilogarithm) function Sp(x)      *
-C  S   PYQQBH   to evaluate matrix element for g + g -> Q + Q~ + H   *
-C  S   PYTEST   to test the proper functioning of the package        *
-C  B   PYDATA   to contain all default values                        *
-C  S   PYKCUT   to provide dummy routine for user kinematical cuts   *
-C  S   PYEVWT   to provide dummy routine for weighting events        *
-C  S   PYUPIN   to initialize a user process                         *
-C  S   PYUPEV   to generate a user process event (dummy routine)     *
-C  S   PDFSET   dummy routine to be removed when using PDFLIB        *
-C  S   STRUCTM  dummy routine to be removed when using PDFLIB        *
-C                                                                    *
-C*********************************************************************
-      SUBROUTINE PYINIT(FRAME,BEAM,TARGET,WIN)
-C...Initializes the generation procedure; finds maxima of the
-C...differential cross-sections to be used for weighting.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/LUDAT4/CHAF(500)
-      CHARACTER CHAF*8
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT9/DXSEC(0:200)
-      DOUBLE PRECISION DXSEC
-      SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/,/LUDAT4/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT9/
-      DIMENSION ALAMIN(20),NFIN(20)
-      CHARACTER*(*) FRAME,BEAM,TARGET
-      CHARACTER CHFRAM*8,CHBEAM*8,CHTARG*8,CHLH(2)*6
-C...Interface to PDFLIB.
-      COMMON/W50512/QCDL4,QCDL5
-      SAVE /W50512/
-      DOUBLE PRECISION VALUE(20),QCDL4,QCDL5
-      CHARACTER*20 PARM(20)
-      DATA VALUE/20*0D0/,PARM/20*' '/
-C...Data:Lambda and n_f values for structure functions; months.
-      DATA ALAMIN/0.20,0.29,0.20,0.40,0.213,0.208,0.208,0.322,
-     &0.190,0.235,10*0.2/,NFIN/20*4/
-      DATA CHLH/'lepton','hadron'/
-C...Reset MINT and VINT arrays. Write headers.
-      DO 100 J=1,400
-      MINT(J)=0
-      VINT(J)=0.
-  100 CONTINUE
-      IF(MSTU(12).GE.1) CALL LULIST(0)
-      IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
-C...Maximum 4 generations; set maximum number of allowed flavours.
-      MSTP(1)=MIN(4,MSTP(1))
-      MSTU(114)=MIN(MSTU(114),2*MSTP(1))
-      MSTP(58)=MIN(MSTP(58),2*MSTP(1))
-C...Sum up Cabibbo-Kobayashi-Maskawa factors for each quark/lepton.
-      DO 120 I=-20,20
-      VINT(180+I)=0.
-      IA=IABS(I)
-      IF(IA.GE.1.AND.IA.LE.2*MSTP(1)) THEN
-        DO 110 J=1,MSTP(1)
-        IB=2*J-1+MOD(IA,2)
-        IPM=(5-ISIGN(1,I))/2
-        IDC=J+MDCY(IA,2)+2
-        IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) VINT(180+I)=
-     &  VINT(180+I)+VCKM((IA+1)/2,(IB+1)/2)
-  110   CONTINUE
-      ELSEIF(IA.GE.11.AND.IA.LE.10+2*MSTP(1)) THEN
-        VINT(180+I)=1.
-      ENDIF
-  120 CONTINUE
-C...Initialize structure functions: PDFLIB.
-      IF(MSTP(52).EQ.2) THEN
-        PARM(1)='NPTYPE'
-        VALUE(1)=1
-        PARM(2)='NGROUP'
-        VALUE(2)=MSTP(51)/1000
-        PARM(3)='NSET'
-        VALUE(3)=MOD(MSTP(51),1000)
-        PARM(4)='TMAS'
-        VALUE(4)=PMAS(6,1)
-        CALL PDFSET(PARM,VALUE)
-        MINT(93)=1000000+MSTP(51)
-      ENDIF
-C...Choose Lambda value to use in alpha-strong.
-      MSTU(111)=MSTP(2)
-      IF(MSTP(3).GE.2) THEN
-        ALAM=0.2
-        NF=4
-        IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.10) THEN
-          ALAM=ALAMIN(MSTP(51))
-          NF=NFIN(MSTP(51))
-        ELSEIF(MSTP(52).EQ.2) THEN
-          ALAM=QCDL4
-          NF=4
-        ENDIF
-        PARP(1)=ALAM
-        PARP(61)=ALAM
-        PARP(72)=ALAM
-        PARU(112)=ALAM
-        MSTU(112)=NF
-        IF(MSTP(3).EQ.3) PARJ(81)=ALAM      
-      ENDIF
-C...Initialize widths and partial widths for resonances.
-      CALL PYINRE
-C...Identify beam and target particles and frame of process.
-      CHFRAM=FRAME//' '
-      CHBEAM=BEAM//' '
-      CHTARG=TARGET//' '
-      CALL PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
-      IF(MINT(65).EQ.1) GOTO 170
-C...For gamma-p or gamma-gamma allow many (3 or 6) alternatives.
-C...For e-gamma allow 2 alternatives.
-      MINT(121)=1
-      MINT(123)=MSTP(14)
-      IF(MSTP(14).EQ.10.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
-        IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
-     &  (IABS(MINT(11)).GE.28.OR.IABS(MINT(12)).GE.28)) MINT(121)=3
-        IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=6
-        IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
-     &  (IABS(MINT(11)).EQ.11.OR.IABS(MINT(12)).EQ.11)) MINT(121)=2
-      ENDIF
-C...Set up kinematics of process.
-      CALL PYINKI(0)
-C...Loop over gamma-p or gamma-gamma alternatives.
-      DO 160 IGA=1,MINT(121)
-      MINT(122)=IGA
-C...Select partonic subprocesses to be included in the simulation.
-      CALL PYINPR
-C...Count number of subprocesses on.
-      MINT(48)=0
-      DO 130 ISUB=1,200
-      IF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
-     &MSUB(ISUB).EQ.1) THEN
-        WRITE(MSTU(11),5200) ISUB,CHLH(MINT(41)),CHLH(MINT(42))
-        STOP
-      ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).EQ.-1) THEN
-        WRITE(MSTU(11),5300) ISUB
-        STOP
-      ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).LE.-2) THEN
-        WRITE(MSTU(11),5400) ISUB
-        STOP
-      ELSEIF(MSUB(ISUB).EQ.1) THEN
-        MINT(48)=MINT(48)+1
-      ENDIF
-  130 CONTINUE
-      IF(MINT(48).EQ.0) THEN
-        WRITE(MSTU(11),5500)
-        STOP
-      ENDIF
-      MINT(49)=MINT(48)-MSUB(91)-MSUB(92)-MSUB(93)-MSUB(94)
-C...Reset variables for cross-section calculation.
-      DO 150 I=0,200
-      DO 140 J=1,3
-      NGEN(I,J)=0
-      XSEC(I,J)=0.
-  140 CONTINUE
-      DXSEC(I)=0D0
-  150 CONTINUE
-C...Find parametrized total cross-sections.
-      CALL PYXTOT
-C...Maxima of differential cross-sections.
-      IF(MSTP(121).LE.1) CALL PYMAXI
-C...Initialize possibility of pileup events.
-      IF(MINT(121).GT.1) MSTP(131)=0
-      IF(MSTP(131).NE.0) CALL PYPILE(1)
-C...Initialize multiple interactions with variable impact parameter.
-      IF(MINT(50).EQ.1.AND.(MINT(49).NE.0.OR.MSTP(131).NE.0).AND.
-     &MSTP(82).GE.2) CALL PYMULT(1)
-C...Save results for gamma-p and gamma-gamma alternatives.
-      IF(MINT(121).GT.1) CALL PYSAVE(1,IGA)
-  160 CONTINUE
-C...Initialization finished.
-  170 IF(MSTP(122).GE.1) WRITE(MSTU(11),5600)
-C...Formats for initialization information.
- 5100 FORMAT('1',18('*'),1X,'PYINIT: initialization of PYTHIA ',
-     &'routines',1X,17('*'))
- 5200 FORMAT(1X,'Error: process number ',I3,' not meaningful for ',A6,
-     &'-',A6,' interactions.'/1X,'Execution stopped!')
- 5300 FORMAT(1X,'Error: requested subprocess',I4,' not implemented.'/
-     &1X,'Execution stopped!')
- 5400 FORMAT(1X,'Error: requested subprocess',I4,' not existing.'/
-     &1X,'Execution stopped!')
- 5500 FORMAT(1X,'Error: no subprocess switched on.'/
-     &1X,'Execution stopped.')
- 5600 FORMAT(/1X,22('*'),1X,'PYINIT: initialization completed',1X,
-     &22('*'))
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyinki.F b/PYTHIA/pythia/pyinki.F
deleted file mode 100644 (file)
index 6d7c095..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYINKI(MODKI)
-C...Sets up kinematics, including rotations and boosts to/from CM frame.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/
-C...Set initial flavour state.
-      N=2
-      DO 100 I=1,2
-      K(I,1)=1
-      K(I,2)=MINT(10+I)
-  100 CONTINUE
-C...Reset boost. Do kinematics for various cases.
-      DO 110 J=6,10
-      VINT(J)=0.
-  110 CONTINUE
-C...Set up kinematics for events defined in CM frame.
-      IF(MINT(111).EQ.1) THEN
-        WIN=VINT(290)
-        IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
-        S=WIN**2
-        P(1,5)=VINT(3)
-        P(2,5)=VINT(4)
-        P(1,1)=0.
-        P(1,2)=0.
-        P(2,1)=0.
-        P(2,2)=0.
-        P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2.*P(1,5)*P(2,5))**2)/
-     &  (4.*S))
-        P(2,3)=-P(1,3)
-        P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
-        P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
-C...Set up kinematics for fixed target events.
-      ELSEIF(MINT(111).EQ.2) THEN
-        WIN=VINT(290)
-        IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
-        P(1,5)=VINT(3)
-        P(2,5)=VINT(4)
-        P(1,1)=0.
-        P(1,2)=0.
-        P(2,1)=0.
-        P(2,2)=0.
-        P(1,3)=WIN
-        P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
-        P(2,3)=0.
-        P(2,4)=P(2,5)
-        S=P(1,5)**2+P(2,5)**2+2.*P(2,4)*P(1,4)
-        VINT(10)=P(1,3)/(P(1,4)+P(2,4))
-        CALL LUROBO(0.,0.,0.,0.,-VINT(10))
-C...Set up kinematics for events in user-defined frame.
-      ELSEIF(MINT(111).EQ.3) THEN
-        P(1,5)=VINT(3)
-        P(2,5)=VINT(4)
-        P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
-        P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
-        DO 120 J=1,3
-        VINT(7+J)=(DBLE(P(1,J))+DBLE(P(2,J)))/DBLE(P(1,4)+P(2,4))
-  120   CONTINUE
-        CALL LUROBO(0.,0.,-VINT(8),-VINT(9),-VINT(10))
-        VINT(7)=ULANGL(P(1,1),P(1,2))
-        CALL LUROBO(0.,-VINT(7),0.,0.,0.)
-        VINT(6)=ULANGL(P(1,3),P(1,1))
-        CALL LUROBO(-VINT(6),0.,0.,0.,0.)
-        S=P(1,5)**2+P(2,5)**2+2.*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
-C...Set up kinematics for events with user-defined four-vectors.
-      ELSEIF(MINT(111).EQ.4) THEN
-        PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
-        P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
-        PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
-        P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
-        DO 130 J=1,3
-        VINT(7+J)=(DBLE(P(1,J))+DBLE(P(2,J)))/DBLE(P(1,4)+P(2,4))
-  130   CONTINUE
-        CALL LUROBO(0.,0.,-VINT(8),-VINT(9),-VINT(10))
-        VINT(7)=ULANGL(P(1,1),P(1,2))
-        CALL LUROBO(0.,-VINT(7),0.,0.,0.)
-        VINT(6)=ULANGL(P(1,3),P(1,1))
-        CALL LUROBO(-VINT(6),0.,0.,0.,0.)
-        S=(P(1,4)+P(2,4))**2
-C...Set up kinematics for events with user-defined five-vectors.
-      ELSEIF(MINT(111).EQ.5) THEN
-        DO 140 J=1,3
-        VINT(7+J)=(DBLE(P(1,J))+DBLE(P(2,J)))/DBLE(P(1,4)+P(2,4))
-  140   CONTINUE
-        CALL LUROBO(0.,0.,-VINT(8),-VINT(9),-VINT(10))
-        VINT(7)=ULANGL(P(1,1),P(1,2))
-        CALL LUROBO(0.,-VINT(7),0.,0.,0.)
-        VINT(6)=ULANGL(P(1,3),P(1,1))
-        CALL LUROBO(-VINT(6),0.,0.,0.,0.)
-        S=(P(1,4)+P(2,4))**2
-      ENDIF
-C...Return or error for too low CM energy.
-      IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
-        IF(MSTP(172).LE.1) THEN
-          CALL LUERRM(23,
-     &    '(PYINKI:) too low invariant mass in this event')
-        ELSE
-          MSTI(61)=1
-          RETURN
-        ENDIF
-      ENDIF
-C...Save information on incoming particles.
-      VINT(1)=SQRT(S)
-      VINT(2)=S
-      IF(MINT(111).GE.4) VINT(3)=P(1,5)
-      IF(MINT(111).GE.4) VINT(4)=P(2,5)
-      VINT(5)=P(1,3)
-      IF(MODKI.EQ.0) VINT(289)=S
-      DO 150 J=1,5
-      V(1,J)=0.
-      V(2,J)=0.
-      VINT(290+J)=P(1,J)
-      VINT(295+J)=P(2,J)
-  150 CONTINUE
-C...Store pT cut-off and related constants to be used in generation.
-      IF(MODKI.EQ.0) VINT(285)=CKIN(3)
-      IF(MSTP(82).LE.1) THEN
-        IF(MINT(121).GT.1) PARP(81)=1.30+0.15*LOG(VINT(1)/200.)/
-     &  LOG(900./200.)
-        PTMN=PARP(81)
-      ELSE
-        IF(MINT(121).GT.1) PARP(82)=1.25+0.15*LOG(VINT(1)/200.)/
-     &  LOG(900./200.)
-        PTMN=PARP(82)
-      ENDIF
-      VINT(149)=4.*PTMN**2/S
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyinpr.F b/PYTHIA/pythia/pyinpr.F
deleted file mode 100644 (file)
index 6a36eaa..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYINPR
-C...Selects partonic subprocesses to be included in the simulation.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      SAVE /LUDAT1/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
-C...Reset processes to be included.
-      IF(MSEL.NE.0) THEN
-        DO 100 I=1,200
-        MSUB(I)=0
-  100   CONTINUE
-      ENDIF
-C...For e-gamma witn MSTP(14)=10 allow mixture of VMD and anomalous.
-      IF(MINT(121).EQ.2) THEN
-        MSUB(10)=1
-        MINT(123)=MINT(122)+1
-C...For gamma-p or gamma-gamma with MSTP(14)=10 allow mixture.
-C...Here also set a few parameters otherwise normally not touched.
-      ELSEIF(MINT(121).GT.1) THEN
-C...Structure functions dampened at small Q2; go to low energies,
-C...alpha_s <1; no minimum pT cut-off a priori.
-        MSTP(57)=3
-        MSTP(85)=0
-        PARP(2)=2.
-        PARU(115)=1.
-        CKIN(5)=0.2
-        CKIN(6)=0.2
-C...Define pT cut-off parameters and whether run involves low-pT.
-        IF(MSTP(82).LE.1) THEN
-          PTMVMD=1.30+0.15*LOG(VINT(1)/200.)/LOG(900./200.)
-        ELSE
-          PTMVMD=1.25+0.15*LOG(VINT(1)/200.)/LOG(900./200.)
-        ENDIF
-        PTMDIR=PARP(15)
-        PTMANO=PTMVMD
-        IF(MSTP(15).EQ.5) PTMANO=0.70+0.17*LOG(1.+0.05*VINT(1))**2
-        IPTL=1
-        IF(VINT(285).GT.MAX(PTMVMD,PTMDIR,PTMANO)) IPTL=0
-        IF(MSEL.EQ.2) IPTL=1
-C...Set up for p/VMD * VMD.
-        IF(MINT(122).EQ.1) THEN
-          MINT(123)=2
-          MSUB(11)=1
-          MSUB(12)=1
-          MSUB(13)=1
-          MSUB(28)=1
-          MSUB(53)=1
-          MSUB(68)=1
-          IF(IPTL.EQ.1) MSUB(95)=1
-          IF(MSEL.EQ.2) THEN
-            MSUB(91)=1
-            MSUB(92)=1
-            MSUB(93)=1
-            MSUB(94)=1
-          ENDIF
-          PARP(81)=PTMVMD
-          PARP(82)=PTMVMD
-          IF(IPTL.EQ.1) CKIN(3)=0.
-C...Set up for p/VMD * direct gamma.
-        ELSEIF(MINT(122).EQ.2) THEN
-          MINT(123)=0
-          IF(MINT(121).EQ.6) MINT(123)=5
-          MSUB(33)=1
-          MSUB(54)=1
-          IF(IPTL.EQ.1) CKIN(3)=PTMDIR
-C...Set up for p/VMD * anomalous gamma.
-        ELSEIF(MINT(122).EQ.3) THEN
-          MINT(123)=3
-          IF(MINT(121).EQ.6) MINT(123)=7
-          MSUB(11)=1
-          MSUB(12)=1
-          MSUB(13)=1
-          MSUB(28)=1
-          MSUB(53)=1
-          MSUB(68)=1
-          IF(MSTP(82).GE.2) MSTP(85)=1
-          IF(IPTL.EQ.1) CKIN(3)=PTMANO
-C...Set up for direct * direct gamma (switch off leptons).
-        ELSEIF(MINT(122).EQ.4) THEN
-          MINT(123)=0
-          MSUB(58)=1
-          DO 110 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
-          IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
-  110     CONTINUE
-          IF(IPTL.EQ.1) CKIN(3)=PTMDIR
-C...Set up for direct * anomalous gamma.
-        ELSEIF(MINT(122).EQ.5) THEN
-          MINT(123)=6
-          MSUB(33)=1
-          MSUB(54)=1
-          IF(IPTL.EQ.1) CKIN(3)=PTMANO
-C...Set up for anomalous * anomalous gamma.
-        ELSEIF(MINT(122).EQ.6) THEN
-          MINT(123)=3
-          MSUB(11)=1
-          MSUB(12)=1
-          MSUB(13)=1
-          MSUB(28)=1
-          MSUB(53)=1
-          MSUB(68)=1
-          IF(MSTP(82).GE.2) MSTP(85)=1
-          IF(IPTL.EQ.1) CKIN(3)=PTMANO
-        ENDIF
-C...End of special set up for gamma-p and gamma-gamma.
-        CKIN(1)=2.*CKIN(3)
-      ENDIF
-C...Flavour information for individual beams.
-      DO 120 I=1,2
-      MINT(40+I)=1
-      IF(MINT(123).GE.1.AND.MINT(10+I).EQ.22) MINT(40+I)=2
-      IF(IABS(MINT(10+I)).GT.100) MINT(40+I)=2
-      IF(MINT(10+I).EQ.28.OR.MINT(10+I).EQ.29) MINT(40+I)=2
-      MINT(44+I)=MINT(40+I)
-      IF(MSTP(11).GE.1.AND.IABS(MINT(10+I)).EQ.11) MINT(44+I)=3
-  120 CONTINUE
-C...If two gammas, whereof one direct, pick the first.
-      IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
-        IF(MINT(123).GE.4.AND.MINT(123).LE.6) THEN
-          MINT(41)=1
-          MINT(45)=1
-        ENDIF
-      ELSEIF(MINT(11).EQ.22.OR.MINT(12).EQ.22) THEN
-        IF(MINT(123).GE.4) CALL LUERRM(26,
-     &  '(PYINPR:) unallowed MSTP(14) code for single photon')
-      ENDIF
-C...Flavour information on combination of incoming particles.
-      MINT(43)=2*MINT(41)+MINT(42)-2
-      MINT(44)=MINT(43)
-      IF(MINT(123).LE.0) THEN
-        IF(MINT(11).EQ.22) MINT(43)=MINT(43)+2
-        IF(MINT(12).EQ.22) MINT(43)=MINT(43)+1
-      ELSEIF(MINT(123).LE.3) THEN
-        IF(MINT(11).EQ.22) MINT(44)=MINT(44)-2
-        IF(MINT(12).EQ.22) MINT(44)=MINT(44)-1
-      ELSEIF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
-        MINT(43)=4
-        MINT(44)=1
-      ENDIF
-      MINT(47)=2*MIN(2,MINT(45))+MIN(2,MINT(46))-2
-      IF(MIN(MINT(45),MINT(46)).EQ.3) MINT(47)=5
-      MINT(50)=0
-      IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) MINT(50)=1
-      IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.MINT(123).GE.3)
-     &MINT(50)=0
-      MINT(107)=0
-      IF(MINT(11).EQ.22) THEN
-        MINT(107)=MINT(123)
-        IF(MINT(123).GE.4) MINT(107)=0
-        IF(MINT(123).EQ.7) MINT(107)=2
-      ENDIF
-      MINT(108)=0
-      IF(MINT(12).EQ.22) THEN
-        MINT(108)=MINT(123)
-        IF(MINT(123).GE.4) MINT(108)=MINT(123)-3
-        IF(MINT(123).EQ.7) MINT(108)=3
-      ENDIF
-C...Select default processes according to incoming beams
-C...(already done for gamma-p and gamma-gamma with MSTP(14)=10).
-      IF(MINT(121).GT.1) THEN
-      ELSEIF(MSEL.EQ.1.OR.MSEL.EQ.2) THEN
-        IF(MINT(43).EQ.1) THEN
-C...Lepton + lepton -> gamma/Z0 or W.
-          IF(MINT(11)+MINT(12).EQ.0) MSUB(1)=1
-          IF(MINT(11)+MINT(12).NE.0) MSUB(2)=1
-        ELSEIF(MINT(43).LE.3.AND.MINT(123).EQ.0.AND.
-     &  (MINT(11).EQ.22.OR.MINT(12).EQ.22)) THEN
-C...Unresolved photon + lepton: Compton scattering.
-          MSUB(34)=1
-        ELSEIF(MINT(43).LE.3) THEN
-C...Lepton + hadron: deep inelastic scattering.
-          MSUB(10)=1
-        ELSEIF(MINT(123).EQ.0.AND.MINT(11).EQ.22.AND.
-     &  MINT(12).EQ.22) THEN
-C...Two unresolved photons: fermion pair production.
-          MSUB(58)=1
-        ELSEIF((MINT(123).EQ.0.AND.(MINT(11).EQ.22.OR.MINT(12).EQ.22))
-     &  .OR.(MINT(123).GE.4.AND.MINT(123).LE.6.AND.MINT(11).EQ.22.AND.
-     &   MINT(12).EQ.22)) THEN
-C...Unresolved photon + hadron: photon-parton scattering.
-          MSUB(33)=1
-          MSUB(34)=1
-          MSUB(54)=1
-        ELSEIF(MSEL.EQ.1) THEN
-C...High-pT QCD processes:
-          MSUB(11)=1
-          MSUB(12)=1
-          MSUB(13)=1
-          MSUB(28)=1
-          MSUB(53)=1
-          MSUB(68)=1
-          IF(MSTP(82).LE.1.AND.CKIN(3).LT.PARP(81)) MSUB(95)=1
-          IF(MSTP(82).GE.2.AND.CKIN(3).LT.PARP(82)) MSUB(95)=1
-          IF(MSUB(95).EQ.1.AND.MINT(50).EQ.0) MSUB(95)=0
-        ELSE
-C...All QCD processes:
-          MSUB(11)=1
-          MSUB(12)=1
-          MSUB(13)=1
-          MSUB(28)=1
-          MSUB(53)=1
-          MSUB(68)=1
-          MSUB(91)=1
-          MSUB(92)=1
-          MSUB(93)=1
-          MSUB(94)=1
-          MSUB(95)=1
-        ENDIF
-      ELSEIF(MSEL.GE.4.AND.MSEL.LE.8) THEN
-C...Heavy quark production.
-        MSUB(81)=1
-        MSUB(82)=1
-        MSUB(84)=1
-        DO 130 J=1,MIN(8,MDCY(21,3))
-        MDME(MDCY(21,2)+J-1,1)=0
-  130   CONTINUE
-        MDME(MDCY(21,2)+MSEL-1,1)=1
-        MSUB(85)=1
-        DO 140 J=1,MIN(12,MDCY(22,3))
-        MDME(MDCY(22,2)+J-1,1)=0
-  140   CONTINUE
-        MDME(MDCY(22,2)+MSEL-1,1)=1
-      ELSEIF(MSEL.EQ.10) THEN
-C...Prompt photon production:
-        MSUB(14)=1
-        MSUB(18)=1
-        MSUB(29)=1
-      ELSEIF(MSEL.EQ.11) THEN
-C...Z0/gamma* production:
-        MSUB(1)=1
-      ELSEIF(MSEL.EQ.12) THEN
-C...W+/- production:
-        MSUB(2)=1
-      ELSEIF(MSEL.EQ.13) THEN
-C...Z0 + jet:
-        MSUB(15)=1
-        MSUB(30)=1
-      ELSEIF(MSEL.EQ.14) THEN
-C...W+/- + jet:
-        MSUB(16)=1
-        MSUB(31)=1
-      ELSEIF(MSEL.EQ.15) THEN
-C...Z0 & W+/- pair production:
-        MSUB(19)=1
-        MSUB(20)=1
-        MSUB(22)=1
-        MSUB(23)=1
-        MSUB(25)=1
-      ELSEIF(MSEL.EQ.16) THEN
-C...H0 production:
-        MSUB(3)=1
-        MSUB(102)=1
-        MSUB(103)=1
-        MSUB(123)=1
-        MSUB(124)=1
-      ELSEIF(MSEL.EQ.17) THEN
-C...H0 & Z0 or W+/- pair production:
-        MSUB(24)=1
-        MSUB(26)=1
-      ELSEIF(MSEL.EQ.18) THEN
-C...H0 production; interesting processes in e+e-.
-        MSUB(24)=1
-        MSUB(103)=1
-        MSUB(123)=1
-        MSUB(124)=1
-      ELSEIF(MSEL.EQ.19) THEN
-C...H0, H'0 and A0 production; interesting processes in e+e-.
-        MSUB(24)=1
-        MSUB(103)=1
-        MSUB(123)=1
-        MSUB(124)=1
-        MSUB(153)=1
-        MSUB(171)=1
-        MSUB(173)=1
-        MSUB(174)=1
-        MSUB(158)=1
-        MSUB(176)=1
-        MSUB(178)=1
-        MSUB(179)=1
-      ELSEIF(MSEL.EQ.21) THEN
-C...Z'0 production:
-        MSUB(141)=1
-      ELSEIF(MSEL.EQ.22) THEN
-C...W'+/- production:
-        MSUB(142)=1
-      ELSEIF(MSEL.EQ.23) THEN
-C...H+/- production:
-        MSUB(143)=1
-      ELSEIF(MSEL.EQ.24) THEN
-C...R production:
-        MSUB(144)=1
-      ELSEIF(MSEL.EQ.25) THEN
-C...LQ (leptoquark) production.
-        MSUB(145)=1
-        MSUB(162)=1
-        MSUB(163)=1
-        MSUB(164)=1
-      ELSEIF(MSEL.GE.35.AND.MSEL.LE.38) THEN
-C...Production of one heavy quark (W exchange):
-        MSUB(83)=1
-        DO 150 J=1,MIN(8,MDCY(21,3))
-        MDME(MDCY(21,2)+J-1,1)=0
-  150   CONTINUE
-        MDME(MDCY(21,2)+MSEL-31,1)=1
-      ENDIF
-C...Find heaviest new quark flavour allowed in processes 81-84.
-      KFLQM=1
-      DO 160 I=1,MIN(8,MDCY(21,3))
-      IDC=I+MDCY(21,2)-1
-      IF(MDME(IDC,1).LE.0) GOTO 160
-      KFLQM=I
-  160 CONTINUE
-      IF(MSTP(7).GE.1.AND.MSTP(7).LE.8.AND.(MSEL.LE.3.OR.MSEL.GE.9))
-     &KFLQM=MSTP(7)
-      MINT(55)=KFLQM
-      KFPR(81,1)=KFLQM
-      KFPR(81,2)=KFLQM
-      KFPR(82,1)=KFLQM
-      KFPR(82,2)=KFLQM
-      KFPR(83,1)=KFLQM
-      KFPR(84,1)=KFLQM
-      KFPR(84,2)=KFLQM
-C...Find heaviest new fermion flavour allowed in process 85.
-      KFLFM=1
-      DO 170 I=1,MIN(12,MDCY(22,3))
-      IDC=I+MDCY(22,2)-1
-      IF(MDME(IDC,1).LE.0) GOTO 170
-      KFLFM=KFDP(IDC,1)
-  170 CONTINUE
-      IF(((MSTP(7).GE.1.AND.MSTP(7).LE.8).OR.(MSTP(7).GE.11.AND.
-     &MSTP(7).LE.18)).AND.(MSEL.LE.3.OR.MSEL.GE.9)) KFLFM=MSTP(7)
-      MINT(56)=KFLFM
-      KFPR(85,1)=KFLFM
-      KFPR(85,2)=KFLFM
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyinre.F b/PYTHIA/pythia/pyinre.F
deleted file mode 100644 (file)
index e43edcf..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYINRE
-C...Calculates full and effective widths of gauge bosons, stores
-C...masses and widths, rescales coefficients to be used for
-C...resonance production generation.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/LUDAT4/CHAF(500)
-      CHARACTER CHAF*8
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      COMMON/PYINT6/PROC(0:200)
-      CHARACTER PROC*28
-      SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/,/LUDAT4/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/,/PYINT6/
-      DIMENSION WDTP(0:40),WDTE(0:40,0:5),WDTPM(0:40),WDTEM(0:40,0:5)
-      DIMENSION KCINP(16),KCORD(16),PMORD(16)
-      DATA KCINP/23,24,25,6,7,8,17,18,32,34,35,36,37,38,39,40/
-C...Born level couplings in MSSM Higgs doublet sector.
-      XW=PARU(102)
-      XWV=XW
-      IF(MSTP(8).GE.2) XW=1.-(PMAS(24,1)/PMAS(23,1))**2
-      XW1=1.-XW
-      IF(MSTP(4).EQ.2) THEN
-        TANBE=PARU(141)
-        RATBE=((1.-TANBE**2)/(1.+TANBE**2))**2
-        SQMZ=PMAS(23,1)**2
-        SQMW=PMAS(24,1)**2
-        SQMH=PMAS(25,1)**2
-        SQMA=SQMH*(SQMZ-SQMH)/(SQMZ*RATBE-SQMH)
-        SQMHP=0.5*(SQMA+SQMZ+SQRT((SQMA+SQMZ)**2-4.*SQMA*SQMZ*RATBE))
-        SQMHC=SQMA+SQMW
-        IF(SQMH.GE.SQMZ.OR.MIN(SQMA,SQMHP,SQMHC).LE.0.) THEN
-          WRITE(MSTU(11),5000)
-          STOP
-        ENDIF
-        PMAS(35,1)=SQRT(SQMHP)
-        PMAS(36,1)=SQRT(SQMA)
-        PMAS(37,1)=SQRT(SQMHC)
-        ALSU=0.5*ATAN(2.*TANBE*(SQMA+SQMZ)/((1.-TANBE**2)*
-     &  (SQMA-SQMZ)))
-        BESU=ATAN(TANBE)
-        PARU(142)=1.
-        PARU(143)=1.
-        PARU(161)=-SIN(ALSU)/COS(BESU)
-        PARU(162)=COS(ALSU)/SIN(BESU)
-        PARU(163)=PARU(161)
-        PARU(164)=SIN(BESU-ALSU)
-        PARU(165)=PARU(164)
-        PARU(168)=SIN(BESU-ALSU)+0.5*COS(2.*BESU)*SIN(BESU+ALSU)/XW
-        PARU(171)=COS(ALSU)/COS(BESU)
-        PARU(172)=SIN(ALSU)/SIN(BESU)
-        PARU(173)=PARU(171)
-        PARU(174)=COS(BESU-ALSU)
-        PARU(175)=PARU(174)
-        PARU(176)=COS(2.*ALSU)*COS(BESU+ALSU)-2.*SIN(2.*ALSU)*
-     &  SIN(BESU+ALSU)
-        PARU(177)=COS(2.*BESU)*COS(BESU+ALSU)
-        PARU(178)=COS(BESU-ALSU)-0.5*COS(2.*BESU)*COS(BESU+ALSU)/XW
-        PARU(181)=TANBE
-        PARU(182)=1./TANBE
-        PARU(183)=PARU(181)
-        PARU(184)=0.
-        PARU(185)=PARU(184)
-        PARU(186)=COS(BESU-ALSU)
-        PARU(187)=SIN(BESU-ALSU)
-        PARU(188)=PARU(186)
-        PARU(189)=PARU(187)
-        PARU(190)=0.
-        PARU(195)=COS(BESU-ALSU)
-      ENDIF
-C...Change matrix element codes when top and 4th generation
-C...decay before fragmentation.
-      IF(MSTP(48).GE.1) THEN
-        IOFF=MDCY(6,2)-1
-        DO 100 I=4,7
-        MDME(IOFF+I,2)=0
-  100   CONTINUE
-        MDME(IOFF+9,2)=0
-      ENDIF
-      IF(MSTP(6).EQ.1) THEN
-        IOFF=MDCY(7,2)-1
-        DO 110 I=1,4
-        MDME(IOFF+I,2)=0
-  110   CONTINUE
-        IOFF=MDCY(8,2)-1
-        DO 120 I=1,4
-        MDME(IOFF+I,2)=0
-  120   CONTINUE
-        IOFF=MDCY(17,2)-1
-        MDME(IOFF+2,2)=0
-        MDME(IOFF+3,2)=0
-        MDME(IOFF+4,2)=0
-        IOFF=MDCY(18,2)-1
-        MDME(IOFF+1,2)=0
-        MDME(IOFF+2,2)=0
-      ELSEIF(MSTP(49).GE.1) THEN
-        IOFF=MDCY(7,2)-1
-        DO 130 I=4,7
-        MDME(IOFF+I,2)=0
-  130   CONTINUE
-        MDME(IOFF+9,2)=0
-        MDME(IOFF+10,2)=0
-        IOFF=MDCY(8,2)-1
-        DO 140 I=4,7
-        MDME(IOFF+I,2)=0
-  140   CONTINUE
-        MDME(IOFF+9,2)=0
-        MDME(IOFF+10,2)=0
-        IOFF=MDCY(17,2)-1
-        MDME(IOFF+4,2)=0
-        MDME(IOFF+6,2)=0
-        IOFF=MDCY(18,2)-1
-        MDME(IOFF+2,2)=0
-        MDME(IOFF+3,2)=0
-      ENDIF
-C...Reset full and effective widths of gauge bosons.
-      DO 160 I=21,40
-      DO 150 J=0,40
-      WIDP(I,J)=0.
-      WIDE(I,J)=0.
-  150 CONTINUE
-      WIDS(I,1)=1.
-      WIDS(I,2)=1.
-      WIDS(I,3)=1.
-  160 CONTINUE
-C...Order resonances by increasing mass (except Z0 and W+/-).
-      DO 170 I=1,3
-      KCORD(I)=KCINP(I)
-      PMORD(I)=PMAS(KCORD(I),1)
-  170 CONTINUE
-      DO 200 I=4,16
-      KCIN=KCINP(I)
-      PMIN=PMAS(KCIN,1)
-      DO 180 I1=I-1,3,-1
-      IF(PMIN.GE.PMORD(I1)) GOTO 190
-      KCORD(I1+1)=KCORD(I1)
-      PMORD(I1+1)=PMORD(I1)
-  180 CONTINUE
-  190 KCORD(I1+1)=KCIN
-      PMORD(I1+1)=PMIN
-  200 CONTINUE
-C...Loop over possible resonances.
-      DO 250 I=1,16
-      KC=KCORD(I)
-      IF(KC.EQ.6.AND.MSTP(48).LE.0) GOTO 250
-      IF(KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18) THEN
-        IF(MSTP(6).NE.1.AND.(MSTP(49).LE.0.OR.MSTP(1).LE.3)) GOTO 250
-        IF(KC.EQ.18.AND.PMORD(I).LT.1.) GOTO 250
-      ENDIF
-      KCL=KC
-      IF(KC.GE.6.AND.KC.LE.8) KCL=KC+20
-      IF(KC.EQ.17.OR.KC.EQ.18) KCL=KC+12
-C...Change decay modes for q* and l*.
-      IF(MSTP(6).EQ.1.AND.(KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.
-     &KC.EQ.18)) THEN
-        DO 210 J=1,MDCY(KC,3)
-        IDC=J+MDCY(KC,2)-1
-        KF2=KFDP(IDC,2)
-        IF(KF2.EQ.7.OR.KF2.EQ.8.OR.KF2.EQ.17.OR.KF2.EQ.18)
-     &  KFDP(IDC,2)=KF2-6
-  210   CONTINUE
-      ENDIF
-C...Check that no fourth generation channels on by mistake.
-      IF(MSTP(1).LE.3) THEN
-        DO 220 J=1,MDCY(KC,3)
-        IDC=J+MDCY(KC,2)-1
-        KFA1=IABS(KFDP(IDC,1))
-        KFA2=IABS(KFDP(IDC,2))
-        IF(KFA1.EQ.7.OR.KFA1.EQ.8.OR.KFA1.EQ.17.OR.KFA1.EQ.18.OR.KFA2
-     &  .EQ.7.OR.KFA2.EQ.8.OR.KFA2.EQ.17.OR.KFA2.EQ.18) MDME(IDC,1)=-1
-  220   CONTINUE
-      ENDIF
-C...Find mass and evaluate width.
-      PMR=PMAS(KC,1)
-      IF(KC.EQ.25.OR.KC.EQ.35.OR.KC.EQ.36) MINT(62)=1
-      CALL PYWIDT(KC,PMR**2,WDTP,WDTE)
-      IF(KC.EQ.6.OR.KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18)
-     &CALL PYWIDT(-KC,PMR**2,WDTPM,WDTEM)
-      MINT(51)=0
-C...Evaluate suppression factors due to non-simulated channels.
-      IF(KCHG(KC,3).EQ.0) THEN
-        WIDS(KCL,1)=((WDTE(0,1)+WDTE(0,2))**2+
-     &  2.*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
-     &  2.*WDTE(0,4)*WDTE(0,5))/WDTP(0)**2
-        WIDS(KCL,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
-        WIDS(KCL,3)=0.
-      ELSEIF(KC.EQ.6.OR.KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18) THEN
-        WIDS(KCL,1)=((WDTE(0,1)+WDTE(0,2))*(WDTEM(0,1)+WDTEM(0,3))+
-     &  (WDTE(0,1)+WDTE(0,2))*(WDTEM(0,4)+WDTEM(0,5))+
-     &  (WDTE(0,4)+WDTE(0,5))*(WDTEM(0,1)+WDTEM(0,3))+
-     &  WDTE(0,4)*WDTEM(0,5)+WDTE(0,5)*WDTEM(0,4))/WDTP(0)**2
-        WIDS(KCL,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
-        WIDS(KCL,3)=(WDTEM(0,1)+WDTEM(0,3)+WDTEM(0,4))/WDTP(0)
-      ELSE
-        WIDS(KCL,1)=((WDTE(0,1)+WDTE(0,2))*(WDTE(0,1)+WDTE(0,3))+
-     &  (WDTE(0,1)+WDTE(0,2)+WDTE(0,1)+WDTE(0,3))*(WDTE(0,4)+WDTE(0,5))+
-     &  2.*WDTE(0,4)*WDTE(0,5))/WDTP(0)**2
-        WIDS(KCL,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
-        WIDS(KCL,3)=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
-        IF(KC.EQ.24) THEN
-          VINT(91)=((WDTE(0,1)+WDTE(0,2))**2+2.*(WDTE(0,1)+WDTE(0,2))*
-     &    (WDTE(0,4)+WDTE(0,5))+2.*WDTE(0,4)*WDTE(0,5))/WDTP(0)**2
-          VINT(92)=((WDTE(0,1)+WDTE(0,3))**2+2.*(WDTE(0,1)+WDTE(0,3))*
-     &    (WDTE(0,4)+WDTE(0,5))+2.*WDTE(0,4)*WDTE(0,5))/WDTP(0)**2
-        ENDIF
-      ENDIF
-C...Find factors to give widths in GeV.
-      AEM=ULALEM(PMR**2)
-      IF(MSTP(8).GE.1) AEM=SQRT(2.)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
-      IF(KC.LE.20) THEN
-        FAC=PMR
-      ELSEIF(KC.EQ.23.OR.KC.EQ.32) THEN
-        FAC=AEM/(48.*XW*XW1)*PMR
-      ELSEIF(KC.EQ.24.OR.KC.EQ.34) THEN
-        FAC=AEM/(24.*XW)*PMR
-      ELSEIF(KC.EQ.25.OR.KC.EQ.35.OR.KC.EQ.36.OR.KC.EQ.37) THEN
-        FAC=AEM/(8.*XW)*(PMR/PMAS(24,1))**2*PMR
-      ELSEIF(KC.EQ.38) THEN
-        FAC=PMR
-      ELSEIF(KC.EQ.39) THEN
-        FAC=AEM/4.*PMR
-      ELSEIF(KC.EQ.40) THEN
-        FAC=AEM/(12.*XW)*PMR
-      ENDIF
-C...Translate widths into GeV and save them.
-      DO 230 J=0,40
-      WIDP(KCL,J)=FAC*WDTP(J)
-      WIDE(KCL,J)=FAC*WDTE(J,0)
-  230 CONTINUE
-C...Set resonance widths and branching ratios in JETSET;
-C...also on/off switch for decays in PYTHIA/JETSET.
-      PMAS(KC,2)=WIDP(KCL,0)
-      PMAS(KC,3)=MIN(0.9*PMAS(KC,1),10.*PMAS(KC,2))
-      MDCY(KC,1)=MSTP(41)
-      DO 240 J=1,MDCY(KC,3)
-      IDC=J+MDCY(KC,2)-1
-      BRAT(IDC)=0.
-      IF(WIDE(KCL,0).GT.0.) BRAT(IDC)=WIDE(KCL,J)/WIDE(KCL,0)
-  240 CONTINUE
-  250 CONTINUE
-C...Flavours of leptoquark: redefine charge and name.
-      KFLQQ=KFDP(MDCY(39,2),1)
-      KFLQL=KFDP(MDCY(39,2),2)
-      KCHG(39,1)=KCHG(IABS(KFLQQ),1)*ISIGN(1,KFLQQ)+
-     &KCHG(IABS(KFLQL),1)*ISIGN(1,KFLQL)
-      CHAF(39)(4:4)=CHAF(IABS(KFLQQ))(1:1)
-      CHAF(39)(5:7)=CHAF(IABS(KFLQL))(1:3)
-C...Scenario with q* and l*: redefine names.
-      IF(MSTP(6).EQ.1) THEN
-        CHAF(7)='d*'
-        CHAF(8)='u*'
-        CHAF(17)='e*'
-        CHAF(18)='nu*_e'
-      ENDIF
-C...Special cases in treatment of gamma*/Z0: redefine process name.
-      IF(MSTP(43).EQ.1) THEN
-        PROC(1)='f + f~ -> gamma*'
-        PROC(15)='f + f~ -> g + gamma*'
-        PROC(19)='f + f~ -> gamma + gamma*'
-        PROC(30)='f + g -> f + gamma*'
-        PROC(35)='f + gamma -> f + gamma*'
-      ELSEIF(MSTP(43).EQ.2) THEN
-        PROC(1)='f + f~ -> Z0'
-        PROC(15)='f + f~ -> g + Z0'
-        PROC(19)='f + f~ -> gamma + Z0'
-        PROC(30)='f + g -> f + Z0'
-        PROC(35)='f + gamma -> f + Z0'
-      ELSEIF(MSTP(43).EQ.3) THEN
-        PROC(1)='f + f~ -> gamma*/Z0'
-        PROC(15)='f + f~ -> g + gamma*/Z0'
-        PROC(19)='f + f~ -> gamma + gamma*/Z0'
-        PROC(30)='f + g -> f + gamma*/Z0'
-        PROC(35)='f + gamma -> f + gamma*/Z0'
-      ENDIF
-C...Special cases in treatment of gamma*/Z0/Z'0: redefine process name.
-      IF(MSTP(44).EQ.1) THEN
-        PROC(141)='f + f~ -> gamma*'
-      ELSEIF(MSTP(44).EQ.2) THEN
-        PROC(141)='f + f~ -> Z0'
-      ELSEIF(MSTP(44).EQ.3) THEN
-        PROC(141)='f + f~ -> Z''0'
-      ELSEIF(MSTP(44).EQ.4) THEN
-        PROC(141)='f + f~ -> gamma*/Z0'
-      ELSEIF(MSTP(44).EQ.5) THEN
-        PROC(141)='f + f~ -> gamma*/Z''0'
-      ELSEIF(MSTP(44).EQ.6) THEN
-        PROC(141)='f + f~ -> Z0/Z''0'
-      ELSEIF(MSTP(44).EQ.7) THEN
-        PROC(141)='f + f~ -> gamma*/Z0/Z''0'
-      ENDIF
-C...Special cases in treatment of WW -> WW: redefine process name.
-      IF(MSTP(45).EQ.1) THEN
-        PROC(77)='W+ + W+ -> W+ + W+'
-      ELSEIF(MSTP(45).EQ.2) THEN
-        PROC(77)='W+ + W- -> W+ + W-'
-      ELSEIF(MSTP(45).EQ.3) THEN
-        PROC(77)='W+/- + W+/- -> W+/- + W+/-'
-      ENDIF
-C...Format for error information.
- 5000 FORMAT(1X,'Error: unphysical input tan^2(beta) and m_H ',
-     &'combination'/1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pykcut.F b/PYTHIA/pythia/pykcut.F
deleted file mode 100644 (file)
index a10fced..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYKCUT(MCUT)
-C...Dummy routine, which the user can replace in order to make cuts on
-C...the kinematics on the parton level before the matrix elements are
-C...evaluated and the event is generated. The cross-section estimates
-C...will automatically take these cuts into account, so the given
-C...values are for the allowed phase space region only. MCUT=0 means
-C...that the event has passed the cuts, MCUT=1 that it has failed.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      SAVE /PYINT1/,/PYINT2/
-C...Set default value (accepting event) for MCUT.
-      MCUT=0
-C...Read out subprocess number.
-      ISUB=MINT(1)
-      ISTSB=ISET(ISUB)
-C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
-      TAU=VINT(21)
-      YST=VINT(22)
-      CTH=0.
-      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) CTH=VINT(23)
-      TAUP=0.
-      IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
-C...Calculate x_1, x_2, x_F.
-      IF(ISTSB.LE.2.OR.ISTSB.GE.6) THEN
-        X1=SQRT(TAU)*EXP(YST)
-        X2=SQRT(TAU)*EXP(-YST)
-      ELSE
-        X1=SQRT(TAUP)*EXP(YST)
-        X2=SQRT(TAUP)*EXP(-YST)
-      ENDIF
-      XF=X1-X2
-C...Calculate shat, that, uhat, p_T^2.
-      SHAT=TAU*VINT(2)
-      SQM3=VINT(63)
-      SQM4=VINT(64)
-      RM3=SQM3/SHAT
-      RM4=SQM4/SHAT
-      BE34=SQRT(MAX(0.,(1.-RM3-RM4)**2-4.*RM3*RM4))
-      RPTS=4.*VINT(71)**2/SHAT
-      BE34L=SQRT(MAX(0.,(1.-RM3-RM4)**2-4.*RM3*RM4-RPTS))
-      RM34=2.*RM3*RM4
-      RSQM=1.+RM34
-      RTHM=(4.*RM3*RM4+RPTS)/(1.-RM3-RM4+BE34L)
-      THAT=-0.5*SHAT*MAX(RTHM,1.-RM3-RM4-BE34*CTH)
-      UHAT=-0.5*SHAT*MAX(RTHM,1.-RM3-RM4+BE34*CTH)
-      PT2=MAX(VINT(71)**2,0.25*SHAT*BE34**2*(1.-CTH**2))
-C...Decisions by user to be put here.
-C...Stop program if this routine is ever called.
-C...You should not copy these lines to your own routine.
-      WRITE(MSTU(11),5000)
-      IF(RLU(0).LT.10.) STOP
-C...Format for error printout.
- 5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
-     &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
-     &1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyklim.F b/PYTHIA/pythia/pyklim.F
deleted file mode 100644 (file)
index f1c5213..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
-C***********************************************************************
-      SUBROUTINE PYKLIM(ILIM)
-C...Checks generated variables against pre-set kinematical limits;
-C...also calculates limits on variables used in generation.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
-C...Common kinematical expressions.
-      MINT(51)=0
-      ISUB=MINT(1)
-      ISTSB=ISET(ISUB)
-      IF(ISUB.EQ.96) GOTO 110
-      SQM3=VINT(63)
-      SQM4=VINT(64)
-      IF(ILIM.NE.0) THEN
-        IF(ABS(SQM3).LT.1E-4.AND.ABS(SQM4).LT.1E-4) THEN
-          CKIN09=MAX(CKIN(9),CKIN(13))
-          CKIN10=MIN(CKIN(10),CKIN(14))
-          CKIN11=MAX(CKIN(11),CKIN(15))
-          CKIN12=MIN(CKIN(12),CKIN(16))
-        ELSE
-          CKIN09=MAX(CKIN(9),MIN(0.,CKIN(13)))
-          CKIN10=MIN(CKIN(10),MAX(0.,CKIN(14)))
-          CKIN11=MAX(CKIN(11),MIN(0.,CKIN(15)))
-          CKIN12=MIN(CKIN(12),MAX(0.,CKIN(16)))
-        ENDIF
-      ENDIF
-      IF(ILIM.NE.1) THEN
-        TAU=VINT(21)
-        RM3=SQM3/(TAU*VINT(2))
-        RM4=SQM4/(TAU*VINT(2))
-        BE34=SQRT(MAX(1E-20,(1.-RM3-RM4)**2-4.*RM3*RM4))
-      ENDIF
-      PTHMIN=CKIN(3)
-      IF(MIN(SQM3,SQM4).LT.CKIN(6)**2.AND.ISTSB.NE.1.AND.ISTSB.NE.3)
-     &PTHMIN=MAX(CKIN(3),CKIN(5))
-      IF(ILIM.EQ.0) THEN
-C...Check generated values of tau, y*, cos(theta-hat), and tau' against
-C...pre-set kinematical limits.
-        YST=VINT(22)
-        CTH=VINT(23)
-        TAUP=VINT(26)
-        TAUE=TAU
-        IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
-        X1=SQRT(TAUE)*EXP(YST)
-        X2=SQRT(TAUE)*EXP(-YST)
-        XF=X1-X2
-        IF(MINT(47).NE.1) THEN
-          IF(TAU*VINT(2).LT.CKIN(1)**2) MINT(51)=1
-          IF(CKIN(2).GE.0..AND.TAU*VINT(2).GT.CKIN(2)**2) MINT(51)=1
-          IF(YST.LT.CKIN(7).OR.YST.GT.CKIN(8)) MINT(51)=1
-          IF(XF.LT.CKIN(25).OR.XF.GT.CKIN(26)) MINT(51)=1
-        ENDIF
-        IF(MINT(45).NE.1) THEN
-          IF(X1.LT.CKIN(21).OR.X1.GT.CKIN(22)) MINT(51)=1
-        ENDIF
-        IF(MINT(46).NE.1) THEN
-          IF(X2.LT.CKIN(23).OR.X2.GT.CKIN(24)) MINT(51)=1
-        ENDIF
-        IF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) THEN
-          PTH=0.5*BE34*SQRT(TAU*VINT(2)*MAX(0.,1.-CTH**2))
-          EXPY3=MAX(1.E-10,(1.+RM3-RM4+BE34*CTH)/
-     &    MAX(1.E-10,(1.+RM3-RM4-BE34*CTH)))
-          EXPY4=MAX(1.E-10,(1.-RM3+RM4-BE34*CTH)/
-     &    MAX(1.E-10,(1.-RM3+RM4+BE34*CTH)))
-          Y3=YST+0.5*LOG(EXPY3)
-          Y4=YST+0.5*LOG(EXPY4)
-          YLARGE=MAX(Y3,Y4)
-          YSMALL=MIN(Y3,Y4)
-          ETALAR=10.
-          ETASMA=-10.
-          STH=SQRT(MAX(0.,1.-CTH**2))
-          EXSQ3=SQRT(MAX(1E-20,((1.+RM3-RM4)*COSH(YST)+BE34*SINH(YST)*
-     &    CTH)**2-4.*RM3))
-          EXSQ4=SQRT(MAX(1E-20,((1.-RM3+RM4)*COSH(YST)-BE34*SINH(YST)*
-     &    CTH)**2-4.*RM4))
-          IF(STH.GE.1.E-6) THEN
-            EXPET3=((1.+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH+EXSQ3)/
-     &      (BE34*STH)
-            EXPET4=((1.-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH+EXSQ4)/
-     &      (BE34*STH)
-            ETA3=LOG(MIN(1.E10,MAX(1.E-10,EXPET3)))
-            ETA4=LOG(MIN(1.E10,MAX(1.E-10,EXPET4)))
-            ETALAR=MAX(ETA3,ETA4)
-            ETASMA=MIN(ETA3,ETA4)
-          ENDIF
-          CTS3=((1.+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH)/EXSQ3
-          CTS4=((1.-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH)/EXSQ4
-          CTSLAR=MIN(1.,MAX(CTS3,CTS4))
-          CTSSMA=MAX(-1.,MIN(CTS3,CTS4))
-          SH=TAU*VINT(2)
-          RPTS=4.*VINT(71)**2/SH
-          BE34L=SQRT(MAX(0.,(1.-RM3-RM4)**2-4.*RM3*RM4-RPTS))
-          RM34=MAX(1E-20,2.*RM3*RM4)
-          IF(2.*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001)
-     &    RM34=MAX(RM34,2.*VINT(71)**2/(VINT(21)*VINT(2)))
-          RTHM=(4.*RM3*RM4+RPTS)/(1.-RM3-RM4+BE34L)
-          THA=0.5*SH*MAX(RTHM,1.-RM3-RM4-BE34*CTH)
-          UHA=0.5*SH*MAX(RTHM,1.-RM3-RM4+BE34*CTH)
-          IF(PTH.LT.PTHMIN) MINT(51)=1
-          IF(CKIN(4).GE.0..AND.PTH.GT.CKIN(4)) MINT(51)=1
-          IF(YLARGE.LT.CKIN(9).OR.YLARGE.GT.CKIN(10)) MINT(51)=1
-          IF(YSMALL.LT.CKIN(11).OR.YSMALL.GT.CKIN(12)) MINT(51)=1
-          IF(ETALAR.LT.CKIN(13).OR.ETALAR.GT.CKIN(14)) MINT(51)=1
-          IF(ETASMA.LT.CKIN(15).OR.ETASMA.GT.CKIN(16)) MINT(51)=1
-          IF(CTSLAR.LT.CKIN(17).OR.CTSLAR.GT.CKIN(18)) MINT(51)=1
-          IF(CTSSMA.LT.CKIN(19).OR.CTSSMA.GT.CKIN(20)) MINT(51)=1
-          IF(CTH.LT.CKIN(27).OR.CTH.GT.CKIN(28)) MINT(51)=1
-          IF(THA.LT.CKIN(35)) MINT(51)=1
-          IF(CKIN(36).GE.0..AND.THA.GT.CKIN(36)) MINT(51)=1
-          IF(UHA.LT.CKIN(37)) MINT(51)=1
-          IF(CKIN(38).GE.0..AND.UHA.GT.CKIN(38)) MINT(51)=1
-        ENDIF
-        IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
-          IF(TAUP*VINT(2).LT.CKIN(31)**2) MINT(51)=1
-          IF(CKIN(32).GE.0..AND.TAUP*VINT(2).GT.CKIN(32)**2) MINT(51)=1
-        ENDIF
-C...Additional cuts on W2 (approximately) in DIS.
-        IF(ISUB.EQ.10) THEN
-          XBJ=X2
-          IF(IABS(MINT(12)).LT.20) XBJ=X1
-          Q2BJ=THA
-          W2BJ=Q2BJ*(1.-XBJ)/XBJ
-          IF(W2BJ.LT.CKIN(39)) MINT(51)=1
-          IF(CKIN(40).GT.0..AND.W2BJ.GT.CKIN(40)) MINT(51)=1
-        ENDIF
-C...Additional p_T cuts on 2 -> 3 process.
-        IF(ISTSB.EQ.6) THEN
-          KFQ=KFPR(131,2)
-          PMQQ=SQRT(VINT(64))
-          PMQ=PMAS(KFQ,1)
-          PZQ=SQRT(MAX(0.,(0.5*PMQQ)**2-PMQ**2))
-          DO 100 I=MINT(84)+1,MINT(84)+2
-          K(I,1)=1
-          P(I,1)=0.
-          P(I,2)=0.
-          P(I,3)=PZQ*(-1.)**(I-1)
-          P(I,4)=0.5*PMQQ
-          P(I,5)=PMQ
-  100     CONTINUE
-          PEQQ=0.5*SQRT(TAU*VINT(2))*(1.+(VINT(64)-VINT(63))/
-     &    (TAU*VINT(2)))
-          PZQQ=SQRT(MAX(0.,PEQQ**2-VINT(64)))
-          CALL LUDBRB(MINT(84)+1,MINT(84)+2,ACOS(VINT(83)),VINT(84),
-     &    0D0,0D0,-DBLE(PZQQ/PEQQ))
-          CALL LUDBRB(MINT(84)+1,MINT(84)+2,ACOS(VINT(23)),VINT(24),
-     &    0D0,0D0,0D0)
-          PTQ2=SQRT(P(MINT(84)+1,1)**2+P(MINT(84)+1,2)**2)
-          PTQ3=SQRT(P(MINT(84)+2,1)**2+P(MINT(84)+2,2)**2)
-          PTMNQ=MIN(PTQ2,PTQ3)
-          PTMXQ=MAX(PTQ2,PTQ3)
-          IF(PTMNQ.LT.CKIN(51)) MINT(51)=1
-          IF(CKIN(52).GE.0..AND.PTMNQ.GT.CKIN(52)) MINT(51)=1
-          IF(PTMXQ.LT.CKIN(53)) MINT(51)=1
-          IF(CKIN(54).GE.0..AND.PTMXQ.GT.CKIN(54)) MINT(51)=1
-          VINT(85)=PTMNQ
-          VINT(86)=PTMXQ
-        ENDIF
-      ELSEIF(ILIM.EQ.1) THEN
-C...Calculate limits on tau
-C...0) due to definition
-        TAUMN0=0.
-        TAUMX0=1.
-C...1) due to limits on subsystem mass
-        TAUMN1=CKIN(1)**2/VINT(2)
-        TAUMX1=1.
-        IF(CKIN(2).GE.0.) TAUMX1=CKIN(2)**2/VINT(2)
-C...2) due to limits on pT-hat (and non-overlapping rapidity intervals)
-        TM3=SQRT(SQM3+PTHMIN**2)
-        TM4=SQRT(SQM4+PTHMIN**2)
-        YDCOSH=1.
-        IF(CKIN09.GT.CKIN12) YDCOSH=COSH(CKIN09-CKIN12)
-        TAUMN2=(TM3**2+2.*TM3*TM4*YDCOSH+TM4**2)/VINT(2)
-        TAUMX2=1.
-C...3) due to limits on pT-hat and cos(theta-hat)
-        CTH2MN=MIN(CKIN(27)**2,CKIN(28)**2)
-        CTH2MX=MAX(CKIN(27)**2,CKIN(28)**2)
-        TAUMN3=0.
-        IF(CKIN(27)*CKIN(28).GT.0.) TAUMN3=
-     &  (SQRT(SQM3+PTHMIN**2/(1.-CTH2MN))+
-     &  SQRT(SQM4+PTHMIN**2/(1.-CTH2MN)))**2/VINT(2)
-        TAUMX3=1.
-        IF(CKIN(4).GE.0..AND.CTH2MX.LT.1.) TAUMX3=
-     &  (SQRT(SQM3+CKIN(4)**2/(1.-CTH2MX))+
-     &  SQRT(SQM4+CKIN(4)**2/(1.-CTH2MX)))**2/VINT(2)
-C...4) due to limits on x1 and x2
-        TAUMN4=CKIN(21)*CKIN(23)
-        TAUMX4=CKIN(22)*CKIN(24)
-C...5) due to limits on xF
-        TAUMN5=0.
-        TAUMX5=MAX(1.-CKIN(25),1.+CKIN(26))
-C...6) due to limits on that and uhat
-        TAUMN6=(SQM3+SQM4+CKIN(35)+CKIN(37))/VINT(2)
-        TAUMX6=1.
-        IF(CKIN(36).GT.0..AND.CKIN(38).GT.0.) TAUMX6=
-     &  (SQM3+SQM4+CKIN(36)+CKIN(38))/VINT(2)
-C...Net effect of all separate limits.
-        VINT(11)=MAX(TAUMN0,TAUMN1,TAUMN2,TAUMN3,TAUMN4,TAUMN5,TAUMN6)
-        VINT(31)=MIN(TAUMX0,TAUMX1,TAUMX2,TAUMX3,TAUMX4,TAUMX5,TAUMX6)
-        IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2.OR.ISTSB.EQ.6))
-     &  THEN
-          VINT(11)=0.99999
-          VINT(31)=1.00001
-        ELSEIF(MINT(47).EQ.5) THEN
-          VINT(31)=MIN(VINT(31),0.999998)
-        ENDIF
-        IF(VINT(31).LE.VINT(11)) MINT(51)=1
-      ELSEIF(ILIM.EQ.2) THEN
-C...Calculate limits on y*
-        TAUE=TAU
-        IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
-        TAURT=SQRT(TAUE)
-C...0) due to kinematics
-        YSTMN0=LOG(TAURT)
-        YSTMX0=-YSTMN0
-C...1) due to explicit limits
-        YSTMN1=CKIN(7)
-        YSTMX1=CKIN(8)
-C...2) due to limits on x1
-        YSTMN2=LOG(MAX(TAUE,CKIN(21))/TAURT)
-        YSTMX2=LOG(MAX(TAUE,CKIN(22))/TAURT)
-C...3) due to limits on x2
-        YSTMN3=-LOG(MAX(TAUE,CKIN(24))/TAURT)
-        YSTMX3=-LOG(MAX(TAUE,CKIN(23))/TAURT)
-C...4) due to limits on xF
-        YEPMN4=0.5*ABS(CKIN(25))/TAURT
-        YSTMN4=SIGN(LOG(MAX(1E-20,SQRT(1.+YEPMN4**2)+YEPMN4)),CKIN(25))
-        YEPMX4=0.5*ABS(CKIN(26))/TAURT
-        YSTMX4=SIGN(LOG(MAX(1E-20,SQRT(1.+YEPMX4**2)+YEPMX4)),CKIN(26))
-C...5) due to simultaneous limits on y-large and y-small
-        YEPSMN=(RM3-RM4)*SINH(CKIN09-CKIN11)
-        YEPSMX=(RM3-RM4)*SINH(CKIN10-CKIN12)
-        YDIFMN=ABS(LOG(MAX(1E-20,SQRT(1.+YEPSMN**2)-YEPSMN)))
-        YDIFMX=ABS(LOG(MAX(1E-20,SQRT(1.+YEPSMX**2)-YEPSMX)))
-        YSTMN5=0.5*(CKIN09+CKIN11-YDIFMN)
-        YSTMX5=0.5*(CKIN10+CKIN12+YDIFMX)
-C...6) due to simultaneous limits on cos(theta-hat) and y-large or
-C...   y-small
-        CTHLIM=SQRT(MAX(0.,1.-4.*PTHMIN**2/(BE34**2*TAUE*VINT(2))))
-        RZMN=BE34*MAX(CKIN(27),-CTHLIM)
-        RZMX=BE34*MIN(CKIN(28),CTHLIM)
-        YEX3MX=(1.+RM3-RM4+RZMX)/MAX(1E-10,1.+RM3-RM4-RZMX)
-        YEX4MX=(1.+RM4-RM3-RZMN)/MAX(1E-10,1.+RM4-RM3+RZMN)
-        YEX3MN=MAX(1E-10,1.+RM3-RM4+RZMN)/(1.+RM3-RM4-RZMN)
-        YEX4MN=MAX(1E-10,1.+RM4-RM3-RZMX)/(1.+RM4-RM3+RZMX)
-        YSTMN6=CKIN09-0.5*LOG(MAX(YEX3MX,YEX4MX))
-        YSTMX6=CKIN12-0.5*LOG(MIN(YEX3MN,YEX4MN))
-C...Net effect of all separate limits.
-        VINT(12)=MAX(YSTMN0,YSTMN1,YSTMN2,YSTMN3,YSTMN4,YSTMN5,YSTMN6)
-        VINT(32)=MIN(YSTMX0,YSTMX1,YSTMX2,YSTMX3,YSTMX4,YSTMX5,YSTMX6)
-        IF(MINT(47).EQ.1) THEN
-          VINT(12)=-0.00001
-          VINT(32)=0.00001
-        ELSEIF(MINT(47).EQ.2) THEN
-          VINT(12)=0.99999*YSTMX0
-          VINT(32)=1.00001*YSTMX0
-        ELSEIF(MINT(47).EQ.3) THEN
-          VINT(12)=-1.00001*YSTMX0
-          VINT(32)=-0.99999*YSTMX0
-        ELSEIF(MINT(47).EQ.5) THEN
-          YSTEE=LOG(0.999999/TAURT)
-          VINT(12)=MAX(VINT(12),-YSTEE)
-          VINT(32)=MIN(VINT(32),YSTEE)
-        ENDIF
-        IF(VINT(32).LE.VINT(12)) MINT(51)=1
-      ELSEIF(ILIM.EQ.3) THEN
-C...Calculate limits on cos(theta-hat)
-        YST=VINT(22)
-C...0) due to definition
-        CTNMN0=-1.
-        CTNMX0=0.
-        CTPMN0=0.
-        CTPMX0=1.
-C...1) due to explicit limits
-        CTNMN1=MIN(0.,CKIN(27))
-        CTNMX1=MIN(0.,CKIN(28))
-        CTPMN1=MAX(0.,CKIN(27))
-        CTPMX1=MAX(0.,CKIN(28))
-C...2) due to limits on pT-hat
-        CTNMN2=-SQRT(MAX(0.,1.-4.*PTHMIN**2/(BE34**2*TAU*VINT(2))))
-        CTPMX2=-CTNMN2
-        CTNMX2=0.
-        CTPMN2=0.
-        IF(CKIN(4).GE.0.) THEN
-          CTNMX2=-SQRT(MAX(0.,1.-4.*CKIN(4)**2/(BE34**2*TAU*VINT(2))))
-          CTPMN2=-CTNMX2
-        ENDIF
-C...3) due to limits on y-large and y-small
-        CTNMN3=MIN(0.,MAX((1.+RM3-RM4)/BE34*TANH(CKIN11-YST),
-     &  -(1.-RM3+RM4)/BE34*TANH(CKIN10-YST)))
-        CTNMX3=MIN(0.,(1.+RM3-RM4)/BE34*TANH(CKIN12-YST),
-     &  -(1.-RM3+RM4)/BE34*TANH(CKIN09-YST))
-        CTPMN3=MAX(0.,(1.+RM3-RM4)/BE34*TANH(CKIN09-YST),
-     &  -(1.-RM3+RM4)/BE34*TANH(CKIN12-YST))
-        CTPMX3=MAX(0.,MIN((1.+RM3-RM4)/BE34*TANH(CKIN10-YST),
-     &  -(1.-RM3+RM4)/BE34*TANH(CKIN11-YST)))
-C...4) due to limits on that
-        CTNMN4=-1.
-        CTNMX4=0.
-        CTPMN4=0.
-        CTPMX4=1.
-        SH=TAU*VINT(2)
-        IF(CKIN(35).GT.0.) THEN
-          CTLIM=(1.-RM3-RM4-2.*CKIN(35)/SH)/BE34
-          IF(CTLIM.GT.0.) THEN
-            CTPMX4=CTLIM
-          ELSE
-            CTPMX4=0.
-            CTNMX4=CTLIM
-          ENDIF
-        ENDIF
-        IF(CKIN(36).GT.0.) THEN
-          CTLIM=(1.-RM3-RM4-2.*CKIN(36)/SH)/BE34
-          IF(CTLIM.LT.0.) THEN
-            CTNMN4=CTLIM
-          ELSE
-            CTNMN4=0.
-            CTPMN4=CTLIM
-          ENDIF
-        ENDIF
-C...5) due to limits on uhat
-        CTNMN5=-1.
-        CTNMX5=0.
-        CTPMN5=0.
-        CTPMX5=1.
-        IF(CKIN(37).GT.0.) THEN
-          CTLIM=(2.*CKIN(37)/SH-(1.-RM3-RM4))/BE34
-          IF(CTLIM.LT.0.) THEN
-            CTNMN5=CTLIM
-          ELSE
-            CTNMN5=0.
-            CTPMN5=CTLIM
-          ENDIF
-        ENDIF
-        IF(CKIN(38).GT.0.) THEN
-          CTLIM=(2.*CKIN(38)/SH-(1.-RM3-RM4))/BE34
-          IF(CTLIM.GT.0.) THEN
-            CTPMX5=CTLIM
-          ELSE
-            CTPMX5=0.
-            CTNMX5=CTLIM
-          ENDIF
-        ENDIF
-C...Net effect of all separate limits.
-        VINT(13)=MAX(CTNMN0,CTNMN1,CTNMN2,CTNMN3,CTNMN4,CTNMN5)
-        VINT(33)=MIN(CTNMX0,CTNMX1,CTNMX2,CTNMX3,CTNMX4,CTNMX5)
-        VINT(14)=MAX(CTPMN0,CTPMN1,CTPMN2,CTPMN3,CTPMN4,CTPMN5)
-        VINT(34)=MIN(CTPMX0,CTPMX1,CTPMX2,CTPMX3,CTPMX4,CTPMX5)
-        IF(VINT(33).LE.VINT(13).AND.VINT(34).LE.VINT(14)) MINT(51)=1
-      ELSEIF(ILIM.EQ.4) THEN
-C...Calculate limits on tau'
-C...0) due to kinematics
-        TAPMN0=TAU
-        IF((ISTSB.EQ.5.OR.ISTSB.EQ.6).AND.KFPR(ISUB,2).GT.0) THEN
-          PQRAT=2.*PMAS(KFPR(ISUB,2),1)/VINT(1)
-          TAPMN0=(SQRT(TAU)+PQRAT)**2
-        ENDIF
-        TAPMX0=1.
-C...1) due to explicit limits
-        TAPMN1=CKIN(31)**2/VINT(2)
-        TAPMX1=1.
-        IF(CKIN(32).GE.0.) TAPMX1=CKIN(32)**2/VINT(2)
-C...Net effect of all separate limits.
-        VINT(16)=MAX(TAPMN0,TAPMN1)
-        VINT(36)=MIN(TAPMX0,TAPMX1)
-        IF(MINT(47).EQ.1) THEN
-          VINT(16)=0.99999
-          VINT(36)=1.00001
-        ENDIF
-        IF(VINT(36).LE.VINT(16)) MINT(51)=1
-      ENDIF
-      RETURN
-C...Special case for low-pT and multiple interactions:
-C...effective kinematical limits for tau, y*, cos(theta-hat).
-  110 IF(ILIM.EQ.0) THEN
-      ELSEIF(ILIM.EQ.1) THEN
-        IF(MSTP(82).LE.1) VINT(11)=4.*PARP(81)**2/VINT(2)
-        IF(MSTP(82).GE.2) VINT(11)=PARP(82)**2/VINT(2)
-        VINT(31)=1.
-      ELSEIF(ILIM.EQ.2) THEN
-        VINT(12)=0.5*LOG(VINT(21))
-        VINT(32)=-VINT(12)
-      ELSEIF(ILIM.EQ.3) THEN
-        IF(MSTP(82).LE.1) ST2EFF=4.*PARP(81)**2/(VINT(21)*VINT(2))
-        IF(MSTP(82).GE.2) ST2EFF=0.01*PARP(82)**2/(VINT(21)*VINT(2))
-        VINT(13)=-SQRT(MAX(0.,1.-ST2EFF))
-        VINT(33)=0.
-        VINT(14)=0.
-        VINT(34)=-VINT(13)
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pykmap.F b/PYTHIA/pythia/pykmap.F
deleted file mode 100644 (file)
index d11cab6..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYKMAP(IVAR,MVAR,VVAR)
-C...Maps a uniform distribution into a distribution of a kinematical
-C...variable according to one of the possibilities allowed. It is
-C...assumed that kinematical limits have been set by a PYKLIM call.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      SAVE /LUDAT1/,/LUDAT2/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
-C...Convert VVAR to tau variable.
-      ISUB=MINT(1)
-      ISTSB=ISET(ISUB)
-      IF(IVAR.EQ.1) THEN
-        TAUMIN=VINT(11)
-        TAUMAX=VINT(31)
-        IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
-          TAURE=VINT(73)
-          GAMRE=VINT(74)
-        ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
-          TAURE=VINT(75)
-          GAMRE=VINT(76)
-        ENDIF
-        IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2.OR.ISTSB.EQ.6))
-     &  THEN
-          TAU=1.
-        ELSEIF(MVAR.EQ.1) THEN
-          TAU=TAUMIN*(TAUMAX/TAUMIN)**VVAR
-        ELSEIF(MVAR.EQ.2) THEN
-          TAU=TAUMAX*TAUMIN/(TAUMIN+(TAUMAX-TAUMIN)*VVAR)
-        ELSEIF(MVAR.EQ.3.OR.MVAR.EQ.5) THEN
-          RATGEN=(TAURE+TAUMAX)/(TAURE+TAUMIN)*TAUMIN/TAUMAX
-          TAU=TAURE*TAUMIN/((TAURE+TAUMIN)*RATGEN**VVAR-TAUMIN)
-        ELSEIF(MVAR.EQ.4.OR.MVAR.EQ.6) THEN
-          AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
-          ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
-          TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
-        ELSE
-          AUPP=LOG(MAX(2E-6,1.-TAUMAX))
-          ALOW=LOG(MAX(2E-6,1.-TAUMIN))
-          TAU=1.-EXP(AUPP+VVAR*(ALOW-AUPP))
-        ENDIF
-        VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
-C...Convert VVAR to y* variable.
-      ELSEIF(IVAR.EQ.2) THEN
-        YSTMIN=VINT(12)
-        YSTMAX=VINT(32)
-        TAUE=VINT(21)
-        IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
-        IF(MINT(47).EQ.1) THEN
-          YST=0.
-        ELSEIF(MINT(47).EQ.2) THEN
-          YST=-0.5*LOG(TAUE)
-        ELSEIF(MINT(47).EQ.3) THEN
-          YST=0.5*LOG(TAUE)
-        ELSEIF(MVAR.EQ.1) THEN
-          YST=YSTMIN+(YSTMAX-YSTMIN)*SQRT(VVAR)
-        ELSEIF(MVAR.EQ.2) THEN
-          YST=YSTMAX-(YSTMAX-YSTMIN)*SQRT(1.-VVAR)
-        ELSEIF(MVAR.EQ.3) THEN
-          AUPP=ATAN(EXP(YSTMAX))
-          ALOW=ATAN(EXP(YSTMIN))
-          YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
-        ELSEIF(MVAR.EQ.4) THEN
-          YST0=-0.5*LOG(TAUE)
-          AUPP=LOG(MAX(1E-6,EXP(YST0-YSTMIN)-1.))
-          ALOW=LOG(MAX(1E-6,EXP(YST0-YSTMAX)-1.))
-          YST=YST0-LOG(1.+EXP(ALOW+VVAR*(AUPP-ALOW)))
-        ELSE
-          YST0=-0.5*LOG(TAUE)
-          AUPP=LOG(MAX(1E-6,EXP(YST0+YSTMIN)-1.))
-          ALOW=LOG(MAX(1E-6,EXP(YST0+YSTMAX)-1.))
-          YST=LOG(1.+EXP(AUPP+VVAR*(ALOW-AUPP)))-YST0
-        ENDIF
-        VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
-C...Convert VVAR to cos(theta-hat) variable.
-      ELSEIF(IVAR.EQ.3) THEN
-        RM34=MAX(1E-20,2.*VINT(63)*VINT(64)/(VINT(21)*VINT(2))**2)
-        RSQM=1.+RM34
-        IF(2.*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001) RM34=MAX(RM34,
-     &  2.*VINT(71)**2/(VINT(21)*VINT(2)))
-        CTNMIN=VINT(13)
-        CTNMAX=VINT(33)
-        CTPMIN=VINT(14)
-        CTPMAX=VINT(34)
-        IF(MVAR.EQ.1) THEN
-          ANEG=CTNMAX-CTNMIN
-          APOS=CTPMAX-CTPMIN
-          IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
-            VCTN=VVAR*(ANEG+APOS)/ANEG
-            CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
-          ELSE
-            VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
-            CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
-          ENDIF
-        ELSEIF(MVAR.EQ.2) THEN
-          RMNMIN=MAX(RM34,RSQM-CTNMIN)
-          RMNMAX=MAX(RM34,RSQM-CTNMAX)
-          RMPMIN=MAX(RM34,RSQM-CTPMIN)
-          RMPMAX=MAX(RM34,RSQM-CTPMAX)
-          ANEG=LOG(RMNMIN/RMNMAX)
-          APOS=LOG(RMPMIN/RMPMAX)
-          IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
-            VCTN=VVAR*(ANEG+APOS)/ANEG
-            CTH=RSQM-RMNMIN*(RMNMAX/RMNMIN)**VCTN
-          ELSE
-            VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
-            CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
-          ENDIF
-        ELSEIF(MVAR.EQ.3) THEN
-          RMNMIN=MAX(RM34,RSQM+CTNMIN)
-          RMNMAX=MAX(RM34,RSQM+CTNMAX)
-          RMPMIN=MAX(RM34,RSQM+CTPMIN)
-          RMPMAX=MAX(RM34,RSQM+CTPMAX)
-          ANEG=LOG(RMNMAX/RMNMIN)
-          APOS=LOG(RMPMAX/RMPMIN)
-          IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
-            VCTN=VVAR*(ANEG+APOS)/ANEG
-            CTH=RMNMIN*(RMNMAX/RMNMIN)**VCTN-RSQM
-          ELSE
-            VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
-            CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
-          ENDIF
-        ELSEIF(MVAR.EQ.4) THEN
-          RMNMIN=MAX(RM34,RSQM-CTNMIN)
-          RMNMAX=MAX(RM34,RSQM-CTNMAX)
-          RMPMIN=MAX(RM34,RSQM-CTPMIN)
-          RMPMAX=MAX(RM34,RSQM-CTPMAX)
-          ANEG=1./RMNMAX-1./RMNMIN
-          APOS=1./RMPMAX-1./RMPMIN
-          IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
-            VCTN=VVAR*(ANEG+APOS)/ANEG
-            CTH=RSQM-1./(1./RMNMIN+ANEG*VCTN)
-          ELSE
-            VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
-            CTH=RSQM-1./(1./RMPMIN+APOS*VCTP)
-          ENDIF
-        ELSEIF(MVAR.EQ.5) THEN
-          RMNMIN=MAX(RM34,RSQM+CTNMIN)
-          RMNMAX=MAX(RM34,RSQM+CTNMAX)
-          RMPMIN=MAX(RM34,RSQM+CTPMIN)
-          RMPMAX=MAX(RM34,RSQM+CTPMAX)
-          ANEG=1./RMNMIN-1./RMNMAX
-          APOS=1./RMPMIN-1./RMPMAX
-          IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
-            VCTN=VVAR*(ANEG+APOS)/ANEG
-            CTH=1./(1./RMNMIN-ANEG*VCTN)-RSQM
-          ELSE
-            VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
-            CTH=1./(1./RMPMIN-APOS*VCTP)-RSQM
-          ENDIF
-        ENDIF
-        IF(CTH.LT.0.) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
-        IF(CTH.GT.0.) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
-        VINT(23)=CTH
-C...Convert VVAR to tau' variable.
-      ELSEIF(IVAR.EQ.4) THEN
-        TAU=VINT(21)
-        TAUPMN=VINT(16)
-        TAUPMX=VINT(36)
-        IF(MINT(47).EQ.1) THEN
-          TAUP=1.
-        ELSEIF(MVAR.EQ.1) THEN
-          TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
-        ELSEIF(MVAR.EQ.2) THEN
-          AUPP=(1.-TAU/TAUPMX)**4
-          ALOW=(1.-TAU/TAUPMN)**4
-          TAUP=TAU/MAX(1E-7,1.-(ALOW+(AUPP-ALOW)*VVAR)**0.25)
-        ELSE
-          AUPP=LOG(MAX(2E-6,1.-TAUPMX))
-          ALOW=LOG(MAX(2E-6,1.-TAUPMN))
-          TAUP=1.-EXP(AUPP+VVAR*(ALOW-AUPP))
-        ENDIF
-        VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))
-C...Selection of extra variables needed in 2 -> 3 process:
-C...pT1, pT2, phi1, phi2, y3 for three outgoing particles.
-C...Since no options are available, the functions of PYKLIM
-C...and PYKMAP are joint for these choices.
-      ELSEIF(IVAR.EQ.5) THEN
-C...Read out total energy and particle masses.
-        MINT(51)=0
-        MPTPK=1
-        IF(ISUB.EQ.123.OR.ISUB.EQ.124.OR.ISUB.EQ.173.OR.ISUB.EQ.174
-     &  .OR.ISUB.EQ.178.OR.ISUB.EQ.179) MPTPK=2
-        SHP=VINT(26)*VINT(2)
-        SHPR=SQRT(SHP)
-        PM1=VINT(201)
-        PM2=VINT(206)
-        PM3=SQRT(VINT(21))*VINT(1)
-        IF(PM1+PM2+PM3.GT.0.9999*SHPR) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-        PMRS1=VINT(204)**2
-        PMRS2=VINT(209)**2
-C...Specify coefficients of pT choice; upper and lower limits.
-        IF(MPTPK.EQ.1) THEN
-          HWT1=0.4
-          HWT2=0.4
-        ELSE
-          HWT1=0.05
-          HWT2=0.05
-        ENDIF
-        HWT3=1.-HWT1-HWT2
-        PTSMX1=((SHP-PM1**2-(PM2+PM3)**2)**2-(2.*PM1*(PM2+PM3))**2)/
-     &  (4.*SHP)
-        IF(CKIN(52).GT.0.) PTSMX1=MIN(PTSMX1,CKIN(52)**2)
-        PTSMN1=CKIN(51)**2
-        PTSMX2=((SHP-PM2**2-(PM1+PM3)**2)**2-(2.*PM2*(PM1+PM3))**2)/
-     &  (4.*SHP)
-        IF(CKIN(54).GT.0.) PTSMX2=MIN(PTSMX2,CKIN(54)**2)
-        PTSMN2=CKIN(53)**2
-C...Select transverse momenta according to
-C...dp_T^2 * (a + b/(M^2 + p_T^2) + c/(M^2 + p_T^2)^2).
-        HMX=PMRS1+PTSMX1
-        HMN=PMRS1+PTSMN1
-        IF(HMX.LT.1.0001*HMN) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-        HDE=PTSMX1-PTSMN1
-        RPT=RLU(0)
-        IF(RPT.LT.HWT1) THEN
-          PTS1=PTSMN1+RLU(0)*HDE
-        ELSEIF(RPT.LT.HWT1+HWT2) THEN
-          PTS1=MAX(PTSMN1,HMN*(HMX/HMN)**RLU(0)-PMRS1)
-        ELSE
-          PTS1=MAX(PTSMN1,HMN*HMX/(HMN+RLU(0)*HDE)-PMRS1)
-        ENDIF
-        WTPTS1=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS1+PTS1))+
-     &  HWT3*HMN*HMX/(PMRS1+PTS1)**2)
-        HMX=PMRS2+PTSMX2
-        HMN=PMRS2+PTSMN2
-        IF(HMX.LT.1.0001*HMN) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-        HDE=PTSMX2-PTSMN2
-        RPT=RLU(0)
-        IF(RPT.LT.HWT1) THEN
-          PTS2=PTSMN2+RLU(0)*HDE
-        ELSEIF(RPT.LT.HWT1+HWT2) THEN
-          PTS2=MAX(PTSMN2,HMN*(HMX/HMN)**RLU(0)-PMRS2)
-        ELSE
-          PTS2=MAX(PTSMN2,HMN*HMX/(HMN+RLU(0)*HDE)-PMRS2)
-        ENDIF
-        WTPTS2=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS2+PTS2))+
-     &  HWT3*HMN*HMX/(PMRS2+PTS2)**2)
-C...Select azimuthal angles and check pT choice.
-        PHI1=PARU(2)*RLU(0)
-        PHI2=PARU(2)*RLU(0)
-        PHIR=PHI2-PHI1
-        PTS3=MAX(0.,PTS1+PTS2+2.*SQRT(PTS1*PTS2)*COS(PHIR))
-        IF(PTS3.LT.CKIN(55)**2.OR.(CKIN(56).GT.0..AND.PTS3.GT.
-     &  CKIN(56)**2)) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-C...Calculate transverse masses and check phase space not closed.
-        PMS1=PM1**2+PTS1
-        PMS2=PM2**2+PTS2
-        PMS3=PM3**2+PTS3
-        PMT1=SQRT(PMS1)
-        PMT2=SQRT(PMS2)
-        PMT3=SQRT(PMS3)
-        PM12=(PMT1+PMT2)**2
-        IF(PMT1+PMT2+PMT3.GT.0.9999*SHPR) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-C...Select rapidity for particle 3 and check phase space not closed.
-        Y3MAX=LOG((SHP+PMS3-PM12+SQRT(MAX(0.,(SHP-PMS3-PM12)**2-
-     &  4.*PMS3*PM12)))/(2.*SHPR*PMT3))
-        IF(Y3MAX.LT.1E-6) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-        Y3=(2.*RLU(0)-1.)*0.999999*Y3MAX
-        PZ3=PMT3*SINH(Y3)
-        PE3=PMT3*COSH(Y3)
-C...Find momentum transfers in two mirror solutions (in 1-2 frame).
-        PZ12=-PZ3
-        PE12=SHPR-PE3
-        PMS12=PE12**2-PZ12**2
-        SQL12=SQRT(MAX(0.,(PMS12-PMS1-PMS2)**2-4.*PMS1*PMS2))
-        IF(SQL12.LT.1E-6*SHP) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-        PMM1=PMS12+PMS1-PMS2
-        PMM2=PMS12+PMS2-PMS1
-        TFAC=-SHPR/(2.*PMS12)
-        T1P=TFAC*(PE12-PZ12)*(PMM1-SQL12)
-        T1N=TFAC*(PE12-PZ12)*(PMM1+SQL12)
-        T2P=TFAC*(PE12+PZ12)*(PMM2-SQL12)
-        T2N=TFAC*(PE12+PZ12)*(PMM2+SQL12)
-C...Construct relative mirror weights and make choice.
-        IF(MPTPK.EQ.1) THEN
-          WTPU=1.
-          WTNU=1.
-        ELSE
-          WTPU=1./((T1P-PMRS1)*(T2P-PMRS2))**2
-          WTNU=1./((T1N-PMRS1)*(T2N-PMRS2))**2
-        ENDIF
-        WTP=WTPU/(WTPU+WTNU)
-        WTN=WTNU/(WTPU+WTNU)
-        EPS=1.
-        IF(WTN.GT.RLU(0)) EPS=-1.
-C...Store result of variable choice and associated weights.
-        VINT(202)=PTS1
-        VINT(207)=PTS2
-        VINT(203)=PHI1
-        VINT(208)=PHI2
-        VINT(205)=WTPTS1
-        VINT(210)=WTPTS2
-        VINT(211)=Y3
-        VINT(212)=Y3MAX
-        VINT(213)=EPS
-        IF(EPS.GT.0.) THEN
-          VINT(214)=1./WTP
-          VINT(215)=T1P
-          VINT(216)=T2P
-        ELSE
-          VINT(214)=1./WTN
-          VINT(215)=T1N
-          VINT(216)=T2N
-        ENDIF
-        VINT(217)=-0.5*TFAC*(PE12-PZ12)*(PMM2+EPS*SQL12)
-        VINT(218)=-0.5*TFAC*(PE12+PZ12)*(PMM1+EPS*SQL12)
-        VINT(219)=0.5*(PMS12-PTS3)
-        VINT(220)=SQL12
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pymaxi.F b/PYTHIA/pythia/pymaxi.F
deleted file mode 100644 (file)
index 6f94ab9..0000000
+++ /dev/null
@@ -1,732 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYMAXI
-C...Finds optimal set of coefficients for kinematical variable selection
-C...and the maximum of the part of the differential cross-section used
-C...in the event weighting.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT6/PROC(0:200)
-      CHARACTER PROC*28
-      COMMON/PYINT7/SIGT(0:6,0:6,0:5)
-      SAVE /LUDAT1/,/LUDAT2/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
-     &/PYINT5/,/PYINT6/,/PYINT7/
-      CHARACTER CVAR(4)*4
-      DIMENSION NPTS(4),MVARPT(500,4),VINTPT(500,30),SIGSPT(500),
-     &NAREL(7),WTREL(7),WTMAT(7,7),WTRELN(7),COEFU(7),COEFO(7),
-     &IACCMX(4),SIGSMX(4),SIGSSM(3)
-      DATA CVAR/'tau ','tau''','y*  ','cth '/
-      DATA SIGSSM/3*0./
-C...Select subprocess to study: skip cases not applicable.
-      NPOSI=0
-      VINT(143)=1.
-      VINT(144)=1.
-      XSEC(0,1)=0.
-      DO 440 ISUB=1,200
-      MINT(51)=0
-      IF(ISET(ISUB).EQ.11) THEN
-        XSEC(ISUB,1)=1.00001*COEF(ISUB,1)
-        NPOSI=NPOSI+1
-        GOTO 430
-      ELSEIF(ISUB.GE.91.AND.ISUB.LE.95) THEN
-        XSEC(ISUB,1)=SIGT(0,0,ISUB-90)
-        IF(MSUB(ISUB).NE.1) GOTO 440
-        NPOSI=NPOSI+1
-        GOTO 430
-      ELSEIF(ISUB.EQ.96) THEN
-        IF(MINT(50).EQ.0) GOTO 440
-        IF(MSUB(95).NE.1.AND.MSTP(81).LE.0.AND.MSTP(131).LE.0) GOTO 440
-        IF(MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 440
-      ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
-     &ISUB.EQ.53.OR.ISUB.EQ.68) THEN
-        IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 440
-      ELSE
-        IF(MSUB(ISUB).NE.1) GOTO 440
-      ENDIF
-      MINT(1)=ISUB
-      ISTSB=ISET(ISUB)
-      IF(ISUB.EQ.96) ISTSB=2
-      IF(MSTP(122).GE.2) WRITE(MSTU(11),5000) ISUB
-      MWTXS=0
-      IF(MSTP(142).GE.1.AND.ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+
-     &MSUB(94)+MSUB(95).EQ.0) MWTXS=1
-C...Find resonances (explicit or implicit in cross-section).
-      MINT(72)=0
-      KFR1=0
-      IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
-        KFR1=KFPR(ISUB,1)
-      ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165.OR.
-     &ISUB.EQ.171.OR.ISUB.EQ.176) THEN
-        KFR1=23
-      ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172.OR.
-     &ISUB.EQ.177) THEN
-        KFR1=24
-      ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
-        KFR1=25
-        IF(MSTP(46).EQ.5) THEN
-          KFR1=30
-          PMAS(30,1)=PARP(45)
-          PMAS(30,2)=PARP(45)**3/(96.*PARU(1)*PARP(47)**2)
-        ENDIF
-      ENDIF
-      CKMX=CKIN(2)
-      IF(CKMX.LE.0.) CKMX=VINT(1)
-      IF(KFR1.NE.0) THEN
-        IF(CKIN(1).GT.PMAS(KFR1,1)+20.*PMAS(KFR1,2).OR.
-     &  CKMX.LT.PMAS(KFR1,1)-20.*PMAS(KFR1,2)) KFR1=0
-      ENDIF
-      IF(KFR1.NE.0) THEN
-        TAUR1=PMAS(KFR1,1)**2/VINT(2)
-        GAMR1=PMAS(KFR1,1)*PMAS(KFR1,2)/VINT(2)
-        MINT(72)=1
-        MINT(73)=KFR1
-        VINT(73)=TAUR1
-        VINT(74)=GAMR1
-      ENDIF
-      IF(ISUB.EQ.141) THEN
-        KFR2=23
-        TAUR2=PMAS(KFR2,1)**2/VINT(2)
-        GAMR2=PMAS(KFR2,1)*PMAS(KFR2,2)/VINT(2)
-        IF(CKIN(1).GT.PMAS(KFR2,1)+20.*PMAS(KFR2,2).OR.
-     &  CKMX.LT.PMAS(KFR2,1)-20.*PMAS(KFR2,2)) KFR2=0
-        IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
-          MINT(72)=2
-          MINT(74)=KFR2
-          VINT(75)=TAUR2
-          VINT(76)=GAMR2
-        ELSEIF(KFR2.NE.0) THEN
-          KFR1=KFR2
-          TAUR1=TAUR2
-          GAMR1=GAMR2
-          MINT(72)=1
-          MINT(73)=KFR1
-          VINT(73)=TAUR1
-          VINT(74)=GAMR1
-        ENDIF
-      ENDIF
-C...Find product masses and minimum pT of process.
-      SQM3=0.
-      SQM4=0.
-      MINT(71)=0
-      VINT(71)=CKIN(3)
-      VINT(80)=1.
-      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
-        NBW=0
-        DO 100 I=1,2
-        IF(KFPR(ISUB,I).EQ.0) THEN
-        ELSEIF(MSTP(42).LE.0.OR.PMAS(LUCOMP(KFPR(ISUB,I)),2).LT.
-     &  PARP(41)) THEN
-          IF(I.EQ.1) SQM3=PMAS(LUCOMP(KFPR(ISUB,I)),1)**2
-          IF(I.EQ.2) SQM4=PMAS(LUCOMP(KFPR(ISUB,I)),1)**2
-        ELSE
-          NBW=NBW+1
-        ENDIF
-  100   CONTINUE
-        IF(NBW.GE.1) THEN
-          CALL PYOFSH(3,0,KFPR(ISUB,1),KFPR(ISUB,2),0.,PQM3,PQM4)
-          IF(MINT(51).EQ.1) THEN
-            WRITE(MSTU(11),5100) ISUB
-            MSUB(ISUB)=0
-            GOTO 440
-          ENDIF
-          SQM3=PQM3**2
-          SQM4=PQM4**2
-        ENDIF
-        IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
-        IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
-        IF(ISUB.EQ.96.AND.MSTP(82).LE.1) VINT(71)=PARP(81)
-        IF(ISUB.EQ.96.AND.MSTP(82).GE.2) VINT(71)=0.08*PARP(82)
-      ELSEIF(ISTSB.EQ.6) THEN
-        CALL PYOFSH(5,0,KFPR(ISUB,1),KFPR(ISUB,2),0.,PQM3,PQM4)
-        IF(MINT(51).EQ.1) THEN
-          WRITE(MSTU(11),5100) ISUB
-          MSUB(ISUB)=0
-          GOTO 440
-        ENDIF
-        SQM3=PQM3**2
-        SQM4=PQM4**2
-      ENDIF
-      VINT(63)=SQM3
-      VINT(64)=SQM4
-C...Prepare for additional variable choices in 2 -> 3.
-      IF(ISTSB.EQ.5) THEN
-        VINT(201)=0.
-        IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(KFPR(ISUB,2),1)
-        VINT(206)=VINT(201)
-        VINT(204)=PMAS(23,1)
-        IF(ISUB.EQ.124) VINT(204)=PMAS(24,1)
-        IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
-     &  ISUB.EQ.186.OR.ISUB.EQ.187) VINT(204)=VINT(201)
-        VINT(209)=VINT(204)
-      ENDIF
-C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
-      NPTS(1)=2+2*MINT(72)
-      IF(MINT(47).EQ.1) THEN
-        IF(ISTSB.EQ.1.OR.ISTSB.EQ.2.OR.ISTSB.EQ.6) NPTS(1)=1
-      ELSEIF(MINT(47).EQ.5) THEN
-        IF(ISTSB.LE.2.OR.ISTSB.GE.6) NPTS(1)=NPTS(1)+1
-      ENDIF
-      NPTS(2)=1
-      IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
-        IF(MINT(47).GE.2) NPTS(2)=2
-        IF(MINT(47).EQ.5) NPTS(2)=3
-      ENDIF
-      NPTS(3)=1
-      IF(MINT(47).GE.4) NPTS(3)=3
-      IF(MINT(45).EQ.3) NPTS(3)=NPTS(3)+1
-      IF(MINT(46).EQ.3) NPTS(3)=NPTS(3)+1
-      NPTS(4)=1
-      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) NPTS(4)=5
-      NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
-C...Reset coefficients of cross-section weighting.
-      DO 110 J=1,20
-      COEF(ISUB,J)=0.
-  110 CONTINUE
-      COEF(ISUB,1)=1.
-      COEF(ISUB,8)=0.5
-      COEF(ISUB,9)=0.5
-      COEF(ISUB,13)=1.
-      COEF(ISUB,18)=1.
-      MCTH=0
-      MTAUP=0
-      METAUP=0
-      VINT(23)=0.
-      VINT(26)=0.
-      SIGSAM=0.
-C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
-C...in grid of phase space points.
-      CALL PYKLIM(1)
-      METAU=MINT(51)
-      NACC=0
-      DO 140 ITRY=1,NTRY
-      MINT(51)=0
-      IF(METAU.EQ.1) GOTO 140
-      IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
-        MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
-        IF(MTAU.GT.2+2*MINT(72)) MTAU=7
-        CALL PYKMAP(1,MTAU,0.5)
-        IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
-        METAUP=MINT(51)
-      ENDIF
-      IF(METAUP.EQ.1) GOTO 140
-      IF(ISTSB.GE.3.AND.ISTSB.LE.5.AND.MOD(ITRY-1,NPTS(3)*NPTS(4))
-     &.EQ.0) THEN
-        MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
-        CALL PYKMAP(4,MTAUP,0.5)
-      ENDIF
-      IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) THEN
-        CALL PYKLIM(2)
-        MEYST=MINT(51)
-      ENDIF
-      IF(MEYST.EQ.1) GOTO 140
-      IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
-        MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
-        IF(MYST.EQ.4.AND.MINT(45).NE.3) MYST=5
-        CALL PYKMAP(2,MYST,0.5)
-        CALL PYKLIM(3)
-        MECTH=MINT(51)
-      ENDIF
-      IF(MECTH.EQ.1) GOTO 140
-      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) THEN
-        MCTH=1+MOD(ITRY-1,NPTS(4))
-        CALL PYKMAP(3,MCTH,0.5)
-      ENDIF
-      IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
-C...Store position and limits.
-      MINT(51)=0
-      CALL PYKLIM(0)
-      IF(MINT(51).EQ.1) GOTO 140
-      NACC=NACC+1
-      MVARPT(NACC,1)=MTAU
-      MVARPT(NACC,2)=MTAUP
-      MVARPT(NACC,3)=MYST
-      MVARPT(NACC,4)=MCTH
-      DO 120 J=1,30
-      VINTPT(NACC,J)=VINT(10+J)
-  120 CONTINUE
-C...Normal case: calculate cross-section.
-      IF(ISTSB.NE.5) THEN
-        CALL PYSIGH(NCHN,SIGS)
-        IF(MWTXS.EQ.1) THEN
-          CALL PYEVWT(WTXS)
-          SIGS=WTXS*SIGS
-        ENDIF
-C..2 -> 3: find highest value out of a number of tries.
-      ELSE
-        SIGS=0.
-        DO 130 IKIN3=1,MSTP(129)
-        CALL PYKMAP(5,0,0.)
-        IF(MINT(51).EQ.1) GOTO 130
-        CALL PYSIGH(NCHN,SIGTMP)
-        IF(MWTXS.EQ.1) THEN
-          CALL PYEVWT(WTXS)
-          SIGTMP=WTXS*SIGTMP
-        ENDIF
-        IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
-  130   CONTINUE
-      ENDIF
-C...Store cross-section.
-      SIGSPT(NACC)=SIGS
-      IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
-      IF(MSTP(122).GE.2) WRITE(MSTU(11),5200) MTAU,MYST,MCTH,MTAUP,
-     &VINT(21),VINT(22),VINT(23),VINT(26),SIGS
-  140 CONTINUE
-      IF(NACC.EQ.0) THEN
-        WRITE(MSTU(11),5100) ISUB
-        MSUB(ISUB)=0
-        GOTO 440
-      ELSEIF(SIGSAM.EQ.0.) THEN
-        WRITE(MSTU(11),5300) ISUB
-        MSUB(ISUB)=0
-        GOTO 440
-      ENDIF
-      IF(ISUB.NE.96) NPOSI=NPOSI+1
-C...Calculate integrals in tau over maximal phase space limits.
-      TAUMIN=VINT(11)
-      TAUMAX=VINT(31)
-      ATAU1=LOG(TAUMAX/TAUMIN)
-      IF(NPTS(1).GE.2) THEN
-        ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
-      ENDIF
-      IF(NPTS(1).GE.4) THEN
-        ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
-        ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
-     &  GAMR1
-      ENDIF
-      IF(NPTS(1).GE.6) THEN
-        ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
-        ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
-     &  GAMR2
-      ENDIF
-      IF(NPTS(1).GT.2+2*MINT(72)) THEN
-        ATAU7=LOG(MAX(2E-6,1.-TAUMIN)/MAX(2E-6,1.-TAUMAX))
-      ENDIF
-C...Reset. Sum up cross-sections in points calculated.
-      DO 300 IVAR=1,4
-      IF(NPTS(IVAR).EQ.1) GOTO 300
-      IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 300
-      NBIN=NPTS(IVAR)
-      DO 160 J1=1,NBIN
-      NAREL(J1)=0
-      WTREL(J1)=0.
-      COEFU(J1)=0.
-      DO 150 J2=1,NBIN
-      WTMAT(J1,J2)=0.
-  150 CONTINUE
-  160 CONTINUE
-      DO 170 IACC=1,NACC
-      IBIN=MVARPT(IACC,IVAR)
-      IF(IVAR.EQ.1.AND.IBIN.EQ.7) IBIN=3+2*MINT(72)
-      IF(IVAR.EQ.3.AND.IBIN.EQ.5.AND.MINT(45).NE.3) IBIN=4
-      NAREL(IBIN)=NAREL(IBIN)+1
-      WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
-C...Sum up tau cross-section pieces in points used.
-      IF(IVAR.EQ.1) THEN
-        TAU=VINTPT(IACC,11)
-        WTMAT(IBIN,1)=WTMAT(IBIN,1)+1.
-        WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
-        IF(NBIN.GE.4) THEN
-          WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
-          WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
-     &    ((TAU-TAUR1)**2+GAMR1**2)
-        ENDIF
-        IF(NBIN.GE.6) THEN
-          WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
-          WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
-     &    ((TAU-TAUR2)**2+GAMR2**2)
-        ENDIF
-        IF(NBIN.GT.2+2*MINT(72)) THEN
-          WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(ATAU1/ATAU7)*
-     &    TAU/MAX(2E-6,1.-TAU)
-        ENDIF
-C...Sum up tau' cross-section pieces in points used.
-      ELSEIF(IVAR.EQ.2) THEN
-        TAU=VINTPT(IACC,11)
-        TAUP=VINTPT(IACC,16)
-        TAUPMN=VINTPT(IACC,6)
-        TAUPMX=VINTPT(IACC,26)
-        ATAUP1=LOG(TAUPMX/TAUPMN)
-        ATAUP2=((1.-TAU/TAUPMX)**4-(1.-TAU/TAUPMN)**4)/(4.*TAU)
-        WTMAT(IBIN,1)=WTMAT(IBIN,1)+1.
-        WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*(1.-TAU/TAUP)**3/
-     &  TAUP
-        IF(NBIN.GE.3) THEN
-          ATAUP3=LOG(MAX(2E-6,1.-TAUPMN)/MAX(2E-6,1.-TAUPMX))
-          WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAUP1/ATAUP3)*
-     &    TAUP/MAX(2E-6,1.-TAUP)
-        ENDIF
-C...Sum up y* cross-section pieces in points used.
-      ELSEIF(IVAR.EQ.3) THEN
-        YST=VINTPT(IACC,12)
-        YSTMIN=VINTPT(IACC,2)
-        YSTMAX=VINTPT(IACC,22)
-        AYST0=YSTMAX-YSTMIN
-        AYST1=0.5*(YSTMAX-YSTMIN)**2
-        AYST2=AYST1
-        AYST3=2.*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
-        WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
-        WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST2)*(YSTMAX-YST)
-        WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
-        IF(MINT(45).EQ.3) THEN
-          TAUE=VINTPT(IACC,11)
-          IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
-          YST0=-0.5*LOG(TAUE)
-          AYST4=LOG(MAX(1E-6,EXP(YST0-YSTMIN)-1.)/
-     &    MAX(1E-6,EXP(YST0-YSTMAX)-1.))
-          WTMAT(IBIN,4)=WTMAT(IBIN,4)+(AYST0/AYST4)/
-     &    MAX(1E-6,1.-EXP(YST-YST0))
-        ENDIF
-        IF(MINT(46).EQ.3) THEN
-          TAUE=VINTPT(IACC,11)
-          IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
-          YST0=-0.5*LOG(TAUE)
-          AYST5=LOG(MAX(1E-6,EXP(YST0+YSTMAX)-1.)/
-     &    MAX(1E-6,EXP(YST0+YSTMIN)-1.))
-          WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(AYST0/AYST5)/
-     &    MAX(1E-6,1.-EXP(-YST-YST0))
-        ENDIF
-C...Sum up cos(theta-hat) cross-section pieces in points used.
-      ELSE
-        RM34=MAX(1E-20,2.*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2)
-        RSQM=1.+RM34
-        CTHMAX=SQRT(1.-4.*VINT(71)**2/(TAUMAX*VINT(2)))
-        CTHMIN=-CTHMAX
-        IF(CTHMAX.GT.0.9999) RM34=MAX(RM34,2.*VINT(71)**2/
-     &  (TAUMAX*VINT(2)))
-        ACTH1=CTHMAX-CTHMIN
-        ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
-        ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
-        ACTH4=1./MAX(RM34,RSQM-CTHMAX)-1./MAX(RM34,RSQM-CTHMIN)
-        ACTH5=1./MAX(RM34,RSQM+CTHMIN)-1./MAX(RM34,RSQM+CTHMAX)
-        CTH=VINTPT(IACC,13)
-        WTMAT(IBIN,1)=WTMAT(IBIN,1)+1.
-        WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/MAX(RM34,RSQM-CTH)
-        WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/MAX(RM34,RSQM+CTH)
-        WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/MAX(RM34,RSQM-CTH)**2
-        WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/MAX(RM34,RSQM+CTH)**2
-      ENDIF
-  170 CONTINUE
-C...Check that equation system solvable; else trivial way out.
-      IF(MSTP(122).GE.2) WRITE(MSTU(11),5400) CVAR(IVAR)
-      MSOLV=1
-      WTRELS=0.
-      DO 180 IBIN=1,NBIN
-      IF(MSTP(122).GE.2) WRITE(MSTU(11),5500) (WTMAT(IBIN,IRED),
-     &IRED=1,NBIN),WTREL(IBIN)
-      IF(NAREL(IBIN).EQ.0) MSOLV=0
-      WTRELS=WTRELS+WTREL(IBIN)
-  180 CONTINUE
-      IF(MSOLV.EQ.0) THEN
-        DO 190 IBIN=1,NBIN
-        COEFU(IBIN)=1.
-        WTRELN(IBIN)=0.1
-        IF(WTRELS.GT.0.) WTRELN(IBIN)=MAX(0.1,WTREL(IBIN)/WTRELS)
-  190   CONTINUE
-C...Solve to find relative importance of cross-section pieces.
-      ELSE
-        DO 200 IBIN=1,NBIN
-        WTRELN(IBIN)=MAX(0.1,WTREL(IBIN)/WTRELS)
-  200   CONTINUE
-        DO 230 IRED=1,NBIN-1
-        DO 220 IBIN=IRED+1,NBIN
-        RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
-        WTREL(IBIN)=WTREL(IBIN)-RQT*WTREL(IRED)
-        DO 210 ICOE=IRED,NBIN
-        WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-RQT*WTMAT(IRED,ICOE)
-  210   CONTINUE
-  220   CONTINUE
-  230   CONTINUE
-        DO 250 IRED=NBIN,1,-1
-        DO 240 ICOE=IRED+1,NBIN
-        WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
-  240   CONTINUE
-        COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
-  250   CONTINUE
-      ENDIF
-C...Normalize coefficients, with piece shared democratically.
-      COEFSU=0.
-      WTRELS=0.
-      DO 260 IBIN=1,NBIN
-      COEFU(IBIN)=MAX(0.,COEFU(IBIN))
-      COEFSU=COEFSU+COEFU(IBIN)
-      WTRELS=WTRELS+WTRELN(IBIN)
-  260 CONTINUE
-      IF(COEFSU.GT.0.) THEN
-        DO 270 IBIN=1,NBIN
-        COEFO(IBIN)=PARP(122)/NBIN+(1.-PARP(122))*0.5*
-     &  (COEFU(IBIN)/COEFSU+WTRELN(IBIN)/WTRELS)
-  270   CONTINUE
-      ELSE
-        DO 280 IBIN=1,NBIN
-        COEFO(IBIN)=1./NBIN
-  280   CONTINUE
-      ENDIF
-      IF(IVAR.EQ.1) IOFF=0
-      IF(IVAR.EQ.2) IOFF=17
-      IF(IVAR.EQ.3) IOFF=7
-      IF(IVAR.EQ.4) IOFF=12
-      DO 290 IBIN=1,NBIN
-      ICOF=IOFF+IBIN
-      IF(IVAR.EQ.1.AND.IBIN.GT.2+2*MINT(72)) ICOF=7
-      IF(IVAR.EQ.3.AND.IBIN.EQ.4.AND.MINT(45).NE.3) ICOF=ICOF+1
-      COEF(ISUB,ICOF)=COEFO(IBIN)
-  290 CONTINUE
-      IF(MSTP(122).GE.2) WRITE(MSTU(11),5600) CVAR(IVAR),
-     &(COEFO(IBIN),IBIN=1,NBIN)
-  300 CONTINUE
-C...Find two most promising maxima among points previously determined.
-      DO 310 J=1,4
-      IACCMX(J)=0
-      SIGSMX(J)=0.
-  310 CONTINUE
-      NMAX=0
-      DO 370 IACC=1,NACC
-      DO 320 J=1,30
-      VINT(10+J)=VINTPT(IACC,J)
-  320 CONTINUE
-      IF(ISTSB.NE.5) THEN
-        CALL PYSIGH(NCHN,SIGS)
-        IF(MWTXS.EQ.1) THEN
-          CALL PYEVWT(WTXS)
-          SIGS=WTXS*SIGS
-        ENDIF
-      ELSE
-        SIGS=0.
-        DO 330 IKIN3=1,MSTP(129)
-        CALL PYKMAP(5,0,0.)
-        IF(MINT(51).EQ.1) GOTO 330
-        CALL PYSIGH(NCHN,SIGTMP)
-        IF(MWTXS.EQ.1) THEN
-          CALL PYEVWT(WTXS)
-          SIGTMP=WTXS*SIGTMP
-        ENDIF
-        IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
-  330   CONTINUE
-      ENDIF
-      IEQ=0
-      DO 340 IMV=1,NMAX
-      IF(ABS(SIGS-SIGSMX(IMV)).LT.1E-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
-  340 CONTINUE
-      IF(IEQ.EQ.0) THEN
-        DO 350 IMV=NMAX,1,-1
-        IIN=IMV+1
-        IF(SIGS.LE.SIGSMX(IMV)) GOTO 360
-        IACCMX(IMV+1)=IACCMX(IMV)
-        SIGSMX(IMV+1)=SIGSMX(IMV)
-  350   CONTINUE
-        IIN=1
-  360   IACCMX(IIN)=IACC
-        SIGSMX(IIN)=SIGS
-        IF(NMAX.LE.1) NMAX=NMAX+1
-      ENDIF
-  370 CONTINUE
-C...Read out starting position for search.
-      IF(MSTP(122).GE.2) WRITE(MSTU(11),5700)
-      SIGSAM=SIGSMX(1)
-      DO 420 IMAX=1,NMAX
-      IACC=IACCMX(IMAX)
-      MTAU=MVARPT(IACC,1)
-      MTAUP=MVARPT(IACC,2)
-      MYST=MVARPT(IACC,3)
-      MCTH=MVARPT(IACC,4)
-      VTAU=0.5
-      VYST=0.5
-      VCTH=0.5
-      VTAUP=0.5
-C...Starting point and step size in parameter space.
-      DO 410 IRPT=1,2
-      DO 400 IVAR=1,4
-      IF(NPTS(IVAR).EQ.1) GOTO 400
-      IF(IVAR.EQ.1) VVAR=VTAU
-      IF(IVAR.EQ.2) VVAR=VTAUP
-      IF(IVAR.EQ.3) VVAR=VYST
-      IF(IVAR.EQ.4) VVAR=VCTH
-      IF(IVAR.EQ.1) MVAR=MTAU
-      IF(IVAR.EQ.2) MVAR=MTAUP
-      IF(IVAR.EQ.3) MVAR=MYST
-      IF(IVAR.EQ.4) MVAR=MCTH
-      IF(IRPT.EQ.1) VDEL=0.1
-      IF(IRPT.EQ.2) VDEL=MAX(0.01,MIN(0.05,VVAR-0.02,0.98-VVAR))
-      IF(IRPT.EQ.1) VMAR=0.02
-      IF(IRPT.EQ.2) VMAR=0.002
-      IMOV0=1
-      IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
-      DO 390 IMOV=IMOV0,8
-C...Define new point in parameter space.
-      IF(IMOV.EQ.0) THEN
-        INEW=2
-        VNEW=VVAR
-      ELSEIF(IMOV.EQ.1) THEN
-        INEW=3
-        VNEW=VVAR+VDEL
-      ELSEIF(IMOV.EQ.2) THEN
-        INEW=1
-        VNEW=VVAR-VDEL
-      ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
-     &VVAR+2.*VDEL.LT.1.-VMAR) THEN
-        VVAR=VVAR+VDEL
-        SIGSSM(1)=SIGSSM(2)
-        SIGSSM(2)=SIGSSM(3)
-        INEW=3
-        VNEW=VVAR+VDEL
-      ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
-     &VVAR-2.*VDEL.GT.VMAR) THEN
-        VVAR=VVAR-VDEL
-        SIGSSM(3)=SIGSSM(2)
-        SIGSSM(2)=SIGSSM(1)
-        INEW=1
-        VNEW=VVAR-VDEL
-      ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
-        VDEL=0.5*VDEL
-        VVAR=VVAR+VDEL
-        SIGSSM(1)=SIGSSM(2)
-        INEW=2
-        VNEW=VVAR
-      ELSE
-        VDEL=0.5*VDEL
-        VVAR=VVAR-VDEL
-        SIGSSM(3)=SIGSSM(2)
-        INEW=2
-        VNEW=VVAR
-      ENDIF
-C...Convert to relevant variables and find derived new limits.
-      IF(IVAR.EQ.1) THEN
-        VTAU=VNEW
-        CALL PYKMAP(1,MTAU,VTAU)
-        IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
-      ENDIF
-      IF(IVAR.LE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5) THEN
-        IF(IVAR.EQ.2) VTAUP=VNEW
-        CALL PYKMAP(4,MTAUP,VTAUP)
-      ENDIF
-      IF(IVAR.LE.2) CALL PYKLIM(2)
-      IF(IVAR.LE.3) THEN
-        IF(IVAR.EQ.3) VYST=VNEW
-        CALL PYKMAP(2,MYST,VYST)
-        CALL PYKLIM(3)
-      ENDIF
-      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) THEN
-        IF(IVAR.EQ.4) VCTH=VNEW
-        CALL PYKMAP(3,MCTH,VCTH)
-      ENDIF
-      IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
-C...Evaluate cross-section. Save new maximum. Final maximum.
-      IF(ISTSB.NE.5) THEN
-        CALL PYSIGH(NCHN,SIGS)
-        IF(MWTXS.EQ.1) THEN
-          CALL PYEVWT(WTXS)
-          SIGS=WTXS*SIGS
-        ENDIF
-      ELSE
-        SIGS=0.
-        DO 380 IKIN3=1,MSTP(129)
-        CALL PYKMAP(5,0,0.)
-        IF(MINT(51).EQ.1) GOTO 380
-        CALL PYSIGH(NCHN,SIGTMP)
-        IF(MWTXS.EQ.1) THEN
-          CALL PYEVWT(WTXS)
-          SIGTMP=WTXS*SIGTMP
-        ENDIF
-        IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
-  380   CONTINUE
-      ENDIF
-      SIGSSM(INEW)=SIGS
-      IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
-      IF(MSTP(122).GE.2) WRITE(MSTU(11),5800) IMAX,IVAR,MVAR,IMOV,
-     &VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
-  390 CONTINUE
-  400 CONTINUE
-  410 CONTINUE
-  420 CONTINUE
-      IF(MSTP(121).EQ.1) SIGSAM=PARP(121)*SIGSAM
-      XSEC(ISUB,1)=1.05*SIGSAM
-  430 CONTINUE
-      IF(MSTP(173).EQ.1.AND.ISUB.NE.96) XSEC(ISUB,1)=
-     &PARP(174)*XSEC(ISUB,1)
-      IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
-  440 CONTINUE
-      MINT(51)=0
-C...Print summary table.
-      IF(NPOSI.EQ.0) THEN
-        WRITE(MSTU(11),5900)
-        STOP
-      ENDIF
-      IF(MSTP(122).GE.1) THEN
-        WRITE(MSTU(11),6000)
-        WRITE(MSTU(11),6100)
-        DO 450 ISUB=1,200
-        IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 450
-        IF(ISUB.EQ.96.AND.MINT(50).EQ.0) GOTO 450
-        IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MSTP(81).LE.0) GOTO 450
-        IF(ISUB.EQ.96.AND.MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 450
-        IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.
-     &  ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 450
-        WRITE(MSTU(11),6200) ISUB,PROC(ISUB),XSEC(ISUB,1)
-  450   CONTINUE
-        WRITE(MSTU(11),6300)
-      ENDIF
-C...Format statements for maximization results.
- 5000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
-     &'subprocess no',I4/1X,'Coefficient modes     tau',10X,'y*',9X,
-     &'cth',9X,'tau''',7X,'sigma')
- 5100 FORMAT(1X,'Warning: requested subprocess ',I3,' has no allowed ',
-     &'phase space.'/1X,'Process switched off!')
- 5200 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,E12.4)
- 5300 FORMAT(1X,'Warning: requested subprocess ',I3,' has vanishing ',
-     &'cross-section.'/1X,'Process switched off!')
- 5400 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
- 5500 FORMAT(1X,1P,8E11.3)
- 5600 FORMAT(1X,'Result for ',A4,':',7F9.4)
- 5700 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
-     &'MOD MOV   VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
- 5800 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,E12.4)
- 5900 FORMAT(1X,'Error: no requested process has non-vanishing ',
-     &'cross-section.'/1X,'Execution stopped!')
- 6000 FORMAT(/1X,8('*'),1X,'PYMAXI: summary of differential ',
-     &'cross-section maximum search',1X,8('*'))
- 6100 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I  ISUB  ',
-     &'Subprocess name',15X,'I  Maximum value  I'/11X,'I',38X,'I',
-     &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
- 6200 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,E12.4,3X,'I')
- 6300 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pymult.F b/PYTHIA/pythia/pymult.F
deleted file mode 100644 (file)
index 1352dde..0000000
+++ /dev/null
@@ -1,475 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYMULT(MMUL)
-C...Initializes treatment of multiple interactions, selects kinematics
-C...of hardest interaction if low-pT physics included in run, and
-C...generates all non-hardest interactions.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT7/SIGT(0:6,0:6,0:5)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,
-     &/PYINT7/
-      DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80)
-      SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM
-C...Initialization of multiple interaction treatment.
-      IF(MMUL.EQ.1) THEN
-        IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
-        ISUB=96
-        MINT(1)=96
-        VINT(63)=0.
-        VINT(64)=0.
-        VINT(143)=1.
-        VINT(144)=1.
-C...Loop over phase space points: xT2 choice in 20 bins.
-  100   SIGSUM=0.
-        DO 120 IXT2=1,20
-        NMUL(IXT2)=MSTP(83)
-        SIGM(IXT2)=0.
-        DO 110 ITRY=1,MSTP(83)
-        RSCA=0.05*((21-IXT2)-RLU(0))
-        XT2=VINT(149)*(1.+VINT(149))/(VINT(149)+RSCA)-VINT(149)
-        XT2=MAX(0.01*VINT(149),XT2)
-        VINT(25)=XT2
-C...Choose tau and y*. Calculate cos(theta-hat).
-        IF(RLU(0).LE.COEF(ISUB,1)) THEN
-          TAUT=(2.*(1.+SQRT(1.-XT2))/XT2-1.)**RLU(0)
-          TAU=XT2*(1.+TAUT)**2/(4.*TAUT)
-        ELSE
-          TAU=XT2*(1.+TAN(RLU(0)*ATAN(SQRT(1./XT2-1.)))**2)
-        ENDIF
-        VINT(21)=TAU
-        CALL PYKLIM(2)
-        RYST=RLU(0)
-        MYST=1
-        IF(RYST.GT.COEF(ISUB,8)) MYST=2
-        IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
-        CALL PYKMAP(2,MYST,RLU(0))
-        VINT(23)=SQRT(MAX(0.,1.-XT2/TAU))*(-1)**INT(1.5+RLU(0))
-C...Calculate differential cross-section.
-        VINT(71)=0.5*VINT(1)*SQRT(XT2)
-        CALL PYSIGH(NCHN,SIGS)
-        SIGM(IXT2)=SIGM(IXT2)+SIGS
-  110   CONTINUE
-        SIGSUM=SIGSUM+SIGM(IXT2)
-  120   CONTINUE
-        SIGSUM=SIGSUM/(20.*MSTP(83))
-C...Reject result if sigma(parton-parton) is smaller than hadronic one.
-        IF(SIGSUM.LT.1.1*SIGT(0,0,5)) THEN
-          IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) PARP(82),SIGSUM
-          PARP(82)=0.9*PARP(82)
-          VINT(149)=4.*PARP(82)**2/VINT(2)
-          GOTO 100
-        ENDIF
-        IF(MSTP(122).GE.1) WRITE(MSTU(11),5200) PARP(82), SIGSUM
-C...Start iteration to find k factor.
-        YKE=SIGSUM/SIGT(0,0,5)
-        SO=0.5
-        XI=0.
-        YI=0.
-        XF=0.
-        YF=0.
-        XK=0.5
-        IIT=0
-  130   IF(IIT.EQ.0) THEN
-          XK=2.*XK
-        ELSEIF(IIT.EQ.1) THEN
-          XK=0.5*XK
-        ELSE
-          XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
-        ENDIF
-C...Evaluate overlap integrals.
-        IF(MSTP(82).EQ.2) THEN
-          SP=0.5*PARU(1)*(1.-EXP(-XK))
-          SOP=SP/PARU(1)
-        ELSE
-          IF(MSTP(82).EQ.3) DELTAB=0.02
-          IF(MSTP(82).EQ.4) DELTAB=MIN(0.01,0.05*PARP(84))
-          SP=0.
-          SOP=0.
-          B=-0.5*DELTAB
-  140     B=B+DELTAB
-          IF(MSTP(82).EQ.3) THEN
-            OV=EXP(-B**2)/PARU(2)
-          ELSE
-            CQ2=PARP(84)**2
-            OV=((1.-PARP(83))**2*EXP(-MIN(50.,B**2))+2.*PARP(83)*
-     &      (1.-PARP(83))*2./(1.+CQ2)*EXP(-MIN(50.,B**2*2./(1.+CQ2)))+
-     &      PARP(83)**2/CQ2*EXP(-MIN(50.,B**2/CQ2)))/PARU(2)
-          ENDIF
-          PACC=1.-EXP(-MIN(50.,PARU(1)*XK*OV))
-          SP=SP+PARU(2)*B*DELTAB*PACC
-          SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
-          IF(B.LT.1..OR.B*PACC.GT.1E-6) GOTO 140
-        ENDIF
-        YK=PARU(1)*XK*SO/SP
-C...Continue iteration until convergence.
-        IF(YK.LT.YKE) THEN
-          XI=XK
-          YI=YK
-          IF(IIT.EQ.1) IIT=2
-        ELSE
-          XF=XK
-          YF=YK
-          IF(IIT.EQ.0) IIT=1
-        ENDIF
-        IF(ABS(YK-YKE).GE.1E-5*YKE) GOTO 130
-C...Store some results for subsequent use.
-        VINT(145)=SIGSUM
-        VINT(146)=SOP/SO
-        VINT(147)=SOP/SP
-C...Initialize iteration in xT2 for hardest interaction.
-      ELSEIF(MMUL.EQ.2) THEN
-        IF(MSTP(82).LE.0) THEN
-        ELSEIF(MSTP(82).EQ.1) THEN
-          XT2=1.
-          XT2FAC=XSEC(96,1)/SIGT(0,0,5)*VINT(149)/(1.-VINT(149))
-        ELSEIF(MSTP(82).EQ.2) THEN
-          XT2=1.
-          XT2FAC=VINT(146)*XSEC(96,1)/SIGT(0,0,5)*VINT(149)*
-     &    (1.+VINT(149))
-        ELSE
-          XC2=4.*CKIN(3)**2/VINT(2)
-          IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0.
-        ENDIF
-      ELSEIF(MMUL.EQ.3) THEN
-C...Low-pT or multiple interactions (first semihard interaction):
-C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
-C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
-        ISUB=MINT(1)
-        IF(MSTP(82).LE.0) THEN
-          XT2=0.
-        ELSEIF(MSTP(82).EQ.1) THEN
-          XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(RLU(0)))
-        ELSEIF(MSTP(82).EQ.2) THEN
-          IF(XT2.LT.1..AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
-     &    VINT(149)))).GT.RLU(0)) XT2=1.
-          IF(XT2.GE.1.) THEN
-            XT2=(1.+VINT(149))*XT2FAC/(XT2FAC-(1.+VINT(149))*LOG(1.-
-     &      RLU(0)*(1.-EXP(-XT2FAC/(VINT(149)*(1.+VINT(149)))))))-
-     &      VINT(149)
-          ELSE
-            XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+RLU(0)*
-     &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
-     &      VINT(149)
-          ENDIF
-          XT2=MAX(0.01*VINT(149),XT2)
-        ELSE
-          XT2=(XC2+VINT(149))*(1.+VINT(149))/(1.+VINT(149)-
-     &    RLU(0)*(1.-XC2))-VINT(149)
-          XT2=MAX(0.01*VINT(149),XT2)
-        ENDIF
-        VINT(25)=XT2
-C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
-        IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
-          IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-1
-          IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-1
-          ISUB=95
-          MINT(1)=ISUB
-          VINT(21)=0.01*VINT(149)
-          VINT(22)=0.
-          VINT(23)=0.
-          VINT(25)=0.01*VINT(149)
-        ELSE
-C...Multiple interactions (first semihard interaction).
-C...Choose tau and y*. Calculate cos(theta-hat).
-          IF(RLU(0).LE.COEF(ISUB,1)) THEN
-            TAUT=(2.*(1.+SQRT(1.-XT2))/XT2-1.)**RLU(0)
-            TAU=XT2*(1.+TAUT)**2/(4.*TAUT)
-          ELSE
-            TAU=XT2*(1.+TAN(RLU(0)*ATAN(SQRT(1./XT2-1.)))**2)
-          ENDIF
-          VINT(21)=TAU
-          CALL PYKLIM(2)
-          RYST=RLU(0)
-          MYST=1
-          IF(RYST.GT.COEF(ISUB,8)) MYST=2
-          IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
-          CALL PYKMAP(2,MYST,RLU(0))
-          VINT(23)=SQRT(MAX(0.,1.-XT2/TAU))*(-1)**INT(1.5+RLU(0))
-        ENDIF
-        VINT(71)=0.5*VINT(1)*SQRT(VINT(25))
-C...Store results of cross-section calculation.
-      ELSEIF(MMUL.EQ.4) THEN
-        ISUB=MINT(1)
-        XTS=VINT(25)
-        IF(ISET(ISUB).EQ.1) XTS=VINT(21)
-        IF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.6)
-     &  XTS=(4.*VINT(48)+2.*VINT(63)+2.*VINT(64))/VINT(2)
-        IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
-        RBIN=MAX(0.000001,MIN(0.999999,XTS*(1.+VINT(149))/
-     &  (XTS+VINT(149))))
-        IRBIN=INT(1.+20.*RBIN)
-        IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
-          NMUL(IRBIN)=NMUL(IRBIN)+1
-          SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
-        ENDIF
-C...Choose impact parameter.
-      ELSEIF(MMUL.EQ.5) THEN
-        IF(MSTP(82).EQ.3) THEN
-          VINT(148)=RLU(0)/(PARU(2)*VINT(147))
-        ELSE
-          RTYPE=RLU(0)
-          CQ2=PARP(84)**2
-          IF(RTYPE.LT.(1.-PARP(83))**2) THEN
-            B2=-LOG(RLU(0))
-          ELSEIF(RTYPE.LT.1.-PARP(83)**2) THEN
-            B2=-0.5*(1.+CQ2)*LOG(RLU(0))
-          ELSE
-            B2=-CQ2*LOG(RLU(0))
-          ENDIF
-          VINT(148)=((1.-PARP(83))**2*EXP(-MIN(50.,B2))+2.*PARP(83)*
-     &    (1.-PARP(83))*2./(1.+CQ2)*EXP(-MIN(50.,B2*2./(1.+CQ2)))+
-     &    PARP(83)**2/CQ2*EXP(-MIN(50.,B2/CQ2)))/(PARU(2)*VINT(147))
-        ENDIF
-C...Multiple interactions (variable impact parameter) : reject with
-C...probability exp(-overlap*cross-section above pT/normalization).
-        RNCOR=(IRBIN-20.*RBIN)*NMUL(IRBIN)
-        SIGCOR=(IRBIN-20.*RBIN)*SIGM(IRBIN)
-        DO 150 IBIN=IRBIN+1,20
-        RNCOR=RNCOR+NMUL(IBIN)
-        SIGCOR=SIGCOR+SIGM(IBIN)
-  150   CONTINUE
-        SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1.-XTS)/(XTS+VINT(149))
-        IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
-        VINT(150)=EXP(-MIN(50.,VINT(146)*VINT(148)*
-     &  SIGABV/SIGT(0,0,5)))
-C...Generate additional multiple semihard interactions.
-      ELSEIF(MMUL.EQ.6) THEN
-        ISUBSV=MINT(1)
-        DO 160 J=11,80
-        VINTSV(J)=VINT(J)
-  160   CONTINUE
-        ISUB=96
-        MINT(1)=96
-C...Reconstruct strings in hard scattering.
-        NMAX=MINT(84)+4
-        IF(ISET(ISUBSV).EQ.1) NMAX=MINT(84)+2
-        IF(ISET(ISUBSV).EQ.11) NMAX=MINT(84)+2+MINT(3)
-        NSTR=0
-        DO 180 I=MINT(84)+1,NMAX
-        KCS=KCHG(LUCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
-        IF(KCS.EQ.0) GOTO 180
-        DO 170 J=1,4
-        IF(KCS.EQ.1.AND.(J.EQ.2.OR.J.EQ.4)) GOTO 170
-        IF(KCS.EQ.-1.AND.(J.EQ.1.OR.J.EQ.3)) GOTO 170
-        IF(J.LE.2) THEN
-          IST=MOD(K(I,J+3)/MSTU(5),MSTU(5))
-        ELSE
-          IST=MOD(K(I,J+1),MSTU(5))
-        ENDIF
-        IF(IST.LT.MINT(84).OR.IST.GT.I) GOTO 170
-        IF(KCHG(LUCOMP(K(IST,2)),2).EQ.0) GOTO 170
-        NSTR=NSTR+1
-        IF(J.EQ.1.OR.J.EQ.4) THEN
-          KSTR(NSTR,1)=I
-          KSTR(NSTR,2)=IST
-        ELSE
-          KSTR(NSTR,1)=IST
-          KSTR(NSTR,2)=I
-        ENDIF
-  170   CONTINUE
-  180   CONTINUE
-C...Set up starting values for iteration in xT2.
-        XT2=VINT(25)
-        IF(ISET(ISUBSV).EQ.1) XT2=VINT(21)
-        IF(ISET(ISUBSV).EQ.2.OR.ISET(ISUBSV).EQ.6)
-     &  XT2=(4.*VINT(48)+2.*VINT(63)+2.*VINT(64))/VINT(2)
-        IF(ISET(ISUBSV).GE.3.AND.ISET(ISUBSV).LE.5) XT2=VINT(26)
-        IF(MSTP(82).LE.1) THEN
-          XT2FAC=XSEC(ISUB,1)*VINT(149)/((1.-VINT(149))*SIGT(0,0,5))
-        ELSE
-          XT2FAC=VINT(146)*VINT(148)*XSEC(ISUB,1)/SIGT(0,0,5)*
-     &    VINT(149)*(1.+VINT(149))
-        ENDIF
-        VINT(63)=0.
-        VINT(64)=0.
-        VINT(143)=1.-VINT(141)
-        VINT(144)=1.-VINT(142)
-C...Iterate downwards in xT2.
-  190   IF(MSTP(82).LE.1) THEN
-          XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(RLU(0)))
-          IF(XT2.LT.VINT(149)) GOTO 240
-        ELSE
-          IF(XT2.LE.0.01*VINT(149)) GOTO 240
-          XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
-     &    LOG(RLU(0)))-VINT(149)
-          IF(XT2.LE.0.) GOTO 240
-          XT2=MAX(0.01*VINT(149),XT2)
-        ENDIF
-        VINT(25)=XT2
-C...Choose tau and y*. Calculate cos(theta-hat).
-        IF(RLU(0).LE.COEF(ISUB,1)) THEN
-          TAUT=(2.*(1.+SQRT(1.-XT2))/XT2-1.)**RLU(0)
-          TAU=XT2*(1.+TAUT)**2/(4.*TAUT)
-        ELSE
-          TAU=XT2*(1.+TAN(RLU(0)*ATAN(SQRT(1./XT2-1.)))**2)
-        ENDIF
-        VINT(21)=TAU
-        CALL PYKLIM(2)
-        RYST=RLU(0)
-        MYST=1
-        IF(RYST.GT.COEF(ISUB,8)) MYST=2
-        IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
-        CALL PYKMAP(2,MYST,RLU(0))
-        VINT(23)=SQRT(MAX(0.,1.-XT2/TAU))*(-1)**INT(1.5+RLU(0))
-C...Check that x not used up. Accept or reject kinematical variables.
-        X1M=SQRT(TAU)*EXP(VINT(22))
-        X2M=SQRT(TAU)*EXP(-VINT(22))
-        IF(VINT(143)-X1M.LT.0.01.OR.VINT(144)-X2M.LT.0.01) GOTO 190
-        VINT(71)=0.5*VINT(1)*SQRT(XT2)
-        CALL PYSIGH(NCHN,SIGS)
-        IF(SIGS.LT.XSEC(ISUB,1)*RLU(0)) GOTO 190
-C...Reset K, P and V vectors. Select some variables.
-        DO 210 I=N+1,N+2
-        DO 200 J=1,5
-        K(I,J)=0
-        P(I,J)=0.
-        V(I,J)=0.
-  200   CONTINUE
-  210   CONTINUE
-        RFLAV=RLU(0)
-        PT=0.5*VINT(1)*SQRT(XT2)
-        PHI=PARU(2)*RLU(0)
-        CTH=VINT(23)
-C...Add first parton to event record.
-        K(N+1,1)=3
-        K(N+1,2)=21
-        IF(RFLAV.GE.MAX(PARP(85),PARP(86))) K(N+1,2)=
-     &  1+INT((2.+PARJ(2))*RLU(0))
-        P(N+1,1)=PT*COS(PHI)
-        P(N+1,2)=PT*SIN(PHI)
-        P(N+1,3)=0.25*VINT(1)*(VINT(41)*(1.+CTH)-VINT(42)*(1.-CTH))
-        P(N+1,4)=0.25*VINT(1)*(VINT(41)*(1.+CTH)+VINT(42)*(1.-CTH))
-        P(N+1,5)=0.
-C...Add second parton to event record.
-        K(N+2,1)=3
-        K(N+2,2)=21
-        IF(K(N+1,2).NE.21) K(N+2,2)=-K(N+1,2)
-        P(N+2,1)=-P(N+1,1)
-        P(N+2,2)=-P(N+1,2)
-        P(N+2,3)=0.25*VINT(1)*(VINT(41)*(1.-CTH)-VINT(42)*(1.+CTH))
-        P(N+2,4)=0.25*VINT(1)*(VINT(41)*(1.-CTH)+VINT(42)*(1.+CTH))
-        P(N+2,5)=0.
-        IF(RFLAV.LT.PARP(85).AND.NSTR.GE.1) THEN
-C....Choose relevant string pieces to place gluons on.
-          DO 230 I=N+1,N+2
-          DMIN=1E8
-          DO 220 ISTR=1,NSTR
-          I1=KSTR(ISTR,1)
-          I2=KSTR(ISTR,2)
-          DIST=(P(I,4)*P(I1,4)-P(I,1)*P(I1,1)-P(I,2)*P(I1,2)-
-     &    P(I,3)*P(I1,3))*(P(I,4)*P(I2,4)-P(I,1)*P(I2,1)-
-     &    P(I,2)*P(I2,2)-P(I,3)*P(I2,3))/MAX(1.,P(I1,4)*P(I2,4)-
-     &    P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-P(I1,3)*P(I2,3))
-          IF(ISTR.EQ.1.OR.DIST.LT.DMIN) THEN
-            DMIN=DIST
-            IST1=I1
-            IST2=I2
-            ISTM=ISTR
-          ENDIF
-  220     CONTINUE
-C....Colour flow adjustments, new string pieces.
-          IF(K(IST1,4)/MSTU(5).EQ.IST2) K(IST1,4)=MSTU(5)*I+
-     &    MOD(K(IST1,4),MSTU(5))
-          IF(MOD(K(IST1,5),MSTU(5)).EQ.IST2) K(IST1,5)=
-     &    MSTU(5)*(K(IST1,5)/MSTU(5))+I
-          K(I,5)=MSTU(5)*IST1
-          K(I,4)=MSTU(5)*IST2
-          IF(K(IST2,5)/MSTU(5).EQ.IST1) K(IST2,5)=MSTU(5)*I+
-     &    MOD(K(IST2,5),MSTU(5))
-          IF(MOD(K(IST2,4),MSTU(5)).EQ.IST1) K(IST2,4)=
-     &    MSTU(5)*(K(IST2,4)/MSTU(5))+I
-          KSTR(ISTM,2)=I
-          KSTR(NSTR+1,1)=I
-          KSTR(NSTR+1,2)=IST2
-          NSTR=NSTR+1
-  230     CONTINUE
-C...String drawing and colour flow for gluon loop.
-        ELSEIF(K(N+1,2).EQ.21) THEN
-          K(N+1,4)=MSTU(5)*(N+2)
-          K(N+1,5)=MSTU(5)*(N+2)
-          K(N+2,4)=MSTU(5)*(N+1)
-          K(N+2,5)=MSTU(5)*(N+1)
-          KSTR(NSTR+1,1)=N+1
-          KSTR(NSTR+1,2)=N+2
-          KSTR(NSTR+2,1)=N+2
-          KSTR(NSTR+2,2)=N+1
-          NSTR=NSTR+2
-C...String drawing and colour flow for qq~ pair.
-        ELSE
-          K(N+1,4)=MSTU(5)*(N+2)
-          K(N+2,5)=MSTU(5)*(N+1)
-          KSTR(NSTR+1,1)=N+1
-          KSTR(NSTR+1,2)=N+2
-          NSTR=NSTR+1
-        ENDIF
-C...Update remaining energy; iterate.
-        N=N+2
-        IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
-          CALL LUERRM(11,'(PYMULT:) no more memory left in LUJETS')
-          IF(MSTU(21).GE.1) RETURN
-        ENDIF
-        MINT(31)=MINT(31)+1
-        VINT(151)=VINT(151)+VINT(41)
-        VINT(152)=VINT(152)+VINT(42)
-        VINT(143)=VINT(143)-VINT(41)
-        VINT(144)=VINT(144)-VINT(42)
-        IF(MINT(31).LT.240) GOTO 190
-  240   CONTINUE
-        MINT(1)=ISUBSV
-        DO 250 J=11,80
-        VINT(J)=VINTSV(J)
-  250   CONTINUE
-      ENDIF
-C...Format statements for printout.
- 5000 FORMAT(/1X,'****** PYMULT: initialization of multiple inter',
-     &'actions for MSTP(82) =',I2,' ******')
- 5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
-     &E9.2,' mb: rejected')
- 5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
-     &E9.2,' mb: accepted')
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyofsh.F b/PYTHIA/pythia/pyofsh.F
deleted file mode 100644 (file)
index 1767596..0000000
+++ /dev/null
@@ -1,530 +0,0 @@
-C***********************************************************************
-      SUBROUTINE PYOFSH(MOFSH,KFMO,KFD1,KFD2,PMMO,RET1,RET2)
-C...Calculates partial width and differential cross-section maxima
-C...of channels/processes not allowed on mass-shell, and selects
-C...masses in such channels/processes.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/
-      DIMENSION KFD(2),MBW(2),PMD(2),PGD(2),PMG(2),PML(2),PMU(2),
-     &PMH(2),ATL(2),ATU(2),ATH(2),RMG(2),INX1(100),XPT1(100),
-     &FPT1(100),INX2(100),XPT2(100),FPT2(100),WDTP(0:40),
-     &WDTE(0:40,0:5)
-C...Find if particles equal, maximum mass, matrix elements, etc.
-      MINT(51)=0
-      ISUB=MINT(1)
-      KFD(1)=IABS(KFD1)
-      KFD(2)=IABS(KFD2)
-      MEQL=0
-      IF(KFD(1).EQ.KFD(2)) MEQL=1
-      MLM=0
-      IF(MOFSH.GE.2.AND.MEQL.EQ.1) MLM=INT(1.5+RLU(0))
-      IF(MOFSH.LE.2.OR.MOFSH.EQ.7) THEN
-        NOFF=44
-        PMMX=PMMO
-      ELSE
-        NOFF=40
-        PMMX=VINT(1)
-        IF(CKIN(2).GT.CKIN(1)) PMMX=MIN(CKIN(2),VINT(1))
-      ENDIF
-      MMED=0
-      IF((KFMO.EQ.25.OR.KFMO.EQ.35.OR.KFMO.EQ.36).AND.MEQL.EQ.1.AND.
-     &(KFD(1).EQ.23.OR.KFD(1).EQ.24)) MMED=1
-      IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(1).EQ.23.OR.
-     &KFD(1).EQ.24).AND.(KFD(2).EQ.23.OR.KFD(2).EQ.24)) MMED=2
-      IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(2).EQ.25.OR.
-     &KFD(2).EQ.35.OR.KFD(2).EQ.36)) MMED=3
-      LOOP=1
-C...Find where Breit-Wigners are required, else select discrete masses.
-  100 DO 110 I=1,2
-      KFCA=KFD(I)
-      IF(KFCA.GT.100) KFCA=LUCOMP(KFCA)
-      IF(KFCA.GT.0) THEN
-        PMD(I)=PMAS(KFCA,1)
-        PGD(I)=PMAS(KFCA,2)
-      ELSE
-        PMD(I)=0.
-        PGD(I)=0.
-      ENDIF
-      IF(MSTP(42).LE.0.OR.PGD(I).LT.PARP(41)) THEN
-        MBW(I)=0
-        PMG(I)=PMD(I)
-        RMG(I)=(PMG(I)/PMMX)**2
-      ELSE
-        MBW(I)=1
-      ENDIF
-  110 CONTINUE
-C...Find allowed mass range and Breit-Wigner parameters.
-      DO 120 I=1,2
-      IF(MOFSH.EQ.1.AND.LOOP.EQ.1.AND.MBW(I).EQ.1) THEN
-        PML(I)=PARP(42)
-        PMU(I)=PMMX-PARP(42)
-        IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
-        IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
-      ELSEIF((MBW(I).EQ.1.OR.MOFSH.GE.5).AND.MOFSH.NE.7) THEN
-        ILM=I
-        IF(MLM.EQ.2) ILM=3-I
-        PML(I)=MAX(CKIN(NOFF+2*ILM-1),PARP(42))
-        IF(MOFSH.GE.5.AND.I.EQ.2) PML(I)=MAX(PML(I),2.*PMAS(KFD2,1))
-        PMU(I)=PMMX-MAX(CKIN(NOFF+5-2*ILM),PARP(42))
-        IF(MOFSH.GE.5.AND.I.EQ.1) PMU(I)=MIN(PMU(I),PMMX-2.*
-     &  PMAS(KFD2,1))
-        IF(CKIN(NOFF+2*ILM).GT.CKIN(NOFF+2*ILM-1)) PMU(I)=MIN(PMU(I),
-     &  CKIN(NOFF+2*ILM))
-        IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
-        IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5*PMMX)
-        IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5*PMMX)
-        IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
-        IF(MBW(I).EQ.1) THEN
-          ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
-          ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
-          IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
-     &    PGD(I)))
-        ENDIF
-      ELSEIF(MBW(I).EQ.1.AND.MOFSH.EQ.7) THEN
-        ILM=I
-        IF(MLM.EQ.2) ILM=3-I
-        PML(I)=PARP(42)
-        PMU(I)=PMMX-PARP(42)
-        IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
-        IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5*PMMX)
-        IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5*PMMX)
-        IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
-        IF(MBW(I).EQ.1) THEN
-          ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
-          ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
-          IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
-     &    PGD(I)))
-        ENDIF
-      ENDIF
-  120 CONTINUE
-      IF(MBW(1).LT.0.OR.MBW(2).LT.0.OR.(MBW(1).EQ.0.AND.MBW(2).EQ.0))
-     &THEN
-        CALL LUERRM(13,'(PYOFSH:) no allowed decay product masses')
-        MINT(51)=1
-        RETURN
-      ENDIF
-C...Calculation of partial width of resonance.
-      IF(MOFSH.EQ.1) THEN
-C..If only one integration, pick that to be the inner.
-        IF(MBW(1).EQ.0) THEN
-          PM2=PMD(1)
-          PMD(1)=PMD(2)
-          PGD(1)=PGD(2)
-          PML(1)=PML(2)
-          PMU(1)=PMU(2)
-        ELSEIF(MBW(2).EQ.0) THEN
-          PM2=PMD(2)
-        ENDIF
-C...Start outer loop of integration.
-        IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
-          ATL2=ATAN((PML(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
-          ATU2=ATAN((PMU(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
-          NPT2=1
-          XPT2(1)=1.
-          INX2(1)=0
-          FMAX2=0.
-        ENDIF
-  130   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
-          PM2S=PMD(2)**2+PMD(2)*PGD(2)*TAN(ATL2+XPT2(NPT2)*(ATU2-ATL2))
-          PM2=MIN(PMU(2),MAX(PML(2),SQRT(MAX(0.,PM2S))))
-        ENDIF
-        RM2=(PM2/PMMX)**2
-C...Start inner loop of integration.
-        PML1=PML(1)
-        PMU1=MIN(PMU(1),PMMX-PM2)
-        IF(MEQL.EQ.1) PMU1=MIN(PMU1,PM2)
-        ATL1=ATAN((PML1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
-        ATU1=ATAN((PMU1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
-        IF(PML1+PARJ(64).GE.PMU1.OR.ATL1+1E-7.GE.ATU1) THEN
-          FUNC2=0.
-          GOTO 180
-        ENDIF
-        NPT1=1
-        XPT1(1)=1.
-        INX1(1)=0
-        FMAX1=0.
-  140   PM1S=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL1+XPT1(NPT1)*(ATU1-ATL1))
-        PM1=MIN(PMU1,MAX(PML1,SQRT(MAX(0.,PM1S))))
-        RM1=(PM1/PMMX)**2
-C...Evaluate function value - inner loop.
-        FUNC1=SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))
-        IF(MMED.EQ.1) FUNC1=FUNC1*((1.-RM1-RM2)**2+8.*RM1*RM2)
-        IF(MMED.EQ.2) FUNC1=FUNC1**3*(1.+10.*RM1+10.*RM2+RM1**2+
-     &  RM2**2+10.*RM1*RM2)
-        IF(FUNC1.GT.FMAX1) FMAX1=FUNC1
-        FPT1(NPT1)=FUNC1
-C...Go to next position in inner loop.
-        IF(NPT1.EQ.1) THEN
-          NPT1=NPT1+1
-          XPT1(NPT1)=0.
-          INX1(NPT1)=1
-          GOTO 140
-        ELSEIF(NPT1.LE.8) THEN
-          NPT1=NPT1+1
-          IF(NPT1.LE.4.OR.NPT1.EQ.6) ISH1=1
-          ISH1=ISH1+1
-          XPT1(NPT1)=0.5*(XPT1(ISH1)+XPT1(INX1(ISH1)))
-          INX1(NPT1)=INX1(ISH1)
-          INX1(ISH1)=NPT1
-          GOTO 140
-        ELSEIF(NPT1.LT.100) THEN
-          ISN1=ISH1
-  150     ISH1=ISH1+1
-          IF(ISH1.GT.NPT1) ISH1=2
-          IF(ISH1.EQ.ISN1) GOTO 160
-          DFPT1=ABS(FPT1(ISH1)-FPT1(INX1(ISH1)))
-          IF(DFPT1.LT.PARP(43)*FMAX1) GOTO 150
-          NPT1=NPT1+1
-          XPT1(NPT1)=0.5*(XPT1(ISH1)+XPT1(INX1(ISH1)))
-          INX1(NPT1)=INX1(ISH1)
-          INX1(ISH1)=NPT1
-          GOTO 140
-        ENDIF
-C...Calculate integral over inner loop.
-  160   FSUM1=0.
-        DO 170 IPT1=2,NPT1
-        FSUM1=FSUM1+0.5*(FPT1(IPT1)+FPT1(INX1(IPT1)))*
-     &  (XPT1(INX1(IPT1))-XPT1(IPT1))
-  170   CONTINUE
-        FUNC2=FSUM1*(ATU1-ATL1)/PARU(1)
-  180   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
-          IF(FUNC2.GT.FMAX2) FMAX2=FUNC2
-          FPT2(NPT2)=FUNC2
-C...Go to next position in outer loop.
-          IF(NPT2.EQ.1) THEN
-            NPT2=NPT2+1
-            XPT2(NPT2)=0.
-            INX2(NPT2)=1
-            GOTO 130
-          ELSEIF(NPT2.LE.8) THEN
-            NPT2=NPT2+1
-            IF(NPT2.LE.4.OR.NPT2.EQ.6) ISH2=1
-            ISH2=ISH2+1
-            XPT2(NPT2)=0.5*(XPT2(ISH2)+XPT2(INX2(ISH2)))
-            INX2(NPT2)=INX2(ISH2)
-            INX2(ISH2)=NPT2
-            GOTO 130
-          ELSEIF(NPT2.LT.100) THEN
-            ISN2=ISH2
-  190       ISH2=ISH2+1
-            IF(ISH2.GT.NPT2) ISH2=2
-            IF(ISH2.EQ.ISN2) GOTO 200
-            DFPT2=ABS(FPT2(ISH2)-FPT2(INX2(ISH2)))
-            IF(DFPT2.LT.PARP(43)*FMAX2) GOTO 190
-            NPT2=NPT2+1
-            XPT2(NPT2)=0.5*(XPT2(ISH2)+XPT2(INX2(ISH2)))
-            INX2(NPT2)=INX2(ISH2)
-            INX2(ISH2)=NPT2
-            GOTO 130
-          ENDIF
-C...Calculate integral over outer loop.
-  200     FSUM2=0.
-          DO 210 IPT2=2,NPT2
-          FSUM2=FSUM2+0.5*(FPT2(IPT2)+FPT2(INX2(IPT2)))*
-     &    (XPT2(INX2(IPT2))-XPT2(IPT2))
-  210     CONTINUE
-          FSUM2=FSUM2*(ATU2-ATL2)/PARU(1)
-          IF(MEQL.EQ.1) FSUM2=2.*FSUM2
-        ELSE
-          FSUM2=FUNC2
-        ENDIF
-C...Save result; second integration for user-selected mass range.
-        IF(LOOP.EQ.1) WIDW=FSUM2
-        WID2=FSUM2
-        IF(LOOP.EQ.1.AND.(CKIN(46).GE.CKIN(45).OR.CKIN(48).GE.CKIN(47)
-     &  .OR.MAX(CKIN(45),CKIN(47)).GE.1.01*PARP(42))) THEN
-          LOOP=2
-          GOTO 100
-        ENDIF
-        RET1=WIDW
-        RET2=WID2/WIDW
-C...Select two decay product masses of a resonance.
-      ELSEIF(MOFSH.EQ.2.OR.MOFSH.EQ.7) THEN
-  220   DO 230 I=1,2
-        IF(MBW(I).EQ.0) GOTO 230
-        PMBW=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+RLU(0)*(ATU(I)-ATL(I)))
-        PMG(I)=MIN(PMU(I),MAX(PML(I),SQRT(MAX(0.,PMBW))))
-        RMG(I)=(PMG(I)/PMMX)**2
-  230   CONTINUE
-        IF((MEQL.EQ.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
-     &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) GOTO 220
-C...Weight with matrix element (if none known, use beta factor).
-        FLAM=SQRT(MAX(0.,(1.-RMG(1)-RMG(2))**2-4.*RMG(1)*RMG(2)))
-        IF(MMED.EQ.1) THEN
-          WTBE=FLAM*((1.-RMG(1)-RMG(2))**2+8.*RMG(1)*RMG(2))
-        ELSEIF(MMED.EQ.2) THEN
-          WTBE=FLAM**3*(1.+10.*RMG(1)+10.*RMG(2)+RMG(1)**2+
-     &    RMG(2)**2+10.*RMG(1)*RMG(2))
-        ELSEIF(MMED.EQ.3) THEN
-          WTBE=FLAM*(RMG(1)+FLAM**2/12.)
-        ELSE
-          WTBE=FLAM
-        ENDIF
-        IF(WTBE.LT.RLU(0)) GOTO 220
-        RET1=PMG(1)
-        RET2=PMG(2)
-C...Find suitable set of masses for initialization of 2 -> 2 processes.
-      ELSEIF(MOFSH.EQ.3) THEN
-        IF(MBW(1).NE.0.AND.MBW(2).EQ.0) THEN
-          PMG(1)=MIN(PMD(1),0.5*(PML(1)+PMU(1)))
-          PMG(2)=PMD(2)
-        ELSEIF(MBW(2).NE.0.AND.MBW(1).EQ.0) THEN
-          PMG(1)=PMD(1)
-          PMG(2)=MIN(PMD(2),0.5*(PML(2)+PMU(2)))
-        ELSE
-          IDIV=-1
-  240     IDIV=IDIV+1
-          PMG(1)=MIN(PMD(1),0.1*(IDIV*PML(1)+(10-IDIV)*PMU(1)))
-          PMG(2)=MIN(PMD(2),0.1*(IDIV*PML(2)+(10-IDIV)*PMU(2)))
-          IF(IDIV.LE.9.AND.PMG(1)+PMG(2).GT.0.9*PMMX) GOTO 240
-        ENDIF
-        RET1=PMG(1)
-        RET2=PMG(2)
-C...Evaluate importance of excluded tails of Breit-Wigners.
-        IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2).
-     &  GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
-        IF(MEQL.LE.1) THEN
-          VINT(80)=1.
-          DO 250 I=1,2
-          IF(MBW(I).NE.0) VINT(80)=VINT(80)*1.25*(ATU(I)-ATL(I))/PARU(1)
-  250     CONTINUE
-        ELSE
-          VINT(80)=(1.25/PARU(1))**2*MAX((ATU(1)-ATL(1))*
-     &    (ATH(2)-ATL(2)),(ATH(1)-ATL(1))*(ATU(2)-ATL(2)))
-        ENDIF
-        IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.30.OR.ISUB.EQ.35).AND.
-     &  MSTP(43).NE.2) VINT(80)=2.*VINT(80)
-        IF(ISUB.EQ.22.AND.MSTP(43).NE.2) VINT(80)=4.*VINT(80)
-        IF(MEQL.GE.1) VINT(80)=2.*VINT(80)
-C...Pick one particle to be the lighter (if improves efficiency).
-      ELSEIF(MOFSH.EQ.4) THEN
-        IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2).
-     &  GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
-  260   IF(MEQL.EQ.2) MLM=INT(1.5+RLU(0))
-C...Select two masses according to Breit-Wigner + flat in s + 1/s.
-        DO 270 I=1,2
-        IF(MBW(I).EQ.0) GOTO 270
-        PMV=PMU(I)
-        IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
-        ATV=ATU(I)
-        IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
-        RBR=RLU(0)
-        IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
-     &  ISUB.EQ.35).AND.MSTP(43).NE.2) RBR=2.*RBR
-        IF(RBR.LT.0.8) THEN
-          PMSR=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+RLU(0)*(ATV-ATL(I)))
-          PMG(I)=MIN(PMV,MAX(PML(I),SQRT(MAX(0.,PMSR))))
-        ELSEIF(RBR.LT.0.9) THEN
-          PMG(I)=SQRT(MAX(0.,PML(I)**2+RLU(0)*(PMV**2-PML(I)**2)))
-        ELSEIF(RBR.LT.1.5) THEN
-          PMG(I)=PML(I)*(PMV/PML(I))**RLU(0)
-        ELSE
-          PMG(I)=SQRT(MAX(0.,PML(I)**2*PMV**2/(PML(I)**2+RLU(0)*
-     &    (PMV**2-PML(I)**2))))
-        ENDIF
-  270   CONTINUE
-        IF((MEQL.GE.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
-     &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN
-          IF(MINT(48).EQ.1) THEN
-            NGEN(0,1)=NGEN(0,1)+1
-            NGEN(MINT(1),1)=NGEN(MINT(1),1)+1
-            GOTO 260
-          ELSE
-            MINT(51)=1
-            RETURN
-          ENDIF
-        ENDIF
-        RET1=PMG(1)
-        RET2=PMG(2)
-C...Give weight for selected mass distribution.
-        VINT(80)=1.
-        DO 280 I=1,2
-        IF(MBW(I).EQ.0) GOTO 280
-        PMV=PMU(I)
-        IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
-        ATV=ATU(I)
-        IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
-        F0=PMD(I)*PGD(I)/((PMG(I)**2-PMD(I)**2)**2+
-     &  (PMD(I)*PGD(I))**2)/PARU(1)
-        F1=1.
-        F2=1./PMG(I)**2
-        F3=1./PMG(I)**4
-        FI0=(ATV-ATL(I))/PARU(1)
-        FI1=PMV**2-PML(I)**2
-        FI2=2.*LOG(PMV/PML(I))
-        FI3=1./PML(I)**2-1./PMV**2
-        IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
-     &  ISUB.EQ.35).AND.MSTP(43).NE.2) THEN
-          VINT(80)=VINT(80)*20./(8.+(FI0/F0)*(F1/FI1+6.*F2/FI2+
-     &    5.*F3/FI3))
-        ELSE
-          VINT(80)=VINT(80)*10./(8.+(FI0/F0)*(F1/FI1+F2/FI2))
-        ENDIF
-        VINT(80)=VINT(80)*FI0
-  280   CONTINUE
-        IF(MEQL.GE.1) VINT(80)=2.*VINT(80)
-      ELSEIF(MOFSH.EQ.5) THEN
-C...Find suitable set of masses for initialization of 2 -> 3 process.
-        IDIV=6
-  290   IDIV=IDIV-1
-        IF(MBW(1).EQ.0) THEN
-          PMG(1)=PMD(1)
-        ELSE
-          PMSR=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL(1)+0.1*IDIV*(ATU(1)-
-     &    ATL(1)))
-          PMG(1)=MIN(PMU(1),MAX(PML(1),SQRT(MAX(0.,PMSR))))
-        ENDIF
-        PMG(2)=PML(2)*(PMU(2)/PML(2))**(0.1*IDIV)
-        IF(IDIV.GE.1.AND.PMG(1)+PMG(2).GT.0.9*PMMX) GOTO 290
-        RET1=PMG(1)
-        RET2=PMG(2)
-C...Evaluate size of selected phase space volume.
-        VINT(80)=2.*LOG(PMU(2)/PML(2))
-        IF(MBW(1).NE.0) VINT(80)=VINT(80)*1.25*(ATU(1)-ATL(1))/PARU(1)
-C...Pick decay angles.
-        VINT(81)=0.
-        VINT(82)=0.5*PARU(1)
-        VINT(83)=1.
-        VINT(84)=0.
-C...Select flavour of resonance decays.
-        KFA=KFPR(ISUB,1)
-        CALL PYWIDT(KFA,PMG(1)**2,WDTP,WDTE)
-        IF(KCHG(KFA,3).EQ.0) THEN
-          IPM=2
-        ELSE
-          IPM=(5-ISIGN(1,KFA))/2
-        ENDIF
-        WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
-        IF(WDTE0S.LE.0.) THEN
-          CALL LUERRM(12,'(PYOFSH:) no allowed resonace decay channel')
-          MINT(51)=1
-          RETURN
-        ENDIF
-        WDTEC=0.
-        DO 300 IDL=1,MDCY(KFA,3)
-        WDTEK=WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4)
-        IF(WDTEK.GT.WDTEC) THEN
-          IDC=IDL+MDCY(KFA,2)-1
-          WDTEC=WDTEK
-        ENDIF
-  300   CONTINUE
-        MINT(35)=IDC
-C...Compensating factor for all flavours.
-        KFL=IABS(KFDP(IDC,1))
-        QFL=KCHG(KFL,1)/3.
-        AFL=SIGN(1.,QFL+0.1)
-        VFL=AFL-4.*PARU(102)*QFL
-        WDTEK=VFL**2+AFL**2
-        VINT(80)=VINT(80)*WDTE0S/WDTEK
-      ELSEIF(MOFSH.EQ.6) THEN
-C...Select two masses, one basically Breit-Wigner, other dm^2/m^2.
-        IF(MBW(1).NE.0) THEN
-          RBR=RLU(0)
-          IF(RBR.LT.0.8) THEN
-            PMSR=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL(1)+RLU(0)*
-     &      (ATU(1)-ATL(1)))
-            PMG(1)=MIN(PMU(1),MAX(PML(1),SQRT(MAX(0.,PMSR))))
-          ELSEIF(RBR.LT.0.9) THEN
-            PMG(1)=SQRT(MAX(0.,PML(1)**2+RLU(0)*(PMU(1)**2-PML(1)**2)))
-          ELSE
-            PMG(1)=PML(1)*(PMU(1)/PML(1))**RLU(0)
-          ENDIF
-        ENDIF
-        PMG(2)=PML(2)*(PMU(2)/PML(2))**RLU(0)
-        IF(SQRT(MAX(0.,1.-(PML(2)/PMG(2))**2)).LT.RLU(0).OR.
-     &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-        RET1=PMG(1)
-        RET2=PMG(2)
-C...Give weight for selected mass distribution.
-        VINT(80)=2.*LOG(PMU(2)/PML(2))
-        IF(MBW(1).NE.0) THEN
-          F0=PMD(1)*PGD(1)/((PMG(1)**2-PMD(1)**2)**2+
-     &    (PMD(1)*PGD(1))**2)/PARU(1)
-          F1=1.
-          F2=1./PMG(1)**2
-          FI0=(ATU(1)-ATL(1))/PARU(1)
-          FI1=PMU(1)**2-PML(1)**2
-          FI2=2.*LOG(PMU(1)/PML(1))
-          VINT(80)=VINT(80)*10.*FI0/(8.+(FI0/F0)*(F1/FI1+F2/FI2))
-        ENDIF
-C...Select decay angles.
-        VINT(81)=2.*RLU(0)-1.
-        VINT(82)=PARU(2)*RLU(0)
-        VINT(83)=2.*RLU(0)-1.
-        VINT(84)=PARU(2)*RLU(0)
-C...Select flavour of resonance decays.
-        KFA=KFPR(ISUB,1)
-        CALL PYWIDT(KFA,PMG(1)**2,WDTP,WDTE)
-        IF(KCHG(KFA,3).EQ.0) THEN
-          IPM=2
-        ELSE
-          IPM=(5-ISIGN(1,KFA))/2
-        ENDIF
-        WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
-        IF(WDTE0S.LE.0.) THEN
-          CALL LUERRM(12,'(PYOFSH:) no allowed resonace decay channel')
-          MINT(51)=1
-          RETURN
-        ENDIF
-        RKFL=WDTE0S*RLU(0)
-        IDL=0
-  310   IDL=IDL+1
-        IDC=IDL+MDCY(KFA,2)-1
-        RKFL=RKFL-(WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4))
-        IF(IDL.LT.MDCY(KFA,3).AND.RKFL.GT.0.) GOTO 310
-        MINT(35)=IDC
-C...Compensating factor for all flavours.
-        KFL=IABS(KFDP(IDC,1))
-        QFL=KCHG(KFL,1)/3.
-        AFL=SIGN(1.,QFL+0.1)
-        VFL=AFL-4.*PARU(102)*QFL
-        WDTEK=VFL**2+AFL**2
-        VINT(80)=VINT(80)*WDTE0S/WDTEK
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pypile.F b/PYTHIA/pythia/pypile.F
deleted file mode 100644 (file)
index 3acca1c..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYPILE(MPILE)
-C...Initializes multiplicity distribution and selects mutliplicity
-C...of pileup events, i.e. several events occuring at the same
-C...beam crossing.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT7/SIGT(0:6,0:6,0:5)
-      SAVE /LUDAT1/
-      SAVE /PYPARS/,/PYINT1/,/PYINT7/
-      DIMENSION WTI(0:200)
-      SAVE IMIN,IMAX,WTI,WTS
-C...Sum of allowed cross-sections for pileup events.
-      IF(MPILE.EQ.1) THEN
-        VINT(131)=SIGT(0,0,5)
-        IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
-        IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
-        IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
-        IF(MSTP(133).LE.0) RETURN
-C...Initialize multiplicity distribution at maximum.
-        XNAVE=VINT(131)*PARP(131)
-        IF(XNAVE.GT.120.) WRITE(MSTU(11),5000) XNAVE
-        INAVE=MAX(1,MIN(200,NINT(XNAVE)))
-        WTI(INAVE)=1.
-        WTS=WTI(INAVE)
-        WTN=WTI(INAVE)*INAVE
-C...Find shape of multiplicity distribution below maximum.
-        IMIN=INAVE
-        DO 100 I=INAVE-1,1,-1
-        IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
-        IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
-        IF(WTI(I).LT.1E-6) GOTO 110
-        WTS=WTS+WTI(I)
-        WTN=WTN+WTI(I)*I
-        IMIN=I
-  100   CONTINUE
-C...Find shape of multiplicity distribution above maximum.
-  110   IMAX=INAVE
-        DO 120 I=INAVE+1,200
-        IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
-        IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
-        IF(WTI(I).LT.1E-6) GOTO 130
-        WTS=WTS+WTI(I)
-        WTN=WTN+WTI(I)*I
-        IMAX=I
-  120   CONTINUE
-  130   VINT(132)=XNAVE
-        VINT(133)=WTN/WTS
-        IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
-     &  WTS/(WTS+WTI(1)/XNAVE)
-        IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1.
-        IF(MSTP(133).GE.2) VINT(134)=XNAVE
-C...Pick multiplicity of pileup events.
-      ELSE
-        IF(MSTP(133).LE.0) THEN
-          MINT(81)=MAX(1,MSTP(134))
-        ELSE
-          WTR=WTS*RLU(0)
-          DO 140 I=IMIN,IMAX
-          MINT(81)=I
-          WTR=WTR-WTI(I)
-          IF(WTR.LE.0.) GOTO 150
-  140     CONTINUE
-  150     CONTINUE
-        ENDIF
-      ENDIF
-C...Format statement for error message.
- 5000 FORMAT(1X,'Warning: requested average number of events per bunch',
-     &'crossing too large, ',1P,E12.4)
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyqqbh.F b/PYTHIA/pythia/pyqqbh.F
deleted file mode 100644 (file)
index 87dc76c..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-C***********************************************************************
-      SUBROUTINE PYQQBH(WTQQBH)
-C...Calculates the matrix element for the processes
-C...g + g or q + qbar -> Q + Q~ + H (normally with Q = t).
-C...REDUCE output and part of the rest courtesy Z. Kunszt, see
-C...Z. Kunszt, Nucl. Phys. B247 (1984) 339.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      SAVE /LUDAT1/,/LUDAT2/
-      SAVE /PYPARS/,/PYINT1/,/PYINT2/
-      DIMENSION PP(15,4),CLR(8,8),FM(10,10),RM(8,8),DX(8)
-      DOT(I,J)=PP(I,4)*PP(J,4)-PP(I,1)*PP(J,1)-PP(I,2)*PP(J,2)-
-     &PP(I,3)*PP(J,3)
-C...Mass parameters.
-      WTQQBH=0.
-      ISUB=MINT(1)
-      SHPR=SQRT(VINT(26))*VINT(1)
-      PQ=PMAS(KFPR(ISUB,2),1)
-      PH=SQRT(VINT(21))*VINT(1)
-      SPQ=PQ**2
-      SPH=PH**2
-C...Set up outgoing kinematics: 1=t, 2=tbar, 3=H.
-      DO 100 I=1,2
-      PT=SQRT(MAX(0.,VINT(197+5*I)))
-      PP(I,1)=PT*COS(VINT(198+5*I))
-      PP(I,2)=PT*SIN(VINT(198+5*I))
-  100 CONTINUE
-      PP(3,1)=-PP(1,1)-PP(2,1)
-      PP(3,2)=-PP(1,2)-PP(2,2)
-      PMS1=SPQ+PP(1,1)**2+PP(1,2)**2
-      PMS2=SPQ+PP(2,1)**2+PP(2,2)**2
-      PMS3=SPH+PP(3,1)**2+PP(3,2)**2
-      PMT3=SQRT(PMS3)
-      PP(3,3)=PMT3*SINH(VINT(211))
-      PP(3,4)=PMT3*COSH(VINT(211))
-      PMS12=(SHPR-PP(3,4))**2-PP(3,3)**2
-      PP(1,3)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
-     &VINT(213)*(SHPR-PP(3,4))*VINT(220))/(2.*PMS12)
-      PP(2,3)=-PP(1,3)-PP(3,3)
-      PP(1,4)=SQRT(PMS1+PP(1,3)**2)
-      PP(2,4)=SQRT(PMS2+PP(2,3)**2)
-C...Set up incoming kinematics and derived momentum combinations.
-      DO 110 I=4,5
-      PP(I,1)=0.
-      PP(I,2)=0.
-      PP(I,3)=-0.5*SHPR*(-1)**I
-      PP(I,4)=-0.5*SHPR
-  110 CONTINUE
-      DO 120 J=1,4
-      PP(6,J)=PP(1,J)+PP(2,J)
-      PP(7,J)=PP(1,J)+PP(3,J)
-      PP(8,J)=PP(1,J)+PP(4,J)
-      PP(9,J)=PP(1,J)+PP(5,J)
-      PP(10,J)=-PP(2,J)-PP(3,J)
-      PP(11,J)=-PP(2,J)-PP(4,J)
-      PP(12,J)=-PP(2,J)-PP(5,J)
-      PP(13,J)=-PP(4,J)-PP(5,J)
-  120 CONTINUE
-C...Derived kinematics invariants.
-      X1=DOT(1,2)
-      X2=DOT(1,3)
-      X3=DOT(1,4)
-      X4=DOT(1,5)
-      X5=DOT(2,3)
-      X6=DOT(2,4)
-      X7=DOT(2,5)
-      X8=DOT(3,4)
-      X9=DOT(3,5)
-      X10=DOT(4,5)
-C...Propagators.
-      SS1=DOT(7,7)-SPQ
-      SS2=DOT(8,8)-SPQ
-      SS3=DOT(9,9)-SPQ
-      SS4=DOT(10,10)-SPQ
-      SS5=DOT(11,11)-SPQ
-      SS6=DOT(12,12)-SPQ
-      SS7=DOT(13,13)
-      DX(1)=SS1*SS6
-      DX(2)=SS2*SS6
-      DX(3)=SS2*SS4
-      DX(4)=SS1*SS5
-      DX(5)=SS3*SS5
-      DX(6)=SS3*SS4
-      DX(7)=SS7*SS1
-      DX(8)=SS7*SS4
-C...Define colour coefficients for g + g -> Q + Q~ + H.
-      IF(ISUB.EQ.121.OR.ISUB.EQ.181.OR.ISUB.EQ.186) THEN
-        DO 140 I=1,3
-        DO 130 J=1,3
-        CLR(I,J)=16./3.
-        CLR(I+3,J+3)=16./3.
-        CLR(I,J+3)=-2./3.
-        CLR(I+3,J)=-2./3.
-  130   CONTINUE
-  140   CONTINUE
-        DO 160 L=1,2
-        DO 150 I=1,3
-        CLR(I,6+L)=-6.
-        CLR(I+3,6+L)=6.
-        CLR(6+L,I)=-6.
-        CLR(6+L,I+3)=6.
-  150   CONTINUE
-  160   CONTINUE
-        DO 180 K1=1,2
-        DO 170 K2=1,2
-        CLR(6+K1,6+K2)=12.
-  170   CONTINUE
-  180   CONTINUE
-C...Evaluate matrix elements for g + g -> Q + Q~ + H.
-      FM(1,1)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X4+X9+2*
-     & X7+X5)+8*PQ**2*PH**2*(-X1-X4+2*X7)+16*PQ**2*(X2*X9+4*X2*
-     & X7+X2*X5-2*X4*X7-2*X9*X7)+8*PH**2*X4*X7-16*X2*X9*X7
-      FM(1,2)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10+X9-X8+2
-     & *X7-4*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X4-2*X2*X10+X2*X7-2*
-     & X2*X6-2*X3*X7+2*X4*X7+4*X10*X7-X9*X7-X8*X7)+16*X2*X7*(X4+
-     & X10)
-      FM(1,3)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-2*X3-4*
-     & X4-8*X10+X9+X8-2*X7-4*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X4+X10
-     & +X6)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
-     & -4*X2*X4-5*X2*X10+X2*X8-X2*X7-3*X2*X6+X2*X5+X3*X9+2*X3*X7
-     & -X3*X5+X4*X8+2*X4*X6-3*X4*X5-5*X10*X5+X9*X8+X9*X6+X9*X5+
-     & X8*X7-4*X6*X5+X5**2)-(16*X2*X5)*(X1+X4+X10+X6)
-      FM(1,4)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1+X2-X3-X4+X10-
-     & X9-X8+2*X7+2*X6-X5)+4*PQ**2*PH**2*(X1+X3+X4+X10+2*X7+2*X6
-     & )+8*PQ**2*(4*X1*X10+4*X1*X7+4*X1*X6+2*X2*X10-X2*X9-X2*X8+
-     & 4*X2*X7+4*X2*X6-X2*X5+4*X10*X5+4*X7*X5+4*X6*X5)-(8*PH**2*
-     & X1)*(X10+X7+X6)+16*X2*X5*(X10+X7+X6)
-      FM(1,5)=8*PQ**4*(-2*X1-2*X4+X10-X9)+4*PQ**2*(4*X1**2-2*X1*
-     & X2+8*X1*X3+6*X1*X10-2*X1*X9+4*X1*X8+4*X1*X7+4*X1*X6+2*X1*
-     & X5+X2*X10+4*X3*X4-X3*X9+2*X3*X7+3*X4*X8-2*X4*X6+2*X4*X5-4
-     & *X10*X7+3*X10*X5-3*X9*X6+3*X8*X7-4*X7**2+4*X7*X5)+8*(X1**
-     & 2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5-X1*X4*
-     & X8-X1*X4*X5+X1*X10*X9+X1*X9*X7+X1*X9*X6-X1*X8*X7-X2*X3*X7
-     & +X2*X4*X6-X2*X10*X7-X2*X7**2+X3*X7*X5-X4*X10*X5-X4*X7*X5-
-     & X4*X6*X5)
-      FM(1,6)=16*PQ**4*(-4*X1-X4+X9-X7)+4*PQ**2*PH**2*(-2*X1-X4-
-     & X7)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X4-3*X1*X9-2*X1*X7-3*
-     & X1*X5-2*X2*X4-2*X7*X5)-8*PH**2*X4*X7+8*(-X1*X2*X9-2*X1*X2
-     & *X5-X1*X9**2-X1*X9*X5+X2**2*X7-X2*X4*X5+X2*X9*X7-X2*X7*X5
-     & +X4*X9*X5+X4*X5**2)
-      FM(1,7)=8*PQ**4*(2*X3+X4+3*X10+X9+2*X8+3*X7+6*X6)+2*PQ**2*
-     & PH**2*(-2*X3-X4+3*X10+3*X7+6*X6)+4*PQ**2*(4*X1*X10+4*X1*
-     & X7+8*X1*X6+6*X2*X10+X2*X9+2*X2*X8+6*X2*X7+12*X2*X6-8*X3*
-     & X7+4*X4*X7+4*X4*X6+4*X10*X5+4*X9*X7+4*X9*X6-8*X8*X7+4*X7*
-     & X5+8*X6*X5)+4*PH**2*(-X1*X10-X1*X7-2*X1*X6+2*X3*X7-X4*X7-
-     & X4*X6)+8*X2*(X10*X5+X9*X7+X9*X6-2*X8*X7+X7*X5+2*X6*X5)
-      FM(1,8)=8*PQ**4*(2*X3+X4+3*X10+2*X9+X8+3*X7+6*X6)+2*PQ**2*
-     & PH**2*(-2*X3-X4+2*X10+X7+2*X6)+4*PQ**2*(4*X1*X10-2*X1*X9+
-     & 2*X1*X8+4*X1*X7+8*X1*X6+5*X2*X10+2*X2*X9+X2*X8+4*X2*X7+8*
-     & X2*X6-X3*X9-8*X3*X7+2*X3*X5+2*X4*X9-X4*X8+4*X4*X7+4*X4*X6
-     & +4*X4*X5+5*X10*X5+X9**2-X9*X8+2*X9*X7+5*X9*X6+X9*X5-7*X8*
-     & X7+2*X8*X5+2*X7*X5+10*X6*X5)+2*PH**2*(-X1*X10+X3*X7-2*X4*
-     & X7+X4*X6)+4*(-X1*X9**2+X1*X9*X8-2*X1*X9*X5-X1*X8*X5+2*X2*
-     & X10*X5+X2*X9*X7+X2*X9*X6-2*X2*X8*X7+3*X2*X6*X5+X3*X9*X5+
-     & X3*X5**2+X4*X9*X5-2*X4*X8*X5+2*X4*X5**2)
-      FM(2,2)=16*PQ**6+16*PQ**4*(-X1+X3-X4-X10+X7-X6)+16*PQ**2*(
-     & X3*X10+X3*X7+X3*X6+X4*X7+X10*X7)-16*X3*X10*X7
-      FM(2,3)=16*PQ**6+8*PQ**4*(-2*X1+X2+2*X3-4*X4-4*X10-X9+X8-2
-     & *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5+4*X3*X10-X3*X9-X3*X8-2*X3*
-     & X7+2*X3*X6+X3*X5-2*X4*X5-2*X10*X5-2*X6*X5)+16*X3*X5*(X10+
-     & X6)
-      FM(2,4)=8*PQ**4*(-2*X1-2*X3+X10-X8)+4*PQ**2*(4*X1**2-2*X1*
-     & X2+8*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+4*X1*X7+4*X1*X6+2*X1*
-     & X5+X2*X10+4*X3*X4+3*X3*X9-2*X3*X7+2*X3*X5-X4*X8+2*X4*X6-4
-     & *X10*X6+3*X10*X5+3*X9*X6-3*X8*X7-4*X6**2+4*X6*X5)+8*(-X1
-     & **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9-X1*X3*X5+X1*X4
-     & *X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X1*X8*X6+X2*X3*
-     & X7-X2*X4*X6-X2*X10*X6-X2*X6**2-X3*X10*X5-X3*X7*X5-X3*X6*
-     & X5+X4*X6*X5)
-      FM(2,5)=16*PQ**4*X10+8*PQ**2*(2*X1**2+2*X1*X3+2*X1*X4+2*X1
-     & *X10+2*X1*X7+2*X1*X6+X3*X7+X4*X6)+8*(-2*X1**3-2*X1**2*X3-
-     & 2*X1**2*X4-2*X1**2*X10-2*X1**2*X7-2*X1**2*X6-2*X1*X3*X4-
-     & X1*X3*X10-2*X1*X3*X6-X1*X4*X10-2*X1*X4*X7-X1*X10**2-X1*
-     & X10*X7-X1*X10*X6-2*X1*X7*X6+X3**2*X7-X3*X4*X7-X3*X4*X6+X3
-     & *X10*X7+X3*X7**2-X3*X7*X6+X4**2*X6+X4*X10*X6-X4*X7*X6+X4*
-     & X6**2)
-      FM(2,6)=8*PQ**4*(-2*X1+X10-X9-2*X7)+4*PQ**2*(4*X1**2+2*X1*
-     & X2+4*X1*X3+4*X1*X4+6*X1*X10-2*X1*X9+4*X1*X8+8*X1*X6-2*X1*
-     & X5+4*X2*X4+3*X2*X10+2*X2*X7-3*X3*X9-2*X3*X7-4*X4**2-4*X4*
-     & X10+3*X4*X8+2*X4*X6+X10*X5-X9*X6+3*X8*X7+4*X7*X6)+8*(X1**
-     & 2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5+X1*X4*
-     & X9-X1*X4*X8-X1*X4*X5+X1*X10*X9+X1*X9*X6-X1*X8*X7-X2*X3*X7
-     & -X2*X4*X7+X2*X4*X6-X2*X10*X7+X3*X7*X5-X4**2*X5-X4*X10*X5-
-     & X4*X6*X5)
-      FM(2,7)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
-     & 2*X1*X4-2*X1*X10+X1*X9-X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
-     & X4+3*X2*X10+X2*X7+2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9-2*X3*
-     & X7-4*X3*X6-X3*X5-6*X4**2-6*X4*X10-3*X4*X9-X4*X8-4*X4*X7-2
-     & *X4*X6-2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+X10*X5
-     & +X9*X7-2*X8*X7-2*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
-     & -X1**2*X9+X1**2*X8-2*X1*X2*X10-3*X1*X2*X7-3*X1*X2*X6+X1*
-     & X3*X9-X1*X3*X5+X1*X4*X9+X1*X4*X8+X1*X4*X5+X1*X10*X9+X1*
-     & X10*X8-X1*X9*X6+X1*X8*X6+X2*X3*X7-3*X2*X4*X7-X2*X4*X6-3*
-     & X2*X10*X7-3*X2*X10*X6-3*X2*X7*X6-3*X2*X6**2-2*X3*X4*X5-X3
-     & *X10*X5-X3*X6*X5-X4**2*X5-X4*X10*X5+X4*X6*X5)
-      FM(2,8)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
-     & 2*X1*X4-2*X1*X10-X1*X9+X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
-     & X4+X2*X10-X2*X7-2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9+X3*X8-2*
-     & X3*X7-4*X3*X6+X3*X5-6*X4**2-6*X4*X10-2*X4*X9-4*X4*X7-2*X4
-     & *X6+2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+3*X10*X5-
-     & X9*X6-2*X8*X7-3*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
-     & X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6-3*X1*X3*X5+X1*X4*X9-
-     & X1*X4*X8-3*X1*X4*X5+X1*X10*X9+X1*X10*X8-2*X1*X10*X5+X1*X9
-     & *X6+X1*X8*X7+X1*X8*X6-X2*X4*X7+X2*X4*X6-X2*X10*X7-X2*X10*
-     & X6-2*X2*X7*X6-X2*X6**2-3*X3*X4*X5-3*X3*X10*X5+X3*X7*X5-3*
-     & X3*X6*X5-3*X4**2*X5-3*X4*X10*X5-X4*X6*X5)
-      FM(3,3)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X3+X8+X6
-     & +2*X5)+8*PQ**2*PH**2*(-X1+2*X3-X6)+16*PQ**2*(X2*X5-2*X3*
-     & X8-2*X3*X6+4*X3*X5+X8*X5)+8*PH**2*X3*X6-16*X3*X8*X5
-      FM(3,4)=16*PQ**4*(-4*X1-X3+X8-X6)+4*PQ**2*PH**2*(-2*X1-X3-
-     & X6)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X3-3*X1*X8-2*X1*X6-3*
-     & X1*X5-2*X2*X3-2*X6*X5)-8*PH**2*X3*X6+8*(-X1*X2*X8-2*X1*X2
-     & *X5-X1*X8**2-X1*X8*X5+X2**2*X6-X2*X3*X5+X2*X8*X6-X2*X6*X5
-     & +X3*X8*X5+X3*X5**2)
-      FM(3,5)=8*PQ**4*(-2*X1+X10-X8-2*X6)+4*PQ**2*(4*X1**2+2*X1*
-     & X2+4*X1*X3+4*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+8*X1*X7-2*X1*
-     & X5+4*X2*X3+3*X2*X10+2*X2*X6-4*X3**2-4*X3*X10+3*X3*X9+2*X3
-     & *X7-3*X4*X8-2*X4*X6+X10*X5+3*X9*X6-X8*X7+4*X7*X6)+8*(-X1
-     & **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9+X1*X3*X8-X1*X3
-     & *X5+X1*X4*X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X2*X3*
-     & X7-X2*X3*X6-X2*X4*X6-X2*X10*X6-X3**2*X5-X3*X10*X5-X3*X7*
-     & X5+X4*X6*X5)
-      FM(3,6)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1-X2+2*X3+2*X4+
-     & X10-X9-X8-X7-X6+X5)+4*PQ**2*PH**2*(X1+2*X3+2*X4+X10+X7+X6
-     & )+8*PQ**2*(4*X1*X3+4*X1*X4+4*X1*X10+4*X2*X3+4*X2*X4+4*X2*
-     & X10-X2*X5+4*X3*X5+4*X4*X5+2*X10*X5-X9*X5-X8*X5)-(8*PH**2*
-     & X1)*(X3+X4+X10)+16*X2*X5*(X3+X4+X10)
-      FM(3,7)=8*PQ**4*(3*X3+6*X4+3*X10+X9+2*X8+2*X7+X6)+2*PQ**2*
-     & PH**2*(X3+2*X4+2*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+4*
-     & X1*X10+2*X1*X9-2*X1*X8+2*X2*X3+10*X2*X4+5*X2*X10+2*X2*X9+
-     & X2*X8+2*X2*X7+4*X2*X6-7*X3*X9+2*X3*X8-8*X3*X7+4*X3*X6+4*
-     & X3*X5+5*X4*X8+4*X4*X6+8*X4*X5+5*X10*X5-X9*X8-X9*X6+X9*X5+
-     & X8**2-X8*X7+2*X8*X6+2*X8*X5)+2*PH**2*(-X1*X10+X3*X7-2*X3*
-     & X6+X4*X6)+4*(-X1*X2*X9-2*X1*X2*X8+X1*X9*X8-X1*X8**2+X2**2
-     & *X7+2*X2**2*X6+3*X2*X4*X5+2*X2*X10*X5-2*X2*X9*X6+X2*X8*X7
-     & +X2*X8*X6-2*X3*X9*X5+X3*X8*X5+X4*X8*X5)
-      FM(3,8)=8*PQ**4*(3*X3+6*X4+3*X10+2*X9+X8+2*X7+X6)+2*PQ**2*
-     & PH**2*(3*X3+6*X4+3*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+
-     & 4*X1*X10+4*X2*X3+8*X2*X4+4*X2*X10-8*X3*X9+4*X3*X8-8*X3*X7
-     & +4*X3*X6+6*X3*X5+4*X4*X8+4*X4*X6+12*X4*X5+6*X10*X5+2*X9*
-     & X5+X8*X5)+4*PH**2*(-X1*X3-2*X1*X4-X1*X10+2*X3*X7-X3*X6-X4
-     & *X6)+8*X5*(X2*X3+2*X2*X4+X2*X10-2*X3*X9+X3*X8+X4*X8)
-      FM(4,4)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X3+X8+2*
-     & X6+X5)+8*PQ**2*PH**2*(-X1-X3+2*X6)+16*PQ**2*(X2*X8+4*X2*
-     & X6+X2*X5-2*X3*X6-2*X8*X6)+8*PH**2*X3*X6-16*X2*X8*X6
-      FM(4,5)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10-X9+X8-4
-     & *X7+2*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X3-2*X2*X10-2*X2*X7+
-     & X2*X6+2*X3*X6-2*X4*X6+4*X10*X6-X9*X6-X8*X6)+16*X2*X6*(X3+
-     & X10)
-      FM(4,6)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-4*X3-2*
-     & X4-8*X10+X9+X8-4*X7-2*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X3+X10
-     & +X7)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
-     & -4*X2*X3-5*X2*X10+X2*X9-3*X2*X7-X2*X6+X2*X5+X3*X9+2*X3*X7
-     & -3*X3*X5+X4*X8+2*X4*X6-X4*X5-5*X10*X5+X9*X8+X9*X6+X8*X7+
-     & X8*X5-4*X7*X5+X5**2)-(16*X2*X5)*(X1+X3+X10+X7)
-      FM(4,7)=8*PQ**4*(-X3-2*X4-3*X10-2*X9-X8-6*X7-3*X6)+2*PQ**2
-     & *PH**2*(X3+2*X4-3*X10-6*X7-3*X6)+4*PQ**2*(-4*X1*X10-8*X1*
-     & X7-4*X1*X6-6*X2*X10-2*X2*X9-X2*X8-12*X2*X7-6*X2*X6-4*X3*
-     & X7-4*X3*X6+8*X4*X6-4*X10*X5+8*X9*X6-4*X8*X7-4*X8*X6-8*X7*
-     & X5-4*X6*X5)+4*PH**2*(X1*X10+2*X1*X7+X1*X6+X3*X7+X3*X6-2*
-     & X4*X6)+8*X2*(-X10*X5+2*X9*X6-X8*X7-X8*X6-2*X7*X5-X6*X5)
-      FM(4,8)=8*PQ**4*(-X3-2*X4-3*X10-X9-2*X8-6*X7-3*X6)+2*PQ**2
-     & *PH**2*(X3+2*X4-2*X10-2*X7-X6)+4*PQ**2*(-4*X1*X10-2*X1*X9
-     & +2*X1*X8-8*X1*X7-4*X1*X6-5*X2*X10-X2*X9-2*X2*X8-8*X2*X7-4
-     & *X2*X6+X3*X9-2*X3*X8-4*X3*X7-4*X3*X6-4*X3*X5+X4*X8+8*X4*
-     & X6-2*X4*X5-5*X10*X5+X9*X8+7*X9*X6-2*X9*X5-X8**2-5*X8*X7-2
-     & *X8*X6-X8*X5-10*X7*X5-2*X6*X5)+2*PH**2*(X1*X10-X3*X7+2*X3
-     & *X6-X4*X6)+4*(-X1*X9*X8+X1*X9*X5+X1*X8**2+2*X1*X8*X5-2*X2
-     & *X10*X5+2*X2*X9*X6-X2*X8*X7-X2*X8*X6-3*X2*X7*X5+2*X3*X9*
-     & X5-X3*X8*X5-2*X3*X5**2-X4*X8*X5-X4*X5**2)
-      FM(5,5)=16*PQ**6+16*PQ**4*(-X1-X3+X4-X10-X7+X6)+16*PQ**2*(
-     & X3*X6+X4*X10+X4*X7+X4*X6+X10*X6)-16*X4*X10*X6
-      FM(5,6)=16*PQ**6+8*PQ**4*(-2*X1+X2-4*X3+2*X4-4*X10+X9-X8-2
-     & *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5-2*X3*X5+4*X4*X10-X4*X9-X4*
-     & X8+2*X4*X7-2*X4*X6+X4*X5-2*X10*X5-2*X7*X5)+16*X4*X5*(X10+
-     & X7)
-      FM(5,7)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
-     & 4*X1*X4+2*X1*X10+X1*X9-X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
-     & X4-3*X2*X10-2*X2*X7-X2*X6+6*X3**2+6*X3*X4+6*X3*X10+X3*X9+
-     & 3*X3*X8+2*X3*X7+4*X3*X6+2*X3*X5+6*X4*X10+2*X4*X8+4*X4*X7+
-     & 2*X4*X6+X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-X10*X5+
-     & 2*X9*X7+2*X9*X6-X8*X6+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(-
-     & X1**2*X9+X1**2*X8+2*X1*X2*X10+3*X1*X2*X7+3*X1*X2*X6-X1*X3
-     & *X9-X1*X3*X8-X1*X3*X5-X1*X4*X8+X1*X4*X5-X1*X10*X9-X1*X10*
-     & X8-X1*X9*X7+X1*X8*X7+X2*X3*X7+3*X2*X3*X6-X2*X4*X6+3*X2*
-     & X10*X7+3*X2*X10*X6+3*X2*X7**2+3*X2*X7*X6+X3**2*X5+2*X3*X4
-     & *X5+X3*X10*X5-X3*X7*X5+X4*X10*X5+X4*X7*X5)
-      FM(5,8)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
-     & 4*X1*X4+2*X1*X10-X1*X9+X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
-     & X4-X2*X10+2*X2*X7+X2*X6+6*X3**2+6*X3*X4+6*X3*X10+2*X3*X8+
-     & 2*X3*X7+4*X3*X6-2*X3*X5+6*X4*X10-X4*X9+2*X4*X8+4*X4*X7+2*
-     & X4*X6-X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-3*X10*X5+
-     & 3*X9*X7+2*X9*X6+X8*X7+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(
-     & X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9-X1*X3*X8+3*
-     & X1*X3*X5+3*X1*X4*X5-X1*X10*X9-X1*X10*X8+2*X1*X10*X5-X1*X9
-     & *X7-X1*X9*X6-X1*X8*X7-X2*X3*X7+X2*X3*X6+X2*X10*X7+X2*X10*
-     & X6+X2*X7**2+2*X2*X7*X6+3*X3**2*X5+3*X3*X4*X5+3*X3*X10*X5+
-     & X3*X7*X5+3*X4*X10*X5+3*X4*X7*X5-X4*X6*X5)
-      FM(6,6)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X4+X9+X7
-     & +2*X5)+8*PQ**2*PH**2*(-X1+2*X4-X7)+16*PQ**2*(X2*X5-2*X4*
-     & X9-2*X4*X7+4*X4*X5+X9*X5)+8*PH**2*X4*X7-16*X4*X9*X5
-      FM(6,7)=8*PQ**4*(-6*X3-3*X4-3*X10-2*X9-X8-X7-2*X6)+2*PQ**2
-     & *PH**2*(-2*X3-X4-2*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*X4
-     & -4*X1*X10+2*X1*X9-2*X1*X8-10*X2*X3-2*X2*X4-5*X2*X10-X2*X9
-     & -2*X2*X8-4*X2*X7-2*X2*X6-5*X3*X9-4*X3*X7-8*X3*X5-2*X4*X9+
-     & 7*X4*X8-4*X4*X7+8*X4*X6-4*X4*X5-5*X10*X5-X9**2+X9*X8-2*X9
-     & *X7+X9*X6-2*X9*X5+X8*X7-X8*X5)+2*PH**2*(X1*X10-X3*X7+2*X4
-     & *X7-X4*X6)+4*(2*X1*X2*X9+X1*X2*X8+X1*X9**2-X1*X9*X8-2*X2
-     & **2*X7-X2**2*X6-3*X2*X3*X5-2*X2*X10*X5-X2*X9*X7-X2*X9*X6+
-     & 2*X2*X8*X7-X3*X9*X5-X4*X9*X5+2*X4*X8*X5)
-      FM(6,8)=8*PQ**4*(-6*X3-3*X4-3*X10-X9-2*X8-X7-2*X6)+2*PQ**2
-     & *PH**2*(-6*X3-3*X4-3*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*
-     & X4-4*X1*X10-8*X2*X3-4*X2*X4-4*X2*X10-4*X3*X9-4*X3*X7-12*
-     & X3*X5-4*X4*X9+8*X4*X8-4*X4*X7+8*X4*X6-6*X4*X5-6*X10*X5-X9
-     & *X5-2*X8*X5)+4*PH**2*(2*X1*X3+X1*X4+X1*X10+X3*X7+X4*X7-2*
-     & X4*X6)+8*X5*(-2*X2*X3-X2*X4-X2*X10-X3*X9-X4*X9+2*X4*X8)
-      FM(7,7)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+9*
-     & X2*X10+7*X3*X7+2*X3*X6+2*X4*X7+7*X4*X6+X10*X5+2*X9*X7+7*
-     & X9*X6+7*X8*X7+2*X8*X6)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2
-     & *X4*X7-7*X4*X6)+4*X2*(X10*X5+2*X9*X7+7*X9*X6+7*X8*X7+2*X8
-     & *X6)
-      FM(7,8)=72*PQ**4*X10+2*PQ**2*PH**2*X10+4*PQ**2*(2*X1*X10+
-     & 10*X2*X10+7*X3*X9+2*X3*X8+14*X3*X7+4*X3*X6+2*X4*X9+7*X4*
-     & X8+4*X4*X7+14*X4*X6+10*X10*X5+X9**2+7*X9*X8+2*X9*X7+7*X9*
-     & X6+X8**2+7*X8*X7+2*X8*X6)+2*PH**2*(7*X1*X10-7*X3*X7-2*X3*
-     & X6-2*X4*X7-7*X4*X6)+2*(-2*X1*X9**2-14*X1*X9*X8-2*X1*X8**2
-     & +2*X2*X10*X5+2*X2*X9*X7+7*X2*X9*X6+7*X2*X8*X7+2*X2*X8*X6+
-     & 7*X3*X9*X5+2*X3*X8*X5+2*X4*X9*X5+7*X4*X8*X5)
-      FM(8,8)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+X2
-     & *X10+7*X3*X9+2*X3*X8+7*X3*X7+2*X3*X6+2*X4*X9+7*X4*X8+2*X4
-     & *X7+7*X4*X6+9*X10*X5)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2*
-     & X4*X7-7*X4*X6)+4*X5*(X2*X10+7*X3*X9+2*X3*X8+2*X4*X9+7*X4*
-     & X8)
-      FM(9,9)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
-     & X3*X7+X4*X6-X10*X5+X9*X6+X8*X7)+PH**2*(X1*X10-X3*X7-X4*X6
-     & )+2*X2*(-X10*X5+X9*X6+X8*X7)
-      FM(9,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
-     & X10+2*X3*X9+2*X3*X7+2*X4*X6-2*X10*X5+X9*X8+2*X8*X7)+PH**2
-     & *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X8*X7+X3*
-     & X9*X5)
-      FMXX=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
-     & X10+2*X4*X8+2*X4*X6+2*X3*X7-2*X10*X5+X9*X8+2*X9*X6)+PH**2
-     & *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X9*X6+X4*
-     & X8*X5)
-      FM(9,10)=0.5*(FMXX+FM(9,10))
-      FM(10,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
-     & X3*X7+X4*X6-X10*X5+X9*X3+X8*X4)+PH**2*(X1*X10-X3*X7-X4*X6
-     & )+2*X5*(-X10*X2+X9*X3+X8*X4)
-C...Repackage matrix elements.
-        DO 200 I=1,8
-        DO 190 J=1,8
-        RM(I,J)=FM(I,J)
-  190   CONTINUE
-  200   CONTINUE
-        RM(7,7)=FM(7,7)-2.*FM(9,9)
-        RM(7,8)=FM(7,8)-2.*FM(9,10)
-        RM(8,8)=FM(8,8)-2.*FM(10,10)
-C...Produce final result: matrix elements * colours * propagators.
-        DO 220 I=1,8
-        DO 210 J=I,8
-        FAC=8.
-        IF(I.EQ.J)FAC=4.
-        WTQQBH=WTQQBH+RM(I,J)*FAC*CLR(I,J)/(DX(I)*DX(J))
-  210   CONTINUE
-  220   CONTINUE
-        WTQQBH=-WTQQBH/256.
-      ELSE
-C...Evaluate matrix elements for q + q~ -> Q + Q~ + H.
-        A11=-8.*PQ**4*X10-2.*PQ**2*PH**2*X10-(8.*PQ**2)*(X2*X10+X3
-     &   *X7+X4*X6+X9*X6+X8*X7)+2.*PH**2*(X3*X7+X4*X6)-(4.*X2)*(X9
-     &   *X6+X8*X7)
-        A12=-8.*PQ**4*X10+4.*PQ**2*(-X2*X10-X3*X9-2.*X3*X7-X4*X8-
-     &   2.*X4*X6-X10*X5-X9*X8-X9*X6-X8*X7)+2.*PH**2*(-X1*X10+X3*X7
-     &   +X4*X6)+2.*(2.*X1*X9*X8-X2*X9*X6-X2*X8*X7-X3*X9*X5-X4*X8*
-     &   X5)
-        A22=-8.*PQ**4*X10-2.*PQ**2*PH**2*X10-(8.*PQ**2)*(X3*X9+X3*
-     &   X7+X4*X8+X4*X6+X10*X5)+2.*PH**2*(X3*X7+X4*X6)-(4.*X5)*(X3
-     &   *X9+X4*X8)
-C...Produce final result: matrix elements * propagators.
-        A11=A11/DX(7)**2
-        A12=A12/(DX(7)*DX(8))
-        A22=A22/DX(8)**2
-        WTQQBH=-(A11+A22+2.*A12)/8.
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyrand.F b/PYTHIA/pythia/pyrand.F
deleted file mode 100644 (file)
index de01076..0000000
+++ /dev/null
@@ -1,877 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYRAND
-C...Generates quantities characterizing the high-pT scattering at the
-C...parton level according to the matrix elements. Chooses incoming,
-C...reacting partons, their momentum fractions and one of the possible
-C...subprocesses.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT7/SIGT(0:6,0:6,0:5)
-      COMMON/PYINT9/DXSEC(0:200)
-      DOUBLE PRECISION DXSEC
-      COMMON/PYUPPR/NUP,KUP(20,7),PUP(20,5),NFUP,IFUP(10,2),Q2UP(0:10)
-      SAVE /LUDAT1/,/LUDAT2/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
-     &/PYINT5/,/PYINT7/,/PYINT9/,/PYUPPR/
-      DIMENSION XPQ(-25:25),PMM(2),PDIF(4),BHAD(4)
-C...Parameters and data used in elastic/diffractive treatment.
-      DATA EPS/0.0808/, ALP/0.25/, CRES/2./, PMRC/1.062/, SMP/0.880/
-      DATA BHAD/2.3,1.4,1.4,0.23/
-C...Initial values, specifically for (first) semihard interaction.
-      MINT(10)=0
-      MINT(17)=0
-      MINT(18)=0
-      VINT(143)=1.
-      VINT(144)=1.
-      MFAIL=0
-      IF(MSTP(171).EQ.1.AND.MSTP(172).EQ.2) MFAIL=1
-      ISUB=0
-      LOOP=0
-  100 LOOP=LOOP+1
-      MINT(51)=0
-C...Choice of process type - first event of pileup.
-      IF(MINT(82).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GT.96)) THEN
-C...For gamma-p or gamma-gamma first pick between alternatives.
-        IF(MINT(121).GT.1) CALL PYSAVE(4,IGA)
-        MINT(122)=IGA
-C...For gamma + gamma with different nature, flip at random.
-        IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
-     &  RLU(0).GT.0.5) THEN
-          MINTSV=MINT(41)
-          MINT(41)=MINT(42)
-          MINT(42)=MINTSV
-          MINTSV=MINT(45)
-          MINT(45)=MINT(46)
-          MINT(46)=MINTSV
-          MINTSV=MINT(107)
-          MINT(107)=MINT(108)
-          MINT(108)=MINTSV
-          IF(MINT(47).EQ.2.OR.MINT(47).EQ.3) MINT(47)=5-MINT(47)
-        ENDIF
-C...Pick process type.
-        RSUB=XSEC(0,1)*RLU(0)
-        DO 110 I=1,200
-        IF(MSUB(I).NE.1) GOTO 110
-        ISUB=I
-        RSUB=RSUB-XSEC(I,1)
-        IF(RSUB.LE.0.) GOTO 120
-  110   CONTINUE
-  120   IF(ISUB.EQ.95) ISUB=96
-        IF(ISUB.EQ.96) CALL PYMULT(2)
-C...Choice of inclusive process type - pileup events.
-      ELSEIF(MINT(82).GE.2.AND.ISUB.EQ.0) THEN
-        RSUB=VINT(131)*RLU(0)
-        ISUB=96
-        IF(RSUB.GT.SIGT(0,0,5)) ISUB=94
-        IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)) ISUB=93
-        IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)) ISUB=92
-        IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)+SIGT(0,0,2))
-     &  ISUB=91
-        IF(ISUB.EQ.96) CALL PYMULT(2)
-      ENDIF
-      IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)+1
-      IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)+1
-      IF(ISUB.EQ.96.AND.LOOP.EQ.1.AND.MINT(82).EQ.1)
-     &NGEN(97,1)=NGEN(97,1)+1
-      MINT(1)=ISUB
-      ISTSB=ISET(ISUB)
-C...Find resonances (explicit or implicit in cross-section).
-      MINT(72)=0
-      KFR1=0
-      IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
-        KFR1=KFPR(ISUB,1)
-      ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165.OR.
-     &ISUB.EQ.171.OR.ISUB.EQ.176) THEN
-        KFR1=23
-      ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172.OR.
-     &ISUB.EQ.177) THEN
-        KFR1=24
-      ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
-        KFR1=25
-        IF(MSTP(46).EQ.5) THEN
-          KFR1=30
-          PMAS(30,1)=PARP(45)
-          PMAS(30,2)=PARP(45)**3/(96.*PARU(1)*PARP(47)**2)
-        ENDIF
-      ENDIF
-      CKMX=CKIN(2)
-      IF(CKMX.LE.0.) CKMX=VINT(1)
-      IF(KFR1.NE.0) THEN
-        IF(CKIN(1).GT.PMAS(KFR1,1)+20.*PMAS(KFR1,2).OR.
-     &  CKMX.LT.PMAS(KFR1,1)-20.*PMAS(KFR1,2)) KFR1=0
-      ENDIF
-      IF(KFR1.NE.0) THEN
-        TAUR1=PMAS(KFR1,1)**2/VINT(2)
-        GAMR1=PMAS(KFR1,1)*PMAS(KFR1,2)/VINT(2)
-        MINT(72)=1
-        MINT(73)=KFR1
-        VINT(73)=TAUR1
-        VINT(74)=GAMR1
-      ENDIF
-      IF(ISUB.EQ.141) THEN
-        KFR2=23
-        TAUR2=PMAS(KFR2,1)**2/VINT(2)
-        GAMR2=PMAS(KFR2,1)*PMAS(KFR2,2)/VINT(2)
-        IF(CKIN(1).GT.PMAS(KFR2,1)+20.*PMAS(KFR2,2).OR.
-     &  CKMX.LT.PMAS(KFR2,1)-20.*PMAS(KFR2,2)) KFR2=0
-        IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
-          MINT(72)=2
-          MINT(74)=KFR2
-          VINT(75)=TAUR2
-          VINT(76)=GAMR2
-        ELSEIF(KFR2.NE.0) THEN
-          KFR1=KFR2
-          TAUR1=TAUR2
-          GAMR1=GAMR2
-          MINT(72)=1
-          MINT(73)=KFR1
-          VINT(73)=TAUR1
-          VINT(74)=GAMR1
-        ENDIF
-      ENDIF
-C...Find product masses and minimum pT of process,
-C...optionally with broadening according to a truncated Breit-Wigner.
-      VINT(63)=0.
-      VINT(64)=0.
-      MINT(71)=0
-      VINT(71)=CKIN(3)
-      IF(MINT(82).GE.2) VINT(71)=0.
-      VINT(80)=1.
-      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
-        NBW=0
-        DO 130 I=1,2
-        IF(KFPR(ISUB,I).EQ.0) THEN
-        ELSEIF(MSTP(42).LE.0.OR.PMAS(LUCOMP(KFPR(ISUB,I)),2).LT.
-     &  PARP(41)) THEN
-          VINT(62+I)=PMAS(LUCOMP(KFPR(ISUB,I)),1)**2
-        ELSE
-          NBW=NBW+1
-        ENDIF
-  130   CONTINUE
-        IF(NBW.GE.1) THEN
-          CALL PYOFSH(4,0,KFPR(ISUB,1),KFPR(ISUB,2),0.,PQM3,PQM4)
-          IF(MINT(51).EQ.1) THEN
-            IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-            IF(MFAIL.EQ.1) THEN
-              MSTI(61)=1
-              RETURN
-            ENDIF
-            GOTO 100
-          ENDIF
-          VINT(63)=PQM3**2
-          VINT(64)=PQM4**2
-        ENDIF
-        IF(MIN(VINT(63),VINT(64)).LT.CKIN(6)**2) MINT(71)=1
-        IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
-      ELSEIF(ISTSB.EQ.6) THEN
-        CALL PYOFSH(6,0,KFPR(ISUB,1),KFPR(ISUB,2),0.,PQM3,PQM4)
-        IF(MINT(51).EQ.1) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          IF(MFAIL.EQ.1) THEN
-            MSTI(61)=1
-            RETURN
-          ENDIF
-          GOTO 100
-        ENDIF
-        VINT(63)=PQM3**2
-        VINT(64)=PQM4**2
-      ENDIF
-C...Prepare for additional variable choices in 2 -> 3.
-      IF(ISTSB.EQ.5) THEN
-        VINT(201)=0.
-        IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(KFPR(ISUB,2),1)
-        VINT(206)=VINT(201)
-        VINT(204)=PMAS(23,1)
-        IF(ISUB.EQ.124) VINT(204)=PMAS(24,1)
-        IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
-     &  ISUB.EQ.186.OR.ISUB.EQ.187) VINT(204)=VINT(201)
-        VINT(209)=VINT(204)
-      ENDIF
-C...Select incoming VDM particle (rho/omega/phi/J/psi).
-      IF(ISTSB.NE.0.AND.(MINT(101).GE.2.OR.MINT(102).GE.2).AND.
-     &(MINT(123).EQ.2.OR.MINT(123).EQ.5.OR.MINT(123).EQ.7)) THEN
-        VRN=RLU(0)*SIGT(0,0,5)
-        IF(MINT(101).LE.1) THEN
-          I1MN=0
-          I1MX=0
-        ELSE
-          I1MN=1
-          I1MX=MINT(101)
-        ENDIF
-        IF(MINT(102).LE.1) THEN
-          I2MN=0
-          I2MX=0
-        ELSE
-          I2MN=1
-          I2MX=MINT(102)
-        ENDIF
-        DO 150 I1=I1MN,I1MX
-        KFV1=110*I1+3
-        DO 140 I2=I2MN,I2MX
-        KFV2=110*I2+3
-        VRN=VRN-SIGT(I1,I2,5)
-        IF(VRN.LE.0.) GOTO 160
-  140   CONTINUE
-  150   CONTINUE
-  160   IF(MINT(101).GE.2) MINT(103)=KFV1
-        IF(MINT(102).GE.2) MINT(104)=KFV2
-      ENDIF
-      IF(ISTSB.EQ.0) THEN
-C...Elastic scattering or single or double diffractive scattering.
-C...Select incoming particle (rho/omega/phi/J/psi for VDM) and mass.
-        MINT(103)=MINT(11)
-        MINT(104)=MINT(12)
-        PMM(1)=VINT(3)
-        PMM(2)=VINT(4)
-        IF(MINT(101).GE.2.OR.MINT(102).GE.2) THEN
-          JJ=ISUB-90
-          VRN=RLU(0)*SIGT(0,0,JJ)
-          IF(MINT(101).LE.1) THEN
-            I1MN=0
-            I1MX=0
-          ELSE
-            I1MN=1
-            I1MX=MINT(101)
-          ENDIF
-          IF(MINT(102).LE.1) THEN
-            I2MN=0
-            I2MX=0
-          ELSE
-            I2MN=1
-            I2MX=MINT(102)
-          ENDIF
-          DO 180 I1=I1MN,I1MX
-          KFV1=110*I1+3
-          DO 170 I2=I2MN,I2MX
-          KFV2=110*I2+3
-          VRN=VRN-SIGT(I1,I2,JJ)
-          IF(VRN.LE.0.) GOTO 190
-  170     CONTINUE
-  180     CONTINUE
-  190     IF(MINT(101).GE.2) THEN
-            MINT(103)=KFV1
-            PMM(1)=ULMASS(KFV1)
-          ENDIF
-          IF(MINT(102).GE.2) THEN
-            MINT(104)=KFV2
-            PMM(2)=ULMASS(KFV2)
-          ENDIF
-        ENDIF
-C...Side/sides of diffractive system.
-        MINT(17)=0
-        MINT(18)=0
-        IF(ISUB.EQ.92.OR.ISUB.EQ.94) MINT(17)=1
-        IF(ISUB.EQ.93.OR.ISUB.EQ.94) MINT(18)=1
-C...Find masses of particles and minimal masses of diffractive states.
-        DO 200 JT=1,2
-        PDIF(JT)=PMM(JT)
-        VINT(66+JT)=PDIF(JT)
-        IF(MINT(16+JT).EQ.1) PDIF(JT)=PDIF(JT)+PARP(102)
-  200   CONTINUE
-        SH=VINT(2)
-        SQM1=PMM(1)**2
-        SQM2=PMM(2)**2
-        SQM3=PDIF(1)**2
-        SQM4=PDIF(2)**2
-        SMRES1=(PMM(1)+PMRC)**2
-        SMRES2=(PMM(2)+PMRC)**2
-C...Find elastic slope and lower limit diffractive slope.
-        IHA=MAX(2,IABS(MINT(103))/110)
-        IF(IHA.GE.5) IHA=1
-        IHB=MAX(2,IABS(MINT(104))/110)
-        IF(IHB.GE.5) IHB=1
-        IF(ISUB.EQ.91) THEN
-          BMN=2.*BHAD(IHA)+2.*BHAD(IHB)+4.*SH**EPS-4.2
-        ELSEIF(ISUB.EQ.92) THEN
-          BMN=MAX(2.,2.*BHAD(IHB))
-        ELSEIF(ISUB.EQ.93) THEN
-          BMN=MAX(2.,2.*BHAD(IHA))
-        ELSEIF(ISUB.EQ.94) THEN
-          BMN=2.*ALP*4.
-        ENDIF
-C...Determine maximum possible t range and coefficient of generation.
-        SQLA12=(SH-SQM1-SQM2)**2-4.*SQM1*SQM2
-        SQLA34=(SH-SQM3-SQM4)**2-4.*SQM3*SQM4
-        THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
-        THB=SQRT(MAX(0.,SQLA12))*SQRT(MAX(0.,SQLA34))/SH
-        THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
-     &  (SQM1*SQM4-SQM2*SQM3)/SH
-        THL=-0.5*(THA+THB)
-        THU=THC/THL
-        THRND=EXP(MAX(-50.,BMN*(THL-THU)))-1.
-C...Select diffractive mass/masses according to dm^2/m^2.
-  210   DO 220 JT=1,2
-        IF(MINT(16+JT).EQ.0) THEN
-          PDIF(2+JT)=PDIF(JT)
-        ELSE
-          PMMIN=PDIF(JT)
-          PMMAX=MAX(VINT(2+JT),VINT(1)-PDIF(3-JT))
-          PDIF(2+JT)=PMMIN*(PMMAX/PMMIN)**RLU(0)
-        ENDIF
-  220   CONTINUE
-        SQM3=PDIF(3)**2
-        SQM4=PDIF(4)**2
-C..Additional mass factors, including resonance enhancement.
-        IF(PDIF(3)+PDIF(4).GE.VINT(1)) GOTO 210
-        IF(ISUB.EQ.92) THEN
-          FSD=(1.-SQM3/SH)*(1.+CRES*SMRES1/(SMRES1+SQM3))
-          IF(FSD.LT.RLU(0)*(1.+CRES)) GOTO 210
-        ELSEIF(ISUB.EQ.93) THEN
-          FSD=(1.-SQM4/SH)*(1.+CRES*SMRES2/(SMRES2+SQM4))
-          IF(FSD.LT.RLU(0)*(1.+CRES)) GOTO 210
-        ELSEIF(ISUB.EQ.94) THEN
-          FDD=(1.-(PDIF(3)+PDIF(4))**2/SH)*(SH*SMP/(SH*SMP+SQM3*SQM4))*
-     &    (1.+CRES*SMRES1/(SMRES1+SQM3))*(1.+CRES*SMRES2/(SMRES2+SQM4))
-          IF(FDD.LT.RLU(0)*(1.+CRES)**2) GOTO 210
-        ENDIF
-C...Select t according to exp(Bmn*t) and correct to right slope.
-        TH=THU+LOG(1.+THRND*RLU(0))/BMN
-        IF(ISUB.GE.92) THEN
-          IF(ISUB.EQ.92) THEN
-            BADD=2.*ALP*LOG(SH/SQM3)
-            IF(BHAD(IHB).LT.1.) BADD=MAX(0.,BADD+2.*BHAD(IHB)-2.)
-          ELSEIF(ISUB.EQ.93) THEN
-            BADD=2.*ALP*LOG(SH/SQM4)
-            IF(BHAD(IHA).LT.1.) BADD=MAX(0.,BADD+2.*BHAD(IHA)-2.)
-          ELSEIF(ISUB.EQ.94) THEN
-            BADD=2.*ALP*(LOG(EXP(4.)+SH/(ALP*SQM3*SQM4))-4.)
-          ENDIF
-          IF(EXP(MAX(-50.,BADD*(TH-THU))).LT.RLU(0)) GOTO 210
-        ENDIF
-C...Check whether m^2 and t choices are consistent.
-        SQLA34=(SH-SQM3-SQM4)**2-4.*SQM3*SQM4
-        THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
-        THB=SQRT(MAX(0.,SQLA12))*SQRT(MAX(0.,SQLA34))/SH
-        IF(THB.LE.1E-8) GOTO 210
-        THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
-     &  (SQM1*SQM4-SQM2*SQM3)/SH
-        THLM=-0.5*(THA+THB)
-        THUM=THC/THLM
-        IF(TH.LT.THLM.OR.TH.GT.THUM) GOTO 210
-C...Information to output.
-        VINT(21)=1.
-        VINT(22)=0.
-        VINT(23)=MIN(1.,MAX(-1.,(THA+2.*TH)/THB))
-        VINT(45)=TH
-        VINT(59)=2.*SQRT(MAX(0.,-(THC+THA*TH+TH**2)))/THB
-        VINT(63)=PDIF(3)**2
-        VINT(64)=PDIF(4)**2
-C...Note: in the following, by In is meant the integral over the
-C...quantity multiplying coefficient cn.
-C...Choose tau according to h1(tau)/tau, where
-C...h1(tau) = c1 + I1/I2*c2*1/tau + I1/I3*c3*1/(tau+tau_R) +
-C...I1/I4*c4*tau/((s*tau-m^2)^2+(m*Gamma)^2) +
-C...I1/I5*c5*1/(tau+tau_R') +
-C...I1/I6*c6*tau/((s*tau-m'^2)^2+(m'*Gamma')^2) +
-C...I1/I7*c7*tau/(1.-tau), and
-C...c1 + c2 + c3 + c4 + c5 + c6 + c7 = 1.
-      ELSEIF(ISTSB.GE.1.AND.ISTSB.LE.6) THEN
-        CALL PYKLIM(1)
-        IF(MINT(51).NE.0) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          IF(MFAIL.EQ.1) THEN
-            MSTI(61)=1
-            RETURN
-          ENDIF
-          GOTO 100
-        ENDIF
-        RTAU=RLU(0)
-        MTAU=1
-        IF(RTAU.GT.COEF(ISUB,1)) MTAU=2
-        IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)) MTAU=3
-        IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)) MTAU=4
-        IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4))
-     &  MTAU=5
-        IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
-     &  COEF(ISUB,5)) MTAU=6
-        IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
-     &  COEF(ISUB,5)+COEF(ISUB,6)) MTAU=7
-        CALL PYKMAP(1,MTAU,RLU(0))
-C...2 -> 3, 4 processes:
-C...Choose tau' according to h4(tau,tau')/tau', where
-C...h4(tau,tau') = c1 + I1/I2*c2*(1 - tau/tau')^3/tau' +
-C...I1/I3*c3*1/(1 - tau'), and c1 + c2 + c3 = 1.
-        IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
-          CALL PYKLIM(4)
-          IF(MINT(51).NE.0) THEN
-            IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-            IF(MFAIL.EQ.1) THEN
-              MSTI(61)=1
-              RETURN
-            ENDIF
-            GOTO 100
-          ENDIF
-          RTAUP=RLU(0)
-          MTAUP=1
-          IF(RTAUP.GT.COEF(ISUB,18)) MTAUP=2
-          IF(RTAUP.GT.COEF(ISUB,18)+COEF(ISUB,19)) MTAUP=3
-          CALL PYKMAP(4,MTAUP,RLU(0))
-        ENDIF
-C...Choose y* according to h2(y*), where
-C...h2(y*) = I0/I1*c1*(y*-y*min) + I0/I2*c2*(y*max-y*) +
-C...I0/I3*c3*1/cosh(y*) + I0/I4*c4*1/(1-exp(y*-y*max)) +
-C...I0/I5*c5*1/(1-exp(-y*-y*min)), I0 = y*max-y*min,
-C...and c1 + c2 + c3 + c4 + c5 = 1.
-        CALL PYKLIM(2)
-        IF(MINT(51).NE.0) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          IF(MFAIL.EQ.1) THEN
-            MSTI(61)=1
-            RETURN
-          ENDIF
-          GOTO 100
-        ENDIF
-        RYST=RLU(0)
-        MYST=1
-        IF(RYST.GT.COEF(ISUB,8)) MYST=2
-        IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
-        IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)) MYST=4
-        IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)+
-     &  COEF(ISUB,11)) MYST=5
-        CALL PYKMAP(2,MYST,RLU(0))
-C...2 -> 2 processes:
-C...Choose cos(theta-hat) (cth) according to h3(cth), where
-C...h3(cth) = c0 + I0/I1*c1*1/(A - cth) + I0/I2*c2*1/(A + cth) +
-C...I0/I3*c3*1/(A - cth)^2 + I0/I4*c4*1/(A + cth)^2,
-C...A = 1 + 2*(m3*m4/sh)^2 (= 1 for massless products),
-C...and c0 + c1 + c2 + c3 + c4 = 1.
-        CALL PYKLIM(3)
-        IF(MINT(51).NE.0) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          IF(MFAIL.EQ.1) THEN
-            MSTI(61)=1
-            RETURN
-          ENDIF
-          GOTO 100
-        ENDIF
-        IF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) THEN
-          RCTH=RLU(0)
-          MCTH=1
-          IF(RCTH.GT.COEF(ISUB,13)) MCTH=2
-          IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)) MCTH=3
-          IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)) MCTH=4
-          IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)+
-     &    COEF(ISUB,16)) MCTH=5
-          CALL PYKMAP(3,MCTH,RLU(0))
-        ENDIF
-C...2 -> 3 : select pT1, phi1, pT2, phi2, y3 for 3 outgoing.
-        IF(ISTSB.EQ.5) THEN
-          CALL PYKMAP(5,0,0.)
-          IF(MINT(51).NE.0) THEN
-            IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-            IF(MFAIL.EQ.1) THEN
-              MSTI(61)=1
-              RETURN
-            ENDIF
-            GOTO 100
-          ENDIF
-        ENDIF
-C...Low-pT or multiple interactions (first semihard interaction).
-      ELSEIF(ISTSB.EQ.9) THEN
-        CALL PYMULT(3)
-        ISUB=MINT(1)
-C...Generate user-defined process: kinematics plus weight.
-      ELSEIF(ISTSB.EQ.11) THEN
-        MSTI(51)=0
-        CALL PYUPEV(ISUB,SIGS)
-        IF(NUP.LE.0) THEN
-          MINT(51)=2
-          MSTI(51)=1
-          IF(MINT(82).EQ.1) THEN
-            NGEN(0,1)=NGEN(0,1)-1
-            NGEN(0,2)=NGEN(0,2)-1
-            NGEN(ISUB,1)=NGEN(ISUB,1)-1
-          ENDIF
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          RETURN
-        ENDIF
-C...Construct 'trivial' kinematical variables needed.
-        KFL1=KUP(1,2)
-        KFL2=KUP(2,2)
-        VINT(41)=2.*PUP(1,4)/VINT(1)
-        VINT(42)=2.*PUP(2,4)/VINT(1)
-        VINT(21)=VINT(41)*VINT(42)
-        VINT(22)=0.5*LOG(VINT(41)/VINT(42))
-        VINT(44)=VINT(21)*VINT(2)
-        VINT(43)=SQRT(MAX(0.,VINT(44)))
-        VINT(56)=Q2UP(0)
-        VINT(55)=SQRT(MAX(0.,VINT(56)))
-C...Construct other kinematical variables needed (approximately).
-        VINT(23)=0.
-        VINT(26)=VINT(21)
-        VINT(45)=-0.5*VINT(44)
-        VINT(46)=-0.5*VINT(44)
-        VINT(49)=VINT(43)
-        VINT(50)=VINT(44)
-        VINT(51)=VINT(55)
-        VINT(52)=VINT(56)
-        VINT(53)=VINT(55)
-        VINT(54)=VINT(56)
-        VINT(25)=0.
-        VINT(48)=0.
-        DO 230 IUP=3,NUP
-        IF(KUP(IUP,1).EQ.1) VINT(25)=VINT(25)+2.*(PUP(IUP,5)**2+
-     &  PUP(IUP,1)**2+PUP(IUP,2)**2)/VINT(1)
-        IF(KUP(IUP,1).EQ.1) VINT(48)=VINT(48)+0.5*(PUP(IUP,1)**2+
-     &  PUP(IUP,2)**2)
-  230   CONTINUE
-        VINT(47)=SQRT(VINT(48))
-C...Calculate structure function weights.
-        IF(MINT(47).GE.2) THEN
-          DO 250 I=3-MIN(2,MINT(45)),MIN(2,MINT(46))
-          MINT(105)=MINT(102+I)
-          MINT(109)=MINT(106+I)
-          IF(MSTP(57).LE.1) THEN
-            CALL PYSTFU(MINT(10+I),VINT(40+I),Q2UP(0),XPQ)
-          ELSE
-            CALL PYSTFL(MINT(10+I),VINT(40+I),Q2UP(0),XPQ)
-          ENDIF
-          DO 240 KFL=-25,25
-          XSFX(I,KFL)=XPQ(KFL)
-  240     CONTINUE
-  250     CONTINUE
-        ENDIF
-      ENDIF
-C...Choose azimuthal angle.
-      VINT(24)=PARU(2)*RLU(0)
-C...Check against user cuts on kinematics at parton level.
-      MINT(51)=0
-      IF((ISUB.LE.90.OR.ISUB.GT.100).AND.ISTSB.LE.10) CALL PYKLIM(0)
-      IF(MINT(51).NE.0) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          IF(MFAIL.EQ.1) THEN
-            MSTI(61)=1
-            RETURN
-          ENDIF
-          GOTO 100
-        ENDIF
-      IF(MINT(82).EQ.1.AND.MSTP(141).GE.1.AND.ISTSB.LE.10) THEN
-        MCUT=0
-        IF(MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+MSUB(95).EQ.0)
-     &  CALL PYKCUT(MCUT)
-        IF(MCUT.NE.0) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          IF(MFAIL.EQ.1) THEN
-            MSTI(61)=1
-            RETURN
-          ENDIF
-          GOTO 100
-        ENDIF
-      ENDIF
-C...Calculate differential cross-section for different subprocesses.
-      IF(ISTSB.LE.10) CALL PYSIGH(NCHN,SIGS)
-      SIGSOR=SIGS
-      SIGLPT=SIGT(0,0,5)
-C...Multiply cross-section by user-defined weights.
-      IF(MSTP(173).EQ.1) THEN
-        SIGS=PARP(173)*SIGS
-        DO 260 ICHN=1,NCHN
-        SIGH(ICHN)=PARP(173)*SIGH(ICHN)
-  260   CONTINUE
-        SIGLPT=PARP(173)*SIGLPT
-      ENDIF
-      WTXS=1.
-      SIGSWT=SIGS
-      VINT(99)=1.
-      VINT(100)=1.
-      IF(MINT(82).EQ.1.AND.MSTP(142).GE.1) THEN
-        IF(ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+
-     &  MSUB(95).EQ.0) CALL PYEVWT(WTXS)
-        SIGSWT=WTXS*SIGS
-        VINT(99)=WTXS
-        IF(MSTP(142).EQ.1) VINT(100)=1./WTXS
-      ENDIF
-C...Calculations for Monte Carlo estimate of all cross-sections.
-      IF(MINT(82).EQ.1.AND.ISUB.LE.90.OR.ISUB.GE.96) THEN
-        IF(MSTP(142).LE.1) THEN 
-          XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
-          DXSEC(ISUB)=DXSEC(ISUB)+SIGS
-        ELSE
-          XSEC(ISUB,2)=XSEC(ISUB,2)+SIGSWT
-          DXSEC(ISUB)=DXSEC(ISUB)+SIGSWT
-        ENDIF
-      ELSEIF(MINT(82).EQ.1) THEN
-        XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
-        DXSEC(ISUB)=DXSEC(ISUB)+SIGS
-      ENDIF
-      IF((ISUB.EQ.95.OR.ISUB.EQ.96).AND.LOOP.EQ.1.AND.MINT(82).EQ.1)
-     &THEN
-        XSEC(97,2)=XSEC(97,2)+SIGLPT
-        DXSEC(97)=DXSEC(97)+SIGLPT
-      ENDIF
-
-C...Multiple interactions: store results of cross-section calculation.
-      IF(MINT(50).EQ.1.AND.MSTP(82).GE.3) THEN
-        VINT(153)=SIGSOR
-        CALL PYMULT(4)
-      ENDIF
-C...Check that weight not negative.
-      VIOL=SIGSWT/XSEC(ISUB,1)
-      IF(ISUB.EQ.96.AND.MSTP(173).EQ.1) VIOL=VIOL/PARP(174)
-      IF(MSTP(123).LE.0) THEN
-        IF(VIOL.LT.-1E-3) THEN
-          WRITE(MSTU(11),5000) VIOL,NGEN(0,3)+1
-          WRITE(MSTU(11),5100) ISUB,VINT(21),VINT(22),VINT(23),VINT(26)
-          STOP
-        ENDIF
-      ELSE
-        IF(VIOL.LT.MIN(-1E-3,VINT(109))) THEN
-          VINT(109)=VIOL
-          WRITE(MSTU(11),5200) VIOL,NGEN(0,3)+1
-          WRITE(MSTU(11),5100) ISUB,VINT(21),VINT(22),VINT(23),VINT(26)
-        ENDIF
-      ENDIF
-C...Weighting using estimate of maximum of differential cross-section.
-      IF(MFAIL.EQ.0) THEN
-        IF(VIOL.LT.RLU(0)) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          GOTO 100
-        ENDIF
-      ELSEIF(ISUB.NE.95.AND.ISUB.NE.96) THEN
-        IF(VIOL.LT.RLU(0)) THEN
-          MSTI(61)=1
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          RETURN
-        ENDIF
-      ELSE
-        RATND=SIGLPT/XSEC(95,1)
-        IF(LOOP.EQ.1.AND.RATND.LT.RLU(0)) THEN
-          MSTI(61)=1
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          RETURN
-        ENDIF
-        VIOL=VIOL/RATND
-        IF(VIOL.LT.RLU(0)) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          GOTO 100
-        ENDIF
-      ENDIF
-C...Check for possible violation of estimated maximum of differential
-C...cross-section used in weighting.
-      IF(MSTP(123).LE.0) THEN
-        IF(VIOL.GT.1.) THEN
-          WRITE(MSTU(11),5300) VIOL,NGEN(0,3)+1
-          WRITE(MSTU(11),5100) ISUB,VINT(21),VINT(22),VINT(23),VINT(26)
-          STOP
-        ENDIF
-      ELSEIF(MSTP(123).EQ.1) THEN
-        IF(VIOL.GT.VINT(108)) THEN
-          VINT(108)=VIOL
-          IF(VIOL.GT.1.) THEN
-            MINT(10)=1
-            WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
-            WRITE(MSTU(11),5100) ISUB,VINT(21),VINT(22),VINT(23),
-     &      VINT(26)
-          ENDIF
-        ENDIF
-      ELSEIF(VIOL.GT.VINT(108)) THEN
-        VINT(108)=VIOL
-        IF(VIOL.GT.1.) THEN
-          MINT(10)=1
-          XDIF=XSEC(ISUB,1)*(VIOL-1.)
-          XSEC(ISUB,1)=XSEC(ISUB,1)+XDIF
-          IF(MSUB(ISUB).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GT.96))
-     &    XSEC(0,1)=XSEC(0,1)+XDIF
-          WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
-          WRITE(MSTU(11),5100) ISUB,VINT(21),VINT(22),VINT(23),VINT(26)
-          IF(ISUB.LE.9) THEN
-            WRITE(MSTU(11),5500) ISUB,XSEC(ISUB,1)
-          ELSEIF(ISUB.LE.99) THEN
-            WRITE(MSTU(11),5600) ISUB,XSEC(ISUB,1)
-          ELSE
-            WRITE(MSTU(11),5700) ISUB,XSEC(ISUB,1)
-          ENDIF
-          VINT(108)=1.
-        ENDIF
-      ENDIF
-C...Multiple interactions: choose impact parameter.
-      VINT(148)=1.
-      IF(MINT(50).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GE.96).AND.MSTP(82).GE.3)
-     &THEN
-        CALL PYMULT(5)
-        IF(VINT(150).LT.RLU(0)) THEN
-          IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-          IF(MFAIL.EQ.1) THEN
-            MSTI(61)=1
-            RETURN
-          ENDIF
-          GOTO 100
-        ENDIF
-      ENDIF
-      IF(MINT(82).EQ.1) NGEN(0,2)=NGEN(0,2)+1
-      IF(MINT(82).EQ.1.AND.MSUB(95).EQ.1) THEN
-        IF(ISUB.LE.90.OR.ISUB.GE.95) NGEN(95,1)=NGEN(95,1)+1
-        IF(ISUB.LE.90.OR.ISUB.GE.96) NGEN(96,2)=NGEN(96,2)+1
-      ENDIF
-      IF(ISUB.LE.90.OR.ISUB.GE.96) MINT(31)=MINT(31)+1
-C...Choose flavour of reacting partons (and subprocess).
-      IF(ISTSB.GE.11) GOTO 280
-      RSIGS=SIGS*RLU(0)
-      QT2=VINT(48)
-      RQQBAR=PARP(87)*(1.-(QT2/(QT2+(PARP(88)*PARP(82))**2))**2)
-      IF(ISUB.NE.95.AND.(ISUB.NE.96.OR.MSTP(82).LE.1.OR.
-     &RLU(0).GT.RQQBAR)) THEN
-        DO 270 ICHN=1,NCHN
-        KFL1=ISIG(ICHN,1)
-        KFL2=ISIG(ICHN,2)
-        MINT(2)=ISIG(ICHN,3)
-        RSIGS=RSIGS-SIGH(ICHN)
-        IF(RSIGS.LE.0.) GOTO 280
-  270   CONTINUE
-C...Multiple interactions: choose qq~ preferentially at small pT.
-      ELSEIF(ISUB.EQ.96) THEN
-        MINT(105)=MINT(103)
-        MINT(109)=MINT(107)
-        CALL PYSPLI(MINT(11),21,KFL1,KFLDUM)
-        MINT(105)=MINT(104)
-        MINT(109)=MINT(108)
-        CALL PYSPLI(MINT(12),21,KFL2,KFLDUM)
-        MINT(1)=11
-        MINT(2)=1
-        IF(KFL1.EQ.KFL2.AND.RLU(0).LT.0.5) MINT(2)=2
-C...Low-pT: choose string drawing configuration.
-      ELSE
-        KFL1=21
-        KFL2=21
-        RSIGS=6.*RLU(0)
-        MINT(2)=1
-        IF(RSIGS.GT.1.) MINT(2)=2
-        IF(RSIGS.GT.2.) MINT(2)=3
-      ENDIF
-C...Reassign QCD process. Partons before initial state radiation.
-  280 IF(MINT(2).GT.10) THEN
-        MINT(1)=MINT(2)/10
-        MINT(2)=MOD(MINT(2),10)
-      ENDIF
-      IF(MINT(82).EQ.1.AND.MSTP(111).GE.0) NGEN(MINT(1),2)=
-     &NGEN(MINT(1),2)+1
-      MINT(15)=KFL1
-      MINT(16)=KFL2
-      MINT(13)=MINT(15)
-      MINT(14)=MINT(16)
-      VINT(141)=VINT(41)
-      VINT(142)=VINT(42)
-      VINT(151)=0.
-      VINT(152)=0.
-C...Calculate x value of photon for parton inside photon inside e.
-      DO 310 JT=1,2
-      MINT(18+JT)=0
-      VINT(154+JT)=0.
-      MSPLI=0
-      IF(JT.EQ.1.AND.MINT(43).LE.2) MSPLI=1
-      IF(JT.EQ.2.AND.MOD(MINT(43),2).EQ.1) MSPLI=1
-      IF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) MSPLI=MSPLI+1
-      IF(MSPLI.EQ.2) THEN
-        KFLH=MINT(14+JT)
-        XHRD=VINT(140+JT)
-        Q2HRD=VINT(54)
-        MINT(105)=MINT(102+JT)
-        MINT(109)=MINT(106+JT)
-        IF(MSTP(57).LE.1) THEN
-          CALL PYSTFU(22,XHRD,Q2HRD,XPQ)
-        ELSE
-          CALL PYSTFL(22,XHRD,Q2HRD,XPQ)
-        ENDIF
-        WTMX=4.*XPQ(KFLH)
-        IF(MSTP(13).EQ.2) THEN
-          Q2PMS=Q2HRD/PMAS(11,1)**2
-          WTMX=WTMX*LOG(MAX(2.,Q2PMS*(1.-XHRD)/XHRD**2))
-        ENDIF
-  290   XE=XHRD**RLU(0)
-        XG=MIN(0.999999,XHRD/XE)
-        IF(MSTP(57).LE.1) THEN
-          CALL PYSTFU(22,XG,Q2HRD,XPQ)
-        ELSE
-          CALL PYSTFL(22,XG,Q2HRD,XPQ)
-        ENDIF
-        WT=(1.+(1.-XE)**2)*XPQ(KFLH)
-        IF(MSTP(13).EQ.2) WT=WT*LOG(MAX(2.,Q2PMS*(1.-XE)/XE**2))
-        IF(WT.LT.RLU(0)*WTMX) GOTO 290
-        MINT(18+JT)=1
-        VINT(154+JT)=XE
-        DO 300 KFLS=-25,25
-        XSFX(JT,KFLS)=XPQ(KFLS)
-  300   CONTINUE
-      ENDIF
-  310 CONTINUE
-C...Pick scale where photon is resolved.
-      IF(MINT(107).EQ.3) VINT(283)=PARP(15)**2*
-     &(VINT(54)/PARP(15)**2)**RLU(0)
-      IF(MINT(108).EQ.3) VINT(284)=PARP(15)**2*
-     &(VINT(54)/PARP(15)**2)**RLU(0)
-      IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
-C...Format statements for differential cross-section maximum violations.
- 5000 FORMAT(1X,'Error: negative cross-section fraction',1P,E11.3,1X,
-     &'in event',1X,I7,'.'/1X,'Execution stopped!')
- 5100 FORMAT(1X,'ISUB = ',I3,'; Point of violation:'/1X,'tau =',1P,
-     &E11.3,', y* =',E11.3,', cthe = ',0P,F11.7,', tau'' =',1P,E11.3)
- 5200 FORMAT(1X,'Warning: negative cross-section fraction',1P,E11.3,1X,
-     &'in event',1X,I7)
- 5300 FORMAT(1X,'Error: maximum violated by',1P,E11.3,1X,
-     &'in event',1X,I7,'.'/1X,'Execution stopped!')
- 5400 FORMAT(1X,'Warning: maximum violated by',1P,E11.3,1X,
-     &'in event',1X,I7)
- 5500 FORMAT(1X,'XSEC(',I1,',1) increased to',1P,E11.3)
- 5600 FORMAT(1X,'XSEC(',I2,',1) increased to',1P,E11.3)
- 5700 FORMAT(1X,'XSEC(',I3,',1) increased to',1P,E11.3)
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyremn.F b/PYTHIA/pythia/pyremn.F
deleted file mode 100644 (file)
index baddd6c..0000000
+++ /dev/null
@@ -1,667 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYREMN(IPU1,IPU2)
-C...Adds on target remnants (one or two from each side) and
-C...includes primordial kT for hadron beams.
-      IMPLICIT DOUBLE PRECISION(D)
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
-      SAVE /PYPARS/,/PYINT1/
-      DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
-     &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
-C...Find event type and remaining energy.
-      ISUB=MINT(1)
-      NS=N
-      IF(MINT(50).EQ.0.OR.MSTP(81).LE.0) THEN
-        VINT(143)=1.-VINT(141)
-        VINT(144)=1.-VINT(142)
-      ENDIF
-C...Define initial partons.
-      NTRY=0
-  100 NTRY=NTRY+1
-      DO 130 JT=1,2
-      I=MINT(83)+JT+2
-      IF(JT.EQ.1) IPU=IPU1
-      IF(JT.EQ.2) IPU=IPU2
-      K(I,1)=21
-      K(I,2)=K(IPU,2)
-      K(I,3)=I-2
-      PMS(JT)=0.
-      VINT(156+JT)=0.
-      VINT(158+JT)=0.
-      IF(MINT(47).EQ.1) THEN
-        DO 110 J=1,5
-        P(I,J)=P(I-2,J)
-  110   CONTINUE
-      ELSEIF(ISUB.EQ.95) THEN
-        K(I,2)=21
-      ELSE
-        P(I,5)=P(IPU,5)
-C...No primordial kT, or chosen according to truncated Gaussian or
-C...exponential, or (for photon) predetermined or power law.
-  120   IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
-          IF(MSTP(91).LE.0) THEN
-            PT=0.
-          ELSEIF(MSTP(91).EQ.1) THEN
-            PT=PARP(91)*SQRT(-LOG(RLU(0)))
-          ELSE
-            RPT1=RLU(0)
-            RPT2=RLU(0)
-            PT=-PARP(92)*LOG(RPT1*RPT2)
-          ENDIF
-          IF(PT.GT.PARP(93)) GOTO 120
-        ELSEIF(MINT(106+JT).EQ.3) THEN
-          PT=SQRT(VINT(282+JT))
-          PT=PT*0.8**MINT(57)
-          IF(NTRY.GT.10) PT=PT*0.8**(NTRY-10)
-        ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
-          IF(MSTP(93).LE.0) THEN
-            PT=0.
-          ELSEIF(MSTP(93).EQ.1) THEN
-            PT=PARP(99)*SQRT(-LOG(RLU(0)))
-          ELSEIF(MSTP(93).EQ.2) THEN
-            RPT1=RLU(0)
-            RPT2=RLU(0)
-            PT=-PARP(99)*LOG(RPT1*RPT2)
-          ELSEIF(MSTP(93).EQ.3) THEN
-            HA=PARP(99)**2
-            HB=PARP(100)**2
-            PT=SQRT(MAX(0.,HA*(HA+HB)/(HA+HB-RLU(0)*HB)-HA))
-          ELSE
-            HA=PARP(99)**2
-            HB=PARP(100)**2
-            IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
-            PT=SQRT(MAX(0.,HA*((HA+HB)/HA)**RLU(0)-HA))
-          ENDIF
-          IF(PT.GT.PARP(100)) GOTO 120
-        ELSE
-          PT=0.
-        ENDIF
-        VINT(156+JT)=PT
-        PHI=PARU(2)*RLU(0)
-        P(I,1)=PT*COS(PHI)
-        P(I,2)=PT*SIN(PHI)
-        PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
-      ENDIF
-  130 CONTINUE
-      IF(MINT(47).EQ.1) RETURN
-C...Kinematics construction for initial partons.
-      I1=MINT(83)+3
-      I2=MINT(83)+4
-      IF(ISUB.EQ.95) THEN
-        SHS=0.
-        SHR=0.
-      ELSE
-        SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
-     &  (P(I1,2)+P(I2,2))**2
-        SHR=SQRT(MAX(0.,SHS))
-        IF((SHS-PMS(1)-PMS(2))**2-4.*PMS(1)*PMS(2).LE.0.) GOTO 100
-        P(I1,4)=0.5*(SHR+(PMS(1)-PMS(2))/SHR)
-        P(I1,3)=SQRT(MAX(0.,P(I1,4)**2-PMS(1)))
-        P(I2,4)=SHR-P(I1,4)
-        P(I2,3)=-P(I1,3)
-C...Transform partons to overall CM-frame.
-        ROBO(3)=(P(I1,1)+P(I2,1))/SHR
-        ROBO(4)=(P(I1,2)+P(I2,2))/SHR
-        CALL LUDBRB(I1,I2,0.,0.,-DBLE(ROBO(3)),-DBLE(ROBO(4)),0D0)
-        ROBO(2)=ULANGL(P(I1,1),P(I1,2))
-        CALL LUDBRB(I1,I2,0.,-ROBO(2),0D0,0D0,0D0)
-        ROBO(1)=ULANGL(P(I1,3),P(I1,1))
-        CALL LUDBRB(I1,I2,-ROBO(1),0.,0D0,0D0,0D0)
-        CALL LUDBRB(I1,MINT(52),ROBO(1),ROBO(2),DBLE(ROBO(3)),
-     &  DBLE(ROBO(4)),0D0)
-        ROBO(5)=MAX(-0.999999,MIN(0.999999,(VINT(141)-VINT(142))/
-     &  (VINT(141)+VINT(142))))
-        CALL LUDBRB(I1,MINT(52),0.,0.,0D0,0D0,DBLE(ROBO(5)))
-      ENDIF
-C...Optionally fix up x and Q2 definitions for leptoproduction.
-      IDISXQ=0
-      IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
-     &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
-      IF(IDISXQ.EQ.1) THEN
-C...Find where incoming and outgoing leptons/partons are sitting.
-        LESD=1
-        IF(MINT(42).EQ.1) LESD=2
-        LPIN=MINT(83)+3-LESD
-        LEIN=MINT(84)+LESD
-        LQIN=MINT(84)+3-LESD
-        LEOUT=MINT(84)+2+LESD
-        LQOUT=MINT(84)+5-LESD
-        IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
-        IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
-        LSCMS=0
-        DO 140 I=MINT(84)+5,N
-        IF(K(I,2).EQ.94) THEN
-          LSCMS=I
-          LEOUT=I+LESD
-          LQOUT=I+3-LESD
-        ENDIF
-  140   CONTINUE
-        LQBG=IPU1
-        IF(LESD.EQ.1) LQBG=IPU2
-C...Calculate actual and wanted momentum transfer.
-        XNOM=VINT(43-LESD)
-        Q2NOM=-VINT(45)
-        HPK=2.*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
-     &  P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
-     &  (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
-        HPT2=MAX(0.,Q2NOM*(1.-Q2NOM/(XNOM*HPK)))
-        FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
-        P(N+1,1)=FAC*P(LEOUT,1)
-        P(N+1,2)=FAC*P(LEOUT,2)
-        P(N+1,3)=0.25*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
-     &  Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
-        P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
-     &  P(N+1,3)**2)
-        DO 150 J=1,4
-        QOLD(J)=P(LEIN,J)-P(LEOUT,J)
-        QNEW(J)=P(LEIN,J)-P(N+1,J)
-  150   CONTINUE
-C...Boost outgoing electron and daughters.
-        IF(LSCMS.EQ.0) THEN
-          DO 160 J=1,4
-          P(LEOUT,J)=P(N+1,J)
-  160     CONTINUE
-        ELSE
-          DO 170 J=1,3
-          P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
-  170     CONTINUE
-          PINV=2./(1.+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
-          DO 180 J=1,3
-          DBE(J)=PINV*P(N+2,J)
-  180     CONTINUE
-          DO 200 I=LSCMS+1,N
-          IORIG=I
-  190     IORIG=K(IORIG,3)
-          IF(IORIG.GT.LEOUT) GOTO 190
-          IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
-     &    CALL LUDBRB(I,I,0.,0.,DBE(1),DBE(2),DBE(3))
-  200     CONTINUE
-        ENDIF
-C...Copy shower initiator and all outgoing partons.
-        NCOP=N+1
-        K(NCOP,3)=LQBG
-        DO 210 J=1,5
-        P(NCOP,J)=P(LQBG,J)
-  210   CONTINUE
-        DO 240 I=MINT(84)+1,N
-        ICOP=0
-        IF(K(I,1).GT.10) GOTO 240
-        IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
-          ICOP=I
-        ELSE
-          IORIG=I
-  220     IORIG=K(IORIG,3)
-          IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
-            ICOP=IORIG
-          ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
-            GOTO 220
-          ENDIF
-        ENDIF
-        IF(ICOP.NE.0) THEN
-          NCOP=NCOP+1
-          K(NCOP,3)=I
-          DO 230 J=1,5
-          P(NCOP,J)=P(I,J)
-  230     CONTINUE
-        ENDIF
-  240   CONTINUE
-C...Calculate relative rescaling factors.
-        SLC=3-2*LESD
-        PLCSUM=0.
-        DO 250 I=N+2,NCOP
-        PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
-  250   CONTINUE
-        DO 260 I=N+2,NCOP
-        V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
-  260   CONTINUE
-C...Transfer extra three-momentum of current.
-        DO 280 I=N+2,NCOP
-        DO 270 J=1,3
-        P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
-  270   CONTINUE
-        P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
-  280   CONTINUE
-C...Iterate change of initiator momentum to get energy right.
-        ITER=0
-  290   ITER=ITER+1
-        PEEX=-P(N+1,4)-QNEW(4)
-        PEMV=-P(N+1,3)/P(N+1,4)
-        DO 300 I=N+2,NCOP
-        PEEX=PEEX+P(I,4)
-        PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
-  300   CONTINUE
-        IF(ABS(PEMV).LT.1E-10) THEN
-          MINT(51)=1
-          MINT(57)=MINT(57)+1
-          RETURN
-        ENDIF
-        PZCH=-PEEX/PEMV
-        P(N+1,3)=P(N+1,3)+PZCH
-        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)
-        DO 310 I=N+2,NCOP
-        P(I,3)=P(I,3)+V(I,1)*PZCH
-        P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
-  310   CONTINUE
-        IF(ITER.LT.10.AND.ABS(PEEX).GT.1E-6*P(N+1,4)) GOTO 290
-C...Modify momenta in event record.
-        HBE=2.*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
-     &  ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
-        IF(ABS(HBE).GT.0.999999) THEN
-          MINT(51)=1
-          MINT(57)=MINT(57)+1
-          RETURN
-        ENDIF
-        I=MINT(83)+5-LESD
-        CALL LUDBRB(I,I,0.,0.,0D0,0D0,DBLE(HBE))
-        DO 330 I=N+1,NCOP
-        ICOP=K(I,3)
-        DO 320 J=1,4
-        P(ICOP,J)=P(I,J)
-  320   CONTINUE
-  330   CONTINUE
-      ENDIF
-C...Check minimum invariant mass of remnant system(s).
-      PSYS(0,4)=P(I1,4)+P(I2,4)+0.5*VINT(1)*(VINT(151)+VINT(152))
-      PSYS(0,3)=P(I1,3)+P(I2,3)+0.5*VINT(1)*(VINT(151)-VINT(152))
-      PMS(0)=MAX(0.,PSYS(0,4)**2-PSYS(0,3)**2)
-      PMIN(0)=SQRT(PMS(0))
-      DO 340 JT=1,2
-      PSYS(JT,4)=0.5*VINT(1)*VINT(142+JT)
-      PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
-      PMIN(JT)=0.
-      IF(MINT(44+JT).EQ.1) GOTO 340
-      MINT(105)=MINT(102+JT)
-      MINT(109)=MINT(106+JT)
-      CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
-      IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+ULMASS(KFLCH(JT))
-      IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+ULMASS(KFLSP(JT))
-      IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5*PARP(111)
-      PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
-     &P(MINT(83)+JT+2,2)**2)
-  340 CONTINUE
-      IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
-     &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
-     &PSYS(2,4))) THEN
-        MINT(51)=1
-        MINT(57)=MINT(57)+1
-        RETURN
-      ENDIF
-C...Loop over two remnants; skip if none there.
-      I=NS
-      DO 410 JT=1,2
-      ISN(JT)=0
-      IF(MINT(44+JT).EQ.1) GOTO 410
-      IF(JT.EQ.1) IPU=IPU1
-      IF(JT.EQ.2) IPU=IPU2
-C...Store first remnant parton.
-      I=I+1
-      IS(JT)=I
-      ISN(JT)=1
-      DO 350 J=1,5
-      K(I,J)=0
-      P(I,J)=0.
-      V(I,J)=0.
-  350 CONTINUE
-      K(I,1)=1
-      K(I,2)=KFLSP(JT)
-      K(I,3)=MINT(83)+JT
-      P(I,5)=ULMASS(K(I,2))
-C...First parton colour connections and kinematics.
-      KCOL=KCHG(LUCOMP(KFLSP(JT)),2)
-      IF(KCOL.EQ.2) THEN
-        K(I,1)=3
-        K(I,4)=MSTU(5)*IPU+IPU
-        K(I,5)=MSTU(5)*IPU+IPU
-        K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
-        K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
-      ELSEIF(KCOL.NE.0) THEN
-        K(I,1)=3
-        KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
-        K(I,KFLS+3)=IPU
-        K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
-      ENDIF
-      IF(KFLCH(JT).EQ.0) THEN
-        P(I,1)=-P(MINT(83)+JT+2,1)
-        P(I,2)=-P(MINT(83)+JT+2,2)
-        PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
-        PSYS(JT,3)=SQRT(MAX(0.,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
-        P(I,3)=PSYS(JT,3)
-        P(I,4)=PSYS(JT,4)
-C...When extra remnant parton or hadron: store extra remnant.
-      ELSE
-        I=I+1
-        ISN(JT)=2
-        DO 360 J=1,5
-        K(I,J)=0
-        P(I,J)=0.
-        V(I,J)=0.
-  360   CONTINUE
-        K(I,1)=1
-        K(I,2)=KFLCH(JT)
-        K(I,3)=MINT(83)+JT
-        P(I,5)=ULMASS(K(I,2))
-C...Find parton colour connections of extra remnant.
-        KCOL=KCHG(LUCOMP(KFLCH(JT)),2)
-        IF(KCOL.EQ.2) THEN
-          K(I,1)=3
-          K(I,4)=MSTU(5)*IPU+IPU
-          K(I,5)=MSTU(5)*IPU+IPU
-          K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
-          K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
-        ELSEIF(KCOL.NE.0) THEN
-          K(I,1)=3
-          KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
-          K(I,KFLS+3)=IPU
-          K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
-        ENDIF
-C...Relative transverse momentum when two remnants.
-        LOOP=0
-  370   LOOP=LOOP+1
-        CALL LUPTDI(1,P(I-1,1),P(I-1,2))
-        IF(IABS(MINT(10+JT)).LT.20) THEN
-          P(I-1,1)=0.
-          P(I-1,2)=0.
-        ENDIF
-        PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
-        P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
-        P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
-        PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
-C...Meson or baryon; photon as meson. For splitup below.
-        IMB=1
-        IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
-C***Relative distribution for electron into two electrons. Temporary!
-        IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
-     &  THEN
-          CHI(JT)=RLU(0)
-C...Relative distribution of electron energy into electron plus parton.
-        ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
-          XHRD=VINT(140+JT)
-          XE=VINT(154+JT)
-          CHI(JT)=(XE-XHRD)/(1.-XHRD)
-C...Relative distribution of energy for particle into two jets.
-        ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
-          CHIK=PARP(92+2*IMB)
-          IF(MSTP(92).LE.1) THEN
-            IF(IMB.EQ.1) CHI(JT)=RLU(0)
-            IF(IMB.EQ.2) CHI(JT)=1.-SQRT(RLU(0))
-          ELSEIF(MSTP(92).EQ.2) THEN
-            CHI(JT)=1.-RLU(0)**(1./(1.+CHIK))
-          ELSEIF(MSTP(92).EQ.3) THEN
-            CUT=2.*0.3/VINT(1)
-  380       CHI(JT)=RLU(0)**2
-            IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25*(1.-CHI(JT))**CHIK
-     &      .LT.RLU(0)) GOTO 380
-          ELSEIF(MSTP(92).EQ.4) THEN
-            CUT=2.*0.3/VINT(1)
-            CUTR=(1.+SQRT(1.+CUT**2))/CUT
-  390       CHIR=CUT*CUTR**RLU(0)
-            CHI(JT)=(CHIR**2-CUT**2)/(2.*CHIR)
-            IF((1.-CHI(JT))**CHIK.LT.RLU(0)) GOTO 390
-          ELSE
-            CUT=2.*0.3/VINT(1)
-            CUTA=CUT**(1.-PARP(98))
-            CUTB=(1.+CUT)**(1.-PARP(98))
-  400       CHI(JT)=(CUTA+RLU(0)*(CUTB-CUTA))**(1./(1.-PARP(98)))
-            IF(((CHI(JT)+CUT)**2/(2.*(CHI(JT)**2+CUT**2)))**
-     &      (0.5*PARP(98))*(1.-CHI(JT))**CHIK.LT.RLU(0)) GOTO 400
-          ENDIF
-C...Relative distribution of energy for particle into jet plus particle.
-        ELSE
-          IF(MSTP(94).LE.1) THEN
-            IF(IMB.EQ.1) CHI(JT)=RLU(0)
-            IF(IMB.EQ.2) CHI(JT)=1.-SQRT(RLU(0))
-            IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1.-CHI(JT)
-          ELSEIF(MSTP(94).EQ.2) THEN
-            CHI(JT)=1.-RLU(0)**(1./(1.+PARP(93+2*IMB)))
-            IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1.-CHI(JT)
-          ELSEIF(MSTP(94).EQ.3) THEN
-            CALL LUZDIS(1,0,PMS(JT+4),ZZ)
-            CHI(JT)=ZZ
-          ELSE
-            CALL LUZDIS(1000,0,PMS(JT+4),ZZ)
-            CHI(JT)=ZZ
-          ENDIF
-        ENDIF
-C...Construct total transverse mass; reject if too large.
-        PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1.-CHI(JT))
-        IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
-          IF(LOOP.LT.10) THEN
-            GOTO 370
-          ELSE
-            MINT(51)=1
-            MINT(57)=MINT(57)+1
-            RETURN
-          ENDIF
-        ENDIF
-        PSYS(JT,3)=SQRT(MAX(0.,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
-        VINT(158+JT)=CHI(JT)
-C...Subdivide longitudinal momentum according to value selected above.
-        PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
-        P(IS(JT)+1,4)=0.5*(PW1+PMS(JT+4)/PW1)
-        P(IS(JT)+1,3)=0.5*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
-        P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
-        P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
-      ENDIF
-  410 CONTINUE
-      N=I
-C...Check if longitudinal boosts needed - if so pick two systems.
-      PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
-     &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
-      IF(PDEV.LE.1E-6*VINT(1)) RETURN
-      IF(ISN(1).EQ.0) THEN
-        IR=0
-        IL=2
-      ELSEIF(ISN(2).EQ.0) THEN
-        IR=1
-        IL=0
-      ELSEIF(VINT(143).GT.0.2.AND.VINT(144).GT.0.2) THEN
-        IR=1
-        IL=2
-      ELSEIF(VINT(143).GT.0.2) THEN
-        IR=1
-        IL=0
-      ELSEIF(VINT(144).GT.0.2) THEN
-        IR=0
-        IL=2
-      ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
-        IR=1
-        IL=0
-      ELSE
-        IR=0
-        IL=2
-      ENDIF
-      IG=3-IR-IL
-C...E+-pL wanted for system to be modified.
-      IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
-        PPB=VINT(1)
-        PNB=VINT(1)
-      ELSE
-        PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
-        PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
-      ENDIF
-C...To keep x and Q2 in leptoproduction: do not count scattered lepton.
-      IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
-        PMTB=PPB*PNB
-        PMTR=PMS(IR)
-        PMTL=PMS(IL)
-        SQLAM=SQRT(MAX(0.,(PMTB-PMTR-PMTL)**2-4.*PMTR*PMTL))
-        SQSGN=SIGN(1.,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
-        RKR=(PMTB+PMTR-PMTL+SQLAM*SQSGN)/(2.*(PSYS(IR,4)+PSYS(IR,3))
-     &  *PNB)
-        RKL=(PMTB+PMTL-PMTR+SQLAM*SQSGN)/(2.*(PSYS(IL,4)-PSYS(IL,3))
-     &  *PPB)
-        BER=(RKR**2-1.)/(RKR**2+1.)
-        BEL=-(RKL**2-1.)/(RKL**2+1.)
-        PPB=PPB-(PSYS(0,4)+PSYS(0,3))
-        PNB=PNB-(PSYS(0,4)-PSYS(0,3))
-        DO 420 J=1,4
-        PSYS(0,J)=0.
-  420   CONTINUE
-        DO 450 I=MINT(84)+1,NS
-        IF(K(I,1).GT.10) GOTO 450
-        INCL=0
-        IORIG=I
-  430   IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
-        IORIG=K(IORIG,3)
-        IF(IORIG.GT.LPIN) GOTO 430
-        IF(INCL.EQ.0) GOTO 450
-        DO 440 J=1,4
-        PSYS(0,J)=PSYS(0,J)+P(I,J)
-  440   CONTINUE
-  450   CONTINUE
-        PMS(0)=MAX(0.,PSYS(0,4)**2-PSYS(0,3)**2)
-        PPB=PPB+(PSYS(0,4)+PSYS(0,3))
-        PNB=PNB+(PSYS(0,4)-PSYS(0,3))
-      ENDIF
-C...Construct longitudinal boosts.
-      DPMTB=PPB*PNB
-      DPMTR=PMS(IR)
-      DPMTL=PMS(IL)
-      DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
-      IF(DSQLAM.LE.1D-6*DPMTB) THEN
-        MINT(51)=1
-        MINT(57)=MINT(57)+1
-        RETURN
-      ENDIF
-      DSQSGN=SIGN(1D0,DBLE(PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4)))
-      DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
-     &(2.*(PSYS(IR,4)+PSYS(IR,3))*PNB)
-      DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
-     &(2.*(PSYS(IL,4)-PSYS(IL,3))*PPB)
-      DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
-      DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
-C...Perform longitudinal boosts.
-      IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
-        P(IS(1),3)=0.
-        P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
-      ELSEIF(IR.EQ.1) THEN
-        CALL LUDBRB(IS(1),IS(1)+ISN(1)-1,0.,0.,0D0,0D0,DBER)
-      ELSEIF(IDISXQ.EQ.1) THEN
-        DO 470 I=I1,NS
-        INCL=0
-        IORIG=I
-  460   IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
-        IORIG=K(IORIG,3)
-        IF(IORIG.GT.LPIN) GOTO 460
-        IF(INCL.EQ.1) CALL LUDBRB(I,I,0.,0.,0D0,0D0,DBER)
-  470   CONTINUE
-      ELSE
-        CALL LUDBRB(I1,NS,0.,0.,0D0,0D0,DBER)
-      ENDIF
-      IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
-        P(IS(2),3)=0.
-        P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
-      ELSEIF(IL.EQ.2) THEN
-        CALL LUDBRB(IS(2),IS(2)+ISN(2)-1,0.,0.,0D0,0D0,DBEL)
-      ELSEIF(IDISXQ.EQ.1) THEN
-        DO 490 I=I1,NS
-        INCL=0
-        IORIG=I
-  480   IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
-        IORIG=K(IORIG,3)
-        IF(IORIG.GT.LPIN) GOTO 480
-        IF(INCL.EQ.1) CALL LUDBRB(I,I,0.,0.,0D0,0D0,DBEL)
-  490   CONTINUE
-      ELSE
-        CALL LUDBRB(I1,NS,0.,0.,0D0,0D0,DBEL)
-      ENDIF
-C...Final check that energy-momentum conservation worked.
-      PESUM=0.
-      PZSUM=0.
-      DO 500 I=MINT(84)+1,N
-      IF(K(I,1).GT.10) GOTO 500
-      PESUM=PESUM+P(I,4)
-      PZSUM=PZSUM+P(I,3)
-  500 CONTINUE
-      PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
-      IF(PDEV.GT.1E-4*VINT(1)) THEN
-        MINT(51)=1
-        MINT(57)=MINT(57)+1
-        RETURN
-      ENDIF
-C...Calculate rotation and boost from overall CM frame to
-C...hadronic CM frame in leptoproduction.
-      MINT(91)=0
-      IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
-        MINT(91)=1
-        LESD=1
-        IF(MINT(42).EQ.1) LESD=2
-        LPIN=MINT(83)+3-LESD
-C...Sum upp momenta of everything not lepton or photon to define boost.
-        DO 510 J=1,4
-        PSUM(J)=0.
-  510   CONTINUE
-        DO 530 I=1,N
-        IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
-        IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
-        IF(K(I,2).EQ.22) GOTO 530
-        DO 520 J=1,4
-        PSUM(J)=PSUM(J)+P(I,J)
-  520   CONTINUE
-  530   CONTINUE
-        VINT(223)=-PSUM(1)/PSUM(4)
-        VINT(224)=-PSUM(2)/PSUM(4)
-        VINT(225)=-PSUM(3)/PSUM(4)
-C...Boost incoming hadron to hadronic CM frame to determine rotations.
-        K(N+1,1)=1
-        DO 540 J=1,5
-        P(N+1,J)=P(LPIN,J)
-        V(N+1,J)=V(LPIN,J)
-  540   CONTINUE
-        CALL LUDBRB(N+1,N+1,0.,0.,DBLE(VINT(223)),DBLE(VINT(224)),
-     &  DBLE(VINT(225)))
-        VINT(222)=-ULANGL(P(N+1,1),P(N+1,2))
-        CALL LUDBRB(N+1,N+1,0.,VINT(222),0D0,0D0,0D0)
-        IF(LESD.EQ.2) THEN
-          VINT(221)=-ULANGL(P(N+1,3),P(N+1,1))
-        ELSE
-          VINT(221)=ULANGL(-P(N+1,3),P(N+1,1))
-        ENDIF
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyresd.F b/PYTHIA/pythia/pyresd.F
deleted file mode 100644 (file)
index ec7ed2c..0000000
+++ /dev/null
@@ -1,914 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYRESD
-C...Allows resonances to decay (including parton showers for hadronic
-C...channels).
-      IMPLICIT DOUBLE PRECISION(D)
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/
-      DIMENSION IREF(20,8),KDCY(3),KFL1(3),KFL2(3),KEQL(3),NSD(3),
-     &ILIN(6),HGZ(3,3),COUP(6,4),CORL(2,2,2),PK(6,4),PKK(6,6),
-     &CTHE(3),PHI(3),WDTP(0:40),WDTE(0:40,0:5),DBEZQQ(3),DPMO(5)
-      COMPLEX FGK,HA(6,6),HC(6,6)
-C...The F, Xi and Xj functions of Gunion and Kunszt
-C...(Phys. Rev. D33, 665, plus errata from the authors).
-      FGK(I1,I2,I3,I4,I5,I6)=4.*HA(I1,I3)*HC(I2,I6)*(HA(I1,I5)*
-     &HC(I1,I4)+HA(I3,I5)*HC(I3,I4))
-      DIGK(DT,DU)=-4.*D34*D56+DT*(3.*DT+4.*DU)+DT**2*(DT*DU/(D34*D56)-
-     &2.*(1./D34+1./D56)*(DT+DU)+2.*(D34/D56+D56/D34))
-      DJGK(DT,DU)=8.*(D34+D56)**2-8.*(D34+D56)*(DT+DU)-6.*DT*DU-
-     &2.*DT*DU*(DT*DU/(D34*D56)-2.*(1./D34+1./D56)*(DT+DU)+
-     &2.*(D34/D56+D56/D34))
-C...Some general constants.
-      XW=PARU(102)
-      XWV=XW
-      IF(MSTP(8).GE.2) XW=1.-(PMAS(24,1)/PMAS(23,1))**2
-      XW1=1.-XW
-      SQMZ=PMAS(23,1)**2
-      SQMW=PMAS(24,1)**2
-      SH=VINT(44)
-C...Define initial one, two or three objects.
-      ISUB=MINT(1)
-      DO 100 JT=1,8
-      IREF(1,JT)=0
-  100 CONTINUE
-      IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
-        IREF(1,1)=MINT(84)+2+ISET(ISUB)
-        IREF(1,4)=MINT(83)+6+ISET(ISUB)
-      ELSEIF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.4) THEN
-        IREF(1,1)=MINT(84)+1+ISET(ISUB)
-        IREF(1,2)=MINT(84)+2+ISET(ISUB)
-        IREF(1,4)=MINT(83)+5+ISET(ISUB)
-        IREF(1,5)=MINT(83)+6+ISET(ISUB)
-      ELSEIF(ISET(ISUB).EQ.5) THEN
-        IREF(1,1)=MINT(84)+3
-        IREF(1,2)=MINT(84)+4
-        IREF(1,3)=MINT(84)+5
-        IREF(1,4)=MINT(83)+7
-        IREF(1,5)=MINT(83)+8
-        IREF(1,6)=MINT(83)+9
-      ELSEIF(ISET(ISUB).EQ.6) THEN
-        IREF(1,1)=MINT(84)+4
-        IREF(1,2)=MINT(84)+5
-        IREF(1,3)=MINT(84)+3
-        IREF(1,4)=MINT(83)+8
-        IREF(1,5)=MINT(83)+9
-        IREF(1,6)=MINT(83)+7
-      ENDIF
-C...Check if initial resonance has been moved (in resonance + jet).
-      DO 120 JT=1,3
-      IF(IREF(1,JT).GT.0) THEN
-        IF(K(IREF(1,JT),1).GT.10) THEN
-          KFA=IABS(K(IREF(1,JT),2))
-          IF(KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8.OR.KFA.EQ.39) THEN
-            DO 110 I=IREF(1,JT)+1,N
-            IF(K(I,1).LE.10.AND.K(I,2).EQ.K(IREF(1,JT),2)) IREF(1,JT)=I
-  110       CONTINUE
-          ELSE
-            KDA=MOD(K(IREF(1,JT),4),MSTU(4))
-            IF(KFA.GE.23.AND.KFA.LE.40.AND.KDA.GT.1) IREF(1,JT)=KDA
-          ENDIF
-        ENDIF
-      ENDIF
-  120 CONTINUE
-C...Loop over decay history.
-      NP=1
-      IP=0
-  130 IP=IP+1
-      NINH=0
-      JTMAX=2
-      IF(IP.EQ.1.AND.IREF(1,2).EQ.0) JTMAX=1
-      IF(IP.EQ.1.AND.IREF(1,3).NE.0) JTMAX=3
-      ITLH=0
-      NSAV=N
-C...Start treatment of one or two resonances in parallel.
-  140 N=NSAV
-      DO 170 JT=1,JTMAX
-      ID=IREF(IP,JT)
-      KDCY(JT)=0
-      KFL1(JT)=0
-      KFL2(JT)=0
-      KEQL(JT)=0
-      NSD(JT)=ID
-      IF(ID.EQ.0) GOTO 160
-      KFA=IABS(K(ID,2))
-      IF((KFA.LT.23.OR.KFA.GT.40).AND.KFA.NE.6.AND.KFA.NE.7.AND.
-     &KFA.NE.8.AND.KFA.NE.17.AND.KFA.NE.18) GOTO 160
-      IF(MSTP(48).LE.0.AND.KFA.EQ.6) GOTO 160
-      IF(MSTP(6).NE.1.AND.MSTP(49).LE.0.AND.(KFA.EQ.7.OR.KFA.EQ.8.OR.
-     &KFA.EQ.17.OR.KFA.EQ.18)) GOTO 160
-      IF(K(ID,1).GT.10.OR.MDCY(KFA,1).EQ.0) GOTO 160
-      IF(KFA.EQ.6.OR.(MSTP(6).NE.1.AND.(KFA.EQ.7.OR.KFA.EQ.8.OR.
-     &KFA.EQ.17.OR.KFA.EQ.18))) ITLH=ITLH+1
-      K(ID,4)=MSTU(5)*(K(ID,4)/MSTU(5))
-      K(ID,5)=MSTU(5)*(K(ID,5)/MSTU(5))
-C...Select decay channel.
-      KFB=0
-      IF(ISET(ISUB).NE.6.OR.JT.NE.3) THEN
-        IF(ISUB.EQ.1.OR.ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.
-     &  ISUB.EQ.30.OR.ISUB.EQ.35.OR.ISUB.EQ.141) MINT(61)=1
-        CALL PYWIDT(KFA,P(ID,5)**2,WDTP,WDTE)
-        IF(KCHG(KFA,3).EQ.0) THEN
-          IPM=2
-        ELSE
-          IPM=(5-ISIGN(1,K(ID,2)))/2
-        ENDIF
-        IF(JTMAX.GE.2.AND.JT.LE.2) KFB=IABS(K(IREF(IP,3-JT),2))
-        WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
-        IF(KFB.EQ.KFA) WDTE0S=WDTE0S+WDTE(0,5)
-        IF(WDTE0S.LE.0.) THEN
-          IF(KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8.OR.KFA.EQ.17.OR.
-     &    KFA.EQ.18) THEN
-            MINT(51)=1
-            RETURN
-          ELSE
-            GOTO 160
-          ENDIF
-        ENDIF
-        RKFL=WDTE0S*RLU(0)
-        IDL=0
-  150   IDL=IDL+1
-        IDC=IDL+MDCY(KFA,2)-1
-        RKFL=RKFL-(WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4))
-        IF(KFB.EQ.KFA) RKFL=RKFL-WDTE(IDL,5)
-        IF(IDL.LT.MDCY(KFA,3).AND.RKFL.GT.0.) GOTO 150
-      ELSE
-        IDC=MINT(35)
-      ENDIF
-C...Read out and classify decay channel chosen.
-      KFL1(JT)=KFDP(IDC,1)*ISIGN(1,K(ID,2))
-      KFC1A=IABS(KFL1(JT))
-      IF(KFC1A.GT.100) KFC1A=LUCOMP(KFC1A)
-      IF(KCHG(KFC1A,3).EQ.0) KFL1(JT)=IABS(KFL1(JT))
-      KFL2(JT)=KFDP(IDC,2)*ISIGN(1,K(ID,2))
-      KFC2A=IABS(KFL2(JT))
-      IF(KFC2A.GT.100) KFC2A=LUCOMP(KFC2A)
-      IF(KCHG(KFC2A,3).EQ.0) KFL2(JT)=IABS(KFL2(JT))
-      KDCY(JT)=2
-      IF(IABS(KFL1(JT)).LE.10.OR.KFL1(JT).EQ.21) KDCY(JT)=1
-      IF(IABS(KFL1(JT)).GE.23.AND.IABS(KFL1(JT)).LE.40) KDCY(JT)=3
-      IF(KFB.EQ.KFA) KEQL(JT)=MDME(IDC,1)
-      NSD(JT)=N
-      HGZ(JT,1)=VINT(111)
-      HGZ(JT,2)=VINT(112)
-      HGZ(JT,3)=VINT(114)
-C...Select masses and check that mass sum not too large.
-      IF(MSTP(42).LE.0.OR.(PMAS(KFC1A,2).LT.PARP(41).AND.
-     &PMAS(KFC2A,2).LT.PARP(41))) THEN
-        P(N+1,5)=PMAS(KFC1A,1)
-        P(N+2,5)=PMAS(KFC2A,1)
-        IF(P(N+1,5)+P(N+2,5)+PARJ(64).GT.P(ID,5)) THEN
-          CALL LUERRM(13,'(PYRESD:) daughter masses too large')
-          MINT(51)=1
-          RETURN
-        ENDIF
-      ELSEIF(IP.EQ.1) THEN
-        CALL PYOFSH(2,KFA,KFL1(JT),KFL2(JT),P(ID,5),P(N+1,5),P(N+2,5))
-        IF(MINT(51).EQ.1) RETURN
-      ELSE
-        CALL PYOFSH(7,KFA,KFL1(JT),KFL2(JT),P(ID,5),P(N+1,5),P(N+2,5))
-        IF(MINT(51).EQ.1) RETURN
-      ENDIF
-C...Fill decay products, prepared for parton showers for quarks.
-C...Special cases, done by hand, for techni-eta, t, leptoquark and q*.
-      MSTU(10)=1
-      IF(KFA.EQ.38.OR.KFA.EQ.39.OR.((MSTP(6).EQ.1.OR.MSTP(49).GE.1).AND.
-     &(KFA.EQ.7.OR.KFA.EQ.8)).OR.KFA.EQ.6) THEN
-        MSTU(19)=1
-        CALL LU2ENT(N+1,KFL1(JT),KFL2(JT),P(ID,5))
-        ISID=4
-        IF(K(ID,2).LT.0) ISID=5
-        IF(KFA.EQ.38) THEN
-          IF(KFC1A.EQ.21.AND.RLU(0).GT.0.5) ISID=9-ISID
-          K(N-1,1)=3
-          K(N,1)=3
-          K(ID,ISID)=K(ID,ISID)+(N-1)
-          K(ID,9-ISID)=K(ID,9-ISID)+N
-          K(N-1,ISID)=MSTU(5)*ID
-          K(N-1,9-ISID)=MSTU(5)*N
-          K(N,ISID)=MSTU(5)*(N-1)
-          K(N,9-ISID)=MSTU(5)*ID
-        ELSEIF(KFA.EQ.6.OR.(MSTP(6).NE.1.AND.(KFA.EQ.7.OR.KFA.EQ.8)))
-     &  THEN
-          K(N-1,1)=1
-          K(N,1)=3
-          K(ID,ISID)=K(ID,ISID)+N
-          K(N,ISID)=MSTU(5)*ID
-        ELSEIF(KFA.EQ.39) THEN
-          K(N-1,1)=3
-          K(N,1)=1
-          K(ID,ISID)=K(ID,ISID)+(N-1)
-          K(N-1,ISID)=MSTU(5)*ID
-        ELSEIF(KFL1(JT).NE.21) THEN
-          K(N-1,1)=1
-          K(N,1)=3
-          K(ID,ISID)=K(ID,ISID)+N
-          K(N,ISID)=MSTU(5)*ID
-        ELSE
-          K(N-1,1)=3
-          K(N,1)=3
-          K(ID,ISID)=K(ID,ISID)+(N-1)
-          K(N-1,ISID)=MSTU(5)*ID
-          K(N-1,9-ISID)=MSTU(5)*N
-          K(N,ISID)=MSTU(5)*(N-1)
-        ENDIF
-      ELSEIF(KDCY(JT).EQ.1) THEN
-        CALL LU2ENT(-(N+1),KFL1(JT),KFL2(JT),P(ID,5))
-      ELSE
-        CALL LU2ENT(N+1,KFL1(JT),KFL2(JT),P(ID,5))
-      ENDIF
-      MSTU(10)=2
-  160 IF(KFA.GE.23.AND.KFA.LE.40.AND.KFL1(JT).EQ.0) NINH=NINH+1
-  170 CONTINUE
-C...Check for allowed combinations. Skip if no decays.
-      IF(JTMAX.GE.2) THEN
-        IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 140
-        IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 140
-      ENDIF
-      IF(JTMAX.EQ.1.AND.KDCY(1).EQ.0) GOTO 480
-      IF(JTMAX.EQ.2.AND.KDCY(1).EQ.0.AND.KDCY(2).EQ.0) GOTO 480
-      IF(JTMAX.EQ.3.AND.KDCY(1).EQ.0.AND.KDCY(2).EQ.0.AND.
-     &KDCY(3).EQ.0) GOTO 480
-C...Order incoming partons and outgoing resonances.
-      IF(JTMAX.EQ.2.AND.MSTP(47).GE.1.AND.NINH.EQ.0) THEN
-        ILIN(1)=MINT(84)+1
-        IF(K(MINT(84)+1,2).GT.0) ILIN(1)=MINT(84)+2
-        IF(K(ILIN(1),2).EQ.21) ILIN(1)=2*MINT(84)+3-ILIN(1)
-        ILIN(2)=2*MINT(84)+3-ILIN(1)
-        IMIN=1
-        IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
-     &  .EQ.36) IMIN=3
-        IMAX=2
-        IORD=1
-        IF(K(IREF(IP,1),2).EQ.23) IORD=2
-        IF(K(IREF(IP,1),2).EQ.24.AND.K(IREF(IP,2),2).EQ.-24) IORD=2
-        IAKIPD=IABS(K(IREF(IP,IORD),2))
-        IF(IAKIPD.EQ.25.OR.IAKIPD.EQ.35.OR.IAKIPD.EQ.36) IORD=3-IORD
-        IF(KDCY(IORD).EQ.0) IORD=3-IORD
-C...Order decay products of resonances.
-        DO 180 JT=IORD,3-IORD,3-2*IORD
-        IF(KDCY(JT).EQ.0) THEN
-          ILIN(IMAX+1)=NSD(JT)
-          IMAX=IMAX+1
-        ELSEIF(K(NSD(JT)+1,2).GT.0) THEN
-          ILIN(IMAX+1)=N+2*JT-1
-          ILIN(IMAX+2)=N+2*JT
-          IMAX=IMAX+2
-          K(N+2*JT-1,2)=K(NSD(JT)+1,2)
-          K(N+2*JT,2)=K(NSD(JT)+2,2)
-        ELSE
-          ILIN(IMAX+1)=N+2*JT
-          ILIN(IMAX+2)=N+2*JT-1
-          IMAX=IMAX+2
-          K(N+2*JT-1,2)=K(NSD(JT)+1,2)
-          K(N+2*JT,2)=K(NSD(JT)+2,2)
-        ENDIF
-  180   CONTINUE
-C...Find charge, isospin, left- and righthanded couplings.
-        DO 200 I=IMIN,IMAX
-        DO 190 J=1,4
-        COUP(I,J)=0.
-  190   CONTINUE
-        KFA=IABS(K(ILIN(I),2))
-        IF(KFA.EQ.0.OR.KFA.GT.20) GOTO 200
-        COUP(I,1)=KCHG(KFA,1)/3.
-        COUP(I,2)=(-1)**MOD(KFA,2)
-        COUP(I,4)=-2.*COUP(I,1)*XWV
-        COUP(I,3)=COUP(I,2)+COUP(I,4)
-  200   CONTINUE
-C...Full propagator dependence and flavour correlations for 2 gamma*/Z.
-        IF(ISUB.EQ.22) THEN
-          DO 230 I=3,5,2
-          I1=IORD
-          IF(I.EQ.5) I1=3-IORD
-          DO 220 J1=1,2
-          DO 210 J2=1,2
-          CORL(I/2,J1,J2)=COUP(1,1)**2*HGZ(I1,1)*COUP(I,1)**2/16.+
-     &    COUP(1,1)*COUP(1,J1+2)*HGZ(I1,2)*COUP(I,1)*COUP(I,J2+2)/4.+
-     &    COUP(1,J1+2)**2*HGZ(I1,3)*COUP(I,J2+2)**2
-  210     CONTINUE
-  220     CONTINUE
-  230     CONTINUE
-          COWT12=(CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
-     &    (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2))
-          COMX12=(CORL(1,1,1)+CORL(1,1,2)+CORL(1,2,1)+CORL(1,2,2))*
-     &    (CORL(2,1,1)+CORL(2,1,2)+CORL(2,2,1)+CORL(2,2,2))
-          IF(COWT12.LT.RLU(0)*COMX12) GOTO 140
-        ENDIF
-      ENDIF
-C...Select angular orientation type - Z'/W' only.
-      MZPWP=0
-      IF(ISUB.EQ.141) THEN
-        IF(RLU(0).LT.PARU(130)) MZPWP=1
-        IF(IP.EQ.2) THEN
-          IF(IABS(K(IREF(2,1),2)).EQ.37) MZPWP=2
-          IAKIR=IABS(K(IREF(2,2),2))
-          IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
-        ENDIF
-        IF(IP.GE.3) MZPWP=2
-      ELSEIF(ISUB.EQ.142) THEN
-        IF(RLU(0).LT.PARU(136)) MZPWP=1
-        IF(IP.EQ.2) THEN
-          IAKIR=IABS(K(IREF(2,2),2))
-          IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
-        ENDIF
-        IF(IP.GE.3) MZPWP=2
-      ENDIF
-C...Select random angles (begin of weighting procedure).
-  240 DO 250 JT=1,JTMAX
-      IF(KDCY(JT).EQ.0) GOTO 250
-      IF(ISET(ISUB).EQ.6.AND.JT.EQ.3) GOTO 250
-      IF(JTMAX.EQ.1) THEN
-        CTHE(JT)=VINT(13)+(VINT(33)-VINT(13)+VINT(34)-VINT(14))*RLU(0)
-        IF(CTHE(JT).GT.VINT(33)) CTHE(JT)=CTHE(JT)+VINT(14)-VINT(33)
-        PHI(JT)=VINT(24)
-      ELSE
-        CTHE(JT)=2.*RLU(0)-1.
-        PHI(JT)=PARU(2)*RLU(0)
-      ENDIF
-  250 CONTINUE
-      IF(JTMAX.EQ.2.AND.MSTP(47).GE.1.AND.NINH.EQ.0) THEN
-C...Construct massless four-vectors.
-        DO 270 I=N+1,N+4
-        K(I,1)=1
-        DO 260 J=1,5
-        P(I,J)=0.
-        V(I,J)=0.
-  260   CONTINUE
-  270   CONTINUE
-        DO 280 JT=1,JTMAX
-        IF(KDCY(JT).EQ.0) GOTO 280
-        ID=IREF(IP,JT)
-        P(N+2*JT-1,3)=0.5*P(ID,5)
-        P(N+2*JT-1,4)=0.5*P(ID,5)
-        P(N+2*JT,3)=-0.5*P(ID,5)
-        P(N+2*JT,4)=0.5*P(ID,5)
-        CALL LUDBRB(N+2*JT-1,N+2*JT,ACOS(CTHE(JT)),PHI(JT),DBLE(P(ID,1)/
-     &  P(ID,4)),DBLE(P(ID,2)/P(ID,4)),DBLE(P(ID,3)/P(ID,4)))
-  280   CONTINUE
-C...Store incoming and outgoing momenta, with random rotation to
-C...avoid accidental zeroes in HA expressions.
-        DO 300 I=1,IMAX
-        K(N+4+I,1)=1
-        P(N+4+I,4)=SQRT(P(ILIN(I),1)**2+P(ILIN(I),2)**2+P(ILIN(I),3)**2+
-     &  P(ILIN(I),5)**2)
-        P(N+4+I,5)=P(ILIN(I),5)
-        DO 290 J=1,3
-        P(N+4+I,J)=P(ILIN(I),J)
-  290   CONTINUE
-  300   CONTINUE
-  310   THERR=ACOS(2.*RLU(0)-1.)
-        PHIRR=PARU(2)*RLU(0)
-        CALL LUDBRB(N+5,N+4+IMAX,THERR,PHIRR,0D0,0D0,0D0)
-        DO 330 I=1,IMAX
-        IF(P(N+4+I,1)**2+P(N+4+I,2)**2.LT.1E-4*P(N+4+I,4)**2) GOTO 310
-        DO 320 J=1,4
-        PK(I,J)=P(N+4+I,J)
-  320   CONTINUE
-  330   CONTINUE
-C...Calculate internal products.
-        IF(ISUB.EQ.22.OR.ISUB.EQ.23.OR.ISUB.EQ.25.OR.ISUB.EQ.141.OR.
-     &  ISUB.EQ.142) THEN
-          DO 350 I1=IMIN,IMAX-1
-          DO 340 I2=I1+1,IMAX
-          HA(I1,I2)=SQRT((PK(I1,4)-PK(I1,3))*(PK(I2,4)+PK(I2,3))/
-     &    (1E-20+PK(I1,1)**2+PK(I1,2)**2))*CMPLX(PK(I1,1),PK(I1,2))-
-     &    SQRT((PK(I1,4)+PK(I1,3))*(PK(I2,4)-PK(I2,3))/
-     &    (1E-20+PK(I2,1)**2+PK(I2,2)**2))*CMPLX(PK(I2,1),PK(I2,2))
-          HC(I1,I2)=CONJG(HA(I1,I2))
-          IF(I1.LE.2) HA(I1,I2)=CMPLX(0.,1.)*HA(I1,I2)
-          IF(I1.LE.2) HC(I1,I2)=CMPLX(0.,1.)*HC(I1,I2)
-          HA(I2,I1)=-HA(I1,I2)
-          HC(I2,I1)=-HC(I1,I2)
-  340     CONTINUE
-  350     CONTINUE
-        ENDIF
-        DO 370 I=1,2
-        DO 360 J=1,4
-        PK(I,J)=-PK(I,J)
-  360   CONTINUE
-  370   CONTINUE
-        DO 390 I1=IMIN,IMAX-1
-        DO 380 I2=I1+1,IMAX
-        PKK(I1,I2)=2.*(PK(I1,4)*PK(I2,4)-PK(I1,1)*PK(I2,1)-
-     &  PK(I1,2)*PK(I2,2)-PK(I1,3)*PK(I2,3))
-        PKK(I2,I1)=PKK(I1,I2)
-  380   CONTINUE
-  390   CONTINUE
-      ENDIF
-      KFAGM=IABS(IREF(IP,7))
-      IF(MSTP(47).LE.0.OR.NINH.NE.0) THEN
-C...Isotropic decay selected by user.
-        WT=1.
-        WTMAX=1.
-      ELSEIF(ITLH.GE.1) THEN
-C... Isotropic decay t -> b + W etc for 4th generation q and l.
-        WT=1.
-        WTMAX=1.
-      ELSEIF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.
-     &IREF(IP,7).EQ.36) THEN
-C...Angular weight for H0 -> Z0 + Z0 or W+ + W- -> 4 quarks/leptons.
-        WT=16.*PKK(3,5)*PKK(4,6)
-        IF(IP.EQ.1) WTMAX=SH**2
-        IF(IP.GE.2) WTMAX=P(IREF(IP,8),5)**4
-        KFA=IABS(K(IREF(IP,1),2))
-        IF(KFA.NE.23.AND.KFA.NE.24) WT=WTMAX
-      ELSEIF((KFAGM.EQ.6.OR.(MSTP(6).NE.1.AND.(KFAGM.EQ.7.OR.
-     &KFAGM.EQ.8.OR.KFAGM.EQ.17.OR.KFAGM.EQ.18))).AND.
-     &IABS(K(IREF(IP,1),2)).EQ.24) THEN
-C...Angular correlation in f -> f' + W -> f' + 2 quarks/leptons.
-        I1=IREF(IP,8)
-        IF(MOD(KFAGM,2).EQ.0) THEN
-          I2=N+1
-          I3=N+2
-        ELSE
-          I2=N+2
-          I3=N+1
-        ENDIF
-        I4=IREF(IP,2)
-        WT=(P(I1,4)*P(I2,4)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
-     &  P(I1,3)*P(I2,3))*(P(I3,4)*P(I4,4)-P(I3,1)*P(I4,1)-
-     &  P(I3,2)*P(I4,2)-P(I3,3)*P(I4,3))
-        WTMAX=(P(I1,5)**4-P(IREF(IP,1),5)**4)/8.
-        IF(KFAGM.EQ.6.AND.MSTP(48).LE.1) WT=WTMAX
-        IF(KFAGM.NE.6.AND.MSTP(49).LE.1) WT=WTMAX
-      ELSEIF(ISUB.EQ.1) THEN
-C...Angular weight for gamma*/Z0 -> 2 quarks/leptons.
-        EI=KCHG(IABS(MINT(15)),1)/3.
-        AI=SIGN(1.,EI+0.1)
-        VI=AI-4.*EI*XWV
-        EF=KCHG(IABS(KFL1(1)),1)/3.
-        AF=SIGN(1.,EF+0.1)
-        VF=AF-4.*EF*XWV
-        ASYM=2.*(EI*AI*VINT(112)*EF*AF+4.*VI*AI*VINT(114)*VF*AF)/
-     &  (EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
-     &  (VI**2+AI**2)*VINT(114)*(VF**2+AF**2))
-        WT=1.+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
-        WTMAX=2.+ABS(ASYM)
-      ELSEIF(ISUB.EQ.2) THEN
-C...Angular weight for W+/- -> 2 quarks/leptons.
-        WT=(1.+CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2
-        WTMAX=4.
-      ELSEIF(ISUB.EQ.15.OR.ISUB.EQ.19) THEN
-C...Angular weight for f + f~ -> gluon/gamma + (gamma*/Z0) ->
-C...-> gluon/gamma + 2 quarks/leptons.
-        CLILF=COUP(1,1)**2*HGZ(2,1)*COUP(3,1)**2/16.+
-     &  COUP(1,1)*COUP(1,3)*HGZ(2,2)*COUP(3,1)*COUP(3,3)/4.+
-     &  COUP(1,3)**2*HGZ(2,3)*COUP(3,3)**2
-        CLIRF=COUP(1,1)**2*HGZ(2,1)*COUP(3,1)**2/16.+
-     &  COUP(1,1)*COUP(1,3)*HGZ(2,2)*COUP(3,1)*COUP(3,4)/4.+
-     &  COUP(1,3)**2*HGZ(2,3)*COUP(3,4)**2
-        CRILF=COUP(1,1)**2*HGZ(2,1)*COUP(3,1)**2/16.+
-     &  COUP(1,1)*COUP(1,4)*HGZ(2,2)*COUP(3,1)*COUP(3,3)/4.+
-     &  COUP(1,4)**2*HGZ(2,3)*COUP(3,3)**2
-        CRIRF=COUP(1,1)**2*HGZ(2,1)*COUP(3,1)**2/16.+
-     &  COUP(1,1)*COUP(1,4)*HGZ(2,2)*COUP(3,1)*COUP(3,4)/4.+
-     &  COUP(1,4)**2*HGZ(2,3)*COUP(3,4)**2
-        WT=(CLILF+CRIRF)*(PKK(1,3)**2+PKK(2,4)**2)+
-     &  (CLIRF+CRILF)*(PKK(1,4)**2+PKK(2,3)**2)
-        WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
-     &  ((PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2)
-      ELSEIF(ISUB.EQ.16.OR.ISUB.EQ.20) THEN
-C...Angular weight for f + f~' -> gluon/gamma + W+/- ->
-C...-> gluon/gamma + 2 quarks/leptons.
-        WT=PKK(1,3)**2+PKK(2,4)**2
-        WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2
-      ELSEIF(ISUB.EQ.22) THEN
-C...Angular weight for f + f~ -> Z0 + Z0 -> 4 quarks/leptons.
-        S34=P(IREF(IP,IORD),5)**2
-        S56=P(IREF(IP,3-IORD),5)**2
-        TI=PKK(1,3)+PKK(1,4)+S34
-        UI=PKK(1,5)+PKK(1,6)+S56
-        FGK135=ABS(FGK(1,2,3,4,5,6)/TI+FGK(1,2,5,6,3,4)/UI)**2
-        FGK145=ABS(FGK(1,2,4,3,5,6)/TI+FGK(1,2,5,6,4,3)/UI)**2
-        FGK136=ABS(FGK(1,2,3,4,6,5)/TI+FGK(1,2,6,5,3,4)/UI)**2
-        FGK146=ABS(FGK(1,2,4,3,6,5)/TI+FGK(1,2,6,5,4,3)/UI)**2
-        FGK253=ABS(FGK(2,1,5,6,3,4)/TI+FGK(2,1,3,4,5,6)/UI)**2
-        FGK263=ABS(FGK(2,1,6,5,3,4)/TI+FGK(2,1,3,4,6,5)/UI)**2
-        FGK254=ABS(FGK(2,1,5,6,4,3)/TI+FGK(2,1,4,3,5,6)/UI)**2
-        FGK264=ABS(FGK(2,1,6,5,4,3)/TI+FGK(2,1,4,3,6,5)/UI)**2
-        WT=
-     &  CORL(1,1,1)*CORL(2,1,1)*FGK135+CORL(1,1,2)*CORL(2,1,1)*FGK145+
-     &  CORL(1,1,1)*CORL(2,1,2)*FGK136+CORL(1,1,2)*CORL(2,1,2)*FGK146+
-     &  CORL(1,2,1)*CORL(2,2,1)*FGK253+CORL(1,2,2)*CORL(2,2,1)*FGK263+
-     &  CORL(1,2,1)*CORL(2,2,2)*FGK254+CORL(1,2,2)*CORL(2,2,2)*FGK264
-        WTMAX=16.*((CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
-     &  (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2)))*S34*S56*
-     &  ((TI**2+UI**2+2.*SH*(S34+S56))/(TI*UI)-S34*S56*(1./TI**2+
-     &  1./UI**2))
-      ELSEIF(ISUB.EQ.23) THEN
-C...Angular weight for f + f~' -> Z0 + W+/- -> 4 quarks/leptons.
-        D34=P(IREF(IP,IORD),5)**2
-        D56=P(IREF(IP,3-IORD),5)**2
-        DT=PKK(1,3)+PKK(1,4)+D34
-        DU=PKK(1,5)+PKK(1,6)+D56
-        FACBW=1./((SH-SQMW)**2+SQMW*PMAS(24,2)**2)
-        CAWZ=COUP(2,3)/SNGL(DT)-2.*XW1*COUP(1,2)*(SH-SQMW)*FACBW
-        CBWZ=COUP(1,3)/SNGL(DU)+2.*XW1*COUP(1,2)*(SH-SQMW)*FACBW
-        FGK135=ABS(CAWZ*FGK(1,2,3,4,5,6)+CBWZ*FGK(1,2,5,6,3,4))
-        FGK136=ABS(CAWZ*FGK(1,2,3,4,6,5)+CBWZ*FGK(1,2,6,5,3,4))
-        WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
-        WTMAX=4.*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*(CAWZ**2*
-     &  DIGK(DT,DU)+CBWZ**2*DIGK(DU,DT)+CAWZ*CBWZ*DJGK(DT,DU))
-      ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
-C...Angular weight for f + f~ -> Z0 + H0 -> 2 quarks/leptons + H0
-C...(or H'0, or A0).
-        WT=((COUP(1,3)*COUP(3,3))**2+(COUP(1,4)*COUP(3,4))**2)*
-     &  PKK(1,3)*PKK(2,4)+((COUP(1,3)*COUP(3,4))**2+(COUP(1,4)*
-     &  COUP(3,3))**2)*PKK(1,4)*PKK(2,3)
-        WTMAX=(COUP(1,3)**2+COUP(1,4)**2)*(COUP(3,3)**2+COUP(3,4)**2)*
-     &  (PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
-      ELSEIF(ISUB.EQ.25) THEN
-C...Angular weight for f + f~ -> W+ + W- -> 4 quarks/leptons.
-        D34=P(IREF(IP,IORD),5)**2
-        D56=P(IREF(IP,3-IORD),5)**2
-        DT=PKK(1,3)+PKK(1,4)+D34
-        DU=PKK(1,5)+PKK(1,6)+D56
-        FACBW=1./((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
-        CDWW=(COUP(1,3)*SQMZ*(SH-SQMZ)*FACBW+COUP(1,2))/SH
-        CAWW=CDWW+0.5*(COUP(1,2)+1.)/SNGL(DT)
-        CBWW=CDWW+0.5*(COUP(1,2)-1.)/SNGL(DU)
-        CCWW=COUP(1,4)*SQMZ*(SH-SQMZ)*FACBW/SH
-        FGK135=ABS(CAWW*FGK(1,2,3,4,5,6)-CBWW*FGK(1,2,5,6,3,4))
-        FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
-        WT=FGK135**2+(CCWW*FGK253)**2
-        WTMAX=4.*D34*D56*(CAWW**2*DIGK(DT,DU)+CBWW**2*DIGK(DU,DT)-CAWW*
-     &  CBWW*DJGK(DT,DU)+CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU)))
-      ELSEIF(ISUB.EQ.26.OR.ISUB.EQ.172.OR.ISUB.EQ.177) THEN
-C...Angular weight for f + f~' -> W+/- + H0 -> 2 quarks/leptons + H0
-C...(or H'0, or A0).
-        WT=PKK(1,3)*PKK(2,4)
-        WTMAX=(PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
-      ELSEIF(ISUB.EQ.30.OR.ISUB.EQ.35) THEN
-C...Angular weight for f + g/gamma -> f + (gamma*/Z0)
-C...-> f + 2 quarks/leptons.
-        CLILF=COUP(1,1)**2*HGZ(2,1)*COUP(3,1)**2/16.+
-     &  COUP(1,1)*COUP(1,3)*HGZ(2,2)*COUP(3,1)*COUP(3,3)/4.+
-     &  COUP(1,3)**2*HGZ(2,3)*COUP(3,3)**2
-        CLIRF=COUP(1,1)**2*HGZ(2,1)*COUP(3,1)**2/16.+
-     &  COUP(1,1)*COUP(1,3)*HGZ(2,2)*COUP(3,1)*COUP(3,4)/4.+
-     &  COUP(1,3)**2*HGZ(2,3)*COUP(3,4)**2
-        CRILF=COUP(1,1)**2*HGZ(2,1)*COUP(3,1)**2/16.+
-     &  COUP(1,1)*COUP(1,4)*HGZ(2,2)*COUP(3,1)*COUP(3,3)/4.+
-     &  COUP(1,4)**2*HGZ(2,3)*COUP(3,3)**2
-        CRIRF=COUP(1,1)**2*HGZ(2,1)*COUP(3,1)**2/16.+
-     &  COUP(1,1)*COUP(1,4)*HGZ(2,2)*COUP(3,1)*COUP(3,4)/4.+
-     &  COUP(1,4)**2*HGZ(2,3)*COUP(3,4)**2
-        IF(K(ILIN(1),2).GT.0) WT=(CLILF+CRIRF)*(PKK(1,4)**2+
-     &  PKK(3,5)**2)+(CLIRF+CRILF)*(PKK(1,3)**2+PKK(4,5)**2)
-        IF(K(ILIN(1),2).LT.0) WT=(CLILF+CRIRF)*(PKK(1,3)**2+
-     &  PKK(4,5)**2)+(CLIRF+CRILF)*(PKK(1,4)**2+PKK(3,5)**2)
-        WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
-     &  ((PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2)
-      ELSEIF(ISUB.EQ.31) THEN
-C...Angular weight for f + g -> f' + W+/- -> f' + 2 quarks/leptons.
-        IF(K(ILIN(1),2).GT.0) WT=PKK(1,4)**2+PKK(3,5)**2
-        IF(K(ILIN(1),2).LT.0) WT=PKK(1,3)**2+PKK(4,5)**2
-        WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2
-      ELSEIF(ISUB.EQ.71.OR.ISUB.EQ.72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.
-     &ISUB.EQ.77) THEN
-C...Angular weight for V_L1 + V_L2 -> V_L3 + V_L4 (V = Z/W).
-        WT=16.*PKK(3,5)*PKK(4,6)
-        WTMAX=SH**2
-      ELSEIF(ISUB.EQ.110) THEN
-C...Angular weight for f + f~ -> gamma + H0 -> gamma + X is isotropic.
-        WT=1.
-        WTMAX=1.
-      ELSEIF(ISUB.EQ.141) THEN
-        IF(IP.EQ.1.AND.(KDCY(1).EQ.1.OR.KDCY(1).EQ.2)) THEN
-C...Angular weight for f + f~ -> gamma*/Z0/Z'0 -> 2 quarks/leptons.
-C...Couplings of incoming flavour.
-          KFAI=IABS(MINT(15))
-          EI=KCHG(KFAI,1)/3.
-          AI=SIGN(1.,EI+0.1)
-          VI=AI-4.*EI*XWV
-          KFAIC=1
-          IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
-          IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
-          IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
-          VPI=PARU(119+2*KFAIC)
-          API=PARU(120+2*KFAIC)
-C...Couplings of final flavour.
-          KFAF=IABS(KFL1(1))
-          EF=KCHG(KFAF,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-          KFAFC=1
-          IF(KFAF.LE.10.AND.MOD(KFAF,2).EQ.0) KFAFC=2
-          IF(KFAF.GT.10.AND.MOD(KFAF,2).NE.0) KFAFC=3
-          IF(KFAF.GT.10.AND.MOD(KFAF,2).EQ.0) KFAFC=4
-          VPF=PARU(119+2*KFAFC)
-          APF=PARU(120+2*KFAFC)
-C...Asymmetry and weight.
-          ASYM=2.*(EI*AI*VINT(112)*EF*AF+EI*API*VINT(113)*EF*APF+
-     &    4.*VI*AI*VINT(114)*VF*AF+(VI*API+VPI*AI)*VINT(115)*
-     &    (VF*APF+VPF*AF)+4.*VPI*API*VINT(116)*VPF*APF)/
-     &    (EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
-     &    EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
-     &    (VF**2+AF**2)+(VI*VPI+AI*API)*VINT(115)*(VF*VPF+AF*APF)+
-     &    (VPI**2+API**2)*VINT(116)*(VPF**2+APF**2))
-          WT=1.+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
-          WTMAX=2.+ABS(ASYM)
-        ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).EQ.24) THEN
-C...Angular weight for f + f~ -> Z' -> W+ + W-.
-          RM1=P(NSD(1)+1,5)**2/SH
-          RM2=P(NSD(1)+2,5)**2/SH
-          CCOS2=-(1./16.)*((1.-RM1-RM2)**2-4.*RM1*RM2)*
-     &    (1.-2.*RM1-2.*RM2+RM1**2+RM2**2+10.*RM1*RM2)
-          CFLAT=-CCOS2+0.5*(RM1+RM2)*(1.-2.*RM1-2.*RM2+(RM2-RM1)**2)
-          WT=CFLAT+CCOS2*CTHE(1)**2
-          WTMAX=CFLAT+MAX(0.,CCOS2)
-        ELSEIF(IP.EQ.1.AND.(KFL1(1).EQ.25.OR.KFL1(1).EQ.35.OR.
-     &  IABS(KFL1(1)).EQ.37)) THEN
-C...Angular weight for f + f~ -> Z' -> H0 + A0, H'0 + A0, H+ + H-.
-          WT=1.-CTHE(1)**2
-          WTMAX=1.
-        ELSEIF(IP.EQ.1.AND.KDCY(1).EQ.3) THEN
-C...Angular weight for f + f~ -> Z' -> Z0 + H0.
-          RM1=P(NSD(1)+1,5)**2/SH
-          RM2=P(NSD(1)+2,5)**2/SH
-          FLAM2=MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2)
-          WT=1.+FLAM2*(1.-CTHE(1)**2)/(8.*RM1)
-          WTMAX=1.+FLAM2/(8.*RM1)
-        ELSEIF(MZPWP.EQ.0) THEN
-C...Angular weight for f + f~ -> Z' -> W+ + W- -> 4 quarks/leptons
-C...(W:s like if intermediate Z).
-          D34=P(IREF(IP,IORD),5)**2
-          D56=P(IREF(IP,3-IORD),5)**2
-          DT=PKK(1,3)+PKK(1,4)+D34
-          DU=PKK(1,5)+PKK(1,6)+D56
-          FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
-          FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
-          WT=(COUP(1,3)*FGK135)**2+(COUP(1,4)*FGK253)**2
-          WTMAX=4.*D34*D56*(COUP(1,3)**2+COUP(1,4)**2)*
-     &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
-        ELSEIF(MZPWP.EQ.1) THEN
-C...Angular weight for f + f~ -> Z' -> W+ + W- -> 4 quarks/leptons
-C...(W:s approximately longitudinal, like if intermediate H).
-          WT=16.*PKK(3,5)*PKK(4,6)
-          WTMAX=SH**2
-        ELSE
-C...Angular weight for f + f~ -> Z' -> H+ + H-, Z0 + H0, H0 + A0,
-C...H'0 + A0 -> 4 quarks/leptons.
-          WT=1.
-          WTMAX=1.
-        ENDIF
-      ELSEIF(ISUB.EQ.142) THEN
-        IF(IP.EQ.1.AND.(KDCY(1).EQ.1.OR.KDCY(1).EQ.2)) THEN
-C...Angular weight for f + f~' -> W'+/- -> 2 quarks/leptons.
-          KFAI=IABS(MINT(15))
-          KFAIC=1
-          IF(KFAI.GT.10) KFAIC=2
-          VI=PARU(129+2*KFAIC)
-          AI=PARU(130+2*KFAIC)
-          KFAF=IABS(KFL1(1))
-          KFAFC=1
-          IF(KFAF.GT.10) KFAFC=2
-          VF=PARU(129+2*KFAFC)
-          AF=PARU(130+2*KFAFC)
-          ASYM=8.*VI*AI*VF*AF/((VI**2+AI**2)*(VF**2+AF**2))
-          WT=1.+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
-          WTMAX=2.+ABS(ASYM)
-        ELSEIF(IP.EQ.1.AND.IABS(KFL2(1)).EQ.23) THEN
-C...Angular weight for f + f~' -> W'+/- -> W+/- + Z0.
-          RM1=P(NSD(1)+1,5)**2/SH
-          RM2=P(NSD(1)+2,5)**2/SH
-          CCOS2=-(1./16.)*((1.-RM1-RM2)**2-4.*RM1*RM2)*
-     &    (1.-2.*RM1-2.*RM2+RM1**2+RM2**2+10.*RM1*RM2)
-          CFLAT=-CCOS2+0.5*(RM1+RM2)*(1.-2.*RM1-2.*RM2+(RM2-RM1)**2)
-          WT=CFLAT+CCOS2*CTHE(1)**2
-          WTMAX=CFLAT+MAX(0.,CCOS2)
-        ELSEIF(IP.EQ.1.AND.KDCY(1).EQ.3) THEN
-C...Angular weight for f + f~ -> W'+/- -> W+/- + H0.
-          RM1=P(NSD(1)+1,5)**2/SH
-          RM2=P(NSD(1)+2,5)**2/SH
-          FLAM2=MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2)
-          WT=1.+FLAM2*(1.-CTHE(1)**2)/(8.*RM1)
-          WTMAX=1.+FLAM2/(8.*RM1)
-        ELSEIF(MZPWP.EQ.0) THEN
-C...Angular weight for f + f~' -> W' -> W + Z0 -> 4 quarks/leptons
-C...(W/Z like if intermediate W).
-          D34=P(IREF(IP,IORD),5)**2
-          D56=P(IREF(IP,3-IORD),5)**2
-          DT=PKK(1,3)+PKK(1,4)+D34
-          DU=PKK(1,5)+PKK(1,6)+D56
-          FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
-          FGK136=ABS(FGK(1,2,3,4,6,5)-FGK(1,2,6,5,3,4))
-          WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
-          WTMAX=4.*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*
-     &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
-        ELSEIF(MZPWP.EQ.1) THEN
-C...Angular weight for f + f~' -> W' -> W + Z0 -> 4 quarks/leptons
-C...(W/Z approximately longitudinal, like if intermediate H).
-          WT=16.*PKK(3,5)*PKK(4,6)
-          WTMAX=SH**2
-        ELSE
-C...Angular weight for f + f~ -> W' -> W + H0 -> whatever.
-          WT=1.
-          WTMAX=1.
-        ENDIF
-      ELSEIF(ISUB.EQ.145.OR.ISUB.EQ.162.OR.ISUB.EQ.163.OR.ISUB.EQ.164)
-     &THEN
-C...Isotropic decay of leptoquarks (assumed spin 0).
-        WT=1.
-        WTMAX=1.
-      ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
-C...Decays of (spin 1/2) q* -> q + (g,gamma) or (Z0,W+-).
-        SIDE=1.
-        IF(MINT(16).EQ.21) SIDE=-1.
-        IF(IP.EQ.1.AND.(KFL1(1).EQ.21.OR.KFL1(1).EQ.22)) THEN
-          WT=1.+SIDE*CTHE(1)
-          WTMAX=2.
-        ELSEIF(IP.EQ.1) THEN
-          RM1=P(NSD(1)+1,5)**2/SH
-          WT=1.+SIDE*CTHE(1)*(1.-0.5*RM1)/(1.+0.5*RM1)
-          WTMAX=1.+(1.-0.5*RM1)/(1.+0.5*RM1)
-        ELSE
-C...W/Z decay assumed isotropic, since not known.
-          WT=1.
-          WTMAX=1.
-        ENDIF
-      ELSEIF(ISUB.EQ.149) THEN
-C...Isotropic decay of techni-eta.
-        WT=1.
-        WTMAX=1.
-C...Obtain correct angular distribution by rejection techniques.
-      ELSE
-        WT=1.
-        WTMAX=1.
-      ENDIF
-      IF(WT.LT.RLU(0)*WTMAX) GOTO 240
-C...Construct massive four-vectors using angles chosen. Mark decayed
-C...resonances, add documentation lines. Shower evolution.
-  400 DO 470 JT=1,JTMAX
-      IF(KDCY(JT).EQ.0) GOTO 470
-      ID=IREF(IP,JT)
-      IF(ISET(ISUB).NE.6.OR.JT.NE.3) THEN
-        DO 410 J=1,5
-        DPMO(J)=P(ID,J)
-  410   CONTINUE
-        DPMO(4)=SQRT(DPMO(1)**2+DPMO(2)**2+DPMO(3)**2+DPMO(5)**2)
-        CALL LUDBRB(NSD(JT)+1,NSD(JT)+2,ACOS(CTHE(JT)),PHI(JT),
-     &  DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
-      ELSE
-C...Z + q + q~ : angles already known, in rest frame of system.
-        DO 420 J=1,3
-        DBEZQQ(J)=(P(ID,J)+P(ID+1,J)+P(ID+2,J))/(P(ID,4)+P(ID+1,4)+
-     &  P(ID+2,4))
-  420   CONTINUE
-        K(N+1,1)=1
-        DO 430 J=1,5
-        P(N+1,J)=P(ID,J)
-  430   CONTINUE
-        CALL LUDBRB(N+1,N+1,0.,0.,-DBEZQQ(1),-DBEZQQ(2),-DBEZQQ(3))
-        PHIZQQ=ULANGL(P(N+1,1),P(N+1,2))
-        THEZQQ=ULANGL(P(N+1,3),SQRT(P(N+1,1)**2+P(N+1,2)**2))
-        CALL LUDBRB(NSD(JT)+1,NSD(JT)+2,ACOS(VINT(81)),VINT(82),
-     &  0D0,0D0,DBLE(SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)/
-     &  P(N+1,4)))
-        CALL LUDBRB(NSD(JT)+1,NSD(JT)+2,THEZQQ,PHIZQQ,DBEZQQ(1),
-     &  DBEZQQ(2),DBEZQQ(3))
-      ENDIF
-      K(ID,1)=K(ID,1)+10
-      KFA=IABS(K(ID,2))
-      IF(KFA.EQ.38.OR.KFA.EQ.39.OR.((MSTP(6).EQ.1.OR.MSTP(49).GE.1).AND.
-     &(KFA.EQ.7.OR.KFA.EQ.8)).OR.(MSTP(48).GE.1.AND.KFA.EQ.6)) THEN
-C...Do not kill colour flow through techni-eta, t, leptoquark or q*!
-      ELSE
-        K(ID,4)=NSD(JT)+1
-        K(ID,5)=NSD(JT)+2
-      ENDIF
-      IDOC=MINT(83)+MINT(4)
-      DO 450 I=NSD(JT)+1,NSD(JT)+2
-      I1=MINT(83)+MINT(4)+1
-      K(I,3)=I1
-      IF(MSTP(128).GE.1) K(I,3)=ID
-      IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
-        MINT(4)=MINT(4)+1
-        K(I1,1)=21
-        K(I1,2)=K(I,2)
-        K(I1,3)=IREF(IP,JT+3)
-        DO 440 J=1,5
-        P(I1,J)=P(I,J)
-  440   CONTINUE
-      ENDIF
-  450 CONTINUE
-C...Shower - top currently special case.
-      NSHBEF=N
-      IF(MSTP(71).GE.1.AND.(KDCY(JT).LE.2.OR.KFA.EQ.6.OR.KFA.EQ.7.OR.
-     &KFA.EQ.8)) CALL LUSHOW(NSD(JT)+1,NSD(JT)+2,P(ID,5))
-      NSHAFT=N
-C...Check if new resonances were produced.
-      KNSDA1=IABS(K(NSD(JT)+1,2))
-      KNSDA2=IABS(K(NSD(JT)+2,2))
-      IF(KNSDA1.EQ.6.OR.KNSDA2.EQ.6.OR.KNSDA1.EQ.7.OR.KNSDA2.EQ.7.OR.
-     &KNSDA1.EQ.8.OR.KNSDA2.EQ.8) THEN
-        NSD1=0
-        NSD2=0
-        DO 460 I=NSD(JT)+1,N
-        IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD(JT)+1,2)) NSD1=I
-        IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD(JT)+2,2)) NSD2=I
-  460   CONTINUE
-        IF(NSD1.NE.0.AND.NSD2.NE.0) THEN
-          NP=NP+1
-          IREF(NP,1)=NSD1
-          IREF(NP,2)=NSD2
-          IREF(NP,3)=0
-          IREF(NP,4)=IDOC+1
-          IREF(NP,5)=IDOC+2
-          IREF(NP,6)=0
-          IREF(NP,7)=K(IREF(IP,JT),2)
-          IREF(NP,8)=IREF(IP,JT)
-        ENDIF
-      ELSEIF(KDCY(JT).EQ.3.OR.KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8) THEN
-        NP=NP+1
-        IREF(NP,1)=NSD(JT)+1
-        IREF(NP,2)=NSD(JT)+2
-        IF(NSHAFT-NSHBEF.GT.0) THEN
-          IREF(NP,1)=NSHBEF+2
-          IREF(NP,2)=NSHBEF+3
-        ENDIF
-        IREF(NP,3)=0
-        IREF(NP,4)=IDOC+1
-        IREF(NP,5)=IDOC+2
-        IREF(NP,6)=0
-        IREF(NP,7)=K(IREF(IP,JT),2)
-        IREF(NP,8)=IREF(IP,JT)
-      ENDIF
-  470 CONTINUE
-C...Fill information for 2 -> 1 -> 2. Loop back if needed.
-      IF(JTMAX.EQ.1.AND.KDCY(1).NE.0) THEN
-        MINT(7)=MINT(83)+6+2*ISET(ISUB)
-        MINT(8)=MINT(83)+7+2*ISET(ISUB)
-        MINT(25)=KFL1(1)
-        MINT(26)=KFL2(1)
-        VINT(23)=CTHE(1)
-        RM3=P(N-1,5)**2/SH
-        RM4=P(N,5)**2/SH
-        BE34=SQRT(MAX(0.,(1.-RM3-RM4)**2-4.*RM3*RM4))
-        VINT(45)=-0.5*SH*(1.-RM3-RM4-BE34*CTHE(1))
-        VINT(46)=-0.5*SH*(1.-RM3-RM4+BE34*CTHE(1))
-        VINT(48)=0.25*SH*BE34**2*MAX(0.,1.-CTHE(1)**2)
-        VINT(47)=SQRT(VINT(48))
-      ENDIF
-  480 IF(IP.LT.NP) GOTO 130
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pysave.F b/PYTHIA/pythia/pysave.F
deleted file mode 100644 (file)
index 6eab8bb..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSAVE(ISAVE,IGA)
-C...Saves and restores parameter and cross section values for the
-C...3 gamma-p and 6 gamma-gamma alnternatives. Also makes random
-C...choice between alternatives.
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT9/DXSEC(0:200)
-      DOUBLE PRECISION DXSEC
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT9/
-      DIMENSION NCP(10),NSUBCP(10,20),MSUBCP(10,20),COEFCP(10,20,20),
-     &NGENCP(10,0:20,3),XSECCP(10,0:20,3),INTCP(10,20),RECP(10,20)
-      DOUBLE PRECISION DXSECC(10,0:20)
-      SAVE NCP,NSUBCP,MSUBCP,COEFCP,NGENCP,XSECCP,INTCP,RECP,DXSECC
-C...Save list of subprocesses and cross-section information.
-      IF(ISAVE.EQ.1) THEN
-        ICP=0
-        DO 120 I=1,200
-        IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120
-        ICP=ICP+1
-        NSUBCP(IGA,ICP)=I
-        MSUBCP(IGA,ICP)=MSUB(I)
-        DO 100 J=1,20
-        COEFCP(IGA,ICP,J)=COEF(I,J)
-  100   CONTINUE
-        DO 110 J=1,3
-        NGENCP(IGA,ICP,J)=NGEN(I,J)
-        XSECCP(IGA,ICP,J)=XSEC(I,J)
-  110   CONTINUE
-        DXSECC(IGA,ICP)=DXSEC(I)
-  120   CONTINUE
-        NCP(IGA)=ICP
-        DO 130 J=1,3
-        NGENCP(IGA,0,J)=NGEN(0,J)
-        XSECCP(IGA,0,J)=XSEC(0,J)
-  130   CONTINUE
-        DXSECC(IGA,0)=DXSEC(0)
-C...Save various common process variables.
-        DO 140 J=1,10
-        INTCP(IGA,J)=MINT(40+J)
-  140   CONTINUE
-        INTCP(IGA,11)=MINT(101)
-        INTCP(IGA,12)=MINT(102)
-        INTCP(IGA,13)=MINT(107)
-        INTCP(IGA,14)=MINT(108)
-        INTCP(IGA,15)=MINT(123)
-        RECP(IGA,1)=CKIN(3)
-C...Save cross-section information only.
-      ELSEIF(ISAVE.EQ.2) THEN
-        DO 160 ICP=1,NCP(IGA)
-        I=NSUBCP(IGA,ICP)
-        DO 150 J=1,3
-        NGENCP(IGA,ICP,J)=NGEN(I,J)
-        XSECCP(IGA,ICP,J)=XSEC(I,J)
-  150   CONTINUE
-        DXSECC(IGA,ICP)=DXSEC(I)
-  160   CONTINUE
-        DO 170 J=1,3
-        NGENCP(IGA,0,J)=NGEN(0,J)
-        XSECCP(IGA,0,J)=XSEC(0,J)
-  170   CONTINUE
-        DXSECC(IGA,0)=DXSEC(0)
-C...Choose between allowed alternatives.
-      ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN
-        IF(ISAVE.EQ.4) THEN
-          XSUMCP=0.
-          DO 180 IG=1,MINT(121)
-          XSUMCP=XSUMCP+XSECCP(IG,0,1)
-  180     CONTINUE
-          XSUMCP=XSUMCP*RLU(0)
-          DO 190 IG=1,MINT(121)
-          IGA=IG
-          XSUMCP=XSUMCP-XSECCP(IG,0,1)
-          IF(XSUMCP.LE.0.) GOTO 200
-  190     CONTINUE
-  200     CONTINUE
-        ENDIF
-C...Restore cross-section information.
-        DO 210 I=1,200
-        MSUB(I)=0
-  210   CONTINUE
-        DO 240 ICP=1,NCP(IGA)
-        I=NSUBCP(IGA,ICP)
-        MSUB(I)=MSUBCP(IGA,ICP)
-        DO 220 J=1,20
-        COEF(I,J)=COEFCP(IGA,ICP,J)
-  220   CONTINUE
-        DO 230 J=1,3
-        NGEN(I,J)=NGENCP(IGA,ICP,J)
-        XSEC(I,J)=XSECCP(IGA,ICP,J)
-  230   CONTINUE
-        DXSEC(I)=DXSECC(IGA,ICP)
-  240   CONTINUE
-        DO 250 J=1,3
-        NGEN(0,J)=NGENCP(IGA,0,J)
-        XSEC(0,J)=XSECCP(IGA,0,J)
-  250   CONTINUE
-        DXSEC(0)=DXSECC(IGA,0)
-C...Restore various common process variables.
-        DO 260 J=1,10
-        MINT(40+J)=INTCP(IGA,J)
-  260   CONTINUE
-        MINT(101)=INTCP(IGA,11)
-        MINT(102)=INTCP(IGA,12)
-        MINT(107)=INTCP(IGA,13)
-        MINT(108)=INTCP(IGA,14)
-        MINT(123)=INTCP(IGA,15)
-        CKIN(3)=RECP(IGA,1)
-        CKIN(1)=2.*CKIN(3)
-C...Sum up cross-section info (for PYSTAT).
-      ELSEIF(ISAVE.EQ.5) THEN
-        DO 270 I=1,200
-        MSUB(I)=0
-        NGEN(I,1)=0
-        NGEN(I,3)=0
-        XSEC(I,3)=0.
-  270   CONTINUE
-        NGEN(0,1)=0
-        NGEN(0,2)=0
-        NGEN(0,3)=0
-        XSEC(0,3)=0
-        DO 290 IG=1,MINT(121)
-        DO 280 ICP=1,NCP(IG)
-        I=NSUBCP(IG,ICP)
-        IF(MSUBCP(IG,ICP).EQ.1) MSUB(I)=1
-        NGEN(I,1)=NGEN(I,1)+NGENCP(IG,ICP,1)
-        NGEN(I,3)=NGEN(I,3)+NGENCP(IG,ICP,3)
-        XSEC(I,3)=XSEC(I,3)+XSECCP(IG,ICP,3)
-  280   CONTINUE
-        NGEN(0,1)=NGEN(0,1)+NGENCP(IG,0,1)
-        NGEN(0,2)=NGEN(0,2)+NGENCP(IG,0,2)
-        NGEN(0,3)=NGEN(0,3)+NGENCP(IG,0,3)
-        XSEC(0,3)=XSEC(0,3)+XSECCP(IG,0,3)
-  290   CONTINUE
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyscat.F b/PYTHIA/pythia/pyscat.F
deleted file mode 100644 (file)
index ddd939a..0000000
+++ /dev/null
@@ -1,1569 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSCAT
-C...Finds outgoing flavours and event type; sets up the kinematics
-C...and colour flow of the hard scattering.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYUPPR/NUP,KUP(20,7),PUP(20,5),NFUP,IFUP(10,2),Q2UP(0:10)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
-     &/PYINT5/,/PYUPPR/
-      DIMENSION WDTP(0:40),WDTE(0:40,0:5),PMQ(2),Z(2),CTHE(2),PHI(2),
-     &KUPPO(20),VINTSV(41:66)
-      SAVE VINTSV
-C...Read out process.
-      ISUB=MINT(1)
-      ISUBSV=ISUB
-C...Restore information for low-pT processes.
-      IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN
-        DO 100 J=41,66
-  100   VINT(J)=VINTSV(J)
-      ENDIF
-C...Convert H' or A process into equivalent H one.
-      IHIGG=1
-      KFHIGG=25
-      IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
-     &ISUB.LE.190)) THEN
-        IHIGG=2
-        IF(MOD(ISUB-1,10).GE.5) IHIGG=3
-        KFHIGG=33+IHIGG
-        IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
-        IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
-        IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
-        IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
-        IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
-        IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
-        IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
-        IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
-        IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
-      ENDIF
-C...Choice of subprocess, number of documentation lines.
-      IDOC=6+ISET(ISUB)
-      IF(ISUB.EQ.95) IDOC=8
-      IF(ISET(ISUB).EQ.5.OR.ISET(ISUB).EQ.6) IDOC=9
-      IF(ISET(ISUB).EQ.11) IDOC=4+NUP
-      MINT(3)=IDOC-6
-      IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2
-      MINT(4)=IDOC
-      IPU1=MINT(84)+1
-      IPU2=MINT(84)+2
-      IPU3=MINT(84)+3
-      IPU4=MINT(84)+4
-      IPU5=MINT(84)+5
-      IPU6=MINT(84)+6
-C...Reset K, P and V vectors. Store incoming particles.
-      DO 120 JT=1,MSTP(126)+20
-      I=MINT(83)+JT
-      DO 110 J=1,5
-      K(I,J)=0
-      P(I,J)=0.
-      V(I,J)=0.
-  110 CONTINUE
-  120 CONTINUE
-      DO 140 JT=1,2
-      I=MINT(83)+JT
-      K(I,1)=21
-      K(I,2)=MINT(10+JT)
-      DO 130 J=1,5
-      P(I,J)=VINT(285+5*JT+J)
-  130 CONTINUE
-  140 CONTINUE
-      MINT(6)=2
-      KFRES=0
-C...Store incoming partons in their CM-frame.
-      SH=VINT(44)
-      SHR=SQRT(SH)
-      SHP=VINT(26)*VINT(2)
-      SHPR=SQRT(SHP)
-      SHUSER=SHR
-      IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR
-      DO 150 JT=1,2
-      I=MINT(84)+JT
-      K(I,1)=14
-      K(I,2)=MINT(14+JT)
-      K(I,3)=MINT(83)+2+JT
-      P(I,3)=0.5*SHUSER*(-1.)**(JT-1)
-      P(I,4)=0.5*SHUSER
-  150 CONTINUE
-C...Copy incoming partons to documentation lines.
-      DO 170 JT=1,2
-      I1=MINT(83)+4+JT
-      I2=MINT(84)+JT
-      K(I1,1)=21
-      K(I1,2)=K(I2,2)
-      K(I1,3)=I1-2
-      DO 160 J=1,5
-      P(I1,J)=P(I2,J)
-  160 CONTINUE
-  170 CONTINUE
-C...Choose new quark/lepton flavour for relevant annihilation graphs.
-      IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58) THEN
-        IGLGA=21
-        IF(ISUB.EQ.58) IGLGA=22
-        CALL PYWIDT(IGLGA,SH,WDTP,WDTE)
-  180   RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*RLU(0)
-        DO 190 I=1,MDCY(IGLGA,3)
-        KFLF=KFDP(I+MDCY(IGLGA,2)-1,1)
-        RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
-        IF(RKFL.LE.0.) GOTO 200
-  190   CONTINUE
-  200   CONTINUE
-        IF(ISUB.EQ.12.AND.MSTP(5).EQ.1.AND.IABS(MINT(15)).LE.2.AND.
-     &  IABS(KFLF).GE.3) THEN
-          FACQQB=VINT(58)**2*4./9.*(VINT(45)**2+VINT(46)**2)/
-     &    VINT(44)**2
-          FACCIB=VINT(46)**2/PARU(155)**4
-          IF(FACQQB/(FACQQB+FACCIB).LT.RLU(0)) GOTO 180
-        ELSEIF(ISUB.EQ.54) THEN
-          IF((KCHG(IABS(KFLF),1)/2.)**2.LT.RLU(0)) GOTO 180
-        ELSEIF(ISUB.EQ.58) THEN
-          IF((KCHG(IABS(KFLF),1)/3.)**2.LT.RLU(0)) GOTO 180
-        ENDIF
-      ENDIF
-C...Final state flavours and colour flow: default values.
-      JS=1
-      MINT(21)=MINT(15)
-      MINT(22)=MINT(16)
-      MINT(23)=0
-      MINT(24)=0
-      KCC=20
-      KCS=ISIGN(1,MINT(15))
-      IF(ISET(ISUB).EQ.11) THEN
-C...User-defined processes: find products.
-        IRUP=0
-        DO 210 IUP=3,NUP
-        IF(KUP(IUP,1).NE.1) THEN
-        ELSEIF(IRUP.LE.5) THEN
-          IRUP=IRUP+1
-          MINT(20+IRUP)=KUP(IUP,2)
-        ENDIF
-  210   CONTINUE
-      ELSEIF(ISUB.LE.10) THEN
-      IF(ISUB.EQ.1) THEN
-C...f + f~ -> gamma*/Z0.
-        KFRES=23
-      ELSEIF(ISUB.EQ.2) THEN
-C...f + f~' -> W+/- .
-        KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
-        KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
-        KFRES=ISIGN(24,KCH1+KCH2)
-      ELSEIF(ISUB.EQ.3) THEN
-C...f + f~ -> H0 (or H'0, or A0).
-        KFRES=KFHIGG
-      ELSEIF(ISUB.EQ.4) THEN
-C...gamma + W+/- -> W+/-.
-      ELSEIF(ISUB.EQ.5) THEN
-C...Z0 + Z0 -> H0.
-        XH=SH/SHP
-        MINT(21)=MINT(15)
-        MINT(22)=MINT(16)
-        PMQ(1)=ULMASS(MINT(21))
-        PMQ(2)=ULMASS(MINT(22))
-  220   JT=INT(1.5+RLU(0))
-        ZMIN=2.*PMQ(JT)/SHPR
-        ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
-        IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
-     &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 220
-        SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 220
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
-        CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
-        Z(3-JT)=1.-XH/(1.-Z(JT))
-        SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 220
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
-        CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
-        PHIR=PARU(2)*RLU(0)
-        CPHI=COS(PHIR)
-        ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
-        Z1=2.-Z(JT)
-        Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
-        Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
-        Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
-     &  PMQ(3-JT)**2/SHP))
-        ZMIN=2.*PMQ(3-JT)/SHPR
-        ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220
-        KCC=22
-        KFRES=25
-      ELSEIF(ISUB.EQ.6) THEN
-C...Z0 + W+/- -> W+/-.
-      ELSEIF(ISUB.EQ.7) THEN
-C...W+ + W- -> Z0.
-      ELSEIF(ISUB.EQ.8) THEN
-C...W+ + W- -> H0.
-        XH=SH/SHP
-  230   DO 260 JT=1,2
-        I=MINT(14+JT)
-        IA=IABS(I)
-        IF(IA.LE.10) THEN
-          RVCKM=VINT(180+I)*RLU(0)
-          DO 240 J=1,MSTP(1)
-          IB=2*J-1+MOD(IA,2)
-          IPM=(5-ISIGN(1,I))/2
-          IDC=J+MDCY(IA,2)+2
-          IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240
-          MINT(20+JT)=ISIGN(IB,I)
-          RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
-          IF(RVCKM.LE.0.) GOTO 250
-  240     CONTINUE
-        ELSE
-          IB=2*((IA+1)/2)-1+MOD(IA,2)
-          MINT(20+JT)=ISIGN(IB,I)
-        ENDIF
-  250   PMQ(JT)=ULMASS(MINT(20+JT))
-  260   CONTINUE
-        JT=INT(1.5+RLU(0))
-        ZMIN=2.*PMQ(JT)/SHPR
-        ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        IF(ZMIN.GE.ZMAX) GOTO 230
-        Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
-        IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
-     &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 230
-        SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 230
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
-        CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
-        Z(3-JT)=1.-XH/(1.-Z(JT))
-        SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 230
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
-        CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
-        PHIR=PARU(2)*RLU(0)
-        CPHI=COS(PHIR)
-        ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
-        Z1=2.-Z(JT)
-        Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
-        Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
-        Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
-     &  PMQ(3-JT)**2/SHP))
-        ZMIN=2.*PMQ(3-JT)/SHPR
-        ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230
-        KCC=22
-        KFRES=25
-      ELSEIF(ISUB.EQ.10) THEN
-C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2.
-        IF(MINT(2).EQ.1) THEN
-          KCC=22
-        ELSE
-C...W exchange: need to mix flavours according to CKM matrix.
-          DO 280 JT=1,2
-          I=MINT(14+JT)
-          IA=IABS(I)
-          IF(IA.LE.10) THEN
-            RVCKM=VINT(180+I)*RLU(0)
-            DO 270 J=1,MSTP(1)
-            IB=2*J-1+MOD(IA,2)
-            IPM=(5-ISIGN(1,I))/2
-            IDC=J+MDCY(IA,2)+2
-            IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270
-            MINT(20+JT)=ISIGN(IB,I)
-            RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
-            IF(RVCKM.LE.0.) GOTO 280
-  270       CONTINUE
-          ELSE
-            IB=2*((IA+1)/2)-1+MOD(IA,2)
-            MINT(20+JT)=ISIGN(IB,I)
-          ENDIF
-  280     CONTINUE
-          KCC=22
-        ENDIF
-      ENDIF
-      ELSEIF(ISUB.LE.20) THEN
-      IF(ISUB.EQ.11) THEN
-C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2.
-        KCC=MINT(2)
-        IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
-      ELSEIF(ISUB.EQ.12) THEN
-C...f + f~ -> f' + f~'; th = (p(f)-p(f'))**2.
-        MINT(21)=ISIGN(KFLF,MINT(15))
-        MINT(22)=-MINT(21)
-        KCC=4
-      ELSEIF(ISUB.EQ.13) THEN
-C...f + f~ -> g + g; th arbitrary.
-        MINT(21)=21
-        MINT(22)=21
-        KCC=MINT(2)+4
-      ELSEIF(ISUB.EQ.14) THEN
-C...f + f~ -> g + gamma; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(20+JS)=21
-        MINT(23-JS)=22
-        KCC=17+JS
-      ELSEIF(ISUB.EQ.15) THEN
-C...f + f~ -> g + Z0; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(20+JS)=21
-        MINT(23-JS)=23
-        KCC=17+JS
-      ELSEIF(ISUB.EQ.16) THEN
-C...f + f~' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(f~')-p(W+))**2.
-        KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
-        KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
-        IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
-        MINT(20+JS)=21
-        MINT(23-JS)=ISIGN(24,KCH1+KCH2)
-        KCC=17+JS
-      ELSEIF(ISUB.EQ.17) THEN
-C...f + f~ -> g + H0; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(20+JS)=21
-        MINT(23-JS)=25
-        KCC=17+JS
-      ELSEIF(ISUB.EQ.18) THEN
-C...f + f~ -> gamma + gamma; th arbitrary.
-        MINT(21)=22
-        MINT(22)=22
-      ELSEIF(ISUB.EQ.19) THEN
-C...f + f~ -> gamma + Z0; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(20+JS)=22
-        MINT(23-JS)=23
-      ELSEIF(ISUB.EQ.20) THEN
-C...f + f~' -> gamma + W+/-; th = (p(f)-p(W-))**2 or (p(f~')-p(W+))**2.
-        KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
-        KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
-        IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
-        MINT(20+JS)=22
-        MINT(23-JS)=ISIGN(24,KCH1+KCH2)
-      ENDIF
-      ELSEIF(ISUB.LE.30) THEN
-      IF(ISUB.EQ.21) THEN
-C...f + f~ -> gamma + H0; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(20+JS)=22
-        MINT(23-JS)=25
-      ELSEIF(ISUB.EQ.22) THEN
-C...f + f~ -> Z0 + Z0; th arbitrary.
-        MINT(21)=23
-        MINT(22)=23
-      ELSEIF(ISUB.EQ.23) THEN
-C...f + f~' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(f~')-p(W+))**2.
-        KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
-        KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
-        IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
-        MINT(20+JS)=23
-        MINT(23-JS)=ISIGN(24,KCH1+KCH2)
-      ELSEIF(ISUB.EQ.24) THEN
-C...f + f~ -> Z0 + H0 (or H'0, or A0); th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(20+JS)=23
-        MINT(23-JS)=KFHIGG
-      ELSEIF(ISUB.EQ.25) THEN
-C...f + f~ -> W+ + W-; th = (p(f)-p(W-))**2.
-        MINT(21)=-ISIGN(24,MINT(15))
-        MINT(22)=-MINT(21)
-      ELSEIF(ISUB.EQ.26) THEN
-C...f + f~' -> W+/- + H0 (or H'0, or A0);
-C...th = (p(f)-p(W-))**2 or (p(f~')-p(W+))**2.
-        KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
-        KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
-        IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
-        MINT(20+JS)=ISIGN(24,KCH1+KCH2)
-        MINT(23-JS)=KFHIGG
-      ELSEIF(ISUB.EQ.27) THEN
-C...f + f~ -> H0 + H0.
-      ELSEIF(ISUB.EQ.28) THEN
-C...f + g -> f + g; th = (p(f)-p(f))**2.
-        KCC=MINT(2)+6
-        IF(MINT(15).EQ.21) KCC=KCC+2
-        IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
-        IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
-      ELSEIF(ISUB.EQ.29) THEN
-C...f + g -> f + gamma; th = (p(f)-p(f))**2.
-        IF(MINT(15).EQ.21) JS=2
-        MINT(23-JS)=22
-        KCC=15+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.30) THEN
-C...f + g -> f + Z0; th = (p(f)-p(f))**2.
-        IF(MINT(15).EQ.21) JS=2
-        MINT(23-JS)=23
-        KCC=15+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ENDIF
-      ELSEIF(ISUB.LE.40) THEN
-      IF(ISUB.EQ.31) THEN
-C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f'.
-        IF(MINT(15).EQ.21) JS=2
-        I=MINT(14+JS)
-        IA=IABS(I)
-        MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
-        RVCKM=VINT(180+I)*RLU(0)
-        DO 290 J=1,MSTP(1)
-        IB=2*J-1+MOD(IA,2)
-        IPM=(5-ISIGN(1,I))/2
-        IDC=J+MDCY(IA,2)+2
-        IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290
-        MINT(20+JS)=ISIGN(IB,I)
-        RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
-        IF(RVCKM.LE.0.) GOTO 300
-  290   CONTINUE
-  300   KCC=15+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.32) THEN
-C...f + g -> f + H0; th = (p(f)-p(f))**2.
-        IF(MINT(15).EQ.21) JS=2
-        MINT(23-JS)=25
-        KCC=15+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.33) THEN
-C...f + gamma -> f + g; th=(p(f)-p(f))**2.
-        IF(MINT(15).EQ.22) JS=2
-        MINT(23-JS)=21
-        KCC=24+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.34) THEN
-C...f + gamma -> f + gamma; th=(p(f)-p(f))**2.
-        IF(MINT(15).EQ.22) JS=2
-        KCC=22
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.35) THEN
-C...f + gamma -> f + Z0; th=(p(f)-p(f))**2.
-        IF(MINT(15).EQ.22) JS=2
-        MINT(23-JS)=23
-        KCC=22
-      ELSEIF(ISUB.EQ.36) THEN
-C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2.
-        IF(MINT(15).EQ.22) JS=2
-        I=MINT(14+JS)
-        IA=IABS(I)
-        MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
-        IF(IA.LE.10) THEN
-          RVCKM=VINT(180+I)*RLU(0)
-          DO 310 J=1,MSTP(1)
-          IB=2*J-1+MOD(IA,2)
-          IPM=(5-ISIGN(1,I))/2
-          IDC=J+MDCY(IA,2)+2
-          IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310
-          MINT(20+JS)=ISIGN(IB,I)
-          RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
-          IF(RVCKM.LE.0.) GOTO 320
-  310     CONTINUE
-        ELSE
-          IB=2*((IA+1)/2)-1+MOD(IA,2)
-          MINT(20+JS)=ISIGN(IB,I)
-        ENDIF
-  320   KCC=22
-      ELSEIF(ISUB.EQ.37) THEN
-C...f + gamma -> f + H0.
-      ELSEIF(ISUB.EQ.38) THEN
-C...f + Z0 -> f + g.
-      ELSEIF(ISUB.EQ.39) THEN
-C...f + Z0 -> f + gamma.
-      ELSEIF(ISUB.EQ.40) THEN
-C...f + Z0 -> f + Z0.
-      ENDIF
-      ELSEIF(ISUB.LE.50) THEN
-      IF(ISUB.EQ.41) THEN
-C...f + Z0 -> f' + W+/-.
-      ELSEIF(ISUB.EQ.42) THEN
-C...f + Z0 -> f + H0.
-      ELSEIF(ISUB.EQ.43) THEN
-C...f + W+/- -> f' + g.
-      ELSEIF(ISUB.EQ.44) THEN
-C...f + W+/- -> f' + gamma.
-      ELSEIF(ISUB.EQ.45) THEN
-C...f + W+/- -> f' + Z0.
-      ELSEIF(ISUB.EQ.46) THEN
-C...f + W+/- -> f' + W+/-.
-      ELSEIF(ISUB.EQ.47) THEN
-C...f + W+/- -> f' + H0.
-      ELSEIF(ISUB.EQ.48) THEN
-C...f + H0 -> f + g.
-      ELSEIF(ISUB.EQ.49) THEN
-C...f + H0 -> f + gamma.
-      ELSEIF(ISUB.EQ.50) THEN
-C...f + H0 -> f + Z0.
-      ENDIF
-      ELSEIF(ISUB.LE.60) THEN
-      IF(ISUB.EQ.51) THEN
-C...f + H0 -> f' + W+/-.
-      ELSEIF(ISUB.EQ.52) THEN
-C...f + H0 -> f + H0.
-      ELSEIF(ISUB.EQ.53) THEN
-C...g + g -> f + f~; th arbitrary.
-        KCS=(-1)**INT(1.5+RLU(0))
-        MINT(21)=ISIGN(KFLF,KCS)
-        MINT(22)=-MINT(21)
-        KCC=MINT(2)+10
-      ELSEIF(ISUB.EQ.54) THEN
-C...g + gamma -> f + f~; th arbitrary.
-        KCS=(-1)**INT(1.5+RLU(0))
-        MINT(21)=ISIGN(KFLF,KCS)
-        MINT(22)=-MINT(21)
-        KCC=27
-        IF(MINT(16).EQ.21) KCC=28
-      ELSEIF(ISUB.EQ.55) THEN
-C...g + Z0 -> f + f~.
-      ELSEIF(ISUB.EQ.56) THEN
-C...g + W+/- -> f + f~'.
-      ELSEIF(ISUB.EQ.57) THEN
-C...g + H0 -> f + f~.
-      ELSEIF(ISUB.EQ.58) THEN
-C...gamma + gamma -> f + f~; th arbitrary.
-        KCS=(-1)**INT(1.5+RLU(0))
-        MINT(21)=ISIGN(KFLF,KCS)
-        MINT(22)=-MINT(21)
-        KCC=21
-      ELSEIF(ISUB.EQ.59) THEN
-C...gamma + Z0 -> f + f~.
-      ELSEIF(ISUB.EQ.60) THEN
-C...gamma + W+/- -> f + f~'.
-      ENDIF
-      ELSEIF(ISUB.LE.70) THEN
-      IF(ISUB.EQ.61) THEN
-C...gamma + H0 -> f + f~.
-      ELSEIF(ISUB.EQ.62) THEN
-C...Z0 + Z0 -> f + f~.
-      ELSEIF(ISUB.EQ.63) THEN
-C...Z0 + W+/- -> f + f~'.
-      ELSEIF(ISUB.EQ.64) THEN
-C...Z0 + H0 -> f + f~.
-      ELSEIF(ISUB.EQ.65) THEN
-C...W+ + W- -> f + f~.
-      ELSEIF(ISUB.EQ.66) THEN
-C...W+/- + H0 -> f + f~'.
-      ELSEIF(ISUB.EQ.67) THEN
-C...H0 + H0 -> f + f~.
-      ELSEIF(ISUB.EQ.68) THEN
-C...g + g -> g + g; th arbitrary.
-        KCC=MINT(2)+12
-        KCS=(-1)**INT(1.5+RLU(0))
-      ELSEIF(ISUB.EQ.69) THEN
-C...gamma + gamma -> W+ + W-; th arbitrary.
-        MINT(21)=24
-        MINT(22)=-24
-        KCC=21
-      ELSEIF(ISUB.EQ.70) THEN
-C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2.
-        IF(MINT(15).EQ.22) MINT(21)=23
-        IF(MINT(16).EQ.22) MINT(22)=23
-        KCC=21
-      ENDIF
-      ELSEIF(ISUB.LE.80) THEN
-      IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN
-C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W-.
-        XH=SH/SHP
-        MINT(21)=MINT(15)
-        MINT(22)=MINT(16)
-        PMQ(1)=ULMASS(MINT(21))
-        PMQ(2)=ULMASS(MINT(22))
-  330   JT=INT(1.5+RLU(0))
-        ZMIN=2.*PMQ(JT)/SHPR
-        ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
-        IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
-     &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 330
-        SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 330
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
-        CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
-        Z(3-JT)=1.-XH/(1.-Z(JT))
-        SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 330
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
-        CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
-        PHIR=PARU(2)*RLU(0)
-        CPHI=COS(PHIR)
-        ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
-        Z1=2.-Z(JT)
-        Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
-        Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
-        Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
-     &  PMQ(3-JT)**2/SHP))
-        ZMIN=2.*PMQ(3-JT)/SHPR
-        ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330
-        KCC=22
-      ELSEIF(ISUB.EQ.73) THEN
-C...Z0 + W+/- -> Z0 + W+/-.
-        JS=MINT(2)
-        XH=SH/SHP
-  340   JT=3-MINT(2)
-        I=MINT(14+JT)
-        IA=IABS(I)
-        IF(IA.LE.10) THEN
-          RVCKM=VINT(180+I)*RLU(0)
-          DO 350 J=1,MSTP(1)
-          IB=2*J-1+MOD(IA,2)
-          IPM=(5-ISIGN(1,I))/2
-          IDC=J+MDCY(IA,2)+2
-          IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350
-          MINT(20+JT)=ISIGN(IB,I)
-          RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
-          IF(RVCKM.LE.0.) GOTO 360
-  350     CONTINUE
-        ELSE
-          IB=2*((IA+1)/2)-1+MOD(IA,2)
-          MINT(20+JT)=ISIGN(IB,I)
-        ENDIF
-  360   PMQ(JT)=ULMASS(MINT(20+JT))
-        MINT(23-JT)=MINT(17-JT)
-        PMQ(3-JT)=ULMASS(MINT(23-JT))
-        JT=INT(1.5+RLU(0))
-        ZMIN=2.*PMQ(JT)/SHPR
-        ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        IF(ZMIN.GE.ZMAX) GOTO 340
-        Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
-        IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
-     &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 340
-        SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 340
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
-        CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
-        Z(3-JT)=1.-XH/(1.-Z(JT))
-        SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 340
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
-        CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
-        PHIR=PARU(2)*RLU(0)
-        CPHI=COS(PHIR)
-        ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
-        Z1=2.-Z(JT)
-        Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
-        Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
-        Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
-     &  PMQ(3-JT)**2/SHP))
-        ZMIN=2.*PMQ(3-JT)/SHPR
-        ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340
-        KCC=22
-      ELSEIF(ISUB.EQ.74) THEN
-C...Z0 + H0 -> Z0 + H0.
-      ELSEIF(ISUB.EQ.75) THEN
-C...W+ + W- -> gamma + gamma.
-      ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN
-C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W-.
-        XH=SH/SHP
-  370   DO 400 JT=1,2
-        I=MINT(14+JT)
-        IA=IABS(I)
-        IF(IA.LE.10) THEN
-          RVCKM=VINT(180+I)*RLU(0)
-          DO 380 J=1,MSTP(1)
-          IB=2*J-1+MOD(IA,2)
-          IPM=(5-ISIGN(1,I))/2
-          IDC=J+MDCY(IA,2)+2
-          IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380
-          MINT(20+JT)=ISIGN(IB,I)
-          RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
-          IF(RVCKM.LE.0.) GOTO 390
-  380     CONTINUE
-        ELSE
-          IB=2*((IA+1)/2)-1+MOD(IA,2)
-          MINT(20+JT)=ISIGN(IB,I)
-        ENDIF
-  390   PMQ(JT)=ULMASS(MINT(20+JT))
-  400   CONTINUE
-        JT=INT(1.5+RLU(0))
-        ZMIN=2.*PMQ(JT)/SHPR
-        ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        IF(ZMIN.GE.ZMAX) GOTO 370
-        Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
-        IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
-     &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 370
-        SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 370
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
-        CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
-        Z(3-JT)=1.-XH/(1.-Z(JT))
-        SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
-        IF(SQC1.LT.1.E-8) GOTO 370
-        C1=SQRT(SQC1)
-        C2=1.+2.*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
-        CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
-        CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
-        PHIR=PARU(2)*RLU(0)
-        CPHI=COS(PHIR)
-        ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
-        Z1=2.-Z(JT)
-        Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
-        Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
-        Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
-     &  PMQ(3-JT)**2/SHP))
-        ZMIN=2.*PMQ(3-JT)/SHPR
-        ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
-        ZMAX=MIN(1.-XH,ZMAX)
-        IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370
-        KCC=22
-      ELSEIF(ISUB.EQ.78) THEN
-C...W+/- + H0 -> W+/- + H0.
-      ELSEIF(ISUB.EQ.79) THEN
-C...H0 + H0 -> H0 + H0.
-      ELSEIF(ISUB.EQ.80) THEN
-C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2.
-        IF(MINT(15).EQ.22) JS=2
-        I=MINT(14+JS)
-        IA=IABS(I)
-        MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I)
-        IB=3-IA
-        MINT(20+JS)=ISIGN(IB,I)
-        KCC=22
-      ENDIF
-      ELSEIF(ISUB.LE.90) THEN
-      IF(ISUB.EQ.81) THEN
-C...q + q~ -> Q + Q~; th = (p(q)-p(Q))**2.
-        MINT(21)=ISIGN(MINT(55),MINT(15))
-        MINT(22)=-MINT(21)
-        KCC=4
-      ELSEIF(ISUB.EQ.82) THEN
-C...g + g -> Q + Q~; th arbitrary.
-        KCS=(-1)**INT(1.5+RLU(0))
-        MINT(21)=ISIGN(MINT(55),KCS)
-        MINT(22)=-MINT(21)
-        KCC=MINT(2)+10
-      ELSEIF(ISUB.EQ.83) THEN
-C...f + q -> f' + Q; th = (p(f) - p(f'))**2.
-        KFOLD=MINT(16)
-        IF(MINT(2).EQ.2) KFOLD=MINT(15)
-        KFAOLD=IABS(KFOLD)
-        IF(KFAOLD.GT.10) THEN
-          KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1
-        ELSE
-          RCKM=VINT(180+KFOLD)*RLU(0)
-          IPM=(5-ISIGN(1,KFOLD))/2
-          KFANEW=-MOD(KFAOLD+1,2)
-  410     KFANEW=KFANEW+2
-          IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2
-          IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN
-            IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM-VCKM(KFAOLD/2,(KFANEW+1)/2)
-            IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM-VCKM(KFANEW/2,(KFAOLD+1)/2)
-          ENDIF
-          IF(KFANEW.LE.6.AND.RCKM.GT.0.) GOTO 410
-        ENDIF
-        IF(MINT(2).EQ.1) THEN
-          MINT(21)=ISIGN(MINT(55),MINT(15))
-          MINT(22)=ISIGN(KFANEW,MINT(16))
-        ELSE
-          MINT(21)=ISIGN(KFANEW,MINT(15))
-          MINT(22)=ISIGN(MINT(55),MINT(16))
-          JS=2
-        ENDIF
-        KCC=22
-      ELSEIF(ISUB.EQ.84) THEN
-C...g + gamma -> Q + Q~; th arbitary.
-        KCS=(-1)**INT(1.5+RLU(0))
-        MINT(21)=ISIGN(MINT(55),KCS)
-        MINT(22)=-MINT(21)
-        KCC=27
-        IF(MINT(16).EQ.21) KCC=28
-      ELSEIF(ISUB.EQ.85) THEN
-C...gamma + gamma -> F + F~; th arbitary.
-        KCS=(-1)**INT(1.5+RLU(0))
-        MINT(21)=ISIGN(MINT(56),KCS)
-        MINT(22)=-MINT(21)
-        KCC=21
-      ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN
-C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g
-        MINT(21)=KFPR(ISUB,1)
-        MINT(22)=KFPR(ISUB,2)
-        KCC=24
-        KCS=(-1)**INT(1.5+RLU(0))
-      ENDIF
-      ELSEIF(ISUB.LE.100) THEN
-      IF(ISUB.EQ.95) THEN
-C...Low-pT ( = energyless g + g -> g + g).
-        KCC=MINT(2)+12
-        KCS=(-1)**INT(1.5+RLU(0))
-      ELSEIF(ISUB.EQ.96) THEN
-C...Multiple interactions (should be reassigned to QCD process).
-      ENDIF
-      ELSEIF(ISUB.LE.110) THEN
-      IF(ISUB.EQ.101) THEN
-C...g + g -> gamma*/Z0.
-        KCC=21
-        KFRES=22
-      ELSEIF(ISUB.EQ.102) THEN
-C...g + g -> H0 (or H'0, or A0).
-        KCC=21
-        KFRES=KFHIGG
-      ELSEIF(ISUB.EQ.103) THEN
-C...gamma + gamma -> H0 (or H'0, or A0).
-        KCC=21
-        KFRES=KFHIGG
-      ELSEIF(ISUB.EQ.110) THEN
-C...f + f~ -> gamma + H0; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(20+JS)=22
-        MINT(23-JS)=KFHIGG
-      ENDIF
-      ELSEIF(ISUB.LE.120) THEN
-      IF(ISUB.EQ.111) THEN
-C...f + f~ -> g + H0; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(20+JS)=21
-        MINT(23-JS)=25
-        KCC=17+JS
-      ELSEIF(ISUB.EQ.112) THEN
-C...f + g -> f + H0; th = (p(f) - p(f))**2.
-        IF(MINT(15).EQ.21) JS=2
-        MINT(23-JS)=25
-        KCC=15+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.113) THEN
-C...g + g -> g + H0; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(23-JS)=25
-        KCC=22+JS
-        KCS=(-1)**INT(1.5+RLU(0))
-      ELSEIF(ISUB.EQ.114) THEN
-C...g + g -> gamma + gamma; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(21)=22
-        MINT(22)=22
-        KCC=21
-      ELSEIF(ISUB.EQ.115) THEN
-C...g + g -> g + gamma; th arbitrary.
-        IF(RLU(0).GT.0.5) JS=2
-        MINT(23-JS)=22
-        KCC=22+JS
-        KCS=(-1)**INT(1.5+RLU(0))
-      ELSEIF(ISUB.EQ.116) THEN
-C...g + g -> gamma + Z0.
-      ELSEIF(ISUB.EQ.117) THEN
-C...g + g -> Z0 + Z0.
-      ELSEIF(ISUB.EQ.118) THEN
-C...g + g -> W+ + W-.
-      ENDIF
-      ELSEIF(ISUB.LE.140) THEN
-      IF(ISUB.EQ.121) THEN
-C...g + g -> Q + Q~ + H0.
-        KCS=(-1)**INT(1.5+RLU(0))
-        MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
-        MINT(22)=-MINT(21)
-        KCC=11+INT(0.5+RLU(0))
-        KFRES=KFHIGG
-      ELSEIF(ISUB.EQ.122) THEN
-C...q + q~ -> Q + Q~ + H0.
-        MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15))
-        MINT(22)=-MINT(21)
-        KCC=4
-        KFRES=KFHIGG
-      ELSEIF(ISUB.EQ.123) THEN
-C...f + f' -> f + f' + H0 (or H'0, or A0) (Z0 + Z0 -> H0 as
-C...inner process).
-        KCC=22
-        KFRES=KFHIGG
-      ELSEIF(ISUB.EQ.124) THEN
-C...f + f' -> f" + f"' + H0 (or H'0, or A) (W+ + W- -> H0 as
-C...inner process).
-        DO 430 JT=1,2
-        I=MINT(14+JT)
-        IA=IABS(I)
-        IF(IA.LE.10) THEN
-          RVCKM=VINT(180+I)*RLU(0)
-          DO 420 J=1,MSTP(1)
-          IB=2*J-1+MOD(IA,2)
-          IPM=(5-ISIGN(1,I))/2
-          IDC=J+MDCY(IA,2)+2
-          IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420
-          MINT(20+JT)=ISIGN(IB,I)
-          RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
-          IF(RVCKM.LE.0.) GOTO 430
-  420     CONTINUE
-        ELSE
-          IB=2*((IA+1)/2)-1+MOD(IA,2)
-          MINT(20+JT)=ISIGN(IB,I)
-        ENDIF
-  430   CONTINUE
-        KCC=22
-        KFRES=KFHIGG
-      ELSEIF(ISUB.EQ.131) THEN
-C...g + g -> Z0 + q + q~.
-        MINT(21)=KFPR(131,1)
-        MINT(22)=KFPR(131,2)
-        MINT(23)=-MINT(22)
-        KCC=MINT(2)+10
-        KCS=1
-      ENDIF
-      ELSEIF(ISUB.LE.160) THEN
-      IF(ISUB.EQ.141) THEN
-C...f + f~ -> gamma*/Z0/Z'0.
-        KFRES=32
-      ELSEIF(ISUB.EQ.142) THEN
-C...f + f~' -> W'+/- .
-        KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
-        KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
-        KFRES=ISIGN(34,KCH1+KCH2)
-      ELSEIF(ISUB.EQ.143) THEN
-C...f + f~' -> H+/-.
-        KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
-        KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
-        KFRES=ISIGN(37,KCH1+KCH2)
-      ELSEIF(ISUB.EQ.144) THEN
-C...f + f~' -> R.
-        KFRES=ISIGN(40,MINT(15)+MINT(16))
-      ELSEIF(ISUB.EQ.145) THEN
-C...q + l -> LQ (leptoquark).
-        IF(IABS(MINT(16)).LE.8) JS=2
-        KFRES=ISIGN(39,MINT(14+JS))
-        KCC=28+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
-C...q + g -> q* (excited quark).
-        IF(MINT(15).EQ.21) JS=2
-        KFRES=MINT(14+JS)+ISIGN(6,MINT(14+JS))
-        KCC=30+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.149) THEN
-C...g + g -> eta_techni.
-        KFRES=38
-        KCC=23
-        KCS=(-1)**INT(1.5+RLU(0))
-      ENDIF
-      ELSE
-      IF(ISUB.EQ.161) THEN
-C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2.
-        IF(MINT(15).EQ.21) JS=2
-        I=MINT(14+JS)
-        IA=IABS(I)
-        MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I)
-        IB=IA+MOD(IA,2)-MOD(IA+1,2)
-        MINT(20+JS)=ISIGN(IB,I)
-        KCC=15+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.162) THEN
-C...q + g -> LQ + l~; LQ=leptoquark; th=(p(q)-p(LQ))^2.
-        IF(MINT(15).EQ.21) JS=2
-        MINT(20+JS)=ISIGN(39,MINT(14+JS))
-        KFLQL=KFDP(MDCY(39,2),2)
-        MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS))
-        KCC=15+JS
-        KCS=ISIGN(1,MINT(14+JS))
-      ELSEIF(ISUB.EQ.163) THEN
-C...g + g -> LQ + LQ~; LQ=leptoquark; th arbitrary.
-        KCS=(-1)**INT(1.5+RLU(0))
-        MINT(21)=ISIGN(39,KCS)
-        MINT(22)=-MINT(21)
-        KCC=MINT(2)+10
-      ELSEIF(ISUB.EQ.164) THEN
-C...q + q~ -> LQ + LQ~; LQ=leptoquark; th=(p(q)-p(LQ))**2.
-        MINT(21)=ISIGN(39,MINT(15))
-        MINT(22)=-MINT(21)
-        KCC=4
-      ELSEIF(ISUB.EQ.165) THEN
-C...q + q~ -> l- + l+; th=(p(q)-p(l-))**2.
-        MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
-        MINT(22)=-MINT(21)
-      ELSEIF(ISUB.EQ.166) THEN
-C...q + q~' -> l + nu; th=(p(u)-p(nu))**2 or (p(u~)-p(nu~))**2.
-        IF(MOD(MINT(15),2).EQ.0) THEN
-          MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
-          MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
-        ELSE
-          MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
-          MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
-        ENDIF
-      ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
-C...q + q' -> q" + q* (excited quark).
-        KFQEXC=ISUB-166
-        KFQSTR=ISUB-160
-        JS=MINT(2)
-        MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
-        IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC)
-     &  MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
-        KCC=22
-      ENDIF
-      ENDIF
-      IF(ISET(ISUB).EQ.11) THEN
-C...Store documentation for user-defined processes.
-        BEZUP=(PUP(1,4)-PUP(2,4))/(PUP(1,4)+PUP(2,4))
-        KUPPO(1)=MINT(83)+5
-        KUPPO(2)=MINT(83)+6
-        I=MINT(83)+6
-        DO 450 IUP=3,NUP
-        KUPPO(IUP)=0
-        IF(MSTP(128).GE.2.AND.KUP(IUP,3).NE.0) THEN
-          IDOC=IDOC-1
-          MINT(4)=MINT(4)-1
-          GOTO 450
-        ENDIF
-        I=I+1
-        KUPPO(IUP)=I
-        K(I,1)=21
-        K(I,2)=KUP(IUP,2)
-        K(I,3)=0
-        IF(KUP(IUP,3).NE.0) K(I,3)=KUPPO(KUP(IUP,3))
-        K(I,4)=0
-        K(I,5)=0
-        DO 440 J=1,5
-        P(I,J)=PUP(IUP,J)
-  440   CONTINUE
-  450   CONTINUE
-        CALL LUDBRB(MINT(83)+7,MINT(83)+4+NUP,0.,VINT(24),0D0,0D0,
-     &  -DBLE(BEZUP))
-C...Store final state partons for user-defined processes.
-        N=IPU2
-        DO 470 IUP=3,NUP
-        N=N+1
-        K(N,1)=1
-        IF(KUP(IUP,1).NE.1) K(N,1)=11
-        K(N,2)=KUP(IUP,2)
-        IF(MSTP(128).LE.0.OR.KUP(IUP,3).EQ.0) THEN
-          K(N,3)=KUPPO(IUP)
-        ELSE
-          K(N,3)=MINT(84)+KUP(IUP,3)
-        ENDIF
-        K(N,4)=0
-        K(N,5)=0
-        DO 460 J=1,5
-        P(N,J)=PUP(IUP,J)
-  460   CONTINUE
-  470   CONTINUE
-        CALL LUDBRB(IPU3,N,0.,VINT(24),0D0,0D0,-DBLE(BEZUP))
-C...Arrange colour flow for user-defined processes.
-        N=MINT(84)
-        DO 480 IUP=1,NUP
-        N=N+1
-        IF(KCHG(LUCOMP(K(N,2)),2).EQ.0) GOTO 480
-        IF(K(N,1).EQ.1) K(N,1)=3
-        IF(K(N,1).EQ.11) K(N,1)=14
-        IF(KUP(IUP,4).NE.0) K(N,4)=K(N,4)+MSTU(5)*(KUP(IUP,4)+MINT(84))
-        IF(KUP(IUP,5).NE.0) K(N,5)=K(N,5)+MSTU(5)*(KUP(IUP,5)+MINT(84))
-        IF(KUP(IUP,6).NE.0) K(N,4)=K(N,4)+KUP(IUP,6)+MINT(84)
-        IF(KUP(IUP,7).NE.0) K(N,5)=K(N,5)+KUP(IUP,7)+MINT(84)
-  480   CONTINUE
-      ELSEIF(IDOC.EQ.7) THEN
-C...Resonance not decaying; store kinematics.
-        I=MINT(83)+7
-        K(IPU3,1)=1
-        K(IPU3,2)=KFRES
-        K(IPU3,3)=I
-        P(IPU3,4)=SHUSER
-        P(IPU3,5)=SHUSER
-        K(I,1)=21
-        K(I,2)=KFRES
-        P(I,4)=SHUSER
-        P(I,5)=SHUSER
-        N=IPU3
-        MINT(21)=KFRES
-        MINT(22)=0
-C...Special cases: colour flow in g + g -> eta_techni, q + l -> LQ
-C...and q + g -> q*.
-        IF(KFRES.EQ.38.OR.IABS(KFRES).EQ.39.OR.(MSTP(6).EQ.1.AND.
-     &  (IABS(KFRES).EQ.7.OR.IABS(KFRES).EQ.8))) THEN
-          K(IPU3,1)=3
-          DO 490 J=1,2
-          JC=J
-          IF(KCS.EQ.-1) JC=3-J
-          IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
-     &    MINT(84)+ICOL(KCC,1,JC)
-          IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
-     &    MINT(84)+ICOL(KCC,2,JC)
-          IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
-     &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
-  490     CONTINUE
-        ELSE
-          K(IPU1,4)=IPU2
-          K(IPU1,5)=IPU2
-          K(IPU2,4)=IPU1
-          K(IPU2,5)=IPU1
-        ENDIF
-      ELSEIF(IDOC.EQ.8) THEN
-C...2 -> 2 processes: store outgoing partons in their CM-frame.
-        DO 500 JT=1,2
-        I=MINT(84)+2+JT
-        K(I,1)=1
-        IF(IABS(MINT(20+JT)).LE.100) THEN
-          IF(KCHG(IABS(MINT(20+JT)),2).NE.0) K(I,1)=3
-        ENDIF
-        K(I,2)=MINT(20+JT)
-        K(I,3)=MINT(83)+IDOC+JT-2
-        KFAA=IABS(K(I,2))
-        IF(KFAA.GE.23.OR.(KFAA.EQ.6.AND.KFPR(ISUBSV,1).NE.0.AND.
-     &  MSTP(48).GE.1).OR.((KFAA.EQ.7.OR.KFAA.EQ.8.OR.KFAA.EQ.17.OR.
-     &  KFAA.EQ.18).AND.KFPR(ISUBSV,1).NE.0.AND.MSTP(49).GE.1)) THEN
-          P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
-        ELSEIF((KFAA.EQ.7.OR.KFAA.EQ.8).AND.MSTP(6).EQ.1.AND.
-     &  KFPR(ISUBSV,2).NE.0) THEN
-          P(I,5)=SQRT(VINT(64))
-        ELSE
-          P(I,5)=ULMASS(K(I,2))
-        ENDIF
-  500   CONTINUE
-        IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN
-          KFA1=IABS(MINT(21))
-          KFA2=IABS(MINT(22))
-          IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21))
-     &    THEN
-            MINT(51)=1
-            RETURN
-          ENDIF
-          P(IPU3,5)=0.
-          P(IPU4,5)=0.
-        ENDIF
-        P(IPU3,4)=0.5*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR)
-        P(IPU3,3)=SQRT(MAX(0.,P(IPU3,4)**2-P(IPU3,5)**2))
-        P(IPU4,4)=SHR-P(IPU3,4)
-        P(IPU4,3)=-P(IPU3,3)
-        N=IPU4
-        MINT(7)=MINT(83)+7
-        MINT(8)=MINT(83)+8
-C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4).
-        CALL LUDBRB(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
-      ELSEIF(IDOC.EQ.9.AND.ISET(ISUB).EQ.5) THEN
-C...2 -> 3 processes (alt 1): store outgoing partons in their CM frame.
-        DO 510 JT=1,2
-        I=MINT(84)+2+JT
-        K(I,1)=1
-        IF(IABS(MINT(20+JT)).LE.100) THEN
-          IF(KCHG(IABS(MINT(20+JT)),2).NE.0) K(I,1)=3
-        ENDIF
-        K(I,2)=MINT(20+JT)
-        K(I,3)=MINT(83)+IDOC+JT-3
-        IF(IABS(K(I,2)).LE.22) THEN
-          P(I,5)=ULMASS(K(I,2))
-        ELSE
-          P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
-        ENDIF
-        PT=SQRT(MAX(0.,VINT(197+5*JT)-P(I,5)**2+VINT(196+5*JT)**2))
-        P(I,1)=PT*COS(VINT(198+5*JT))
-        P(I,2)=PT*SIN(VINT(198+5*JT))
-  510   CONTINUE
-        K(IPU5,1)=1
-        K(IPU5,2)=KFRES
-        K(IPU5,3)=MINT(83)+IDOC
-        P(IPU5,5)=SHR
-        P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
-        P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
-        PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
-        PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2
-        PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2
-        PMT3=SQRT(PMS3)
-        P(IPU5,3)=PMT3*SINH(VINT(211))
-        P(IPU5,4)=PMT3*COSH(VINT(211))
-        PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2
-        SQL12=(PMS12-PMS1-PMS2)**2-4.*PMS1*PMS2
-        IF(SQL12.LE.0.) THEN
-          MINT(51)=1
-          RETURN
-        ENDIF
-        P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+
-     &  VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2.*PMS12)
-        P(IPU4,3)=-P(IPU3,3)-P(IPU5,3)
-        P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2)
-        P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2)
-        MINT(23)=KFRES
-        N=IPU5
-        MINT(7)=MINT(83)+7
-        MINT(8)=MINT(83)+8
-      ELSEIF(IDOC.EQ.9) THEN
-C...2 -> 3 processes: store outgoing partons in their CM frame.
-        DO 520 JT=1,3
-        I=MINT(84)+2+JT
-        K(I,1)=1
-        IF(IABS(MINT(20+JT)).LE.10.OR.MINT(20+JT).EQ.21) K(I,1)=3
-        K(I,2)=MINT(20+JT)
-        K(I,3)=MINT(83)+IDOC+JT-3
-        IF(JT.EQ.1) THEN
-          P(I,5)=SQRT(VINT(63))
-        ELSE
-          P(I,5)=PMAS(KFPR(ISUB,2),1)
-        ENDIF
-  520   CONTINUE
-        P(IPU3,4)=0.5*(SHR+(VINT(63)-VINT(64))/SHR)
-        P(IPU3,3)=SQRT(MAX(0.,P(IPU3,4)**2-P(IPU3,5)**2))
-        P(IPU4,4)=0.5*SQRT(VINT(64))
-        P(IPU4,3)=SQRT(MAX(0.,P(IPU4,4)**2-P(IPU4,5)**2))
-        P(IPU5,4)=P(IPU4,4)
-        P(IPU5,3)=-P(IPU4,3)
-        N=IPU5
-        MINT(7)=MINT(83)+7
-        MINT(8)=MINT(83)+9
-C...Rotate and boost outgoing partons.
-        CALL LUDBRB(IPU4,IPU5,ACOS(VINT(83)),VINT(84),0D0,0D0,0D0)
-        CALL LUDBRB(IPU4,IPU5,0.,0.,0D0,0D0,
-     &  -DBLE(P(IPU3,3)/(SHR-P(IPU3,4))))
-        CALL LUDBRB(IPU3,IPU5,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
-      ELSEIF(IDOC.EQ.11) THEN
-C...Z0 + Z0 -> H0, W+ + W- -> H0: store Higgs and outgoing partons.
-        PHI(1)=PARU(2)*RLU(0)
-        PHI(2)=PHI(1)-PHIR
-        DO 530 JT=1,2
-        I=MINT(84)+2+JT
-        K(I,1)=1
-        IF(IABS(MINT(20+JT)).LE.10.OR.MINT(20+JT).EQ.21) K(I,1)=3
-        K(I,2)=MINT(20+JT)
-        K(I,3)=MINT(83)+IDOC+JT-2
-        P(I,5)=ULMASS(K(I,2))
-        IF(0.5*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0.
-        PABS=SQRT(MAX(0.,(0.5*SHPR*Z(JT))**2-P(I,5)**2))
-        PTABS=PABS*SQRT(MAX(0.,1.-CTHE(JT)**2))
-        P(I,1)=PTABS*COS(PHI(JT))
-        P(I,2)=PTABS*SIN(PHI(JT))
-        P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
-        P(I,4)=0.5*SHPR*Z(JT)
-        IZW=MINT(83)+6+JT
-        K(IZW,1)=21
-        K(IZW,2)=23
-        IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,LUCHGE(MINT(14+JT)))
-        K(IZW,3)=IZW-2
-        P(IZW,1)=-P(I,1)
-        P(IZW,2)=-P(I,2)
-        P(IZW,3)=(0.5*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
-        P(IZW,4)=0.5*SHPR*(1.-Z(JT))
-        P(IZW,5)=-SQRT(MAX(0.,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
-  530   CONTINUE
-        I=MINT(83)+9
-        K(IPU5,1)=1
-        K(IPU5,2)=KFRES
-        K(IPU5,3)=I
-        P(IPU5,5)=SHR
-        P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
-        P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
-        P(IPU5,3)=-P(IPU3,3)-P(IPU4,3)
-        P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4)
-        K(I,1)=21
-        K(I,2)=KFRES
-        DO 540 J=1,5
-        P(I,J)=P(IPU5,J)
-  540   CONTINUE
-        N=IPU5
-        MINT(23)=KFRES
-      ELSEIF(IDOC.EQ.12) THEN
-C...Z0 and W+/- scattering: store bosons and outgoing partons.
-        PHI(1)=PARU(2)*RLU(0)
-        PHI(2)=PHI(1)-PHIR
-        JTRAN=INT(1.5+RLU(0))
-        DO 550 JT=1,2
-        I=MINT(84)+2+JT
-        K(I,1)=1
-        IF(IABS(MINT(20+JT)).LE.10.OR.MINT(20+JT).EQ.21) K(I,1)=3
-        K(I,2)=MINT(20+JT)
-        K(I,3)=MINT(83)+IDOC+JT-2
-        P(I,5)=ULMASS(K(I,2))
-        IF(0.5*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0.
-        PABS=SQRT(MAX(0.,(0.5*SHPR*Z(JT))**2-P(I,5)**2))
-        PTABS=PABS*SQRT(MAX(0.,1.-CTHE(JT)**2))
-        P(I,1)=PTABS*COS(PHI(JT))
-        P(I,2)=PTABS*SIN(PHI(JT))
-        P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
-        P(I,4)=0.5*SHPR*Z(JT)
-        IZW=MINT(83)+6+JT
-        K(IZW,1)=21
-        IF(MINT(14+JT).EQ.MINT(20+JT)) THEN
-          K(IZW,2)=23
-        ELSE
-          K(IZW,2)=ISIGN(24,LUCHGE(MINT(14+JT))-LUCHGE(MINT(20+JT)))
-        ENDIF
-        K(IZW,3)=IZW-2
-        P(IZW,1)=-P(I,1)
-        P(IZW,2)=-P(I,2)
-        P(IZW,3)=(0.5*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
-        P(IZW,4)=0.5*SHPR*(1.-Z(JT))
-        P(IZW,5)=-SQRT(MAX(0.,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
-        IPU=MINT(84)+4+JT
-        K(IPU,1)=3
-        K(IPU,2)=KFPR(ISUB,JT)
-        IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2)
-        IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2)
-        K(IPU,3)=MINT(83)+8+JT
-        IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN
-          P(IPU,5)=ULMASS(K(IPU,2))
-        ELSE
-          P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2)))
-        ENDIF
-        MINT(22+JT)=K(IPU,2)
-  550   CONTINUE
-C...Find rotation and boost for hard scattering subsystem.
-        I1=MINT(83)+7
-        I2=MINT(83)+8
-        BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4))
-        BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4))
-        BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4))
-        GAMCM=(P(I1,4)+P(I2,4))/SHR
-        BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3)
-        PX=P(I1,1)+GAMCM*(GAMCM/(1.+GAMCM)*BEPCM-P(I1,4))*BEXCM
-        PY=P(I1,2)+GAMCM*(GAMCM/(1.+GAMCM)*BEPCM-P(I1,4))*BEYCM
-        PZ=P(I1,3)+GAMCM*(GAMCM/(1.+GAMCM)*BEPCM-P(I1,4))*BEZCM
-        THECM=ULANGL(PZ,SQRT(PX**2+PY**2))
-        PHICM=ULANGL(PX,PY)
-C...Store hard scattering subsystem. Rotate and boost it.
-        SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4.*P(IPU5,5)**2*
-     &  P(IPU6,5)**2
-        PABS=SQRT(MAX(0.,SQLAM/(4.*SH)))
-        CTHWZ=VINT(23)
-        STHWZ=SQRT(MAX(0.,1.-CTHWZ**2))
-        PHIWZ=VINT(24)-PHICM
-        P(IPU5,1)=PABS*STHWZ*COS(PHIWZ)
-        P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ)
-        P(IPU5,3)=PABS*CTHWZ
-        P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2)
-        P(IPU6,1)=-P(IPU5,1)
-        P(IPU6,2)=-P(IPU5,2)
-        P(IPU6,3)=-P(IPU5,3)
-        P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2)
-        CALL LUDBRB(IPU5,IPU6,THECM,PHICM,DBLE(BEXCM),DBLE(BEYCM),
-     &  DBLE(BEZCM))
-        DO 570 JT=1,2
-        I1=MINT(83)+8+JT
-        I2=MINT(84)+4+JT
-        K(I1,1)=21
-        K(I1,2)=K(I2,2)
-        DO 560 J=1,5
-        P(I1,J)=P(I2,J)
-  560   CONTINUE
-  570   CONTINUE
-        N=IPU6
-        MINT(7)=MINT(83)+9
-        MINT(8)=MINT(83)+10
-      ENDIF
-      IF(ISET(ISUB).EQ.11) THEN
-      ELSEIF(IDOC.GE.8.AND.ISET(ISUB).NE.6) THEN
-C...Store colour connection indices.
-        DO 580 J=1,2
-        JC=J
-        IF(KCS.EQ.-1) JC=3-J
-        IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
-     &  K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)
-        IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
-     &  K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)
-        IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
-     &  MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
-        IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
-     &  MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
-  580   CONTINUE
-C...Copy outgoing partons to documentation lines.
-        IMAX=2
-        IF(IDOC.EQ.9) IMAX=3
-        DO 600 I=1,IMAX
-        I1=MINT(83)+IDOC-IMAX+I
-        I2=MINT(84)+2+I
-        K(I1,1)=21
-        K(I1,2)=K(I2,2)
-        IF(IDOC.LE.9) K(I1,3)=0
-        IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I
-        DO 590 J=1,5
-        P(I1,J)=P(I2,J)
-  590   CONTINUE
-  600   CONTINUE
-      ELSEIF(IDOC.EQ.9) THEN
-C...Store colour connection indices.
-        DO 610 J=1,2
-        JC=J
-        IF(KCS.EQ.-1) JC=3-J
-        IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
-     &  K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+
-     &  MAX(0,MIN(1,ICOL(KCC,1,JC)-2))
-        IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
-     &  K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+
-     &  MAX(0,MIN(1,ICOL(KCC,2,JC)-2))
-        IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
-     &  MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
-        IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)=
-     &  MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
-  610   CONTINUE
-C...Copy outgoing partons to documentation lines.
-        DO 630 I=1,3
-        I1=MINT(83)+IDOC-3+I
-        I2=MINT(84)+2+I
-        K(I1,1)=21
-        K(I1,2)=K(I2,2)
-        K(I1,3)=0
-        DO 620 J=1,5
-        P(I1,J)=P(I2,J)
-  620   CONTINUE
-  630   CONTINUE
-      ENDIF
-C...Low-pT events: remove gluons used for string drawing purposes.
-      IF(ISUB.EQ.95) THEN
-        K(IPU3,1)=K(IPU3,1)+10
-        K(IPU4,1)=K(IPU4,1)+10
-        DO 640 J=41,66
-        VINTSV(J)=VINT(J)
-        VINT(J)=0.
-  640   CONTINUE
-        DO 660 I=MINT(83)+5,MINT(83)+8
-        DO 650 J=1,5
-        P(I,J)=0.
-  650   CONTINUE
-  660   CONTINUE
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pysigh.F b/PYTHIA/pythia/pysigh.F
deleted file mode 100644 (file)
index 3b18da5..0000000
+++ /dev/null
@@ -1,3747 +0,0 @@
-C***********************************************************************
-      SUBROUTINE PYSIGH(NCHN,SIGS)
-C...Differential matrix elements for all included subprocesses.
-C...Note that what is coded is (disregarding the COMFAC factor)
-C...1) for 2 -> 1 processes: s-hat/pi*d(sigma-hat), where,
-C...when d(sigma-hat) is given in the zero-width limit, the delta
-C...function in tau is replaced by a (modified) Breit-Wigner:
-C...1/pi*s*H_res/((s*tau-m_res^2)^2+H_res^2),
-C...where H_res = s-hat/m_res*Gamma_res(s-hat);
-C...2) for 2 -> 2 processes: (s-hat)**2/pi*d(sigma-hat)/d(t-hat);
-C...i.e., dimensionless quantities.
-C...3) for 2 -> 3 processes: abs(M)^2, where the total cross-section is
-C...Integral abs(M)^2/(2shat') * (prod_(i=1)^3 d^3p_i/((2pi)^3*2E_i)) *
-C...(2pi)^4 delta^4(P - sum p_i).
-C...COMFAC contains the factor pi/s (or equivalent) and
-C...the conversion factor from GeV^-2 to mb.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT7/SIGT(0:6,0:6,0:5)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
-     &/PYINT5/,/PYINT7/
-      DIMENSION X(2),XPQ(-25:25),KFAC(2,-40:40),WDTP(0:40),
-     &WDTE(0:40,0:5),HGZ(6,3),HL3(3),HR3(3),HL4(3),HR4(3)
-      COMPLEX A004,A204,A114,A00U,A20U,A11U
-      COMPLEX CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF,
-     &COULCK,COULCP,COULCD,COULCR,COULCS
-C...The following gives an interface for process 131, gg -> Zqq,
-C...to the matrix element package of Ronald Kleiss.
-      COMMON/RKBBVC/RKMQ,RKMZ,RKGZ,RKVQ,RKAQ,RKVL,RKAL
-      SAVE /RKBBVC/
-      DIMENSION RKG1(0:3),RKG2(0:3),RKQ1(0:3),RKQ2(0:3),RKL1(0:3),
-     &RKL2(0:3)
-C...Reset number of channels and cross-section.
-      NCHN=0
-      SIGS=0.
-C...Convert H' or A process into equivalent H one.
-      ISUB=MINT(1)
-      ISUBSV=ISUB
-      IHIGG=1
-      KFHIGG=25
-      IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
-     &ISUB.LE.190)) THEN
-        IHIGG=2
-        IF(MOD(ISUB-1,10).GE.5) IHIGG=3
-        KFHIGG=33+IHIGG
-        IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
-        IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
-        IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
-        IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
-        IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
-        IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
-        IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
-        IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
-        IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
-      ENDIF
-C...Read kinematical variables and limits.
-      ISTSB=ISET(ISUBSV)
-      TAUMIN=VINT(11)
-      YSTMIN=VINT(12)
-      CTNMIN=VINT(13)
-      CTPMIN=VINT(14)
-      TAUPMN=VINT(16)
-      TAU=VINT(21)
-      YST=VINT(22)
-      CTH=VINT(23)
-      XT2=VINT(25)
-      TAUP=VINT(26)
-      TAUMAX=VINT(31)
-      YSTMAX=VINT(32)
-      CTNMAX=VINT(33)
-      CTPMAX=VINT(34)
-      TAUPMX=VINT(36)
-C...Derive kinematical quantities.
-      TAUE=TAU
-      IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
-      X(1)=SQRT(TAUE)*EXP(YST)
-      X(2)=SQRT(TAUE)*EXP(-YST)
-      IF(MINT(45).EQ.2.AND.ISTSB.GE.1) THEN
-        IF(X(1).GT.0.9999) RETURN
-      ELSEIF(MINT(45).EQ.3) THEN
-        X(1)=MIN(0.9999989,X(1))
-      ENDIF
-      IF(MINT(46).EQ.2.AND.ISTSB.GE.1) THEN
-        IF(X(2).GT.0.9999) RETURN
-      ELSEIF(MINT(46).EQ.3) THEN
-        X(2)=MIN(0.9999989,X(2))
-      ENDIF
-      SH=TAU*VINT(2)
-      SQM3=VINT(63)
-      SQM4=VINT(64)
-      RM3=SQM3/SH
-      RM4=SQM4/SH
-      BE34=SQRT(MAX(0.,(1.-RM3-RM4)**2-4.*RM3*RM4))
-      RPTS=4.*VINT(71)**2/SH
-      BE34L=SQRT(MAX(0.,(1.-RM3-RM4)**2-4.*RM3*RM4-RPTS))
-      RM34=MAX(1E-20,2.*RM3*RM4)
-      RSQM=1.+RM34
-      IF(2.*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001) RM34=MAX(RM34,
-     &2.*VINT(71)**2/(VINT(21)*VINT(2)))
-      RTHM=(4.*RM3*RM4+RPTS)/(1.-RM3-RM4+BE34L)
-      IF(ISTSB.EQ.0) THEN
-        TH=VINT(45)
-        UH=-0.5*SH*MAX(RTHM,1.-RM3-RM4+BE34*CTH)
-        SQPTH=MAX(VINT(71)**2,0.25*SH*BE34**2*VINT(59)**2)
-      ELSE
-        TH=-0.5*SH*MAX(RTHM,1.-RM3-RM4-BE34*CTH)
-        UH=-0.5*SH*MAX(RTHM,1.-RM3-RM4+BE34*CTH)
-        SQPTH=MAX(VINT(71)**2,0.25*SH*BE34**2*(1.-CTH**2))
-      ENDIF
-      SH2=SH**2
-      TH2=TH**2
-      UH2=UH**2
-C...Choice of Q2 scale: hard, structure functions, parton showers.
-      IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
-        Q2=SH
-      ELSEIF(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9) THEN
-        IF(MSTP(32).EQ.1) THEN
-          Q2=2.*SH*TH*UH/(SH**2+TH**2+UH**2)
-        ELSEIF(MSTP(32).EQ.2) THEN
-          Q2=SQPTH+0.5*(SQM3+SQM4)
-        ELSEIF(MSTP(32).EQ.3) THEN
-          Q2=MIN(-TH,-UH)
-        ELSEIF(MSTP(32).EQ.4) THEN
-          Q2=SH
-        ELSEIF(MSTP(32).EQ.5) THEN
-          Q2=-TH
-        ENDIF
-        IF(ISTSB.EQ.9) Q2=SQPTH
-        IF((ISTSB.EQ.9.AND.MSTP(82).GE.2).OR.(ISTSB.NE.9.AND.
-     &  MSTP(85).EQ.1)) Q2=Q2+PARP(82)**2
-      ENDIF
-      Q2SF=Q2
-      IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
-        Q2SF=PMAS(23,1)**2
-        IF(ISUB.EQ.8.OR.ISUB.EQ.76.OR.ISUB.EQ.77.OR.ISUB.EQ.124)
-     &  Q2SF=PMAS(24,1)**2
-        IF(ISUB.EQ.121.OR.ISUB.EQ.122) THEN
-          Q2SF=PMAS(KFPR(ISUBSV,2),1)**2
-          IF(MSTP(39).EQ.2) Q2SF=Q2SF+MAX(VINT(202),VINT(207))
-          IF(MSTP(39).EQ.3) Q2SF=SH
-          IF(MSTP(39).EQ.4) Q2SF=VINT(26)*VINT(2)
-        ENDIF
-      ENDIF
-      Q2PS=Q2SF
-      Q2SF=Q2SF*PARP(34)
-      IF(MSTP(22).GE.1.AND.(ISUB.EQ.10.OR.ISUB.EQ.83).AND.
-     &(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
-        XBJ=X(2)
-        IF(MINT(43).EQ.3) XBJ=X(1)
-        IF(MSTP(22).EQ.1) THEN
-          Q2PS=-TH
-        ELSEIF(MSTP(22).EQ.2) THEN
-          Q2PS=((1.-XBJ)/XBJ)*(-TH)
-        ELSEIF(MSTP(22).EQ.3) THEN
-          Q2PS=SQRT((1.-XBJ)/XBJ)*(-TH)
-        ELSE
-          Q2PS=(1.-XBJ)*MAX(1.,-LOG(XBJ))*(-TH)
-        ENDIF
-      ENDIF
-C...Store derived kinematical quantities.
-      VINT(41)=X(1)
-      VINT(42)=X(2)
-      VINT(44)=SH
-      VINT(43)=SQRT(SH)
-      VINT(45)=TH
-      VINT(46)=UH
-      VINT(48)=SQPTH
-      VINT(47)=SQRT(SQPTH)
-      VINT(50)=TAUP*VINT(2)
-      VINT(49)=SQRT(MAX(0.,VINT(50)))
-      VINT(52)=Q2
-      VINT(51)=SQRT(Q2)
-      VINT(54)=Q2SF
-      VINT(53)=SQRT(Q2SF)
-      VINT(56)=Q2PS
-      VINT(55)=SQRT(Q2PS)
-C...Calculate parton structure functions.
-      IF(ISTSB.LE.0) GOTO 160
-      IF(MINT(47).GE.2) THEN
-        DO 110 I=3-MIN(2,MINT(45)),MIN(2,MINT(46))
-        XSF=X(I)
-        IF(ISTSB.EQ.9) XSF=X(I)/VINT(142+I)
-        MINT(105)=MINT(102+I)
-        MINT(109)=MINT(106+I)
-        IF(MSTP(57).LE.1) THEN
-          CALL PYSTFU(MINT(10+I),XSF,Q2SF,XPQ)
-        ELSE
-          CALL PYSTFL(MINT(10+I),XSF,Q2SF,XPQ)
-        ENDIF
-        DO 100 KFL=-25,25
-        XSFX(I,KFL)=XPQ(KFL)
-  100   CONTINUE
-  110   CONTINUE
-      ENDIF
-C...Calculate alpha_em, alpha_strong and K-factor.
-      XW=PARU(102)
-      XWV=XW
-      IF(MSTP(8).GE.2.OR.(ISUB.GE.71.AND.ISUB.LE.77)) XW=
-     &1.-(PMAS(24,1)/PMAS(23,1))**2
-      XW1=1.-XW
-      XWC=1./(16.*XW*XW1)
-      AEM=ULALEM(Q2)
-      IF(MSTP(8).GE.1) AEM=SQRT(2.)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
-      IF(MSTP(33).NE.3) AS=ULALPS(PARP(34)*Q2)
-      FACK=1.
-      FACA=1.
-      IF(MSTP(33).EQ.1) THEN
-        FACK=PARP(31)
-      ELSEIF(MSTP(33).EQ.2) THEN
-        FACK=PARP(31)
-        FACA=PARP(32)/PARP(31)
-      ELSEIF(MSTP(33).EQ.3) THEN
-        Q2AS=PARP(33)*Q2
-        IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2AS=Q2AS+
-     &  PARU(112)*PARP(82)
-        AS=ULALPS(Q2AS)
-      ENDIF
-      VINT(138)=1.
-      VINT(57)=AEM
-      VINT(58)=AS
-C...Set flags for allowed reacting partons/leptons.
-      DO 140 I=1,2
-      DO 120 J=-25,25
-      KFAC(I,J)=0
-  120 CONTINUE
-      IF(MINT(44+I).EQ.1) THEN
-        KFAC(I,MINT(10+I))=1
-      ELSEIF(MINT(40+I).EQ.1.AND.MSTP(12).EQ.0) THEN
-        KFAC(I,MINT(10+I))=1
-        KFAC(I,22)=1
-        KFAC(I,24)=1
-        KFAC(I,-24)=1
-      ELSE
-        DO 130 J=-25,25
-        KFAC(I,J)=KFIN(I,J)
-        IF(IABS(J).GT.MSTP(58).AND.IABS(J).LE.10) KFAC(I,J)=0
-        IF(XSFX(I,J).LT.1E-10) KFAC(I,J)=0
-  130   CONTINUE
-      ENDIF
-  140 CONTINUE
-C...Lower and upper limit for fermion flavour loops.
-      MMIN1=0
-      MMAX1=0
-      MMIN2=0
-      MMAX2=0
-      DO 150 J=-20,20
-      IF(KFAC(1,-J).EQ.1) MMIN1=-J
-      IF(KFAC(1,J).EQ.1) MMAX1=J
-      IF(KFAC(2,-J).EQ.1) MMIN2=-J
-      IF(KFAC(2,J).EQ.1) MMAX2=J
-  150 CONTINUE
-      MMINA=MIN(MMIN1,MMIN2)
-      MMAXA=MAX(MMAX1,MMAX2)
-C...Common conversion factors (including Jacobian) for subprocesses.
-      SQMZ=PMAS(23,1)**2
-      SQMW=PMAS(24,1)**2
-      SQMH=PMAS(KFHIGG,1)**2
-      GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2)
-      SQMZP=PMAS(32,1)**2
-      SQMWP=PMAS(34,1)**2
-      SQMHC=PMAS(37,1)**2
-      SQMLQ=PMAS(39,1)**2
-      SQMR=PMAS(40,1)**2
-C...Phase space integral in tau.
-      COMFAC=PARU(1)*PARU(5)/VINT(2)
-      IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) COMFAC=COMFAC*FACK
-      IF((MINT(47).GE.2.OR.(ISTSB.GE.3.AND.ISTSB.LE.5)).AND.
-     &ISTSB.NE.9) THEN
-        ATAU1=LOG(TAUMAX/TAUMIN)
-        ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
-        H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/TAU
-        IF(MINT(72).GE.1) THEN
-          TAUR1=VINT(73)
-          GAMR1=VINT(74)
-          ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))
-          ATAU3=ATAUD/TAUR1
-          IF(ATAUD.GT.1E-6) H1=H1+
-     &    (ATAU1/ATAU3)*COEF(ISUBSV,3)/(TAU+TAUR1)
-          ATAUD=ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1)
-          ATAU4=ATAUD/GAMR1
-          IF(ATAUD.GT.1E-6) H1=H1+
-     &    (ATAU1/ATAU4)*COEF(ISUBSV,4)*TAU/((TAU-TAUR1)**2+GAMR1**2)
-        ENDIF
-        IF(MINT(72).EQ.2) THEN
-          TAUR2=VINT(75)
-          GAMR2=VINT(76)
-          ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))
-          ATAU5=ATAUD/TAUR2
-          IF(ATAUD.GT.1E-6) H1=H1+
-     &    (ATAU1/ATAU5)*COEF(ISUBSV,5)/(TAU+TAUR2)
-          ATAUD=ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2)
-          ATAU6=ATAUD/GAMR2
-          IF(ATAUD.GT.1E-6) H1=H1+
-     &    (ATAU1/ATAU6)*COEF(ISUBSV,6)*TAU/((TAU-TAUR2)**2+GAMR2**2)
-        ENDIF
-        IF(MINT(47).EQ.5.AND.(ISTSB.LE.2.OR.ISTSB.GE.6)) THEN
-          ATAU7=LOG(MAX(2E-6,1.-TAUMIN)/MAX(2E-6,1.-TAUMAX))
-          IF(ATAU7.GT.1E-6) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
-     &    MAX(2E-6,1.-TAU)
-        ENDIF
-        COMFAC=COMFAC*ATAU1/(TAU*H1)
-      ENDIF
-C...Phase space integral in y*.
-      IF(MINT(47).GE.4.AND.ISTSB.NE.9) THEN
-        AYST0=YSTMAX-YSTMIN
-        IF(AYST0.LT.1E-6) THEN
-          COMFAC=0.
-        ELSE
-          AYST1=0.5*(YSTMAX-YSTMIN)**2
-          AYST2=AYST1
-          AYST3=2.*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
-          H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
-     &    (AYST0/AYST2)*COEF(ISUBSV,9)*(YSTMAX-YST)+
-     &    (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
-          IF(MINT(45).EQ.3) THEN
-            YST0=-0.5*LOG(TAUE)
-            AYST4=LOG(MAX(1E-6,EXP(YST0-YSTMIN)-1.)/
-     &      MAX(1E-6,EXP(YST0-YSTMAX)-1.))
-            IF(AYST4.GT.1E-6) H2=H2+(AYST0/AYST4)*COEF(ISUBSV,11)/
-     &      MAX(1E-6,1.-EXP(YST-YST0))
-          ENDIF
-          IF(MINT(46).EQ.3) THEN
-            YST0=-0.5*LOG(TAUE)
-            AYST5=LOG(MAX(1E-6,EXP(YST0+YSTMAX)-1.)/
-     &      MAX(1E-6,EXP(YST0+YSTMIN)-1.))
-            IF(AYST5.GT.1E-6) H2=H2+(AYST0/AYST5)*COEF(ISUBSV,12)/
-     &      MAX(1E-6,1.-EXP(-YST-YST0))
-          ENDIF
-          COMFAC=COMFAC*AYST0/H2
-        ENDIF
-      ENDIF
-C...2 -> 1 processes: reduction in angular part of phase space integral
-C...for case of decaying resonance.
-      ACTH0=CTNMAX-CTNMIN+CTPMAX-CTPMIN
-      IF((ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5)) THEN
-        IF(MDCY(KFPR(ISUBSV,1),1).EQ.1) THEN
-          IF(KFPR(ISUB,1).EQ.25.OR.KFPR(ISUB,1).EQ.37.OR.
-     &    KFPR(ISUB,1).EQ.39) THEN
-            COMFAC=COMFAC*0.5*ACTH0
-          ELSE
-            COMFAC=COMFAC*0.125*(3.*ACTH0+CTNMAX**3-CTNMIN**3+
-     &      CTPMAX**3-CTPMIN**3)
-          ENDIF
-        ENDIF
-C...2 -> 2 processes: angular part of phase space integral.
-      ELSEIF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) THEN
-        ACTH1=LOG((MAX(RM34,RSQM-CTNMIN)*MAX(RM34,RSQM-CTPMIN))/
-     &  (MAX(RM34,RSQM-CTNMAX)*MAX(RM34,RSQM-CTPMAX)))
-        ACTH2=LOG((MAX(RM34,RSQM+CTNMAX)*MAX(RM34,RSQM+CTPMAX))/
-     &  (MAX(RM34,RSQM+CTNMIN)*MAX(RM34,RSQM+CTPMIN)))
-        ACTH3=1./MAX(RM34,RSQM-CTNMAX)-1./MAX(RM34,RSQM-CTNMIN)+
-     &  1./MAX(RM34,RSQM-CTPMAX)-1./MAX(RM34,RSQM-CTPMIN)
-        ACTH4=1./MAX(RM34,RSQM+CTNMIN)-1./MAX(RM34,RSQM+CTNMAX)+
-     &  1./MAX(RM34,RSQM+CTPMIN)-1./MAX(RM34,RSQM+CTPMAX)
-        H3=COEF(ISUBSV,13)+
-     &  (ACTH0/ACTH1)*COEF(ISUBSV,14)/MAX(RM34,RSQM-CTH)+
-     &  (ACTH0/ACTH2)*COEF(ISUBSV,15)/MAX(RM34,RSQM+CTH)+
-     &  (ACTH0/ACTH3)*COEF(ISUBSV,16)/MAX(RM34,RSQM-CTH)**2+
-     &  (ACTH0/ACTH4)*COEF(ISUBSV,17)/MAX(RM34,RSQM+CTH)**2
-        COMFAC=COMFAC*ACTH0*0.5*BE34/H3
-C...2 -> 2 processes: take into account final state Breit-Wigners.
-        COMFAC=COMFAC*VINT(80)
-      ENDIF
-C...2 -> 3, 4 processes: phace space integral in tau'.
-      IF(MINT(47).GE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5) THEN
-        ATAUP1=LOG(TAUPMX/TAUPMN)
-        ATAUP2=((1.-TAU/TAUPMX)**4-(1.-TAU/TAUPMN)**4)/(4.*TAU)
-        H4=COEF(ISUBSV,18)+
-     &  (ATAUP1/ATAUP2)*COEF(ISUBSV,19)*(1.-TAU/TAUP)**3/TAUP
-        IF(MINT(47).EQ.5) THEN
-          ATAUP3=LOG(MAX(2E-6,1.-TAUPMN)/MAX(2E-6,1.-TAUPMX))
-          H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(2E-6,1.-TAUP)
-        ENDIF
-        COMFAC=COMFAC*ATAUP1/H4
-      ENDIF
-C...2 -> 3, 4 processes: effective W/Z structure functions.
-      IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) THEN
-        IF(1.-TAU/TAUP.GT.1.E-4) THEN
-          FZW=(1.+TAU/TAUP)*LOG(TAUP/TAU)-2.*(1.-TAU/TAUP)
-        ELSE
-          FZW=1./6.*(1.-TAU/TAUP)**3*TAU/TAUP
-        ENDIF
-        COMFAC=COMFAC*FZW
-      ENDIF
-C...2 -> 3 processes: phase space integrals for pT1, pT2, y3, mirror.
-      IF(ISTSB.EQ.5) THEN
-        COMFAC=COMFAC*VINT(205)*VINT(210)*VINT(212)*VINT(214)/
-     &  (128.*PARU(1)**4*VINT(220))*(TAU**2/TAUP)
-      ENDIF
-C...2 -> 2 processes: optional dampening by pT^4/(pT0^2+pT^2)^2.
-      IF(MSTP(85).EQ.1.AND.MOD(ISTSB,2).EQ.0) COMFAC=COMFAC*
-     &SQPTH**2/(PARP(82)**2+SQPTH)**2
-C...gamma + gamma: include factor 2 when different nature.
-      IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4)
-     &COMFAC=2.*COMFAC
-C...Phase space integral for low-pT and multiple interactions.
-      IF(ISTSB.EQ.9) THEN
-        COMFAC=PARU(1)*PARU(5)*FACK*0.5*VINT(2)/SH2
-        ATAU1=LOG(2.*(1.+SQRT(1.-XT2))/XT2-1.)
-        ATAU2=2.*ATAN(1./XT2-1.)/SQRT(XT2)
-        H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/SQRT(TAU)
-        COMFAC=COMFAC*ATAU1/H1
-        AYST0=YSTMAX-YSTMIN
-        AYST1=0.5*(YSTMAX-YSTMIN)**2
-        AYST3=2.*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
-        H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
-     &  (AYST0/AYST1)*COEF(ISUBSV,9)*(YSTMAX-YST)+
-     &  (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
-        COMFAC=COMFAC*AYST0/H2
-        IF(MSTP(82).LE.1) COMFAC=COMFAC*XT2**2*(1./VINT(149)-1.)
-C...For MSTP(82)>=2 an additional factor (xT2/(xT2+VINT(149))**2 is
-C...introduced to make cross-section finite for xT2 -> 0.
-        IF(MSTP(82).GE.2) COMFAC=COMFAC*XT2**2/(VINT(149)*
-     &  (1.+VINT(149)))
-      ENDIF
-C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron.
-      IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ.
-     &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN
-C...Calculate M_R and N_R functions for Higgs-like and QCD-like models.
-        IF(MSTP(46).LE.4) THEN
-          HDTLH=LOG(PMAS(25,1)/PARP(44))
-          HDTMR=(4.5*PARU(1)/SQRT(3.)-74./9.)/8.+HDTLH/12.
-          HDTNR=-1./18.+HDTLH/6.
-        ELSE
-          HDTNM=0.125*(1./(288.*PARU(1)**2)+(PARP(47)/PARP(45))**2)
-          HDTLQ=LOG(PARP(45)/PARP(44))
-          HDTMR=-(4.*PARU(1))**2*0.5*HDTNM+HDTLQ/12.
-          HDTNR=(4.*PARU(1))**2*HDTNM+HDTLQ/6.
-        ENDIF
-C...Calculate lowest and next-to-lowest order partial wave amplitudes.
-        HDTV=1./(16.*PARU(1)*PARP(47)**2)
-        A00L=HDTV*SH
-        A20L=-0.5*A00L
-        A11L=A00L/6.
-        HDTLS=LOG(SH/PARP(44)**2)
-        A004=(HDTV*SH)**2/(4.*PARU(1))*CMPLX((176.*HDTMR+112.*HDTNR)/3.+
-     &  11./27.-(50./9.)*HDTLS,4.*PARU(1))
-        A204=(HDTV*SH)**2/(4.*PARU(1))*CMPLX(32.*(HDTMR+2.*HDTNR)/3.+
-     &  25./54.-(20./9.)*HDTLS,PARU(1))
-        A114=(HDTV*SH)**2/(6.*PARU(1))*CMPLX(4.*(-2.*HDTMR+HDTNR)-
-     &  1./18.,PARU(1)/6.)
-C...Unitarize partial wave amplitudes with Pade or K-matrix method.
-        IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN
-          A00U=A00L/(1.-A004/A00L)
-          A20U=A20L/(1.-A204/A20L)
-          A11U=A11L/(1.-A114/A11L)
-        ELSE
-          A00U=(A00L+REAL(A004))/(1.-CMPLX(0.,A00L+REAL(A004)))
-          A20U=(A20L+REAL(A204))/(1.-CMPLX(0.,A20L+REAL(A204)))
-          A11U=(A11L+REAL(A114))/(1.-CMPLX(0.,A11L+REAL(A114)))
-        ENDIF
-      ENDIF
-C...A: 2 -> 1, tree diagrams.
-  160 IF(ISUB.LE.10) THEN
-      IF(ISUB.EQ.1) THEN
-C...f + f~ -> gamma*/Z0.
-        MINT(61)=2
-        CALL PYWIDT(23,SH,WDTP,WDTE)
-        HP0=AEM/3.*SH
-        HP1=AEM/3.*XWC*SH
-        HS=HP1*WDTP(0)
-        FACZ=4.*COMFAC*3.
-        DO 170 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 170
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        HI0=HP0
-        IF(IABS(I).LE.10) HI0=HI0*FACA/3.
-        HI1=HP1
-        IF(IABS(I).LE.10) HI1=HI1*FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACZ*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI*(1.-SQMZ/SH)/
-     &  ((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)*VINT(112)+
-     &  (VI**2+AI**2)/((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114))
-  170   CONTINUE
-      ELSEIF(ISUB.EQ.2) THEN
-C...f + f~' -> W+/-.
-        CALL PYWIDT(24,SH,WDTP,WDTE)
-        HP=AEM/(24.*XW)*SH
-        HS=HP*WDTP(0)
-        FACBW=4.*COMFAC/((SH-SQMW)**2+HS**2)*3.
-        DO 190 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 190
-        IA=IABS(I)
-        DO 180 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 180
-        JA=IABS(J)
-        IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 180
-        IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) GOTO 180
-        KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
-        HI=HP*2.
-        IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        HF=HP*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
-        SIGH(NCHN)=HI*FACBW*HF
-  180   CONTINUE
-  190   CONTINUE
-      ELSEIF(ISUB.EQ.3) THEN
-C...f + f~ -> H0 (or H'0, or A0).
-        CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=4.*COMFAC/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        DO 200 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 200
-        IA=IABS(I)
-        RMQ=PMAS(IA,1)**2/SH
-        HI=HP*RMQ
-        IF(IA.LE.10) HI=HP*RMQ*FACA/3.
-        IF(IA.LE.10.AND.MSTP(37).EQ.1.AND.MSTP(2).GE.1) HI=HI*
-     &  (LOG(MAX(4.,PARP(37)**2*RMQ*SH/PARU(117)**2))/
-     &  LOG(MAX(4.,SH/PARU(117)**2)))**(24./(33.-2.*MSTU(118)))
-        IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
-          IKFI=1
-          IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
-          IF(IA.GT.10) IKFI=3
-          HI=HI*PARU(150+10*IHIGG+IKFI)**2
-        ENDIF
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=HI*FACBW*HF
-  200   CONTINUE
-      ELSEIF(ISUB.EQ.4) THEN
-C...gamma + W+/- -> W+/-.
-      ELSEIF(ISUB.EQ.5) THEN
-C...Z0 + Z0 -> H0.
-        CALL PYWIDT(25,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=4.*COMFAC/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        HI=HP/4.
-        FACI=8./(PARU(1)**2*XW1)*(AEM*XWC)**2
-        DO 220 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 220
-        DO 210 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 210
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        EJ=KCHG(IABS(J),1)/3.
-        AJ=SIGN(1.,EJ)
-        VJ=AJ-4.*EJ*XWV
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF
-  210   CONTINUE
-  220   CONTINUE
-      ELSEIF(ISUB.EQ.6) THEN
-C...Z0 + W+/- -> W+/-.
-      ELSEIF(ISUB.EQ.7) THEN
-C...W+ + W- -> Z0.
-      ELSEIF(ISUB.EQ.8) THEN
-C...W+ + W- -> H0.
-        CALL PYWIDT(25,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=4.*COMFAC/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        HI=HP/2.
-        FACI=1./(4.*PARU(1)**2)*(AEM/XW)**2
-        DO 240 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240
-        EI=SIGN(1.,FLOAT(I))*KCHG(IABS(I),1)
-        DO 230 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230
-        EJ=SIGN(1.,FLOAT(J))*KCHG(IABS(J),1)
-        IF(EI*EJ.GT.0.) GOTO 230
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF
-  230   CONTINUE
-  240   CONTINUE
-C...B: 2 -> 2, tree diagrams.
-      ELSEIF(ISUB.EQ.10) THEN
-C...f + f' -> f + f' (gamma/Z/W exchange).
-        FACGGF=COMFAC*AEM**2*2.*(SH2+UH2)/TH2
-        FACGZF=COMFAC*AEM**2*XWC*4.*SH2/(TH*(TH-SQMZ))
-        FACZZF=COMFAC*(AEM*XWC)**2*2.*SH2/(TH-SQMZ)**2
-        FACWWF=COMFAC*(0.5*AEM/XW)**2*SH2/(TH-SQMW)**2
-        DO 260 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 260
-        IA=IABS(I)
-        DO 250 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 250
-        JA=IABS(J)
-C...Electroweak couplings.
-        EI=KCHG(IA,1)*ISIGN(1,I)/3.
-        AI=SIGN(1.,KCHG(IA,1)+0.5)*ISIGN(1,I)
-        VI=AI-4.*EI*XWV
-        EJ=KCHG(JA,1)*ISIGN(1,J)/3.
-        AJ=SIGN(1.,KCHG(JA,1)+0.5)*ISIGN(1,J)
-        VJ=AJ-4.*EJ*XWV
-        EPSIJ=ISIGN(1,I*J)
-C...gamma/Z exchange, only gamma exchange, or only Z exchange.
-        IF(MSTP(21).GE.1.AND.MSTP(21).LE.4) THEN
-          IF(MSTP(21).EQ.1.OR.MSTP(21).EQ.4) THEN
-            FACNCF=FACGGF*EI**2*EJ**2+FACGZF*EI*EJ*
-     &      (VI*VJ*(1.+UH2/SH2)+AI*AJ*EPSIJ*(1.-UH2/SH2))+
-     &      FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*(1.+UH2/SH2)+
-     &      4.*VI*VJ*AI*AJ*EPSIJ*(1.-UH2/SH2))
-          ELSEIF(MSTP(21).EQ.2) THEN
-            FACNCF=FACGGF*EI**2*EJ**2
-          ELSE
-            FACNCF=FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*(1.+UH2/SH2)+
-     &      4.*VI*VJ*AI*AJ*EPSIJ*(1.-UH2/SH2))
-          ENDIF
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACNCF
-        ENDIF
-C...W exchange.
-        IF((MSTP(21).EQ.1.OR.MSTP(21).EQ.5).AND.AI*AJ.LT.0.) THEN
-          FACCCF=FACWWF*VINT(180+I)*VINT(180+J)
-          IF(EPSIJ.LT.0.) FACCCF=FACCCF*UH2/SH2
-          IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACCCF=2.*FACCCF
-          IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACCCF=2.*FACCCF
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=2
-          SIGH(NCHN)=FACCCF
-        ENDIF
-  250   CONTINUE
-  260   CONTINUE
-      ENDIF
-      ELSEIF(ISUB.LE.20) THEN
-      IF(ISUB.EQ.11) THEN
-C...f + f' -> f + f' (g exchange).
-        FACQQ1=COMFAC*AS**2*4./9.*(SH2+UH2)/TH2
-        FACQQB=COMFAC*AS**2*4./9.*((SH2+UH2)/TH2*FACA-
-     &  MSTP(34)*2./3.*UH2/(SH*TH))
-        FACQQ2=COMFAC*AS**2*4./9.*((SH2+TH2)/UH2-
-     &  MSTP(34)*2./3.*SH2/(TH*UH))
-        IF(MSTP(5).GE.1) THEN
-C...Modifications from contact interactions (compositeness).
-          FACCI1=FACQQ1+COMFAC*(SH2/PARU(155)**4)
-          FACCIB=FACQQB+COMFAC*(8./9.)*(AS*PARU(156)/PARU(155)**2)*
-     &    (UH2/TH+UH2/SH)+COMFAC*(5./3.)*(UH2/PARU(155)**4)
-          FACCI2=FACQQ2+COMFAC*(8./9.)*(AS*PARU(156)/PARU(155)**2)*
-     &    (SH2/TH+SH2/UH)+COMFAC*(5./3.)*(SH2/PARU(155)**4)
-          FACCI3=FACQQ1+COMFAC*(UH2/PARU(155)**4)
-        ENDIF
-        DO 280 I=MMIN1,MMAX1
-        IA=IABS(I)
-        IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 280
-        DO 270 J=MMIN2,MMAX2
-        JA=IABS(J)
-        IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 270
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        IF(MSTP(5).LE.0.OR.(MSTP(5).EQ.1.AND.(IA.GE.3.OR.JA.GE.3)))
-     &  THEN
-          SIGH(NCHN)=FACQQ1
-          IF(I.EQ.-J) SIGH(NCHN)=FACQQB
-        ELSE
-          SIGH(NCHN)=FACCI1
-          IF(I*J.LT.0) SIGH(NCHN)=FACCI3
-          IF(I.EQ.-J) SIGH(NCHN)=FACCIB
-        ENDIF
-        IF(I.EQ.J) THEN
-          SIGH(NCHN)=0.5*SIGH(NCHN)
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=2
-          IF(MSTP(5).LE.0.OR.(MSTP(5).EQ.1.AND.IA.GE.3)) THEN
-            SIGH(NCHN)=0.5*FACQQ2
-          ELSE
-            SIGH(NCHN)=0.5*FACCI2
-          ENDIF
-        ENDIF
-  270   CONTINUE
-  280   CONTINUE
-      ELSEIF(ISUB.EQ.12) THEN
-C...f + f~ -> f' + f~' (q + q~ -> q' + q~' only).
-        CALL PYWIDT(21,SH,WDTP,WDTE)
-        FACQQB=COMFAC*AS**2*4./9.*(TH2+UH2)/SH2*(WDTE(0,1)+WDTE(0,2)+
-     &  WDTE(0,4))
-        IF(MSTP(5).EQ.1) THEN
-C...Modifications from contact interactions (compositeness).
-          FACCIB=FACQQB
-          DO 290 I=1,2
-          FACCIB=FACCIB+COMFAC*(UH2/PARU(155)**4)*(WDTE(I,1)+WDTE(I,2)+
-     &    WDTE(I,4))
-  290     CONTINUE
-        ELSEIF(MSTP(5).GE.2) THEN
-          FACCIB=FACQQB+COMFAC*(UH2/PARU(155)**4)*(WDTE(0,1)+WDTE(0,2)+
-     &    WDTE(0,4))
-        ENDIF
-        DO 300 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
-     &  KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 300
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        IF(MSTP(5).LE.0.OR.(MSTP(5).EQ.1.AND.IABS(I).GE.3)) THEN
-          SIGH(NCHN)=FACQQB
-        ELSE
-          SIGH(NCHN)=FACCIB
-        ENDIF
-  300   CONTINUE
-      ELSEIF(ISUB.EQ.13) THEN
-C...f + f~ -> g + g (q + q~ -> g + g only).
-        FACGG1=COMFAC*AS**2*32./27.*(UH/TH-(2.+MSTP(34)*1./4.)*UH2/SH2)
-        FACGG2=COMFAC*AS**2*32./27.*(TH/UH-(2.+MSTP(34)*1./4.)*TH2/SH2)
-        DO 310 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
-     &  KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=0.5*FACGG1
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=2
-        SIGH(NCHN)=0.5*FACGG2
-  310   CONTINUE
-      ELSEIF(ISUB.EQ.14) THEN
-C...f + f~ -> g + gamma (q + q~ -> g + gamma only).
-        FACGG=COMFAC*AS*AEM*8./9.*(TH2+UH2)/(TH*UH)
-        DO 320 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
-     &  KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
-        EI=KCHG(IABS(I),1)/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACGG*EI**2
-  320   CONTINUE
-      ELSEIF(ISUB.EQ.15) THEN
-C...f + f~ -> g + (gamma*/Z0) (q + q~ -> g + (gamma*/Z0) only).
-        FACZG=COMFAC*AS*AEM*(8./9.)*(TH2+UH2+2.*SQM4*SH)/(TH*UH)
-C...gamma, gamma/Z interference and Z couplings to final fermion pairs.
-        HFGG=0.
-        HFGZ=0.
-        HFZZ=0.
-        HBW4=0.
-        RADC4=1.+ULALPS(SQM4)/PARU(1)
-        DO 330 I=1,MIN(16,MDCY(23,3))
-        IDC=I+MDCY(23,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 330
-        IMDM=0
-        IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
-     &  IMDM=1
-        IF(I.LE.8) THEN
-          EF=KCHG(I,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ELSEIF(I.LE.16) THEN
-          EF=KCHG(I+2,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ENDIF
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
-        IF(4.*RM1.LT.1.) THEN
-          FCOF=1.
-          IF(I.LE.8) FCOF=3.*RADC4
-          BE34=SQRT(MAX(0.,1.-4.*RM1))
-          IF(IMDM.EQ.1) THEN
-            HFGG=HFGG+FCOF*EF**2*(1.+2.*RM1)*BE34
-            HFGZ=HFGZ+FCOF*EF*VF*(1.+2.*RM1)*BE34
-            HFZZ=HFZZ+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-          ENDIF
-          HBW4=HBW4+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-        ENDIF
-  330   CONTINUE
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMZ=PMAS(23,1)*PMAS(23,2)
-        HBW4=HBW4*XWC*SQMZ/((SQM4-SQMZ)**2+GMMZ**2)
-        MINT(15)=1
-        MINT(61)=1
-        CALL PYWIDT(23,SQM4,WDTP,WDTE)
-        HFGG=HFGG*VINT(111)/SQM4
-        HFGZ=HFGZ*VINT(112)/SQM4
-        HFZZ=HFZZ*VINT(114)/SQM4
-C...Loop over flavours; consider full gamma/Z structure.
-        DO 340 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
-     &  KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 340
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACZG*(EI**2*HFGG+EI*VI*HFGZ+
-     &  (VI**2+AI**2)*HFZZ)/HBW4
-  340   CONTINUE
-      ELSEIF(ISUB.EQ.16) THEN
-C...f + f~' -> g + W+/- (q + q~' -> g + W+/- only).
-        FACWG=COMFAC*AS*AEM/XW*2./9.*(TH2+UH2+2.*SQM4*SH)/(TH*UH)
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMW=PMAS(24,1)*PMAS(24,2)
-        HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
-        CALL PYWIDT(24,SQM4,WDTP,WDTE)
-        AEMC=ULALEM(SQM4)
-        IF(MSTP(8).GE.1) AEMC=AEM
-        GMMWC=SQM4*WDTP(0)*AEMC/(24.*XW)
-        HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
-        FACWG=FACWG*HBW4C/HBW4
-        DO 360 I=MMIN1,MMAX1
-        IA=IABS(I)
-        IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 360
-        DO 350 J=MMIN2,MMAX2
-        JA=IABS(J)
-        IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 350
-        IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 350
-        KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
-        WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
-        FCKM=VCKM((IA+1)/2,(JA+1)/2)
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACWG*FCKM*WIDSC
-  350   CONTINUE
-  360   CONTINUE
-      ELSEIF(ISUB.EQ.17) THEN
-C...f + f~ -> g + H0 (q + q~ -> g + H0 only).
-      ELSEIF(ISUB.EQ.18) THEN
-C...f + f~ -> gamma + gamma.
-        FACGG=COMFAC*AEM**2*2.*(TH2+UH2)/(TH*UH)
-        DO 370 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 370
-        EI=KCHG(IABS(I),1)/3.
-        FCOI=1.
-        IF(IABS(I).LE.10) FCOI=FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=0.5*FACGG*FCOI*EI**4
-  370   CONTINUE
-      ELSEIF(ISUB.EQ.19) THEN
-C...f + f~ -> gamma + (gamma*/Z0).
-        FACGZ=COMFAC*2.*AEM**2*(TH2+UH2+2.*SQM4*SH)/(TH*UH)
-C...gamma, gamma/Z interference and Z couplings to final fermion pairs.
-        HFGG=0.
-        HFGZ=0.
-        HFZZ=0.
-        HBW4=0.
-        RADC4=1.+ULALPS(SQM4)/PARU(1)
-        DO 380 I=1,MIN(16,MDCY(23,3))
-        IDC=I+MDCY(23,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 380
-        IMDM=0
-        IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
-     &  IMDM=1
-        IF(I.LE.8) THEN
-          EF=KCHG(I,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ELSEIF(I.LE.16) THEN
-          EF=KCHG(I+2,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ENDIF
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
-        IF(4.*RM1.LT.1.) THEN
-          FCOF=1.
-          IF(I.LE.8) FCOF=3.*RADC4
-          BE34=SQRT(MAX(0.,1.-4.*RM1))
-          IF(IMDM.EQ.1) THEN
-            HFGG=HFGG+FCOF*EF**2*(1.+2.*RM1)*BE34
-            HFGZ=HFGZ+FCOF*EF*VF*(1.+2.*RM1)*BE34
-            HFZZ=HFZZ+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-          ENDIF
-          HBW4=HBW4+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-        ENDIF
-  380   CONTINUE
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMZ=PMAS(23,1)*PMAS(23,2)
-        HBW4=HBW4*XWC*SQMZ/((SQM4-SQMZ)**2+GMMZ**2)
-        MINT(15)=1
-        MINT(61)=1
-        CALL PYWIDT(23,SQM4,WDTP,WDTE)
-        HFGG=HFGG*VINT(111)/SQM4
-        HFGZ=HFGZ*VINT(112)/SQM4
-        HFZZ=HFZZ*VINT(114)/SQM4
-C...Loop over flavours; consider full gamma/Z structure.
-        DO 390 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 390
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        FCOI=1.
-        IF(IABS(I).LE.10) FCOI=FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACGZ*FCOI*EI**2*(EI**2*HFGG+EI*VI*HFGZ+
-     &  (VI**2+AI**2)*HFZZ)/HBW4
-  390   CONTINUE
-      ELSEIF(ISUB.EQ.20) THEN
-C...f + f~' -> gamma + W+/-.
-        FACGW=COMFAC*0.5*AEM**2/XW
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMW=PMAS(24,1)*PMAS(24,2)
-        HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
-        CALL PYWIDT(24,SQM4,WDTP,WDTE)
-        AEMC=ULALEM(SQM4)
-        IF(MSTP(8).GE.1) AEMC=AEM
-        GMMWC=SQM4*WDTP(0)*AEMC/(24.*XW)
-        HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
-        FACGW=FACGW*HBW4C/HBW4
-C...Anomalous couplings.
-        TERM1=(TH2+UH2+2.*SQM4*SH)/(TH*UH)
-        TERM2=0.
-        TERM3=0.
-        IF(MSTP(5).GE.1) THEN
-          TERM2=PARU(153)*(TH-UH)/(TH+UH)
-          TERM3=0.5*PARU(153)**2*(TH*UH+(TH2+UH2)*SH/
-     &    (4.*PMAS(24,1)**2))/(TH+UH)**2
-        ENDIF
-        DO 410 I=MMIN1,MMAX1
-        IA=IABS(I)
-        IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 410
-        DO 400 J=MMIN2,MMAX2
-        JA=IABS(J)
-        IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 400
-        IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 400
-        IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) GOTO 400
-        KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
-        WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
-        IF(IA.LE.10) THEN
-          FACWR=UH/(TH+UH)-1./3.
-          FCKM=VCKM((IA+1)/2,(JA+1)/2)
-          FCOI=FACA/3.
-        ELSE
-          FACWR=-TH/(TH+UH)
-          FCKM=1.
-          FCOI=1.
-        ENDIF
-        FACWK=TERM1*FACWR**2+TERM2*FACWR+TERM3
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACGW*FACWK*FCOI*FCKM*WIDSC
-  400   CONTINUE
-  410   CONTINUE
-      ENDIF
-      ELSEIF(ISUB.LE.30) THEN
-      IF(ISUB.EQ.21) THEN
-C...f + f~ -> gamma + H0.
-      ELSEIF(ISUB.EQ.22) THEN
-C...f + f~ -> (gamma*/Z0) + (gamma*/Z0).
-C...Kinematics dependence.
-        FACZZ=COMFAC*AEM**2*((TH2+UH2+2.*(SQM3+SQM4)*SH)/(TH*UH)-
-     &  SQM3*SQM4*(1./TH2+1./UH2))
-C...gamma, gamma/Z interference and Z couplings to final fermion pairs.
-        DO 430 I=1,6
-        DO 420 J=1,3
-        HGZ(I,J)=0.
-  420   CONTINUE
-  430   CONTINUE
-        HBW3=0.
-        HBW4=0.
-        RADC3=1.+ULALPS(SQM3)/PARU(1)
-        RADC4=1.+ULALPS(SQM4)/PARU(1)
-        DO 440 I=1,MIN(16,MDCY(23,3))
-        IDC=I+MDCY(23,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 440
-        IMDM=0
-        IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2) IMDM=1
-        IF(MDME(IDC,1).EQ.4.OR.MDME(IDC,1).EQ.5) IMDM=MDME(IDC,1)-2
-        IF(I.LE.8) THEN
-          EF=KCHG(I,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ELSEIF(I.LE.16) THEN
-          EF=KCHG(I+2,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ENDIF
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM3
-        IF(4.*RM1.LT.1.) THEN
-          FCOF=1.
-          IF(I.LE.8) FCOF=3.*RADC3
-          BE34=SQRT(MAX(0.,1.-4.*RM1))
-          IF(IMDM.GE.1) THEN
-            HGZ(1,IMDM)=HGZ(1,IMDM)+FCOF*EF**2*(1.+2.*RM1)*BE34
-            HGZ(2,IMDM)=HGZ(2,IMDM)+FCOF*EF*VF*(1.+2.*RM1)*BE34
-            HGZ(3,IMDM)=HGZ(3,IMDM)+FCOF*(VF**2*(1.+2.*RM1)+
-     &      AF**2*(1.-4.*RM1))*BE34
-          ENDIF
-          HBW3=HBW3+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-        ENDIF
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
-        IF(4.*RM1.LT.1.) THEN
-          FCOF=1.
-          IF(I.LE.8) FCOF=3.*RADC4
-          BE34=SQRT(MAX(0.,1.-4.*RM1))
-          IF(IMDM.GE.1) THEN
-            HGZ(4,IMDM)=HGZ(4,IMDM)+FCOF*EF**2*(1.+2.*RM1)*BE34
-            HGZ(5,IMDM)=HGZ(5,IMDM)+FCOF*EF*VF*(1.+2.*RM1)*BE34
-            HGZ(6,IMDM)=HGZ(6,IMDM)+FCOF*(VF**2*(1.+2.*RM1)+
-     &      AF**2*(1.-4.*RM1))*BE34
-          ENDIF
-          HBW4=HBW4+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-        ENDIF
-  440   CONTINUE
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMZ=PMAS(23,1)*PMAS(23,2)
-        HBW3=HBW3*XWC*SQMZ/((SQM3-SQMZ)**2+GMMZ**2)
-        HBW4=HBW4*XWC*SQMZ/((SQM4-SQMZ)**2+GMMZ**2)
-        MINT(15)=1
-        MINT(61)=1
-        CALL PYWIDT(23,SQM3,WDTP,WDTE)
-        DO 450 J=1,3
-        HGZ(1,J)=HGZ(1,J)*VINT(111)/SQM3
-        HGZ(2,J)=HGZ(2,J)*VINT(112)/SQM3
-        HGZ(3,J)=HGZ(3,J)*VINT(114)/SQM3
-  450   CONTINUE
-        MINT(61)=1
-        CALL PYWIDT(23,SQM4,WDTP,WDTE)
-        DO 460 J=1,3
-        HGZ(4,J)=HGZ(4,J)*VINT(111)/SQM4
-        HGZ(5,J)=HGZ(5,J)*VINT(112)/SQM4
-        HGZ(6,J)=HGZ(6,J)*VINT(114)/SQM4
-  460   CONTINUE
-C...Loop over flavours; separate left- and right-handed couplings.
-        DO 480 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 480
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        VALI=VI-AI
-        VARI=VI+AI
-        FCOI=1.
-        IF(IABS(I).LE.10) FCOI=FACA/3.
-        DO 470 J=1,3
-        HL3(J)=EI**2*HGZ(1,J)+EI*VALI*HGZ(2,J)+VALI**2*HGZ(3,J)
-        HR3(J)=EI**2*HGZ(1,J)+EI*VARI*HGZ(2,J)+VARI**2*HGZ(3,J)
-        HL4(J)=EI**2*HGZ(4,J)+EI*VALI*HGZ(5,J)+VALI**2*HGZ(6,J)
-        HR4(J)=EI**2*HGZ(4,J)+EI*VARI*HGZ(5,J)+VARI**2*HGZ(6,J)
-  470   CONTINUE
-        FACLR=HL3(1)*HL4(1)+HL3(1)*(HL4(2)+HL4(3))+
-     &  HL4(1)*(HL3(2)+HL3(3))+HL3(2)*HL4(3)+HL4(2)*HL3(3)+
-     &  HR3(1)*HR4(1)+HR3(1)*(HR4(2)+HR4(3))+
-     &  HR4(1)*(HR3(2)+HR3(3))+HR3(2)*HR4(3)+HR4(2)*HR3(3)
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=0.5*FACZZ*FCOI*FACLR/(HBW3*HBW4)
-  480   CONTINUE
-      ELSEIF(ISUB.EQ.23) THEN
-C...f + f~' -> Z0 + W+/-.
-        FACZW=COMFAC*0.5*(AEM/XW)**2
-        FACZW=FACZW*WIDS(23,2)
-        THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
-        FACBW=1./((SH-SQMW)**2+SQMW*PMAS(24,2)**2)
-        DO 500 I=MMIN1,MMAX1
-        IA=IABS(I)
-        IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 500
-        DO 490 J=MMIN2,MMAX2
-        JA=IABS(J)
-        IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 490
-        IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 490
-        IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) GOTO 490
-        KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
-        EI=KCHG(IA,1)/3.
-        AI=SIGN(1.,EI+0.1)
-        VI=AI-4.*EI*XWV
-        EJ=KCHG(JA,1)/3.
-        AJ=SIGN(1.,EJ+0.1)
-        VJ=AJ-4.*EJ*XWV
-        IF(VI+AI.GT.0) THEN
-          VISAV=VI
-          AISAV=AI
-          VI=VJ
-          AI=AJ
-          VJ=VISAV
-          AJ=AISAV
-        ENDIF
-        FCKM=1.
-        IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
-        FCOI=1.
-        IF(IA.LE.10) FCOI=FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACZW*FCOI*FCKM*(FACBW*((9.-8.*XW)/4.*THUH+
-     &  (8.*XW-6.)/4.*SH*(SQM3+SQM4))+(THUH-SH*(SQM3+SQM4))*
-     &  (SH-SQMW)*FACBW*0.5*((VJ+AJ)/TH-(VI+AI)/UH)+
-     &  THUH/(16.*XW1)*((VJ+AJ)**2/TH2+(VI+AI)**2/UH2)+
-     &  SH*(SQM3+SQM4)/(8.*XW1)*(VI+AI)*(VJ+AJ)/(TH*UH))*
-     &  WIDS(24,(5-KCHW)/2)
-  490   CONTINUE
-  500   CONTINUE
-      ELSEIF(ISUB.EQ.24) THEN
-C...f + f~ -> Z0 + H0 (or H'0, or A0).
-        THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
-        FACHZ=COMFAC*8.*(AEM*XWC)**2*
-     &  (THUH+2.*SH*SQM3)/((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
-        FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2)
-        IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ*
-     &  PARU(154+10*IHIGG)**2
-        DO 510 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 510
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        FCOI=1.
-        IF(IABS(I).LE.10) FCOI=FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2)
-  510   CONTINUE
-      ELSEIF(ISUB.EQ.25) THEN
-C...f + f~ -> W+ + W-.
-C...Propagators: Z0, W+- as simulated in PYOFSH and as desired.
-        CALL PYWIDT(23,SH,WDTP,WDTE)
-        GMMZC=AEM/(48.*XW*XW1)*SH*WDTP(0)
-        HBWZC=SH**2/((SH-SQMZ)**2+GMMZC**2)
-        GMMW=PMAS(24,1)*PMAS(24,2)
-        HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
-        AEM3=ULALEM(SQM3)
-        IF(MSTP(8).GE.1) AEM3=AEM
-        CALL PYWIDT(24,SQM3,WDTP,WDTE)
-        GMMW3=AEM3/(24.*XW)*SQM3*WDTP(0)
-        HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
-        HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
-        AEM4=ULALEM(SQM4)
-        IF(MSTP(8).GE.1) AEM4=AEM
-        CALL PYWIDT(24,SQM4,WDTP,WDTE)
-        GMMW4=AEM4/(24.*XW)*SQM4*WDTP(0)
-        HBW4C=GMMW4/((SQM4-SQMW)**2+GMMW4**2)
-C...Kinematical functions.
-        THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
-        THUH34=(2.*SH*(SQM3+SQM4)+THUH)/(SQM3*SQM4)
-        GS=(((SH-SQM3-SQM4)**2-4.*SQM3*SQM4)*THUH34+12.*THUH)/SH2
-        GT=THUH34+4.*THUH/TH2
-        GST=((SH-SQM3-SQM4)*THUH34+4.*(SH*(SQM3+SQM4)-THUH)/TH)/SH
-        GU=THUH34+4.*THUH/UH2
-        GSU=((SH-SQM3-SQM4)*THUH34+4.*(SH*(SQM3+SQM4)-THUH)/UH)/SH
-C...Common factors and couplings.
-        FACWW=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)
-        FACWW=FACWW*WIDS(24,1)
-        CGG=AEM**2/2.
-        CGZ=AEM**2/(4.*XW)*HBWZC*(1.-SQMZ/SH)
-        CZZ=AEM**2/(32.*XW**2)*HBWZC
-        CNG=AEM**2/(4.*XW)
-        CNZ=AEM**2/(16.*XW**2)*HBWZC*(1.-SQMZ/SH)
-        CNN=AEM**2/(16.*XW**2)
-C...Coulomb factor for W+W- pair.
-        IF(MSTP(40).GE.1.AND.MSTP(40).LE.3) THEN
-          COULE=(SH-4.*SQMW)/(4.*PMAS(24,1))
-          COULP=MAX(1E-10,0.5*BE34*SQRT(SH))
-          IF(COULE.LT.100.*PMAS(24,2)) THEN
-            COULP1=SQRT(0.5*PMAS(24,1)*(SQRT(COULE**2+PMAS(24,2)**2)-
-     &      COULE))
-          ELSE
-            COULP1=SQRT(0.5*PMAS(24,1)*(0.5*PMAS(24,2)**2/COULE))
-          ENDIF
-          IF(COULE.GT.-100.*PMAS(24,2)) THEN
-            COULP2=SQRT(0.5*PMAS(24,1)*(SQRT(COULE**2+PMAS(24,2)**2)+
-     &      COULE))
-          ELSE
-            COULP2=SQRT(0.5*PMAS(24,1)*(0.5*PMAS(24,2)**2/ABS(COULE)))
-          ENDIF
-          IF(MSTP(40).EQ.1) THEN
-            COULDC=PARU(1)-2.*ATAN((COULP1**2+COULP2**2-COULP**2)/
-     &      MAX(1E-10,2.*COULP*COULP1)) 
-            FACCOU=1.+0.5*PARU(101)*COULDC/MAX(1E-5,BE34)
-          ELSEIF(MSTP(40).EQ.2) THEN
-            COULCK=CMPLX(COULP1,COULP2)
-            COULCP=CMPLX(0.,COULP)
-            COULCD=(COULCK+COULCP)/(COULCK-COULCP)
-            COULCR=1.+(PARU(101)*SQRT(SH))/(4.*COULCP)*LOG(COULCD)
-            COULCS=CMPLX(0.,0.)
-            NSTP=100
-            DO 515 ISTP=1,NSTP
-            COULXX=(ISTP-0.5)/NSTP
-            COULCS=COULCS+(1./COULXX)*LOG((1.+COULXX*COULCD)/
-     &      (1.+COULXX/COULCD))
-  515       CONTINUE
-            COULCR=COULCR+(PARU(101)**2*SH)/(16.*COULCP*COULCK)*
-     &      (COULCS/NSTP)
-            FACCOU=ABS(COULCR)**2
-          ELSEIF(MSTP(40).EQ.3) THEN
-            COULDC=PARU(1)-2.*(1.-BE34)**2*ATAN((COULP1**2+COULP2**2-
-     &      COULP**2)/MAX(1E-10,2.*COULP*COULP1)) 
-            FACCOU=1.+0.5*PARU(101)*COULDC/MAX(1E-5,BE34)
-          ENDIF
-        ELSEIF(MSTP(40).EQ.4) THEN
-          FACCOU=1.+0.5*PARU(101)*PARU(1)/MAX(1E-5,BE34)
-        ELSE
-          FACCOU=1.
-        ENDIF
-        VINT(95)=FACCOU
-        FACWW=FACWW*FACCOU
-C...Loop over allowed flavours.
-        DO 520 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 520
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI+0.1)
-        VI=AI-4.*EI*XWV
-        FCOI=1.
-        IF(IABS(I).LE.10) FCOI=FACA/3.
-        IF(AI.LT.0.) THEN
-          DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS+
-     &    (CNG*EI+CNZ*(VI+AI))*GST+CNN*GT
-        ELSE
-          DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS-
-     &    (CNG*EI+CNZ*(VI+AI))*GSU+CNN*GU
-        ENDIF
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACWW*FCOI*DSIGWW
-  520   CONTINUE
-      ELSEIF(ISUB.EQ.26) THEN
-C...f + f~' -> W+/- + H0 (or H'0, or A0).
-        THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
-        FACHW=COMFAC*0.125*(AEM/XW)**2*(THUH+2.*SH*SQM3)/
-     &  ((SH-SQMW)**2+SQMW*PMAS(24,2)**2)
-        FACHW=FACHW*WIDS(KFHIGG,2)
-        IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW*
-     &  PARU(155+10*IHIGG)**2
-        DO 540 I=MMIN1,MMAX1
-        IA=IABS(I)
-        IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 540
-        DO 530 J=MMIN2,MMAX2
-        JA=IABS(J)
-        IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 530
-        IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 530
-        IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) GOTO 530
-        KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
-        FCKM=1.
-        IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
-        FCOI=1.
-        IF(IA.LE.10) FCOI=FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2)
-  530   CONTINUE
-  540   CONTINUE
-      ELSEIF(ISUB.EQ.27) THEN
-C...f + f~ -> H0 + H0.
-      ELSEIF(ISUB.EQ.28) THEN
-C...f + g -> f + g (q + g -> q + g only).
-        FACQG1=COMFAC*AS**2*4./9.*((2.+MSTP(34)*1./4.)*UH2/TH2-UH/SH)*
-     &  FACA
-        FACQG2=COMFAC*AS**2*4./9.*((2.+MSTP(34)*1./4.)*SH2/TH2-SH/UH)
-        DO 560 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 560
-        DO 550 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 550
-        IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 550
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACQG1
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=2
-        SIGH(NCHN)=FACQG2
-  550   CONTINUE
-  560   CONTINUE
-      ELSEIF(ISUB.EQ.29) THEN
-C...f + g -> f + gamma (q + g -> q + gamma only).
-        FGQ=COMFAC*FACA*AS*AEM*1./3.*(SH2+UH2)/(-SH*UH)
-        DO 580 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 580
-        EI=KCHG(IABS(I),1)/3.
-        FACGQ=FGQ*EI**2
-        DO 570 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 570
-        IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 570
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACGQ
-  570   CONTINUE
-  580   CONTINUE
-      ELSEIF(ISUB.EQ.30) THEN
-C...f + g -> f + (gamma*/Z0) (q + g -> q + (gamma*/Z0) only).
-        FZQ=COMFAC*FACA*AS*AEM*(1./3.)*(SH2+UH2+2.*SQM4*TH)/(-SH*UH)
-C...gamma, gamma/Z interference and Z couplings to final fermion pairs.
-        HFGG=0.
-        HFGZ=0.
-        HFZZ=0.
-        HBW4=0.
-        RADC4=1.+ULALPS(SQM4)/PARU(1)
-        DO 590 I=1,MIN(16,MDCY(23,3))
-        IDC=I+MDCY(23,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 590
-        IMDM=0
-        IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
-     &  IMDM=1
-        IF(I.LE.8) THEN
-          EF=KCHG(I,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ELSEIF(I.LE.16) THEN
-          EF=KCHG(I+2,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ENDIF
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
-        IF(4.*RM1.LT.1.) THEN
-          FCOF=1.
-          IF(I.LE.8) FCOF=3.*RADC4
-          BE34=SQRT(MAX(0.,1.-4.*RM1))
-          IF(IMDM.EQ.1) THEN
-            HFGG=HFGG+FCOF*EF**2*(1.+2.*RM1)*BE34
-            HFGZ=HFGZ+FCOF*EF*VF*(1.+2.*RM1)*BE34
-            HFZZ=HFZZ+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-          ENDIF
-          HBW4=HBW4+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-        ENDIF
-  590   CONTINUE
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMZ=PMAS(23,1)*PMAS(23,2)
-        HBW4=HBW4*XWC*SQMZ/((SQM4-SQMZ)**2+GMMZ**2)
-        MINT(15)=1
-        MINT(61)=1
-        CALL PYWIDT(23,SQM4,WDTP,WDTE)
-        HFGG=HFGG*VINT(111)/SQM4
-        HFGZ=HFGZ*VINT(112)/SQM4
-        HFZZ=HFZZ*VINT(114)/SQM4
-C...Loop over flavours; consider full gamma/Z structure.
-        DO 610 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 610
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        FACZQ=FZQ*(EI**2*HFGG+EI*VI*HFGZ+
-     &  (VI**2+AI**2)*HFZZ)/HBW4
-        DO 600 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 600
-        IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 600
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACZQ
-  600   CONTINUE
-  610   CONTINUE
-      ENDIF
-      ELSEIF(ISUB.LE.40) THEN
-      IF(ISUB.EQ.31) THEN
-C...f + g -> f' + W+/- (q + g -> q' + W+/- only).
-        FACWQ=COMFAC*FACA*AS*AEM/XW*1./12.*
-     &  (SH2+UH2+2.*SQM4*TH)/(-SH*UH)
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMW=PMAS(24,1)*PMAS(24,2)
-        HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
-        CALL PYWIDT(24,SQM4,WDTP,WDTE)
-        AEMC=ULALEM(SQM4)
-        IF(MSTP(8).GE.1) AEMC=AEM
-        GMMWC=SQM4*WDTP(0)*AEMC/(24.*XW)
-        HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
-        FACWQ=FACWQ*HBW4C/HBW4
-        DO 630 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 630
-        IA=IABS(I)
-        KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
-        WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
-        DO 620 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 620
-        IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 620
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
-  620   CONTINUE
-  630   CONTINUE
-      ELSEIF(ISUB.EQ.32) THEN
-C...f + g -> f + H0 (q + g -> q + H0 only).
-      ELSEIF(ISUB.EQ.33) THEN
-C...f + gamma -> f + g (q + gamma -> q + g only).
-        FGQ=COMFAC*AS*AEM*8./3.*(SH2+UH2)/(-SH*UH)
-        DO 650 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 650
-        EI=KCHG(IABS(I),1)/3.
-        FACGQ=FGQ*EI**2
-        DO 640 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 640
-        IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 640
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=22
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACGQ
-  640   CONTINUE
-  650   CONTINUE
-      ELSEIF(ISUB.EQ.34) THEN
-C...f + gamma -> f + gamma.
-        FGQ=COMFAC*AEM**2*2.*(SH2+UH2)/(-SH*UH)
-        DO 670 I=MMINA,MMAXA
-        IF(I.EQ.0) GOTO 670
-        EI=KCHG(IABS(I),1)/3.
-        FACGQ=FGQ*EI**4
-        DO 660 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 660
-        IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 660
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=22
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACGQ
-  660   CONTINUE
-  670   CONTINUE
-      ELSEIF(ISUB.EQ.35) THEN
-C...f + gamma -> f + (gamma*/Z0).
-        FZQN=COMFAC*2.*AEM**2*(SH2+UH2+2.*SQM4*TH)
-        FZQD=SQPTH*SQM4-SH*UH
-C...gamma, gamma/Z interference and Z couplings to final fermion pairs.
-        HFGG=0.
-        HFGZ=0.
-        HFZZ=0.
-        HBW4=0.
-        RADC4=1.+ULALPS(SQM4)/PARU(1)
-        DO 680 I=1,MIN(16,MDCY(23,3))
-        IDC=I+MDCY(23,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 680
-        IMDM=0
-        IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
-     &  IMDM=1
-        IF(I.LE.8) THEN
-          EF=KCHG(I,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ELSEIF(I.LE.16) THEN
-          EF=KCHG(I+2,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-        ENDIF
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
-        IF(4.*RM1.LT.1.) THEN
-          FCOF=1.
-          IF(I.LE.8) FCOF=3.*RADC4
-          BE34=SQRT(MAX(0.,1.-4.*RM1))
-          IF(IMDM.EQ.1) THEN
-            HFGG=HFGG+FCOF*EF**2*(1.+2.*RM1)*BE34
-            HFGZ=HFGZ+FCOF*EF*VF*(1.+2.*RM1)*BE34
-            HFZZ=HFZZ+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-          ENDIF
-          HBW4=HBW4+FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-        ENDIF
-  680   CONTINUE
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMZ=PMAS(23,1)*PMAS(23,2)
-        HBW4=HBW4*XWC*SQMZ/((SQM4-SQMZ)**2+GMMZ**2)
-        MINT(15)=1
-        MINT(61)=1
-        CALL PYWIDT(23,SQM4,WDTP,WDTE)
-        HFGG=HFGG*VINT(111)/SQM4
-        HFGZ=HFGZ*VINT(112)/SQM4
-        HFZZ=HFZZ*VINT(114)/SQM4
-C...Loop over flavours; consider full gamma/Z structure.
-        DO 700 I=MMINA,MMAXA
-        IF(I.EQ.0) GOTO 700
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        FACZQ=EI**2*(EI**2*HFGG+EI*VI*HFGZ+
-     &  (VI**2+AI**2)*HFZZ)/HBW4
-        DO 690 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 690
-        IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 690
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=22
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACZQ*FZQN/MAX(PMAS(IABS(I),1)**2*SQM4,FZQD)
-  690   CONTINUE
-  700   CONTINUE
-      ELSEIF(ISUB.EQ.36) THEN
-C...f + gamma -> f' + W+/-.
-        FWQ=COMFAC*AEM**2/(2.*XW)*
-     &  (SH2+UH2+2.*SQM4*TH)/(SQPTH*SQM4-SH*UH)
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMW=PMAS(24,1)*PMAS(24,2)
-        HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
-        CALL PYWIDT(24,SQM4,WDTP,WDTE)
-        AEMC=ULALEM(SQM4)
-        IF(MSTP(8).GE.1) AEMC=AEM
-        GMMWC=SQM4*WDTP(0)*AEMC/(24.*XW)
-        HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
-        FWQ=FWQ*HBW4C/HBW4
-        DO 720 I=MMINA,MMAXA
-        IF(I.EQ.0) GOTO 720
-        IA=IABS(I)
-        EIA=ABS(KCHG(IABS(I),1)/3.)
-        FACWQ=FWQ*(EIA-SH/(SH+UH))**2
-        KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
-        WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
-        DO 710 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 710
-        IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 710
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=22
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
-  710   CONTINUE
-  720   CONTINUE
-      ELSEIF(ISUB.EQ.37) THEN
-C...f + gamma -> f + H0.
-      ELSEIF(ISUB.EQ.38) THEN
-C...f + Z0 -> f + g (q + Z0 -> q + g only).
-      ELSEIF(ISUB.EQ.39) THEN
-C...f + Z0 -> f + gamma.
-      ELSEIF(ISUB.EQ.40) THEN
-C...f + Z0 -> f + Z0.
-      ENDIF
-      ELSEIF(ISUB.LE.50) THEN
-      IF(ISUB.EQ.41) THEN
-C...f + Z0 -> f' + W+/-.
-      ELSEIF(ISUB.EQ.42) THEN
-C...f + Z0 -> f + H0.
-      ELSEIF(ISUB.EQ.43) THEN
-C...f + W+/- -> f' + g (q + W+/- -> q' + g only).
-      ELSEIF(ISUB.EQ.44) THEN
-C...f + W+/- -> f' + gamma.
-      ELSEIF(ISUB.EQ.45) THEN
-C...f + W+/- -> f' + Z0.
-      ELSEIF(ISUB.EQ.46) THEN
-C...f + W+/- -> f' + W+/-.
-      ELSEIF(ISUB.EQ.47) THEN
-C...f + W+/- -> f' + H0.
-      ELSEIF(ISUB.EQ.48) THEN
-C...f + H0 -> f + g (q + H0 -> q + g only).
-      ELSEIF(ISUB.EQ.49) THEN
-C...f + H0 -> f + gamma.
-      ELSEIF(ISUB.EQ.50) THEN
-C...f + H0 -> f + Z0.
-      ENDIF
-      ELSEIF(ISUB.LE.60) THEN
-      IF(ISUB.EQ.51) THEN
-C...f + H0 -> f' + W+/-.
-      ELSEIF(ISUB.EQ.52) THEN
-C...f + H0 -> f + H0.
-      ELSEIF(ISUB.EQ.53) THEN
-C...g + g -> f + f~ (g + g -> q + q~ only).
-        CALL PYWIDT(21,SH,WDTP,WDTE)
-        FACQQ1=COMFAC*AS**2*1./6.*(UH/TH-(2.+MSTP(34)*1./4.)*UH2/SH2)*
-     &  (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))*FACA
-        FACQQ2=COMFAC*AS**2*1./6.*(TH/UH-(2.+MSTP(34)*1./4.)*TH2/SH2)*
-     &  (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))*FACA
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 730
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACQQ1
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=2
-        SIGH(NCHN)=FACQQ2
-  730   CONTINUE
-      ELSEIF(ISUB.EQ.54) THEN
-C...g + gamma -> f + f~ (g + gamma -> q + q~ only).
-        CALL PYWIDT(21,SH,WDTP,WDTE)
-        WDTESU=0.
-        DO 740 I=1,MIN(8,MDCY(21,3))
-        EF=KCHG(I,1)/3.
-        WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+WDTE(I,4))
-  740   CONTINUE
-        FACQQ=COMFAC*AEM*AS*WDTESU*(TH2+UH2)/(TH*UH)
-        IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=21
-          ISIG(NCHN,2)=22
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQQ
-        ENDIF
-        IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=22
-          ISIG(NCHN,2)=21
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQQ
-        ENDIF
-      ELSEIF(ISUB.EQ.55) THEN
-C...g + Z -> f + f~ (g + Z -> q + q~ only).
-      ELSEIF(ISUB.EQ.56) THEN
-C...g + W -> f + f'~ (g + W -> q + q'~ only).
-      ELSEIF(ISUB.EQ.57) THEN
-C...g + H0 -> f + f~ (g + H0 -> q + q~ only).
-      ELSEIF(ISUB.EQ.58) THEN
-C...gamma + gamma -> f + f~.
-        CALL PYWIDT(22,SH,WDTP,WDTE)
-        WDTESU=0.
-        DO 750 I=1,MIN(12,MDCY(22,3))
-        IF(I.LE.8) EF= KCHG(I,1)/3.
-        IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3.
-        WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+WDTE(I,4))
-  750   CONTINUE
-        FACFF=COMFAC*AEM**2*WDTESU*2.*(TH2+UH2)/(TH*UH)
-        IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=22
-          ISIG(NCHN,2)=22
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACFF
-        ENDIF
-      ELSEIF(ISUB.EQ.59) THEN
-C...gamma + Z0 -> f + f~.
-      ELSEIF(ISUB.EQ.60) THEN
-C...gamma + W+/- -> f + f~'.
-      ENDIF
-      ELSEIF(ISUB.LE.70) THEN
-      IF(ISUB.EQ.61) THEN
-C...gamma + H0 -> f + f~.
-      ELSEIF(ISUB.EQ.62) THEN
-C...Z0 + Z0 -> f + f~.
-      ELSEIF(ISUB.EQ.63) THEN
-C...Z0 + W+/- -> f + f~'.
-      ELSEIF(ISUB.EQ.64) THEN
-C...Z0 + H0 -> f + f~.
-      ELSEIF(ISUB.EQ.65) THEN
-C...W+ + W- -> f + f~.
-      ELSEIF(ISUB.EQ.66) THEN
-C...W+/- + H0 -> f + f~'.
-      ELSEIF(ISUB.EQ.67) THEN
-C...H0 + H0 -> f + f~.
-      ELSEIF(ISUB.EQ.68) THEN
-C...g + g -> g + g.
-        FACGG1=COMFAC*AS**2*9./4.*(SH2/TH2+2.*SH/TH+3.+2.*TH/SH+
-     &  TH2/SH2)*FACA
-        FACGG2=COMFAC*AS**2*9./4.*(UH2/SH2+2.*UH/SH+3.+2.*SH/UH+
-     &  SH2/UH2)*FACA
-        FACGG3=COMFAC*AS**2*9./4.*(TH2/UH2+2.*TH/UH+3.+2.*UH/TH+
-     &  UH2/TH2)
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 760
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=0.5*FACGG1
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=2
-        SIGH(NCHN)=0.5*FACGG2
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=3
-        SIGH(NCHN)=0.5*FACGG3
-  760   CONTINUE
-      ELSEIF(ISUB.EQ.69) THEN
-C...gamma + gamma -> W+ + W-.
-        SQMWE=MAX(0.5*SQMW,SQRT(SQM3*SQM4))
-        FPROP=SH2/((SQMWE-TH)*(SQMWE-UH))
-        FACWW=COMFAC*6.*AEM**2*(1.-FPROP*(4./3.+2.*SQMWE/SH)+
-     &  FPROP**2*(2./3.+2.*(SQMWE/SH)**2))*WIDS(24,1)
-        IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 770
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=22
-        ISIG(NCHN,2)=22
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACWW
-  770   CONTINUE
-      ELSEIF(ISUB.EQ.70) THEN
-C...gamma + W+/- -> Z0 + W+/-.
-        SQMWE=MAX(0.5*SQMW,SQRT(SQM3*SQM4))
-        FPROP=(TH-SQMWE)**2/(-SH*(SQMWE-UH))
-        FACZW=COMFAC*6.*AEM**2*(XW1/XW)*
-     &  (1.-FPROP*(4./3.+2.*SQMWE/(TH-SQMWE))+
-     &  FPROP**2*(2./3.+2.*(SQMWE/(TH-SQMWE))**2))*WIDS(23,2)
-        DO 790 KCHW=1,-1,-2
-        DO 780 ISDE=1,2
-        IF(KFAC(ISDE,22)*KFAC(3-ISDE,24*KCHW).EQ.0) GOTO 780
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=22
-        ISIG(NCHN,3-ISDE)=24*KCHW
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACZW*WIDS(24,(5-KCHW)/2)
-  780   CONTINUE
-  790   CONTINUE
-      ENDIF
-      ELSEIF(ISUB.LE.80) THEN
-      IF(ISUB.EQ.71) THEN
-C...Z0 + Z0 -> Z0 + Z0.
-        IF(SH.LE.4.01*SQMZ) GOTO 820
-        IF(MSTP(46).LE.2) THEN
-C...Exact scattering ME:s for on-mass-shell gauge bosons.
-          BE2=1.-4.*SQMZ/SH
-          TH=-0.5*SH*BE2*(1.-CTH)
-          UH=-0.5*SH*BE2*(1.+CTH)
-          IF(MAX(TH,UH).GT.-1.) GOTO 820
-          SHANG=1./XW1*SQMW/SQMZ*(1.+BE2)**2
-          ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
-          ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
-          THANG=1./XW1*SQMW/SQMZ*(BE2-CTH)**2
-          ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
-          ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
-          UHANG=1./XW1*SQMW/SQMZ*(BE2+CTH)**2
-          AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
-          AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
-          FACZZ=COMFAC*1./(4096.*PARU(1)**2*16.*XW1**2)*
-     &    (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
-          IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
-          IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+
-     &    (ASHIM+ATHIM+AUHIM)**2)
-          IF(MSTP(46).EQ.2) FACZZ=0.
-        ELSE
-C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron.
-          FACZZ=COMFAC*(AEM/(16.*PARU(1)*XW*XW1))**2*(64./9.)*
-     &    ABS(A00U+2.*A20U)**2
-        ENDIF
-        FACZZ=FACZZ*WIDS(23,1)
-        DO 810 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 810
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        AVI=AI**2+VI**2
-        DO 800 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 800
-        EJ=KCHG(IABS(J),1)/3.
-        AJ=SIGN(1.,EJ)
-        VJ=AJ-4.*EJ*XWV
-        AVJ=AJ**2+VJ**2
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=0.5*FACZZ*AVI*AVJ
-  800   CONTINUE
-  810   CONTINUE
-  820   CONTINUE
-      ELSEIF(ISUB.EQ.72) THEN
-C...Z0 + Z0 -> W+ + W-.
-        IF(SH.LE.4.01*SQMZ) GOTO 850
-        IF(MSTP(46).LE.2) THEN
-C...Exact scattering ME:s for on-mass-shell gauge bosons.
-          BE2=SQRT((1.-4.*SQMW/SH)*(1.-4.*SQMZ/SH))
-          CTH2=CTH**2
-          TH=-0.5*SH*(1.-2.*(SQMW+SQMZ)/SH-BE2*CTH)
-          UH=-0.5*SH*(1.-2.*(SQMW+SQMZ)/SH+BE2*CTH)
-          IF(MAX(TH,UH).GT.-1.) GOTO 850
-          SHANG=4.*SQRT(SQMW/(SQMZ*XW1))*(1.-2.*SQMW/SH)*
-     &    (1.-2.*SQMZ/SH)
-          ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
-          ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
-          ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3./2.+BE2/2.*
-     &    CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4.*((SQMW+SQMZ)/
-     &    SH*(1.-3.*CTH2)+8.*SQMW*SQMZ/SH2*(2.*CTH2-1.)+
-     &    4.*(SQMW**2+SQMZ**2)/SH2*CTH2+2.*(SQMW+SQMZ)/SH*BE2*CTH))
-          ATWIM=0.
-          AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3./2.-BE2/2.*
-     &    CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4.*((SQMW+SQMZ)/
-     &    SH*(1.-3.*CTH2)+8.*SQMW*SQMZ/SH2*(2.*CTH2-1.)+
-     &    4.*(SQMW**2+SQMZ**2)/SH2*CTH2-2.*(SQMW+SQMZ)/SH*BE2*CTH))
-          AUWIM=0.
-          A4RE=2.*XW1/SQMZ*(3.-CTH2-4.*(SQMW+SQMZ)/SH)
-          A4IM=0.
-          FACWW=COMFAC*1./(4096.*PARU(1)**2*16.*XW1**2)*
-     &    (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
-          IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2)
-          IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+
-     &    (ASHIM+ATWIM+AUWIM+A4IM)**2)
-          IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+
-     &    (ATWIM+AUWIM+A4IM)**2)
-        ELSE
-C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron.
-          FACWW=COMFAC*(AEM/(16.*PARU(1)*XW*XW1))**2*(64./9.)*
-     &    ABS(A00U-A20U)**2
-        ENDIF
-        FACWW=FACWW*WIDS(24,1)
-        DO 840 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 840
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        AVI=AI**2+VI**2
-        DO 830 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 830
-        EJ=KCHG(IABS(J),1)/3.
-        AJ=SIGN(1.,EJ)
-        VJ=AJ-4.*EJ*XWV
-        AVJ=AJ**2+VJ**2
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACWW*AVI*AVJ
-  830   CONTINUE
-  840   CONTINUE
-  850   CONTINUE
-      ELSEIF(ISUB.EQ.73) THEN
-C...Z0 + W+/- -> Z0 + W+/-.
-        IF(SH.LE.2.*SQMZ+2.*SQMW) GOTO 880
-        IF(MSTP(46).LE.2) THEN
-C...Exact scattering ME:s for on-mass-shell gauge bosons.
-          BE2=1.-2.*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2
-          EP1=1.-(SQMZ-SQMW)/SH
-          EP2=1.+(SQMZ-SQMW)/SH
-          TH=-0.5*SH*BE2*(1.-CTH)
-          UH=(SQMZ-SQMW)**2/SH-0.5*SH*BE2*(1.+CTH)
-          IF(MAX(TH,UH).GT.-1.) GOTO 880
-          THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH)
-          ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
-          ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
-          ASWRE=-XW1/SQMZ*SH/(SH-SQMW)*(-BE2*(EP1+EP2)**4*CTH+
-     &    1./4.*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4.*BE2*CTH)+
-     &    2.*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH-
-     &    1./16.*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)
-          ASWIM=0.
-          AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-BE2*(EP2+EP1*CTH)*
-     &    (EP1+EP2*CTH)*(BE2+EP1*EP2)+BE2*(EP2+EP1*CTH)*
-     &    (BE2+EP1*EP2*CTH)*(2.*EP2-EP2*CTH+EP1)-BE2*(EP2+EP1*CTH)**2*
-     &    (BE2-EP2**2*CTH)-1./8.*(BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+
-     &    2.*BE2*(1.-CTH))+1./32.*SH/SQMW*(BE2+EP1*EP2*CTH)**2*
-     &    (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)*
-     &    (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)*
-     &    (2.*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2*(BE2-EP1**2*CTH)-
-     &    1./8.*(BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2.*BE2*(1.-CTH))+
-     &    1./32.*SH/SQMW*(BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2)
-          AUWIM=0.
-          A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1.)-
-     &    2.*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2.*BE2*EP1*EP2)
-          A4IM=0.
-          FACZW=COMFAC*1./(4096.*PARU(1)**2*4.*XW1)*(AEM/XW)**4*
-     &    (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2
-          IF(MSTP(46).LE.0) FACZW=0.
-          IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+
-     &    (ATHIM+ASWIM+AUWIM+A4IM)**2)
-          IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+
-     &    (ASWIM+AUWIM+A4IM)**2)
-        ELSE
-C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron.
-          FACZW=COMFAC*AEM**2/(64.*PARU(1)**2*XW**2*XW1)*16.*
-     &    ABS(A20U+3.*A11U*CTH)**2
-        ENDIF
-        FACZW=FACZW*WIDS(23,2)
-        DO 870 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 870
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        AVI=AI**2+VI**2
-        KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I))
-        DO 860 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 860
-        EJ=KCHG(IABS(J),1)/3.
-        AJ=SIGN(1.,EJ)
-        VJ=AI-4.*EJ*XWV
-        AVJ=AJ**2+VJ**2
-        KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J))
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2)
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=2
-        SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ
-  860   CONTINUE
-  870   CONTINUE
-  880   CONTINUE
-      ELSEIF(ISUB.EQ.75) THEN
-C...W+ + W- -> gamma + gamma.
-      ELSEIF(ISUB.EQ.76) THEN
-C...W+ + W- -> Z0 + Z0.
-        IF(SH.LE.4.01*SQMZ) GOTO 910
-        IF(MSTP(46).LE.2) THEN
-C...Exact scattering ME:s for on-mass-shell gauge bosons.
-          BE2=SQRT((1.-4.*SQMW/SH)*(1.-4.*SQMZ/SH))
-          CTH2=CTH**2
-          TH=-0.5*SH*(1.-2.*(SQMW+SQMZ)/SH-BE2*CTH)
-          UH=-0.5*SH*(1.-2.*(SQMW+SQMZ)/SH+BE2*CTH)
-          IF(MAX(TH,UH).GT.-1.) GOTO 910
-          SHANG=4.*SQRT(SQMW/(SQMZ*XW1))*(1.-2.*SQMW/SH)*
-     &    (1.-2.*SQMZ/SH)
-          ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
-          ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
-          ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3./2.+BE2/2.*
-     &    CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4.*((SQMW+SQMZ)/
-     &    SH*(1.-3.*CTH2)+8.*SQMW*SQMZ/SH2*(2.*CTH2-1.)+
-     &    4.*(SQMW**2+SQMZ**2)/SH2*CTH2+2.*(SQMW+SQMZ)/SH*BE2*CTH))
-          ATWIM=0.
-          AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3./2.-BE2/2.*
-     &    CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4.*((SQMW+SQMZ)/
-     &    SH*(1.-3.*CTH2)+8.*SQMW*SQMZ/SH2*(2.*CTH2-1.)+
-     &    4.*(SQMW**2+SQMZ**2)/SH2*CTH2-2.*(SQMW+SQMZ)/SH*BE2*CTH))
-          AUWIM=0.
-          A4RE=2.*XW1/SQMZ*(3.-CTH2-4.*(SQMW+SQMZ)/SH)
-          A4IM=0.
-          FACZZ=COMFAC*1./(4096.*PARU(1)**2)*(AEM/XW)**4*
-     &    (SH/SQMW)**2*SH2
-          IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
-          IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+
-     &    (ASHIM+ATWIM+AUWIM+A4IM)**2)
-          IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+
-     &    (ATWIM+AUWIM+A4IM)**2)
-        ELSE
-C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron.
-          FACZZ=COMFAC*(AEM/(4.*PARU(1)*XW))**2*(64./9.)*
-     &    ABS(A00U-A20U)**2
-        ENDIF
-        FACZZ=FACZZ*WIDS(23,1)
-        DO 900 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 900
-        EI=SIGN(1.,FLOAT(I))*KCHG(IABS(I),1)
-        DO 890 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 890
-        EJ=SIGN(1.,FLOAT(J))*KCHG(IABS(J),1)
-        IF(EI*EJ.GT.0.) GOTO 890
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=0.5*FACZZ*VINT(180+I)*VINT(180+J)
-  890   CONTINUE
-  900   CONTINUE
-  910   CONTINUE
-      ELSEIF(ISUB.EQ.77) THEN
-C...W+/- + W+/- -> W+/- + W+/-.
-        IF(SH.LE.4.01*SQMW) GOTO 940
-        IF(MSTP(46).LE.2) THEN
-C...Exact scattering ME:s for on-mass-shell gauge bosons.
-          BE2=1.-4.*SQMW/SH
-          BE4=BE2**2
-          CTH2=CTH**2
-          CTH3=CTH**3
-          TH=-0.5*SH*BE2*(1.-CTH)
-          UH=-0.5*SH*BE2*(1.+CTH)
-          IF(MAX(TH,UH).GT.-1.) GOTO 940
-          SHANG=(1.+BE2)**2
-          ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
-          ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
-          THANG=(BE2-CTH)**2
-          ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
-          ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
-          UHANG=(BE2+CTH)**2
-          AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
-          AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
-          SGZANG=1./SQMW*BE2*(3.-BE2)**2*CTH
-          ASGRE=XW*SGZANG
-          ASGIM=0.
-          ASZRE=XW1*SH/(SH-SQMZ)*SGZANG
-          ASZIM=0.
-          TGZANG=1./SQMW*(BE2*(4.-2.*BE2+BE4)+BE2*(4.-10.*BE2+BE4)*CTH+
-     &    (2.-11.*BE2+10.*BE4)*CTH2+BE2*CTH3)
-          ATGRE=0.5*XW*SH/TH*TGZANG
-          ATGIM=0.
-          ATZRE=0.5*XW1*SH/(TH-SQMZ)*TGZANG
-          ATZIM=0.
-          UGZANG=1./SQMW*(BE2*(4.-2.*BE2+BE4)-BE2*(4.-10.*BE2+BE4)*CTH+
-     &    (2.-11.*BE2+10.*BE4)*CTH2-BE2*CTH3)
-          AUGRE=0.5*XW*SH/UH*UGZANG
-          AUGIM=0.
-          AUZRE=0.5*XW1*SH/(UH-SQMZ)*UGZANG
-          AUZIM=0.
-          A4ARE=1./SQMW*(1.+2.*BE2-6.*BE2*CTH-CTH2)
-          A4AIM=0.
-          A4SRE=2./SQMW*(1.+2.*BE2-CTH2)
-          A4SIM=0.
-          FWW=COMFAC*1./(4096.*PARU(1)**2)*(AEM/XW)**4*(SH/SQMW)**2*SH2
-          IF(MSTP(46).LE.0) THEN
-            AWWARE=ASHRE
-            AWWAIM=ASHIM
-            AWWSRE=0.
-            AWWSIM=0.
-          ELSEIF(MSTP(46).EQ.1) THEN
-            AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
-            AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
-            AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
-            AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
-          ELSE
-            AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
-            AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
-            AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
-            AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
-          ENDIF
-          AWWA2=AWWARE**2+AWWAIM**2
-          AWWS2=AWWSRE**2+AWWSIM**2
-        ELSE
-C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron.
-          FWWA=COMFAC*(AEM/(4.*PARU(1)*XW))**2*(64./9.)*
-     &    ABS(A00U+0.5*A20U+4.5*A11U*CTH)**2
-          FWWS=COMFAC*(AEM/(4.*PARU(1)*XW))**2*64.*ABS(A20U)**2
-        ENDIF
-        DO 930 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 930
-        EI=SIGN(1.,FLOAT(I))*KCHG(IABS(I),1)
-        DO 920 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 920
-        EJ=SIGN(1.,FLOAT(J))*KCHG(IABS(J),1)
-        IF(EI*EJ.LT.0.) THEN
-C...W+W-
-          IF(MSTP(45).EQ.1) GOTO 920
-          IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1)
-          IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1)
-        ELSE
-C...W+W+/W-W-
-          IF(MSTP(45).EQ.2) GOTO 920
-          IF(MSTP(46).LE.2) FACWW=FWW*AWWS2
-          IF(MSTP(46).GE.3) FACWW=FWWS
-          IF(EI.GT.0.) FACWW=FACWW*VINT(91)
-          IF(EI.LT.0.) FACWW=FACWW*VINT(92)
-        ENDIF
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J)
-        IF(EI*EJ.GT.0.) SIGH(NCHN)=0.5*SIGH(NCHN)
-  920   CONTINUE
-  930   CONTINUE
-  940   CONTINUE
-      ELSEIF(ISUB.EQ.78) THEN
-C...W+/- + H0 -> W+/- + H0.
-      ELSEIF(ISUB.EQ.79) THEN
-C...H0 + H0 -> H0 + H0.
-      ELSEIF(ISUB.EQ.80) THEN
-C...q + gamma -> q' + pi+/-.
-        FQPI=COMFAC*(2.*AEM/9.)*(-SH/TH)*(1./SH2+1./TH2)
-        ASSH=ULALPS(MAX(0.5,0.5*SH))
-        Q2FPSH=0.55/LOG(MAX(2.,2.*SH))
-        DELSH=UH*SQRT(ASSH*Q2FPSH)
-        ASUH=ULALPS(MAX(0.5,-0.5*UH))
-        Q2FPUH=0.55/LOG(MAX(2.,-2.*UH))
-        DELUH=SH*SQRT(ASUH*Q2FPUH)
-        DO 960 I=MAX(-2,MMINA),MIN(2,MMAXA)
-        IF(I.EQ.0) GOTO 960
-        EI=KCHG(IABS(I),1)/3.
-        EJ=SIGN(1.-ABS(EI),EI)
-        DO 950 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 950
-        IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 950
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=22
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FQPI*(EI*DELSH+EJ*DELUH)**2
-  950   CONTINUE
-  960   CONTINUE
-      ENDIF
-C...C: 2 -> 2, tree diagrams with masses.
-      ELSEIF(ISUB.LE.90) THEN
-      IF(ISUB.EQ.81) THEN
-C...q + q~ -> Q + Q~.
-        FACQQB=COMFAC*AS**2*4./9.*(((TH-SQM3)**2+
-     &  (UH-SQM3)**2)/SH2+2.*SQM3/SH)
-        IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQM3,0.)
-        WID2=1.
-        IF(MINT(55).EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        IF((MINT(55).EQ.7.OR.MINT(55).EQ.8).AND.MSTP(49).GE.1)
-     &  WID2=WIDS(MINT(55)+20,1)
-        FACQQB=FACQQB*WID2
-        DO 970 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
-     &  KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 970
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACQQB
-  970   CONTINUE
-      ELSEIF(ISUB.EQ.82) THEN
-C...g + g -> Q + Q~.
-        IF(MSTP(34).EQ.0) THEN
-          FACQQ1=COMFAC*FACA*AS**2*(1./6.)*((UH-SQM3)/(TH-SQM3)-
-     &    2.*(UH-SQM3)**2/SH2+4.*(SQM3/SH)*(TH*UH-SQM3**2)/
-     &    (TH-SQM3)**2)
-          FACQQ2=COMFAC*FACA*AS**2*(1./6.)*((TH-SQM3)/(UH-SQM3)-
-     &    2.*(TH-SQM3)**2/SH2+4.*(SQM3/SH)*(TH*UH-SQM3**2)/
-     &    (UH-SQM3)**2)
-        ELSE
-          FACQQ1=COMFAC*FACA*AS**2*(1./6.)*((UH-SQM3)/(TH-SQM3)-
-     &    2.25*(UH-SQM3)**2/SH2+4.5*(SQM3/SH)*(TH*UH-SQM3**2)/
-     &    (TH-SQM3)**2+0.5*SQM3*TH/(TH-SQM3)**2-SQM3**2/(SH*(TH-SQM3)))
-          FACQQ2=COMFAC*FACA*AS**2*(1./6.)*((TH-SQM3)/(UH-SQM3)-
-     &    2.25*(TH-SQM3)**2/SH2+4.5*(SQM3/SH)*(TH*UH-SQM3**2)/
-     &    (UH-SQM3)**2+0.5*SQM3*UH/(UH-SQM3)**2-SQM3**2/(SH*(UH-SQM3)))
-        ENDIF
-        IF(MSTP(35).GE.1) THEN
-          FATRE=PYHFTH(SH,SQM3,2./7.)
-          FACQQ1=FACQQ1*FATRE
-          FACQQ2=FACQQ2*FATRE
-        ENDIF
-        WID2=1.
-        IF(MINT(55).EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        IF((MINT(55).EQ.7.OR.MINT(55).EQ.8).AND.MSTP(49).GE.1)
-     &  WID2=WIDS(MINT(55)+20,1)
-        FACQQ1=FACQQ1*WID2
-        FACQQ2=FACQQ2*WID2
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 980
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACQQ1
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=2
-        SIGH(NCHN)=FACQQ2
-  980   CONTINUE
-      ELSEIF(ISUB.EQ.83) THEN
-C...f + q -> f' + Q.
-        FACQQS=COMFAC*(0.5*AEM/XW)**2*SH*(SH-SQM3)/(SQMW-TH)**2
-        FACQQU=COMFAC*(0.5*AEM/XW)**2*UH*(UH-SQM3)/(SQMW-TH)**2
-        DO 1000 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 1000
-        DO 990 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 990
-        IF(I*J.GT.0.AND.MOD(IABS(I+J),2).EQ.0) GOTO 990
-        IF(I*J.LT.0.AND.MOD(IABS(I+J),2).EQ.1) GOTO 990
-        IF(IABS(I).LT.MINT(55).AND.MOD(IABS(I+MINT(55)),2).EQ.1) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=1
-          IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
-     &    (IABS(I)+1)/2)*VINT(180+J)
-          IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(I)/2,
-     &    (MINT(55)+1)/2)*VINT(180+J)
-          WID2=1.
-          IF(I.GT.0) THEN
-            IF(MINT(55).EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,2)
-            IF((MINT(55).EQ.7.OR.MINT(55).EQ.8).AND.MSTP(49).GE.1)
-     &      WID2=WIDS(MINT(55)+20,2)
-          ELSE
-            IF(MINT(55).EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,3)
-            IF((MINT(55).EQ.7.OR.MINT(55).EQ.8).AND.MSTP(49).GE.1)
-     &      WID2=WIDS(MINT(55)+20,3)
-          ENDIF
-          IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
-          IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
-        ENDIF
-        IF(IABS(J).LT.MINT(55).AND.MOD(IABS(J+MINT(55)),2).EQ.1) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=2
-          IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
-     &    (IABS(J)+1)/2)*VINT(180+I)
-          IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(J)/2,
-     &    (MINT(55)+1)/2)*VINT(180+I)
-          IF(J.GT.0) THEN
-            IF(MINT(55).EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,2)
-            IF((MINT(55).EQ.7.OR.MINT(55).EQ.8).AND.MSTP(49).GE.1)
-     &      WID2=WIDS(MINT(55)+20,2)
-          ELSE
-            IF(MINT(55).EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,3)
-            IF((MINT(55).EQ.7.OR.MINT(55).EQ.8).AND.MSTP(49).GE.1)
-     &      WID2=WIDS(MINT(55)+20,3)
-          ENDIF
-          IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
-          IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
-        ENDIF
-  990   CONTINUE
- 1000   CONTINUE
-      ELSEIF(ISUB.EQ.84) THEN
-C...g + gamma -> Q + Q~.
-        FMTU=SQM3/(SQM3-TH)+SQM3/(SQM3-UH)
-        FACQQ=COMFAC*AS*AEM*(KCHG(IABS(MINT(55)),1)/3.)**2*
-     &  ((SQM3-TH)/(SQM3-UH)+(SQM3-UH)/(SQM3-TH)+4.*FMTU*(1.-FMTU))
-        IF(MSTP(35).GE.1) FACQQ=FACQQ*PYHFTH(SH,SQM3,0.)
-        WID2=1.
-        IF(MINT(55).EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        IF((MINT(55).EQ.7.OR.MINT(55).EQ.8).AND.MSTP(49).GE.1)
-     &  WID2=WIDS(MINT(55)+20,1)
-        FACQQ=FACQQ*WID2
-        IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=21
-          ISIG(NCHN,2)=22
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQQ
-        ENDIF
-        IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=22
-          ISIG(NCHN,2)=21
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQQ
-        ENDIF
-      ELSEIF(ISUB.EQ.85) THEN
-C...gamma + gamma -> F + F~ (heavy fermion, quark or lepton).
-        FMTU=SQM3/(SQM3-TH)+SQM3/(SQM3-UH)
-        FACFF=COMFAC*AEM**2*(KCHG(IABS(MINT(56)),1)/3.)**4*2.*
-     &  ((SQM3-TH)/(SQM3-UH)+(SQM3-UH)/(SQM3-TH)+4.*FMTU*(1.-FMTU))
-        IF(IABS(MINT(56)).LT.10) FACFF=3.*FACFF
-        IF(IABS(MINT(56)).LT.10.AND.MSTP(35).GE.1)
-     &  FACFF=FACFF*PYHFTH(SH,SQM3,1.)
-        WID2=1.
-        IF(MINT(56).EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        IF((MINT(56).EQ.7.OR.MINT(56).EQ.8).AND.MSTP(49).GE.1)
-     &  WID2=WIDS(MINT(56)+20,1)
-        IF(MINT(56).EQ.17.AND.MSTP(49).GE.1) WID2=WIDS(29,1)
-        FACFF=FACFF*WID2
-        IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=22
-          ISIG(NCHN,2)=22
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACFF
-        ENDIF
-      ELSEIF(ISUB.EQ.86) THEN
-C...g + g -> J/Psi + g.
-        FACQQG=COMFAC*AS**3*(5./9.)*PARP(38)*SQRT(SQM3)*
-     &  (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
-     &  ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
-        IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=21
-          ISIG(NCHN,2)=21
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQQG
-        ENDIF
-      ELSEIF(ISUB.EQ.87) THEN
-C...g + g -> chi_0c + g.
-        PGTW=(SH*TH+TH*UH+UH*SH)/SH2
-        QGTW=(SH*TH*UH)/SH**3
-        RGTW=SQM3/SH
-        FACQQG=COMFAC*AS**3*4.*(PARP(39)/SQRT(SQM3))*(1./SH)*
-     &  (9.*RGTW**2*PGTW**4*(RGTW**4-2.*RGTW**2*PGTW+PGTW**2)-
-     &  6.*RGTW*PGTW**3*QGTW*(2.*RGTW**4-5.*RGTW**2*PGTW+PGTW**2)-
-     &  PGTW**2*QGTW**2*(RGTW**4+2.*RGTW**2*PGTW-PGTW**2)+
-     &  2.*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)+6.*RGTW**2*QGTW**4)/
-     &  (QGTW*(QGTW-RGTW*PGTW)**4)
-        IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=21
-          ISIG(NCHN,2)=21
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQQG
-        ENDIF
-      ELSEIF(ISUB.EQ.88) THEN
-C...g + g -> chi_1c + g.
-        PGTW=(SH*TH+TH*UH+UH*SH)/SH2
-        QGTW=(SH*TH*UH)/SH**3
-        RGTW=SQM3/SH
-        FACQQG=COMFAC*AS**3*12.*(PARP(39)/SQRT(SQM3))*(1./SH)*
-     &  PGTW**2*(RGTW*PGTW**2*(RGTW**2-4.*PGTW)+2.*QGTW*(-RGTW**4+
-     &  5.*RGTW**2*PGTW+PGTW**2)-15.*RGTW*QGTW**2)/
-     &  (QGTW-RGTW*PGTW)**4
-        IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=21
-          ISIG(NCHN,2)=21
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQQG
-        ENDIF
-      ELSEIF(ISUB.EQ.89) THEN
-C...g + g -> chi_2c + g.
-        PGTW=(SH*TH+TH*UH+UH*SH)/SH2
-        QGTW=(SH*TH*UH)/SH**3
-        RGTW=SQM3/SH
-        FACQQG=COMFAC*AS**3*4.*(PARP(39)/SQRT(SQM3))*(1./SH)*
-     &  (12.*RGTW**2*PGTW**4*(RGTW**4-2.*RGTW**2*PGTW+PGTW**2)-
-     &  3.*RGTW*PGTW**3*QGTW*(8.*RGTW**4-RGTW**2*PGTW+4.*PGTW**2)+
-     &  2.*PGTW**2*QGTW**2*(-7.*RGTW**4+43.*RGTW**2*PGTW+PGTW**2)+
-     &  RGTW*PGTW*QGTW**3*(16.*RGTW**2-61.*PGTW)+12.*RGTW**2*QGTW**4)/
-     &  (QGTW*(QGTW-RGTW*PGTW)**4)
-        IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=21
-          ISIG(NCHN,2)=21
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQQG
-        ENDIF
-      ENDIF
-C...D: Mimimum bias processes.
-      ELSEIF(ISUB.LE.100) THEN
-      IF(ISUB.EQ.91) THEN
-C...Elastic scattering.
-        SIGS=SIGT(0,0,1)
-      ELSEIF(ISUB.EQ.92) THEN
-C...Single diffractive scattering (first side, i.e. XB).
-        SIGS=SIGT(0,0,2)
-      ELSEIF(ISUB.EQ.93) THEN
-C...Single diffractive scattering (second side, i.e. AX).
-        SIGS=SIGT(0,0,3)
-      ELSEIF(ISUB.EQ.94) THEN
-C...Double diffractive scattering.
-        SIGS=SIGT(0,0,4)
-      ELSEIF(ISUB.EQ.95) THEN
-C...Low-pT scattering.
-        SIGS=SIGT(0,0,5)
-      ELSEIF(ISUB.EQ.96) THEN
-C...Multiple interactions: sum of QCD processes.
-        CALL PYWIDT(21,SH,WDTP,WDTE)
-C...q + q' -> q + q'.
-        FACQQ1=COMFAC*AS**2*4./9.*(SH2+UH2)/TH2
-        FACQQB=COMFAC*AS**2*4./9.*((SH2+UH2)/TH2*FACA-
-     &  MSTP(34)*2./3.*UH2/(SH*TH))
-        FACQQ2=COMFAC*AS**2*4./9.*((SH2+TH2)/UH2-
-     &  MSTP(34)*2./3.*SH2/(TH*UH))
-        DO 1020 I=-3,3
-        IF(I.EQ.0) GOTO 1020
-        DO 1010 J=-3,3
-        IF(J.EQ.0) GOTO 1010
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=111
-        SIGH(NCHN)=FACQQ1
-        IF(I.EQ.-J) SIGH(NCHN)=FACQQB
-        IF(I.EQ.J) THEN
-          SIGH(NCHN)=0.5*SIGH(NCHN)
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=112
-          SIGH(NCHN)=0.5*FACQQ2
-        ENDIF
- 1010   CONTINUE
- 1020   CONTINUE
-C...q + q~ -> q' + q~' or g + g.
-        FACQQB=COMFAC*AS**2*4./9.*(TH2+UH2)/SH2*(WDTE(0,1)+WDTE(0,2)+
-     &  WDTE(0,3)+WDTE(0,4))
-        FACGG1=COMFAC*AS**2*32./27.*(UH/TH-(2.+MSTP(34)*1./4.)*UH2/SH2)
-        FACGG2=COMFAC*AS**2*32./27.*(TH/UH-(2.+MSTP(34)*1./4.)*TH2/SH2)
-        DO 1030 I=-3,3
-        IF(I.EQ.0) GOTO 1030
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=121
-        SIGH(NCHN)=FACQQB
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=131
-        SIGH(NCHN)=0.5*FACGG1
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=132
-        SIGH(NCHN)=0.5*FACGG2
- 1030   CONTINUE
-C...q + g -> q + g.
-        FACQG1=COMFAC*AS**2*4./9.*((2.+MSTP(34)*1./4.)*UH2/TH2-UH/SH)*
-     &  FACA
-        FACQG2=COMFAC*AS**2*4./9.*((2.+MSTP(34)*1./4.)*SH2/TH2-SH/UH)
-        DO 1050 I=-3,3
-        IF(I.EQ.0) GOTO 1050
-        DO 1040 ISDE=1,2
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=281
-        SIGH(NCHN)=FACQG1
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=282
-        SIGH(NCHN)=FACQG2
- 1040   CONTINUE
- 1050   CONTINUE
-C...g + g -> q + q~ or g + g.
-        FACQQ1=COMFAC*AS**2*1./6.*(UH/TH-(2.+MSTP(34)*1./4.)*UH2/SH2)*
-     &  (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))*FACA
-        FACQQ2=COMFAC*AS**2*1./6.*(TH/UH-(2.+MSTP(34)*1./4.)*TH2/SH2)*
-     &  (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))*FACA
-        FACGG1=COMFAC*AS**2*9./4.*(SH2/TH2+2.*SH/TH+3.+2.*TH/SH+
-     &  TH2/SH2)*FACA
-        FACGG2=COMFAC*AS**2*9./4.*(UH2/SH2+2.*UH/SH+3.+2.*SH/UH+
-     &  SH2/UH2)*FACA
-        FACGG3=COMFAC*AS**2*9./4.*(TH2/UH2+2.*TH/UH+3+2.*UH/TH+UH2/TH2)
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=531
-        SIGH(NCHN)=FACQQ1
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=532
-        SIGH(NCHN)=FACQQ2
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=681
-        SIGH(NCHN)=0.5*FACGG1
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=682
-        SIGH(NCHN)=0.5*FACGG2
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=683
-        SIGH(NCHN)=0.5*FACGG3
-      ENDIF
-C...E: 2 -> 1, loop diagrams.
-      ELSEIF(ISUB.LE.110) THEN
-      IF(ISUB.EQ.101) THEN
-C...g + g -> gamma*/Z0.
-      ELSEIF(ISUB.EQ.102) THEN
-C...g + g -> H0 (or H'0, or A0).
-        CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=4.*COMFAC/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        HI=HP*WDTP(13)/32.
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 1060
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=HI*FACBW*HF
- 1060   CONTINUE
-      ELSEIF(ISUB.EQ.103) THEN
-C...gamma + gamma -> H0 (or H'0, or A0).
-        CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=4.*COMFAC/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        HI=HP*WDTP(14)*2.
-        IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 1070
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=22
-        ISIG(NCHN,2)=22
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=HI*FACBW*HF
- 1070   CONTINUE
-C...F: 2 -> 2, box diagrams.
-      ELSEIF(ISUB.EQ.110) THEN
-C...f + f~ -> gamma + H0.
-        THUH=MAX(TH*UH,SH*CKIN(3)**2)
-        FACHG=COMFAC*(3.*AEM**4)/(2.*PARU(1)**2*XW*SQMW)*SH*THUH
-        FACHG=FACHG*WIDS(KFHIGG,2)
-C...Calculate loop contributions for intermediate gamma* and Z0.
-        CIGTOT=CMPLX(0.,0.)
-        CIZTOT=CMPLX(0.,0.)
-        JMAX=3*MSTP(1)+1
-        DO 1080 J=1,JMAX
-        IF(J.LE.2*MSTP(1)) THEN
-          FNC=1.
-          EJ=KCHG(J,1)/3.
-          AJ=SIGN(1.,EJ+0.1)
-          VJ=AJ-4.*EJ*XWV
-          BALP=SQM4/(2.*PMAS(J,1))**2
-          BBET=SH/(2.*PMAS(J,1))**2
-        ELSEIF(J.LE.3*MSTP(1)) THEN
-          FNC=3.
-          JL=2*(J-2*MSTP(1))-1
-          EJ=KCHG(10+JL,1)/3.
-          AJ=SIGN(1.,EJ+0.1)
-          VJ=AJ-4.*EJ*XWV
-          BALP=SQM4/(2.*PMAS(10+JL,1))**2
-          BBET=SH/(2.*PMAS(10+JL,1))**2
-        ELSE
-          BALP=SQM4/(2.*PMAS(24,1))**2
-          BBET=SH/(2.*PMAS(24,1))**2
-        ENDIF
-        BABI=1./(BALP-BBET)
-        IF(BALP.LT.1.) THEN
-          F0ALP=CMPLX(ASIN(SQRT(BALP)),0.)
-          F1ALP=F0ALP**2
-        ELSE
-          F0ALP=CMPLX(LOG(SQRT(BALP)+SQRT(BALP-1.)),-0.5*PARU(1))
-          F1ALP=-F0ALP**2
-        ENDIF
-        F2ALP=SQRT(ABS(BALP-1.)/BALP)*F0ALP
-        IF(BBET.LT.1.) THEN
-          F0BET=CMPLX(ASIN(SQRT(BBET)),0.)
-          F1BET=F0BET**2
-        ELSE
-          F0BET=CMPLX(LOG(SQRT(BBET)+SQRT(BBET-1.)),-0.5*PARU(1))
-          F1BET=-F0BET**2
-        ENDIF
-        F2BET=SQRT(ABS(BBET-1.)/BBET)*F0BET
-        IF(J.LE.3*MSTP(1)) THEN
-          FIF=0.5*BABI+BABI**2*(0.5*(1.-BALP+BBET)*(F1BET-F1ALP)+
-     &    BBET*(F2BET-F2ALP))
-          CIGTOT=CIGTOT+FNC*EJ**2*FIF
-          CIZTOT=CIZTOT+FNC*EJ*VJ*FIF
-        ELSE
-          TXW=XW/XW1
-          CIGTOT=CIGTOT-0.5*(BABI*(1.5+BALP)+BABI**2*((1.5-3.*BALP+
-     &    4.*BBET)*(F1BET-F1ALP)+BBET*(2.*BALP+3.)*(F2BET-F2ALP)))
-          CIZTOT=CIZTOT-0.5*BABI*XW1*((5.-TXW+2.*BALP*(1.-TXW))*
-     &    (1.+2.*BABI*BBET*(F2BET-F2ALP))+BABI*(4.*BBET*(3.-TXW)-
-     &    (2.*BALP-1.)*(5.-TXW))*(F1BET-F1ALP))
-        ENDIF
- 1080   CONTINUE
-        GMMZ=PMAS(23,1)*PMAS(23,2)
-        CIGTOT=CIGTOT/SH
-        CIZTOT=CIZTOT*XWC/CMPLX(SH-SQMZ,GMMZ)
-C...Loop over initial flavours.
-        DO 1090 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 1090
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        FCOI=1.
-        IF(IABS(I).LE.10) FCOI=FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACHG*FCOI*(ABS(EI*CIGTOT+VI*CIZTOT)**2+
-     &  ABS(AI*CIZTOT)**2)
- 1090   CONTINUE
-      ENDIF
-      ELSEIF(ISUB.LE.120) THEN
-      IF(ISUB.EQ.111) THEN
-C...f + f~ -> g + H0 (q + q~ -> g + H0 only).
-        A5STUR=0.
-        A5STUI=0.
-        DO 1100 I=1,2*MSTP(1)
-        SQMQ=PMAS(I,1)**2
-        EPSS=4.*SQMQ/SH
-        EPSH=4.*SQMQ/SQMH
-        CALL PYWAUX(1,EPSS,W1SR,W1SI)
-        CALL PYWAUX(1,EPSH,W1HR,W1HI)
-        CALL PYWAUX(2,EPSS,W2SR,W2SI)
-        CALL PYWAUX(2,EPSH,W2HR,W2HI)
-        A5STUR=A5STUR+EPSH*(1.+SH/(TH+UH)*(W1SR-W1HR)+
-     &  (0.25-SQMQ/(TH+UH))*(W2SR-W2HR))
-        A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+
-     &  (0.25-SQMQ/(TH+UH))*(W2SI-W2HI))
- 1100   CONTINUE
-        FACGH=COMFAC*FACA/(144.*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
-     &  SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2)
-        FACGH=FACGH*WIDS(25,2)
-        DO 1110 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
-     &  KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 1110
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACGH
- 1110   CONTINUE
-      ELSEIF(ISUB.EQ.112) THEN
-C...f + g -> f + H0 (q + g -> q + H0 only).
-        A5TSUR=0.
-        A5TSUI=0.
-        DO 1120 I=1,2*MSTP(1)
-        SQMQ=PMAS(I,1)**2
-        EPST=4.*SQMQ/TH
-        EPSH=4.*SQMQ/SQMH
-        CALL PYWAUX(1,EPST,W1TR,W1TI)
-        CALL PYWAUX(1,EPSH,W1HR,W1HI)
-        CALL PYWAUX(2,EPST,W2TR,W2TI)
-        CALL PYWAUX(2,EPSH,W2HR,W2HI)
-        A5TSUR=A5TSUR+EPSH*(1.+TH/(SH+UH)*(W1TR-W1HR)+
-     &  (0.25-SQMQ/(SH+UH))*(W2TR-W2HR))
-        A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+
-     &  (0.25-SQMQ/(SH+UH))*(W2TI-W2HI))
- 1120   CONTINUE
-        FACQH=COMFAC*FACA/(384.*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
-     &  SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2)
-        FACQH=FACQH*WIDS(25,2)
-        DO 1140 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 1140
-        DO 1130 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 1130
-        IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 1130
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACQH
- 1130   CONTINUE
- 1140   CONTINUE
-      ELSEIF(ISUB.EQ.113) THEN
-C...g + g -> g + H0.
-        A2STUR=0.
-        A2STUI=0.
-        A2USTR=0.
-        A2USTI=0.
-        A2TUSR=0.
-        A2TUSI=0.
-        A4STUR=0.
-        A4STUI=0.
-        DO 1150 I=1,2*MSTP(1)
-        SQMQ=PMAS(I,1)**2
-        EPSS=4.*SQMQ/SH
-        EPST=4.*SQMQ/TH
-        EPSU=4.*SQMQ/UH
-        EPSH=4.*SQMQ/SQMH
-        IF(EPSH.LT.1.E-6) GOTO 1150
-        CALL PYWAUX(1,EPSS,W1SR,W1SI)
-        CALL PYWAUX(1,EPST,W1TR,W1TI)
-        CALL PYWAUX(1,EPSU,W1UR,W1UI)
-        CALL PYWAUX(1,EPSH,W1HR,W1HI)
-        CALL PYWAUX(2,EPSS,W2SR,W2SI)
-        CALL PYWAUX(2,EPST,W2TR,W2TI)
-        CALL PYWAUX(2,EPSU,W2UR,W2UI)
-        CALL PYWAUX(2,EPSH,W2HR,W2HI)
-        CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
-        CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
-        CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
-        CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
-        CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
-        CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
-        CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI)
-        CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI)
-        CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI)
-        CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI)
-        CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI)
-        CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI)
-        W3STUR=YHSTUR-Y3STUR-Y3UTSR
-        W3STUI=YHSTUI-Y3STUI-Y3UTSI
-        W3SUTR=YHSUTR-Y3SUTR-Y3TUSR
-        W3SUTI=YHSUTI-Y3SUTI-Y3TUSI
-        W3TSUR=YHTSUR-Y3TSUR-Y3USTR
-        W3TSUI=YHTSUI-Y3TSUI-Y3USTI
-        W3TUSR=YHTUSR-Y3TUSR-Y3SUTR
-        W3TUSI=YHTUSI-Y3TUSI-Y3SUTI
-        W3USTR=YHUSTR-Y3USTR-Y3TSUR
-        W3USTI=YHUSTI-Y3USTI-Y3TSUI
-        W3UTSR=YHUTSR-Y3UTSR-Y3STUR
-        W3UTSI=YHUTSI-Y3UTSI-Y3STUI
-        B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2.*TH*UH*(UH+2.*SH)/
-     &  (SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4.)*(0.5*W2SR+0.5*W2HR-W2TR+
-     &  W3STUR)+SH2*(2.*SQMQ/(SH+UH)**2-0.5/(SH+UH))*(W2TR-W2HR)+
-     &  0.5*TH*UH/SH*(W2HR-2.*W2TR)+0.125*(SH-12.*SQMQ-4.*TH*UH/SH)*
-     &  W3TSUR)
-        B2STUI=SQMQ/SQMH**2*(2.*TH*UH*(UH+2.*SH)/(SH+UH)**2*
-     &  (W1TI-W1HI)+(SQMQ-SH/4.)*(0.5*W2SI+0.5*W2HI-W2TI+W3STUI)+
-     &  SH2*(2.*SQMQ/(SH+UH)**2-0.5/(SH+UH))*(W2TI-W2HI)+0.5*TH*UH/SH*
-     &  (W2HI-2.*W2TI)+0.125*(SH-12.*SQMQ-4.*TH*UH/SH)*W3TSUI)
-        B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2.*UH*TH*(TH+2.*SH)/
-     &  (SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4.)*(0.5*W2SR+0.5*W2HR-W2UR+
-     &  W3SUTR)+SH2*(2.*SQMQ/(SH+TH)**2-0.5/(SH+TH))*(W2UR-W2HR)+
-     &  0.5*UH*TH/SH*(W2HR-2.*W2UR)+0.125*(SH-12.*SQMQ-4.*UH*TH/SH)*
-     &  W3USTR)
-        B2SUTI=SQMQ/SQMH**2*(2.*UH*TH*(TH+2.*SH)/(SH+TH)**2*
-     &  (W1UI-W1HI)+(SQMQ-SH/4.)*(0.5*W2SI+0.5*W2HI-W2UI+W3SUTI)+
-     &  SH2*(2.*SQMQ/(SH+TH)**2-0.5/(SH+TH))*(W2UI-W2HI)+0.5*UH*TH/SH*
-     &  (W2HI-2.*W2UI)+0.125*(SH-12.*SQMQ-4.*UH*TH/SH)*W3USTI)
-        B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2.*SH*UH*(UH+2.*TH)/
-     &  (TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4.)*(0.5*W2TR+0.5*W2HR-W2SR+
-     &  W3TSUR)+TH2*(2.*SQMQ/(TH+UH)**2-0.5/(TH+UH))*(W2SR-W2HR)+
-     &  0.5*SH*UH/TH*(W2HR-2.*W2SR)+0.125*(TH-12.*SQMQ-4.*SH*UH/TH)*
-     &  W3STUR)
-        B2TSUI=SQMQ/SQMH**2*(2.*SH*UH*(UH+2.*TH)/(TH+UH)**2*
-     &  (W1SI-W1HI)+(SQMQ-TH/4.)*(0.5*W2TI+0.5*W2HI-W2SI+W3TSUI)+
-     &  TH2*(2.*SQMQ/(TH+UH)**2-0.5/(TH+UH))*(W2SI-W2HI)+0.5*SH*UH/TH*
-     &  (W2HI-2.*W2SI)+0.125*(TH-12.*SQMQ-4.*SH*UH/TH)*W3STUI)
-        B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2.*UH*SH*(SH+2.*TH)/
-     &  (TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4.)*(0.5*W2TR+0.5*W2HR-W2UR+
-     &  W3TUSR)+TH2*(2.*SQMQ/(TH+SH)**2-0.5/(TH+SH))*(W2UR-W2HR)+
-     &  0.5*UH*SH/TH*(W2HR-2.*W2UR)+0.125*(TH-12.*SQMQ-4.*UH*SH/TH)*
-     &  W3UTSR)
-        B2TUSI=SQMQ/SQMH**2*(2.*UH*SH*(SH+2.*TH)/(TH+SH)**2*
-     &  (W1UI-W1HI)+(SQMQ-TH/4.)*(0.5*W2TI+0.5*W2HI-W2UI+W3TUSI)+
-     &  TH2*(2.*SQMQ/(TH+SH)**2-0.5/(TH+SH))*(W2UI-W2HI)+0.5*UH*SH/TH*
-     &  (W2HI-2.*W2UI)+0.125*(TH-12.*SQMQ-4.*UH*SH/TH)*W3UTSI)
-        B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2.*SH*TH*(TH+2.*UH)/
-     &  (UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4.)*(0.5*W2UR+0.5*W2HR-W2SR+
-     &  W3USTR)+UH2*(2.*SQMQ/(UH+TH)**2-0.5/(UH+TH))*(W2SR-W2HR)+
-     &  0.5*SH*TH/UH*(W2HR-2.*W2SR)+0.125*(UH-12.*SQMQ-4.*SH*TH/UH)*
-     &  W3SUTR)
-        B2USTI=SQMQ/SQMH**2*(2.*SH*TH*(TH+2.*UH)/(UH+TH)**2*
-     &  (W1SI-W1HI)+(SQMQ-UH/4.)*(0.5*W2UI+0.5*W2HI-W2SI+W3USTI)+
-     &  UH2*(2.*SQMQ/(UH+TH)**2-0.5/(UH+TH))*(W2SI-W2HI)+0.5*SH*TH/UH*
-     &  (W2HI-2.*W2SI)+0.125*(UH-12.*SQMQ-4.*SH*TH/UH)*W3SUTI)
-        B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2.*TH*SH*(SH+2.*UH)/
-     &  (UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4.)*(0.5*W2UR+0.5*W2HR-W2TR+
-     &  W3UTSR)+UH2*(2.*SQMQ/(UH+SH)**2-0.5/(UH+SH))*(W2TR-W2HR)+
-     &  0.5*TH*SH/UH*(W2HR-2.*W2TR)+0.125*(UH-12.*SQMQ-4.*TH*SH/UH)*
-     &  W3TUSR)
-        B2UTSI=SQMQ/SQMH**2*(2.*TH*SH*(SH+2.*UH)/(UH+SH)**2*
-     &  (W1TI-W1HI)+(SQMQ-UH/4.)*(0.5*W2UI+0.5*W2HI-W2TI+W3UTSI)+
-     &  UH2*(2.*SQMQ/(UH+SH)**2-0.5/(UH+SH))*(W2TI-W2HI)+0.5*TH*SH/UH*
-     &  (W2HI-2.*W2TI)+0.125*(UH-12.*SQMQ-4.*TH*SH/UH)*W3TUSI)
-        B4STUR=0.25*EPSH*(-2./3.+0.25*(EPSH-1.)*(W2SR-W2HR+W3STUR))
-        B4STUI=0.25*EPSH*0.25*(EPSH-1.)*(W2SI-W2HI+W3STUI)
-        B4TUSR=0.25*EPSH*(-2./3.+0.25*(EPSH-1.)*(W2TR-W2HR+W3TUSR))
-        B4TUSI=0.25*EPSH*0.25*(EPSH-1.)*(W2TI-W2HI+W3TUSI)
-        B4USTR=0.25*EPSH*(-2./3.+0.25*(EPSH-1.)*(W2UR-W2HR+W3USTR))
-        B4USTI=0.25*EPSH*0.25*(EPSH-1.)*(W2UI-W2HI+W3USTI)
-        A2STUR=A2STUR+B2STUR+B2SUTR
-        A2STUI=A2STUI+B2STUI+B2SUTI
-        A2USTR=A2USTR+B2USTR+B2UTSR
-        A2USTI=A2USTI+B2USTI+B2UTSI
-        A2TUSR=A2TUSR+B2TUSR+B2TSUR
-        A2TUSI=A2TUSI+B2TUSI+B2TSUI
-        A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR
-        A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI
- 1150   CONTINUE
-        FACGH=COMFAC*FACA*3./(128.*PARU(1)**2)*AEM/XW*AS**3*
-     &  SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+
-     &  A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2)
-        FACGH=FACGH*WIDS(25,2)
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 1160
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACGH
- 1160   CONTINUE
-      ELSEIF(ISUB.EQ.114.OR.ISUB.EQ.115) THEN
-C...g + g -> gamma + gamma or g + g -> g + gamma.
-        A0STUR=0.
-        A0STUI=0.
-        A0TSUR=0.
-        A0TSUI=0.
-        A0UTSR=0.
-        A0UTSI=0.
-        A1STUR=0.
-        A1STUI=0.
-        A2STUR=0.
-        A2STUI=0.
-        ALST=LOG(-SH/TH)
-        ALSU=LOG(-SH/UH)
-        ALTU=LOG(TH/UH)
-        IMAX=2*MSTP(1)
-        IF(MSTP(38).GE.1.AND.MSTP(38).LE.8) IMAX=MSTP(38)
-        DO 1170 I=1,IMAX
-        EI=KCHG(IABS(I),1)/3.
-        EIWT=EI**2
-        IF(ISUB.EQ.115) EIWT=EI
-        SQMQ=PMAS(I,1)**2
-        EPSS=4.*SQMQ/SH
-        EPST=4.*SQMQ/TH
-        EPSU=4.*SQMQ/UH
-        IF((MSTP(38).GE.1.AND.MSTP(38).LE.8).OR.EPSS.LT.1.E-4) THEN
-          B0STUR=1.+(TH-UH)/SH*ALTU+0.5*(TH2+UH2)/SH2*(ALTU**2+
-     &    PARU(1)**2)
-          B0STUI=0.
-          B0TSUR=1.+(SH-UH)/TH*ALSU+0.5*(SH2+UH2)/TH2*ALSU**2
-          B0TSUI=-PARU(1)*((SH-UH)/TH+(SH2+UH2)/TH2*ALSU)
-          B0UTSR=1.+(SH-TH)/UH*ALST+0.5*(SH2+TH2)/UH2*ALST**2
-          B0UTSI=-PARU(1)*((SH-TH)/UH+(SH2+TH2)/UH2*ALST)
-          B1STUR=-1.
-          B1STUI=0.
-          B2STUR=-1.
-          B2STUI=0.
-        ELSE
-          CALL PYWAUX(1,EPSS,W1SR,W1SI)
-          CALL PYWAUX(1,EPST,W1TR,W1TI)
-          CALL PYWAUX(1,EPSU,W1UR,W1UI)
-          CALL PYWAUX(2,EPSS,W2SR,W2SI)
-          CALL PYWAUX(2,EPST,W2TR,W2TI)
-          CALL PYWAUX(2,EPSU,W2UR,W2UI)
-          CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
-          CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
-          CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
-          CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
-          CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
-          CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
-          B0STUR=1.+(1.+2.*TH/SH)*W1TR+(1.+2.*UH/SH)*W1UR+
-     &    0.5*((TH2+UH2)/SH2-EPSS)*(W2TR+W2UR)-
-     &    0.25*EPST*(1.-0.5*EPSS)*(Y3SUTR+Y3TUSR)-
-     &    0.25*EPSU*(1.-0.5*EPSS)*(Y3STUR+Y3UTSR)+
-     &    0.25*(-2.*(TH2+UH2)/SH2+4.*EPSS+EPST+EPSU+0.5*EPST*EPSU)*
-     &    (Y3TSUR+Y3USTR)
-          B0STUI=(1.+2.*TH/SH)*W1TI+(1.+2.*UH/SH)*W1UI+
-     &    0.5*((TH2+UH2)/SH2-EPSS)*(W2TI+W2UI)-
-     &    0.25*EPST*(1.-0.5*EPSS)*(Y3SUTI+Y3TUSI)-
-     &    0.25*EPSU*(1.-0.5*EPSS)*(Y3STUI+Y3UTSI)+
-     &    0.25*(-2.*(TH2+UH2)/SH2+4.*EPSS+EPST+EPSU+0.5*EPST*EPSU)*
-     &    (Y3TSUI+Y3USTI)
-          B0TSUR=1.+(1.+2.*SH/TH)*W1SR+(1.+2.*UH/TH)*W1UR+
-     &    0.5*((SH2+UH2)/TH2-EPST)*(W2SR+W2UR)-
-     &    0.25*EPSS*(1.-0.5*EPST)*(Y3TUSR+Y3SUTR)-
-     &    0.25*EPSU*(1.-0.5*EPST)*(Y3TSUR+Y3USTR)+
-     &    0.25*(-2.*(SH2+UH2)/TH2+4.*EPST+EPSS+EPSU+0.5*EPSS*EPSU)*
-     &    (Y3STUR+Y3UTSR)
-          B0TSUI=(1.+2.*SH/TH)*W1SI+(1.+2.*UH/TH)*W1UI+
-     &    0.5*((SH2+UH2)/TH2-EPST)*(W2SI+W2UI)-
-     &    0.25*EPSS*(1.-0.5*EPST)*(Y3TUSI+Y3SUTI)-
-     &    0.25*EPSU*(1.-0.5*EPST)*(Y3TSUI+Y3USTI)+
-     &    0.25*(-2.*(SH2+UH2)/TH2+4.*EPST+EPSS+EPSU+0.5*EPSS*EPSU)*
-     &    (Y3STUI+Y3UTSI)
-          B0UTSR=1.+(1.+2.*TH/UH)*W1TR+(1.+2.*SH/UH)*W1SR+
-     &    0.5*((TH2+SH2)/UH2-EPSU)*(W2TR+W2SR)-
-     &    0.25*EPST*(1.-0.5*EPSU)*(Y3USTR+Y3TSUR)-
-     &    0.25*EPSS*(1.-0.5*EPSU)*(Y3UTSR+Y3STUR)+
-     &    0.25*(-2.*(TH2+SH2)/UH2+4.*EPSU+EPST+EPSS+0.5*EPST*EPSS)*
-     &    (Y3TUSR+Y3SUTR)
-          B0UTSI=(1.+2.*TH/UH)*W1TI+(1.+2.*SH/UH)*W1SI+
-     &    0.5*((TH2+SH2)/UH2-EPSU)*(W2TI+W2SI)-
-     &    0.25*EPST*(1.-0.5*EPSU)*(Y3USTI+Y3TSUI)-
-     &    0.25*EPSS*(1.-0.5*EPSU)*(Y3UTSI+Y3STUI)+
-     &    0.25*(-2.*(TH2+SH2)/UH2+4.*EPSU+EPST+EPSS+0.5*EPST*EPSS)*
-     &    (Y3TUSI+Y3SUTI)
-          B1STUR=-1.-0.25*(EPSS+EPST+EPSU)*(W2SR+W2TR+W2UR)+
-     &    0.25*(EPSU+0.5*EPSS*EPST)*(Y3SUTR+Y3TUSR)+
-     &    0.25*(EPST+0.5*EPSS*EPSU)*(Y3STUR+Y3UTSR)+
-     &    0.25*(EPSS+0.5*EPST*EPSU)*(Y3TSUR+Y3USTR)
-          B1STUI=-0.25*(EPSS+EPST+EPSU)*(W2SI+W2TI+W2UI)+
-     &    0.25*(EPSU+0.5*EPSS*EPST)*(Y3SUTI+Y3TUSI)+
-     &    0.25*(EPST+0.5*EPSS*EPSU)*(Y3STUI+Y3UTSI)+
-     &    0.25*(EPSS+0.5*EPST*EPSU)*(Y3TSUI+Y3USTI)
-          B2STUR=-1.+0.125*EPSS*EPST*(Y3SUTR+Y3TUSR)+
-     &    0.125*EPSS*EPSU*(Y3STUR+Y3UTSR)+
-     &    0.125*EPST*EPSU*(Y3TSUR+Y3USTR)
-          B2STUI=0.125*EPSS*EPST*(Y3SUTI+Y3TUSI)+
-     &    0.125*EPSS*EPSU*(Y3STUI+Y3UTSI)+
-     &    0.125*EPST*EPSU*(Y3TSUI+Y3USTI)
-        ENDIF
-        A0STUR=A0STUR+EIWT*B0STUR
-        A0STUI=A0STUI+EIWT*B0STUI
-        A0TSUR=A0TSUR+EIWT*B0TSUR
-        A0TSUI=A0TSUI+EIWT*B0TSUI
-        A0UTSR=A0UTSR+EIWT*B0UTSR
-        A0UTSI=A0UTSI+EIWT*B0UTSI
-        A1STUR=A1STUR+EIWT*B1STUR
-        A1STUI=A1STUI+EIWT*B1STUI
-        A2STUR=A2STUR+EIWT*B2STUR
-        A2STUI=A2STUI+EIWT*B2STUI
- 1170   CONTINUE
-        ASQSUM=A0STUR**2+A0STUI**2+A0TSUR**2+A0TSUI**2+A0UTSR**2+
-     &  A0UTSI**2+4.*A1STUR**2+4.*A1STUI**2+A2STUR**2+A2STUI**2
-        FACGG=COMFAC*FACA/(16.*PARU(1)**2)*AS**2*AEM**2*ASQSUM
-        FACGP=COMFAC*FACA*5./(192.*PARU(1)**2)*AS**3*AEM*ASQSUM
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 1180
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=1
-        IF(ISUB.EQ.114) SIGH(NCHN)=0.5*FACGG
-        IF(ISUB.EQ.115) SIGH(NCHN)=FACGP
- 1180   CONTINUE
-      ELSEIF(ISUB.EQ.116) THEN
-C...g + g -> gamma + Z0.
-      ELSEIF(ISUB.EQ.117) THEN
-C...g + g -> Z0 + Z0.
-      ELSEIF(ISUB.EQ.118) THEN
-C...g + g -> W+ + W-.
-      ENDIF
-C...G: 2 -> 3, tree diagrams.
-      ELSEIF(ISUB.LE.140) THEN
-      IF(ISUB.EQ.121) THEN
-C...g + g -> Q + Q~ + H0.
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 1190
-        IA=KFPR(ISUBSV,2)
-        PMF=PMAS(IA,1)
-        FACQQH=COMFAC*(4.*PARU(1)*AEM/XW)*(4.*PARU(1)*AS)**2*
-     &  (0.5*PMF/PMAS(24,1))**2
-        IF(IA.LE.10.AND.MSTP(37).EQ.1.AND.MSTP(2).GE.1) FACQQH=
-     &  FACQQH*(LOG(MAX(4.,PARP(37)**2*PMF**2/PARU(117)**2))/
-     &  LOG(MAX(4.,SH/PARU(117)**2)))**(24./(33.-2.*MSTU(118)))
-        WID2=1.
-        IF(IA.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        IF((IA.EQ.7.OR.IA.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(IA+20,1)
-        FACQQH=FACQQH*WID2
-        IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
-          IKFI=1
-          IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
-          IF(IA.GT.10) IKFI=3
-          FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
-        ENDIF
-        CALL PYQQBH(WTQQBH)
-        CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=(1./PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACQQH*WTQQBH*FACBW
- 1190   CONTINUE
-      ELSEIF(ISUB.EQ.122) THEN
-C...q + q~ -> Q + Q~ + H0.
-        IA=KFPR(ISUBSV,2)
-        PMF=PMAS(IA,1)
-        FACQQH=COMFAC*(4.*PARU(1)*AEM/XW)*(4.*PARU(1)*AS)**2*
-     &  (0.5*PMF/PMAS(24,1))**2
-        IF(IA.LE.10.AND.MSTP(37).EQ.1.AND.MSTP(2).GE.1) FACQQH=
-     &  FACQQH*(LOG(MAX(4.,PARP(37)**2*PMF**2/PARU(117)**2))/
-     &  LOG(MAX(4.,SH/PARU(117)**2)))**(24./(33.-2.*MSTU(118)))
-        WID2=1.
-        IF(IA.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        IF((IA.EQ.7.OR.IA.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(IA+20,1)
-        FACQQH=FACQQH*WID2
-        IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
-          IKFI=1
-          IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
-          IF(IA.GT.10) IKFI=3
-          FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
-        ENDIF
-        CALL PYQQBH(WTQQBH)
-        CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=(1./PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        DO 1200 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
-     &  KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 1200
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACQQH*WTQQBH*FACBW
- 1200   CONTINUE
-      ELSEIF(ISUB.EQ.123) THEN
-C...f + f' -> f + f' + H0 (or H'0, or A0) (Z0 + Z0 -> H0 as
-C...inner process).
-        FACNOR=COMFAC*(4.*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32.
-        IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
-     &  PARU(154+10*IHIGG)**2
-        FACPRP=1./((VINT(215)-VINT(204)**2)*(VINT(216)-VINT(209)**2))**2
-        FACZZ1=FACNOR*FACPRP*(0.5*TAUP*VINT(2))*VINT(219)
-        FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218)
-        CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=(1./PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        DO 1220 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 1220
-        IA=IABS(I)
-        DO 1210 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 1210
-        JA=IABS(J)
-        EI=KCHG(IA,1)*ISIGN(1,I)/3.
-        AI=SIGN(1.,KCHG(IA,1)+0.5)*ISIGN(1,I)
-        VI=AI-4.*EI*XWV
-        EJ=KCHG(JA,1)*ISIGN(1,J)/3.
-        AJ=SIGN(1.,KCHG(JA,1)+0.5)*ISIGN(1,J)
-        VJ=AJ-4.*EJ*XWV
-        FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4.*VI*AI*VJ*AJ
-        FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4.*VI*AI*VJ*AJ
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW
- 1210   CONTINUE
- 1220   CONTINUE
-      ELSEIF(ISUB.EQ.124) THEN
-C...f + f' -> f" + f"' + H0 (or H'0, or A0) (W+ + W- -> H0 as
-C...inner process).
-        FACNOR=COMFAC*(4.*PARU(1)*AEM/XW)**3*SQMW
-        IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
-     &  PARU(155+10*IHIGG)**2
-        FACPRP=1./((VINT(215)-VINT(204)**2)*(VINT(216)-VINT(209)**2))**2
-        FACWW=FACNOR*FACPRP*(0.5*TAUP*VINT(2))*VINT(219)
-        CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        FACBW=(1./PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
-        IF(ABS(SH-SQMH).GT.100.*HS) FACBW=0.
-        DO 1240 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 1240
-        EI=SIGN(1.,FLOAT(I))*KCHG(IABS(I),1)
-        DO 1230 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 1230
-        EJ=SIGN(1.,FLOAT(J))*KCHG(IABS(J),1)
-        IF(EI*EJ.GT.0.) GOTO 1230
-        FACLR=VINT(180+I)*VINT(180+J)
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACLR*FACWW*FACBW
- 1230   CONTINUE
- 1240   CONTINUE
-      ELSEIF(ISUB.EQ.131) THEN
-C...g + g -> Z0 + q + qbar.
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 1280
-C...Read out information on flavours, masses, couplings.
-        KFQ=KFPR(131,2)
-        KFL=IABS(KFDP(MINT(35),1))
-        PMH=SQRT(SH)
-        PMQQ=SQRT(VINT(64))
-        PMLL=SQRT(VINT(63))
-        PMQ=PMAS(KFQ,1)
-        QFQ=KCHG(KFQ,1)/3.
-        AFQ=SIGN(1.,QFQ+0.1)
-        VFQ=AFQ-4.*XWV*QFQ
-        QFL=KCHG(KFL,1)/3.
-        AFL=SIGN(1.,QFL+0.1)
-        VFL=AFL-4.*XWV*QFL
-        WID2=1.
-        IF(KFQ.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        IF((KFQ.EQ.7.OR.KFQ.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(KFQ+20,1)
-C...Set line numbers for particles.
-        IG1=MINT(84)+1
-        IG2=MINT(84)+2
-        IQ1=MINT(84)+3
-        IQ2=MINT(84)+4
-        IL1=MINT(84)+5
-        IL2=MINT(84)+6
-        IZ=MINT(84)+7
-C...Reconstruct decay kinematics.
-        DO 1260 I=MINT(84)+1,MINT(84)+7
-        K(I,1)=1
-        DO 1250 J=1,5
-        P(I,J)=0.
- 1250   CONTINUE
- 1260   CONTINUE
-        P(IG1,4)=0.5*PMH
-        P(IG1,3)=P(IG1,4)
-        P(IG2,4)=P(IG1,4)
-        P(IG2,3)=-P(IG1,3)
-        P(IQ1,5)=PMQ
-        P(IQ1,4)=0.5*PMQQ
-        P(IQ1,3)=SQRT(MAX(0.,P(IQ1,4)**2-PMQ**2))
-        P(IQ2,5)=PMQ
-        P(IQ2,4)=P(IQ1,4)
-        P(IQ2,3)=-P(IQ1,3)
-        P(IL1,4)=0.5*PMLL
-        P(IL1,3)=P(IL1,4)
-        P(IL2,4)=P(IL1,4)
-        P(IL2,3)=-P(IL1,3)
-        P(IZ,5)=PMLL
-        P(IZ,4)=0.5*(PMH+(PMLL**2-PMQQ**2)/PMH)
-        P(IZ,3)=SQRT(MAX(0.,P(IZ,4)**2-PMLL**2))
-        CALL LUDBRB(IQ1,IQ2,ACOS(VINT(83)),VINT(84),0D0,0D0,
-     &  -DBLE(P(IZ,3)/(PMH-P(IZ,4))))
-        CALL LUDBRB(IL1,IL2,ACOS(VINT(81)),VINT(82),0D0,0D0,
-     &  DBLE(P(IZ,3)/P(IZ,4)))
-        CALL LUDBRB(IQ1,IZ,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
-C...Interface information to program of Ronald Kleiss.
-        RKMQ=PMQ
-        RKMZ=PMAS(23,1)
-        RKGZ=PMAS(23,2)
-        RKVQ=VFQ
-        RKAQ=AFQ
-        RKVL=VFL
-        RKAL=AFL
-        RKG1(0)=P(IG1,4)
-        RKG2(0)=P(IG2,4)
-        RKQ1(0)=P(IQ1,4)
-        RKQ2(0)=P(IQ2,4)
-        RKL1(0)=P(IL1,4)
-        RKL2(0)=P(IL2,4)
-        DO 1270 J=1,3
-        RKG1(J)=P(IG1,J)
-        RKG2(J)=P(IG2,J)
-        RKQ1(J)=P(IQ1,J)
-        RKQ2(J)=P(IQ2,J)
-        RKL1(J)=P(IL1,J)
-        RKL2(J)=P(IL2,J)
- 1270   CONTINUE
-        CALL RKBBV(RKG1,RKG2,RKQ1,RKQ2,RKL1,RKL2,1,RKRES)
-C...Multiply with normalization factors.
-        WTMEP=1./(2.*SH*PARU(2)**8)
-        WTCOU=AS**2*(4.*PARU(1)*AEM*XWC)**2
-        WTZQQ=WTMEP*WTCOU*RKRES
-        WTPHS=(PARU(1)/2.)**2*PMQQ**2*
-     &  (PARU(1)*((PMLL**2-PMAS(23,1)**2)**2+(PMAS(23,1)*
-     &  PMAS(23,2))**2)/(PMAS(23,1)*PMAS(23,2)))*0.5*SH
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=INT(1.5+RLU(0))
-        SIGH(NCHN)=COMFAC*WTPHS*WTZQQ*WID2
- 1280   CONTINUE
-      ENDIF
-C...H: 2 -> 1, tree diagrams, non-standard model processes.
-      ELSEIF(ISUB.LE.160) THEN
-      IF(ISUB.EQ.141) THEN
-C...f + f~ -> gamma*/Z0/Z'0.
-        MINT(61)=2
-        CALL PYWIDT(32,SH,WDTP,WDTE)
-        HP0=AEM/3.*SH
-        HP1=AEM/3.*XWC*SH
-        HP2=HP1
-        HS=HP1*VINT(117)
-        HSP=HP2*WDTP(0)
-        FACZP=4.*COMFAC*3.
-        DO 1290 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 1290
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI)
-        VI=AI-4.*EI*XWV
-        IF(IABS(I).LT.10) THEN
-          VPI=PARU(123-2*MOD(IABS(I),2))
-          API=PARU(124-2*MOD(IABS(I),2))
-        ELSE
-          VPI=PARU(127-2*MOD(IABS(I),2))
-          API=PARU(128-2*MOD(IABS(I),2))
-        ENDIF
-        HI0=HP0
-        IF(IABS(I).LE.10) HI0=HI0*FACA/3.
-        HI1=HP1
-        IF(IABS(I).LE.10) HI1=HI1*FACA/3.
-        HI2=HP2
-        IF(IABS(I).LE.10) HI2=HI2*FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACZP*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI*
-     &  (1.-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)*VINT(112)+
-     &  EI*VPI*(1.-SQMZP/SH)/((SH-SQMZP)**2+HSP**2)*(HI0*HP2+HI2*HP0)*
-     &  VINT(113)+(VI**2+AI**2)/((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)+
-     &  (VI*VPI+AI*API)*((SH-SQMZ)*(SH-SQMZP)+HS*HSP)/(((SH-SQMZ)**2+
-     &  HS**2)*((SH-SQMZP)**2+HSP**2))*(HI1*HP2+HI2*HP1)*VINT(115)+
-     &  (VPI**2+API**2)/((SH-SQMZP)**2+HSP**2)*HI2*HP2*VINT(116))
- 1290   CONTINUE
-      ELSEIF(ISUB.EQ.142) THEN
-C...f + f~' -> W'+/-.
-        CALL PYWIDT(34,SH,WDTP,WDTE)
-        HP=AEM/(24.*XW)*SH
-        HS=HP*WDTP(0)
-        FACBW=4.*COMFAC/((SH-SQMWP)**2+HS**2)*3.
-        DO 1310 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 1310
-        IA=IABS(I)
-        DO 1300 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 1300
-        JA=IABS(J)
-        IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 1300
-        IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) GOTO 1300
-        KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
-        HI=HP*(PARU(133)**2+PARU(134)**2)
-        IF(IA.LE.10) HI=HP*(PARU(131)**2+PARU(132)**2)*
-     &  VCKM((IA+1)/2,(JA+1)/2)*FACA/3.
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        HF=HP*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
-        SIGH(NCHN)=HI*FACBW*HF
- 1300   CONTINUE
- 1310   CONTINUE
-      ELSEIF(ISUB.EQ.143) THEN
-C...f + f~' -> H+/-.
-        CALL PYWIDT(37,SH,WDTP,WDTE)
-        HP=AEM/(8.*XW)*SH/SQMW*SH
-        HS=HP*WDTP(0)
-        FACBW=4.*COMFAC/((SH-SQMHC)**2+HS**2)
-        DO 1330 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 1330
-        IA=IABS(I)
-        IM=(MOD(IA,10)+1)/2
-        DO 1320 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 1320
-        JA=IABS(J)
-        JM=(MOD(JA,10)+1)/2
-        IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 1320
-        IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) GOTO 1320
-        IF(MOD(IA,2).EQ.0) THEN
-          IU=IA
-          IL=JA
-        ELSE
-          IU=JA
-          IL=IA
-        ENDIF
-        RML=PMAS(IL,1)**2/SH
-        RMU=PMAS(IU,1)**2/SH
-        IF(IL.LE.10.AND.MSTP(37).EQ.1.AND.MSTP(2).GE.1) RML=RML*
-     &  (LOG(MAX(4.,PARP(37)**2*RML*SH/PARU(117)**2))/
-     &  LOG(MAX(4.,SH/PARU(117)**2)))**(24./(33.-2.*MSTU(118)))
-        HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2)
-        IF(IA.LE.10) HI=HI*FACA/3.
-        KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
-        HF=HP*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4))
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=HI*FACBW*HF
- 1320   CONTINUE
- 1330   CONTINUE
-      ELSEIF(ISUB.EQ.144) THEN
-C...f + f~' -> R.
-        CALL PYWIDT(40,SH,WDTP,WDTE)
-        HP=AEM/(12.*XW)*SH
-        HS=HP*WDTP(0)
-        FACBW=4.*COMFAC/((SH-SQMR)**2+HS**2)*3.
-        DO 1350 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 1350
-        IA=IABS(I)
-        DO 1340 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 1340
-        JA=IABS(J)
-        IF(I*J.GT.0.OR.IABS(IA-JA).NE.2) GOTO 1340
-        HI=HP
-        IF(IA.LE.10) HI=HI*FACA/3.
-        HF=HP*(WDTE(0,1)+WDTE(0,(10-(I+J))/4)+WDTE(0,4))
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=HI*FACBW*HF
- 1340   CONTINUE
- 1350   CONTINUE
-      ELSEIF(ISUB.EQ.145) THEN
-C...q + l -> LQ (leptoquark).
-        CALL PYWIDT(39,SH,WDTP,WDTE)
-        HP=AEM/4.*SH
-        HS=HP*WDTP(0)
-        FACBW=4.*COMFAC/((SH-SQMLQ)**2+HS**2)
-        IF(ABS(SH-SQMLQ).GT.100.*HS) FACBW=0.
-        KFLQQ=KFDP(MDCY(39,2),1)
-        KFLQL=KFDP(MDCY(39,2),2)
-        DO 1370 I=MMIN1,MMAX1
-        IF(KFAC(1,I).EQ.0) GOTO 1370
-        IA=IABS(I)
-        IF(IA.NE.KFLQQ.AND.IA.NE.KFLQL) GOTO 1370
-        DO 1360 J=MMIN2,MMAX2
-        IF(KFAC(2,J).EQ.0) GOTO 1360
-        JA=IABS(J)
-        IF(JA.NE.KFLQQ.AND.JA.NE.KFLQL) GOTO 1360
-        IF(I*J.NE.KFLQQ*KFLQL) GOTO 1360
-        IF(IA.EQ.KFLQQ) KCHLQ=ISIGN(1,I)
-        IF(JA.EQ.KFLQQ) KCHLQ=ISIGN(1,J)
-        HI=HP*PARU(151)
-        HF=HP*(WDTE(0,1)+WDTE(0,(5-KCHLQ)/2)+WDTE(0,4))
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=HI*FACBW*HF
- 1360   CONTINUE
- 1370   CONTINUE
-      ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
-C...d + g -> d* and u + g -> u* (excited quarks).
-        KFQEXC=ISUB-146
-        KFQSTR=ISUB-140
-        CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
-        HP=SH
-        HS=HP*WDTP(0)
-        FACBW=COMFAC/((SH-PMAS(KFQSTR,1)**2)**2+HS**2)
-        FACBW=FACBW*AS*PARU(159)**2*SH/(3.*PARU(155)**2)
-        IF(ABS(SH-PMAS(KFQSTR,1)**2).GT.100.*HS) FACBW=0.
-        DO 1390 I=-KFQEXC,KFQEXC,2*KFQEXC
-        DO 1380 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 1380
-        IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 1380
-        HI=HP
-        IF(I.GT.0) HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        IF(I.LT.0) HF=HP*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=HI*FACBW*HF
- 1380   CONTINUE
- 1390   CONTINUE
-      ELSEIF(ISUB.EQ.149) THEN
-C...g + g -> eta_techni.
-        CALL PYWIDT(38,SH,WDTP,WDTE)
-        HP=SH
-        HS=HP*WDTP(0)
-        FACBW=COMFAC*0.5/((SH-PMAS(38,1)**2)**2+HS**2)
-        IF(ABS(SH-PMAS(38,1)**2).GT.100.*HS) FACBW=0.
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 1400
-        HI=HP*WDTP(3)
-        HF=HP*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=HI*FACBW*HF
- 1400   CONTINUE
-      ENDIF
-C...I: 2 -> 2, tree diagrams, non-standard model processes.
-      ELSE
-      IF(ISUB.EQ.161) THEN
-C...f + g -> f' + H+/- (b + g -> t + H+/- only)
-C...(choice of only b and t to avoid kinematics problems).
-        FHCQ=COMFAC*FACA*AS*AEM/XW*1./24
-        DO 1420 I=MMINA,MMAXA
-        IA=IABS(I)
-        IF(IA.NE.5) GOTO 1420
-        SQML=PMAS(IA,1)**2
-        IF(IA.LE.10.AND.MSTP(37).EQ.1.AND.MSTP(2).GE.1) SQML=SQML*
-     &  (LOG(MAX(4.,PARP(37)**2*SQML/PARU(117)**2))/
-     &  LOG(MAX(4.,SH/PARU(117)**2)))**(24./(33.-2.*MSTU(118)))
-        IUA=IA+MOD(IA,2)
-        SQMQ=PMAS(IUA,1)**2
-        FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW*
-     &  (SH/(SQMQ-UH)+2.*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH+
-     &  2.*SQMQ/(SQMQ-UH)+2.*(SQMHC-UH)/(SQMQ-UH)*(SQMHC-SQMQ-SH)/SH)
-        KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
-        DO 1410 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 1410
-        IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,1).EQ.0) GOTO 1410
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
- 1410   CONTINUE
- 1420   CONTINUE
-      ELSEIF(ISUB.EQ.162) THEN
-C...q + g -> LQ + l~; LQ=leptoquark.
-        FACLQ=COMFAC*FACA*PARU(151)*(AS*AEM/6.)*(-TH/SH)*
-     &  (UH2+SQMLQ**2)/(UH-SQMLQ)**2
-        KFLQQ=KFDP(MDCY(39,2),1)
-        DO 1440 I=MMINA,MMAXA
-        IF(IABS(I).NE.KFLQQ) GOTO 1440
-        KCHLQ=ISIGN(1,I)
-        DO 1430 ISDE=1,2
-        IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 1430
-        IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 1430
-        NCHN=NCHN+1
-        ISIG(NCHN,ISDE)=I
-        ISIG(NCHN,3-ISDE)=21
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACLQ*WIDS(39,(5-KCHLQ)/2)
- 1430   CONTINUE
- 1440   CONTINUE
-      ELSEIF(ISUB.EQ.163) THEN
-C...g + g -> LQ + LQ~; LQ=leptoquark.
-        FACLQ=COMFAC*FACA*WIDS(39,1)*(AS**2/2.)*
-     &  (7./48.+3.*(UH-TH)**2/(16.*SH2))*(1.+2.*SQMLQ*TH/(TH-SQMLQ)**2+
-     &  2.*SQMLQ*UH/(UH-SQMLQ)**2+4.*SQMLQ**2/((TH-SQMLQ)*(UH-SQMLQ)))
-        IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 1450
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=21
-        ISIG(NCHN,2)=21
-C...Since don't know proper colour flow, randomize between alternatives.
-        ISIG(NCHN,3)=INT(1.5+RLU(0))
-        SIGH(NCHN)=FACLQ
- 1450   CONTINUE
-      ELSEIF(ISUB.EQ.164) THEN
-C...q + q~ -> LQ + LQ~; LQ=leptoquark.
-        FACLQA=COMFAC*WIDS(39,1)*(AS**2/9.)*
-     &  (SH*(SH-4.*SQMLQ)-(UH-TH)**2)/SH2
-        FACLQS=COMFAC*WIDS(39,1)*((PARU(151)**2*AEM**2/8.)*
-     &  (-SH*TH-(SQMLQ-TH)**2)/TH2+(PARU(151)*AEM*AS/18.)*
-     &  ((SQMLQ-TH)*(UH-TH)+SH*(SQMLQ+TH))/(SH*TH))
-        KFLQQ=KFDP(MDCY(39,2),1)
-        DO 1460 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
-     &  KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 1460
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=FACLQA
-        IF(IABS(I).EQ.KFLQQ) SIGH(NCHN)=FACLQA+FACLQS
- 1460   CONTINUE
-      ELSEIF(ISUB.EQ.165) THEN
-C...q + q~ -> l+ + l- (including contact term for compositeness).
-        ZRATR=XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
-        ZRATI=XWC*SH*PMAS(23,1)*PMAS(23,2)/
-     &  ((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
-        KFF=IABS(KFPR(ISUB,1))
-        EF=KCHG(KFF,1)/3.
-        AF=SIGN(1.,EF+0.1)
-        VF=AF-4.*EF*XWV
-        VALF=VF+AF
-        VARF=VF-AF
-        FCOF=1.
-        IF(KFF.LE.10) FCOF=3.
-        WID2=1.
-        IF(KFF.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        IF((KFF.EQ.7.OR.KFF.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(KFF+20,1)
-        IF((KFF.EQ.17.OR.KFF.EQ.18).AND.MSTP(49).GE.1) WID2=
-     &  WIDS(KFF+12,1)
-        DO 1470 I=MMINA,MMAXA
-        IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 1470
-        EI=KCHG(IABS(I),1)/3.
-        AI=SIGN(1.,EI+0.1)
-        VI=AI-4.*EI*XWV
-        VALI=VI+AI
-        VARI=VI-AI
-        FCOI=1.
-        IF(IABS(I).LE.10) FCOI=FACA/3.
-        IF((MSTP(5).EQ.1.AND.IABS(I).LE.2).OR.MSTP(5).EQ.2) THEN
-          FGZA=(EI*EF+VALI*VALF*ZRATR+PARU(156)*SH/
-     &    (AEM*PARU(155)**2))**2+(VALI*VALF*ZRATI)**2+
-     &    (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
-        ELSE
-          FGZA=(EI*EF+VALI*VALF*ZRATR)**2+(VALI*VALF*ZRATI)**2+
-     &    (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
-        ENDIF
-        FGZB=(EI*EF+VALI*VARF*ZRATR)**2+(VALI*VARF*ZRATI)**2+
-     &  (EI*EF+VARI*VALF*ZRATR)**2+(VARI*VALF*ZRATI)**2
-        FGZAB=AEM**2*(FGZA*UH2/SH2+FGZB*TH2/SH2)
-        IF((MSTP(5).EQ.3.AND.IABS(I).EQ.2).OR.(MSTP(5).EQ.4.AND.
-     &  MOD(IABS(I),2).EQ.0)) FGZAB=FGZAB+SH2/(2.*PARU(155)**4)
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=-I
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=COMFAC*FCOI*FCOF*FGZAB*WID2
- 1470   CONTINUE
-      ELSEIF(ISUB.EQ.166) THEN
-C...q + q'~ -> l + nu_l (including contact term for compositeness).
-        WFAC=(1./4.)*(AEM/XW)**2*UH2/((SH-SQMW)**2+SQMW*PMAS(24,2)**2)
-        WCIFAC=WFAC+SH2/(4.*PARU(155)**4)
-        KFF=IABS(KFPR(ISUB,1))
-        FCOF=1.
-        IF(KFF.LE.10) FCOF=3.
-        DO 1490 I=MMIN1,MMAX1
-        IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 1490
-        IA=IABS(I)
-        DO 1480 J=MMIN2,MMAX2
-        IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 1480
-        JA=IABS(J)
-        IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 1480
-        IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) GOTO 1480
-        FCOI=1.
-        IF(IA.LE.10) FCOI=VCKM((IA+1)/2,(JA+1)/2)*FACA/3.
-        WID2=1.
-        IF((I.GT.0.AND.MOD(I,2).EQ.0).OR.(J.GT.0.AND.MOD(J,2).EQ.0))
-     &  THEN
-          IF(KFF.EQ.5.AND.MSTP(48).GE.1) WID2=WIDS(26,2)
-          IF(KFF.EQ.7.AND.MSTP(49).GE.1) WID2=WIDS(28,2)*WIDS(27,3)
-          IF(KFF.EQ.17.AND.MSTP(49).GE.1) WID2=WIDS(30,2)*WIDS(29,3)
-        ELSE
-          IF(KFF.EQ.5.AND.MSTP(48).GE.1) WID2=WIDS(26,3)
-          IF(KFF.EQ.7.AND.MSTP(49).GE.1) WID2=WIDS(28,3)*WIDS(27,2)
-          IF(KFF.EQ.17.AND.MSTP(49).GE.1) WID2=WIDS(30,3)*WIDS(29,2)
-        ENDIF
-        NCHN=NCHN+1
-        ISIG(NCHN,1)=I
-        ISIG(NCHN,2)=J
-        ISIG(NCHN,3)=1
-        SIGH(NCHN)=COMFAC*FCOI*FCOF*WFAC*WID2
-        IF((MSTP(5).EQ.3.AND.IA.LE.2.AND.JA.LE.2).OR.MSTP(5).EQ.4)
-     &  SIGH(NCHN)=COMFAC*FCOI*FCOF*WCIFAC*WID2
- 1480   CONTINUE
- 1490   CONTINUE
-      ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
-C...d + g -> d* and u + g -> u* (excited quarks).
-        KFQEXC=ISUB-166
-        KFQSTR=ISUB-160
-        FACQSA=COMFAC*(SH/PARU(155)**2)**2*(1.-SQM4/SH)
-        FACQSB=COMFAC*0.25*(SH/PARU(155)**2)**2*(1.-SQM4/SH)*
-     &  (1.+SQM4/SH)*(1.+CTH)*(1.+((SH-SQM4)/(SH+SQM4))*CTH)
-C...Propagators: as simulated in PYOFSH and as desired.
-        GMMQ=PMAS(KFQSTR,1)*PMAS(KFQSTR,2)
-        HBW4=GMMQ/((SQM4-PMAS(KFQSTR,1)**2)**2+GMMQ**2)
-        CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
-        GMMQC=SQM4*WDTP(0)
-        HBW4C=GMMQC/((SQM4-PMAS(KFQSTR,1)**2)**2+GMMQC**2)
-        FACQSA=FACQSA*HBW4C/HBW4
-        FACQSB=FACQSB*HBW4C/HBW4
-        DO 1510 I=MMIN1,MMAX1
-        IA=IABS(I)
-        IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 1510
-        DO 1500 J=MMIN2,MMAX2
-        JA=IABS(J)
-        IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 1500
-        IF(IA.EQ.KFQEXC.AND.I.EQ.J) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=(4./3.)*FACQSA
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=2
-          SIGH(NCHN)=(4./3.)*FACQSA
-        ELSEIF((IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC).AND.I*J.GT.0) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=1
-          IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
-          SIGH(NCHN)=FACQSA
-        ELSEIF(IA.EQ.KFQEXC.AND.I.EQ.-J) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=(8./3.)*FACQSB
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=2
-          SIGH(NCHN)=(8./3.)*FACQSB
-        ELSEIF(I.EQ.-J) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=1
-          SIGH(NCHN)=FACQSB
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=2
-          SIGH(NCHN)=FACQSB
-        ELSEIF(IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC) THEN
-          NCHN=NCHN+1
-          ISIG(NCHN,1)=I
-          ISIG(NCHN,2)=J
-          ISIG(NCHN,3)=1
-          IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
-          SIGH(NCHN)=FACQSB
-        ENDIF
- 1500   CONTINUE
- 1510   CONTINUE
-      ENDIF
-      ENDIF
-C...Multiply with structure functions.
-      IF(ISUB.LE.90.OR.ISUB.GE.96) THEN
-        DO 1520 ICHN=1,NCHN
-        IF(MINT(45).GE.2) THEN
-          KFL1=ISIG(ICHN,1)
-          SIGH(ICHN)=SIGH(ICHN)*XSFX(1,KFL1)
-        ENDIF
-        IF(MINT(46).GE.2) THEN
-          KFL2=ISIG(ICHN,2)
-          SIGH(ICHN)=SIGH(ICHN)*XSFX(2,KFL2)
-        ENDIF
-        SIGS=SIGS+SIGH(ICHN)
- 1520   CONTINUE
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyspen.F b/PYTHIA/pythia/pyspen.F
deleted file mode 100644 (file)
index b51a26f..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-C***********************************************************************
-      FUNCTION PYSPEN(XREIN,XIMIN,IREIM)
-C...Calculates real and imaginary part of Spence function; see
-C...G. 't Hooft and M. Veltman, Nucl. Phys. B153 (1979) 365.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-      DIMENSION B(0:14)
-      DATA B/
-     & 1.000000E+00,        -5.000000E-01,         1.666667E-01,
-     & 0.000000E+00,        -3.333333E-02,         0.000000E+00,
-     & 2.380952E-02,         0.000000E+00,        -3.333333E-02,
-     & 0.000000E+00,         7.575757E-02,         0.000000E+00,
-     &-2.531135E-01,         0.000000E+00,         1.166667E+00/
-      XRE=XREIN
-      XIM=XIMIN
-      IF(ABS(1.-XRE).LT.1.E-6.AND.ABS(XIM).LT.1.E-6) THEN
-        IF(IREIM.EQ.1) PYSPEN=PARU(1)**2/6.
-        IF(IREIM.EQ.2) PYSPEN=0.
-        RETURN
-      ENDIF
-      XMOD=SQRT(XRE**2+XIM**2)
-      IF(XMOD.LT.1.E-6) THEN
-        IF(IREIM.EQ.1) PYSPEN=0.
-        IF(IREIM.EQ.2) PYSPEN=0.
-        RETURN
-      ENDIF
-      XARG=SIGN(ACOS(XRE/XMOD),XIM)
-      SP0RE=0.
-      SP0IM=0.
-      SGN=1.
-      IF(XMOD.GT.1.) THEN
-        ALGXRE=LOG(XMOD)
-        ALGXIM=XARG-SIGN(PARU(1),XARG)
-        SP0RE=-PARU(1)**2/6.-(ALGXRE**2-ALGXIM**2)/2.
-        SP0IM=-ALGXRE*ALGXIM
-        SGN=-1.
-        XMOD=1./XMOD
-        XARG=-XARG
-        XRE=XMOD*COS(XARG)
-        XIM=XMOD*SIN(XARG)
-      ENDIF
-      IF(XRE.GT.0.5) THEN
-        ALGXRE=LOG(XMOD)
-        ALGXIM=XARG
-        XRE=1.-XRE
-        XIM=-XIM
-        XMOD=SQRT(XRE**2+XIM**2)
-        XARG=SIGN(ACOS(XRE/XMOD),XIM)
-        ALGYRE=LOG(XMOD)
-        ALGYIM=XARG
-        SP0RE=SP0RE+SGN*(PARU(1)**2/6.-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))
-        SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)
-        SGN=-SGN
-      ENDIF
-      XRE=1.-XRE
-      XIM=-XIM
-      XMOD=SQRT(XRE**2+XIM**2)
-      XARG=SIGN(ACOS(XRE/XMOD),XIM)
-      ZRE=-LOG(XMOD)
-      ZIM=-XARG
-      SPRE=0.
-      SPIM=0.
-      SAVERE=1.
-      SAVEIM=0.
-      DO 100 I=0,14
-      IF(MAX(ABS(SAVERE),ABS(SAVEIM)).LT.1E-30) GOTO 110
-      TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/FLOAT(I+1)
-      TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/FLOAT(I+1)
-      SAVERE=TERMRE
-      SAVEIM=TERMIM
-      SPRE=SPRE+B(I)*TERMRE
-      SPIM=SPIM+B(I)*TERMIM
-  100 CONTINUE
-  110 IF(IREIM.EQ.1) PYSPEN=SP0RE+SGN*SPRE
-      IF(IREIM.EQ.2) PYSPEN=SP0IM+SGN*SPIM
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyspli.F b/PYTHIA/pythia/pyspli.F
deleted file mode 100644 (file)
index 976a120..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSPLI(KF,KFLIN,KFLCH,KFLSP)
-C...In case of a hadron remnant which is more complicated than just a
-C...quark or a diquark, split it into two (partons or hadron + parton).
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /PYPARS/,/PYINT1/
-      DIMENSION KFL(3)
-C...Preliminaries. Parton composition.
-      KFA=IABS(KF)
-      KFS=ISIGN(1,KF)
-      KFL(1)=MOD(KFA/1000,10)
-      KFL(2)=MOD(KFA/100,10)
-      KFL(3)=MOD(KFA/10,10)
-      IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
-        KFL(2)=INT(1.5+RLU(0))
-        IF(MINT(105).EQ.333) KFL(2)=3
-        IF(MINT(105).EQ.443) KFL(2)=4
-        KFL(3)=KFL(2)
-      ELSEIF((KFA.EQ.111.OR.KFA.EQ.113).AND.RLU(0).GT.0.5) THEN
-        KFL(2)=2
-        KFL(3)=2
-      ELSEIF(KFA.EQ.223.AND.RLU(0).GT.0.5) THEN
-        KFL(2)=1
-        KFL(3)=1
-      ENDIF
-      IF(KFLIN.NE.21.AND.KFLIN.NE.22.AND.KFLIN.NE.23) THEN
-        KFLR=KFLIN*KFS
-      ELSE
-        KFLR=KFLIN
-      ENDIF
-      KFLCH=0
-C...Subdivide lepton.
-      IF(KFA.GE.11.AND.KFA.LE.18) THEN
-        IF(KFLR.EQ.KFA) THEN
-          KFLSP=KFS*22
-        ELSEIF(KFLR.EQ.22) THEN
-          KFLSP=KFA
-        ELSEIF(KFLR.EQ.-24.AND.MOD(KFA,2).EQ.1) THEN
-          KFLSP=KFA+1
-        ELSEIF(KFLR.EQ.24.AND.MOD(KFA,2).EQ.0) THEN
-          KFLSP=KFA-1
-        ELSEIF(KFLR.EQ.21) THEN
-          KFLSP=KFA
-          KFLCH=KFS*21
-        ELSE
-          KFLSP=KFA
-          KFLCH=-KFLR
-        ENDIF
-C...Subdivide photon.
-      ELSEIF(KFA.EQ.22.AND.MINT(109).NE.2) THEN
-        IF(KFLR.NE.21) THEN
-          KFLSP=-KFLR
-        ELSE
-          RAGR=0.75*RLU(0)
-          KFLSP=1
-          IF(RAGR.GT.0.125) KFLSP=2
-          IF(RAGR.GT.0.625) KFLSP=3
-          IF(RLU(0).GT.0.5) KFLSP=-KFLSP
-          KFLCH=-KFLSP
-        ENDIF
-C...Subdivide Reggeon or Pomeron.
-      ELSEIF(KFA.EQ.28.OR.KFA.EQ.29) THEN
-        IF(KFLIN.EQ.21) THEN
-          KFLSP=KFS*21
-        ELSE
-          KFLSP=-KFLIN
-        ENDIF
-C...Subdivide meson.
-      ELSEIF(KFL(1).EQ.0) THEN
-        KFL(2)=KFL(2)*(-1)**KFL(2)
-        KFL(3)=-KFL(3)*(-1)**IABS(KFL(2))
-        IF(KFLR.EQ.KFL(2)) THEN
-          KFLSP=KFL(3)
-        ELSEIF(KFLR.EQ.KFL(3)) THEN
-          KFLSP=KFL(2)
-        ELSEIF(KFLR.EQ.21.AND.RLU(0).GT.0.5) THEN
-          KFLSP=KFL(2)
-          KFLCH=KFL(3)
-        ELSEIF(KFLR.EQ.21) THEN
-          KFLSP=KFL(3)
-          KFLCH=KFL(2)
-        ELSEIF(KFLR*KFL(2).GT.0) THEN
-          CALL LUKFDI(-KFLR,KFL(2),KFDUMP,KFLCH)
-          KFLSP=KFL(3)
-        ELSE
-          CALL LUKFDI(-KFLR,KFL(3),KFDUMP,KFLCH)
-          KFLSP=KFL(2)
-        ENDIF
-C...Subdivide baryon.
-      ELSE
-        NAGR=0
-        DO 100 J=1,3
-        IF(KFLR.EQ.KFL(J)) NAGR=NAGR+1
-  100   CONTINUE
-        IF(NAGR.GE.1) THEN
-          RAGR=0.00001+(NAGR-0.00002)*RLU(0)
-          IAGR=0
-          DO 110 J=1,3
-          IF(KFLR.EQ.KFL(J)) RAGR=RAGR-1.
-          IF(IAGR.EQ.0.AND.RAGR.LE.0.) IAGR=J
-  110     CONTINUE
-        ELSE
-          IAGR=1.00001+2.99998*RLU(0)
-        ENDIF
-        ID1=1
-        IF(IAGR.EQ.1) ID1=2
-        IF(IAGR.EQ.1.AND.KFL(3).GT.KFL(2)) ID1=3
-        ID2=6-IAGR-ID1
-        KSP=3
-        IF(MOD(KFA,10).EQ.2.AND.KFL(1).EQ.KFL(2)) THEN
-          IF(IAGR.NE.3.AND.RLU(0).GT.0.25) KSP=1
-        ELSEIF(MOD(KFA,10).EQ.2.AND.KFL(2).GE.KFL(3)) THEN
-          IF(IAGR.NE.1.AND.RLU(0).GT.0.25) KSP=1
-        ELSEIF(MOD(KFA,10).EQ.2) THEN
-          IF(IAGR.EQ.1) KSP=1
-          IF(IAGR.NE.1.AND.RLU(0).GT.0.75) KSP=1
-        ENDIF
-        KFLSP=1000*KFL(ID1)+100*KFL(ID2)+KSP
-        IF(KFLR.EQ.21) THEN
-          KFLCH=KFL(IAGR)
-        ELSEIF(NAGR.EQ.0.AND.KFLR.GT.0) THEN
-          CALL LUKFDI(-KFLR,KFL(IAGR),KFDUMP,KFLCH)
-        ELSEIF(NAGR.EQ.0) THEN
-          CALL LUKFDI(10000+KFLSP,-KFLR,KFDUMP,KFLCH)
-          KFLSP=KFL(IAGR)
-        ENDIF
-      ENDIF
-C...Add on correct sign for result.
-      KFLCH=KFLCH*KFS
-      KFLSP=KFLSP*KFS
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pysspa.F b/PYTHIA/pythia/pysspa.F
deleted file mode 100644 (file)
index 6a1d454..0000000
+++ /dev/null
@@ -1,700 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSSPA(IPU1,IPU2)
-C...Generates spacelike parton showers.
-      IMPLICIT DOUBLE PRECISION(D)
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/
-      DIMENSION KFLS(4),IS(2),XS(2),ZS(2),Q2S(2),TEVCSV(2),TEVESV(2),
-     &XFS(2,-25:25),XFA(-25:25),XFB(-25:25),XFN(-25:25),WTAPC(-25:25),
-     &WTAPE(-25:25),WTSF(-25:25),THE2(2),ALAM(2),DQ2(3),DPC(3),DPD(4),
-     &DPB(4),ROBO(5),MORE(2),KFBEAM(2),Q2MNCS(2),KCFI(2),NFIS(2),
-     &THEFIS(2,2),ISFI(2)
-      DATA IS/2*0/
-C...Read out basic information; set global Q^2 scale.
-      IPUS1=IPU1
-      IPUS2=IPU2
-      ISUB=MINT(1)
-      Q2MX=VINT(56)
-      IF(ISET(ISUB).EQ.2) Q2MX=PARP(67)*VINT(56)
-C...Initialize QCD evolution and check phase space.
-      Q2MNC=PARP(62)**2
-      Q2MNCS(1)=Q2MNC
-      IF(MSTP(66).EQ.1.AND.MINT(107).EQ.3)
-     &Q2MNCS(1)=MAX(Q2MNC,VINT(283))
-      Q2MNCS(2)=Q2MNC
-      IF(MSTP(66).EQ.1.AND.MINT(108).EQ.3)
-     &Q2MNCS(2)=MAX(Q2MNC,VINT(284))
-      MCEV=0
-      XEC0=2.*PARP(65)/VINT(1)
-      ALAMS=PARU(112)
-      PARU(112)=PARP(61)
-      FQ2C=1.
-      TCMX=0.
-      IF(MINT(47).GE.2.AND.(MINT(47).NE.5.OR.MSTP(12).GE.1)) THEN
-        MCEV=1
-        IF(MSTP(64).EQ.1) FQ2C=PARP(63)
-        IF(MSTP(64).EQ.2) FQ2C=PARP(64)
-        TCMX=LOG(FQ2C*Q2MX/PARP(61)**2)
-        IF(Q2MX.LT.MAX(Q2MNC,2.*PARP(61)**2).OR.TCMX.LT.0.2)
-     &  MCEV=0
-      ENDIF
-C...Initialize QED evolution and check phase space.
-      Q2MNE=PARP(68)**2
-      MEEV=0
-      XEE=1E-6
-      SPME=PMAS(11,1)**2
-      TEMX=0.
-      FWTE=10.
-      IF(MINT(45).EQ.3.OR.MINT(46).EQ.3) THEN
-        MEEV=1
-        TEMX=LOG(Q2MX/SPME)
-        IF(Q2MX.LE.Q2MNE.OR.TEMX.LT.0.2) MEEV=0
-      ENDIF
-      IF(MCEV.EQ.0.AND.MEEV.EQ.0) RETURN
-C...Initial values: flavours, momenta, virtualities.
-      NS=N
-  100 N=NS
-      DO 120 JT=1,2
-      MORE(JT)=1
-      KFBEAM(JT)=MINT(10+JT)
-      IF(MINT(18+JT).EQ.1)KFBEAM(JT)=22
-      KFLS(JT)=MINT(14+JT)
-      KFLS(JT+2)=KFLS(JT)
-      XS(JT)=VINT(40+JT)
-      IF(MINT(18+JT).EQ.1) XS(JT)=VINT(40+JT)/VINT(154+JT)
-      ZS(JT)=1.
-      Q2S(JT)=Q2MX
-      TEVCSV(JT)=TCMX
-      ALAM(JT)=PARP(61)
-      THE2(JT)=100.
-      TEVESV(JT)=TEMX
-      DO 110 KFL=-25,25
-      XFS(JT,KFL)=XSFX(JT,KFL)
-  110 CONTINUE
-  120 CONTINUE
-      DSH=VINT(44)
-      IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) DSH=VINT(26)*VINT(2)
-C...Find if interference with final state partons.
-      MFIS=0
-      IF(MSTP(67).GE.1.AND.MSTP(67).LE.3) MFIS=MSTP(67)
-      IF(MFIS.NE.0) THEN
-        DO 140 I=1,2
-        KCFI(I)=0
-        KCA=LUCOMP(IABS(KFLS(I)))
-        IF(KCA.NE.0) KCFI(I)=KCHG(KCA,2)*ISIGN(1,KFLS(I))
-        NFIS(I)=0
-        IF(KCFI(I).NE.0) THEN
-          IF(I.EQ.1) IPFS=IPUS1
-          IF(I.EQ.2) IPFS=IPUS2
-          DO 130 J=1,2
-          ICSI=MOD(K(IPFS,3+J),MSTU(5))
-          IF(ICSI.GT.0.AND.ICSI.NE.IPUS1.AND.ICSI.NE.IPUS2.AND.
-     &    (KCFI(I).EQ.(-1)**(J+1).OR.KCFI(I).EQ.2)) THEN
-            NFIS(I)=NFIS(I)+1
-            THEFIS(I,NFIS(I))=ULANGL(P(ICSI,3),SQRT(P(ICSI,1)**2+
-     &      P(ICSI,2)**2))
-            IF(I.EQ.2) THEFIS(I,NFIS(I))=PARU(1)-THEFIS(I,NFIS(I))
-          ENDIF
-  130     CONTINUE
-        ENDIF
-  140   CONTINUE
-        IF(NFIS(1)+NFIS(2).EQ.0) MFIS=0
-      ENDIF
-C...Pick up leg with highest virtuality.
-  150 N=N+1
-      JT=1
-      IF(N.GT.NS+1.AND.Q2S(2).GT.Q2S(1)) JT=2
-      IF(MORE(JT).EQ.0) JT=3-JT
-      KFLB=KFLS(JT)
-      XB=XS(JT)
-      DO 160 KFL=-25,25
-      XFB(KFL)=XFS(JT,KFL)
-  160 CONTINUE
-      DSHR=2D0*SQRT(DSH)
-      DSHZ=DSH/DBLE(ZS(JT))
-C...Check if allowed to branch.
-      MCEV=0
-      IF(IABS(KFLB).LE.10.OR.KFLB.EQ.21) THEN
-        MCEV=1
-        XEC=MAX(XEC0,XB*(1./(1.-PARP(66))-1.))
-        IF(XB.GE.1.-2.*XEC) MCEV=0
-      ENDIF
-      MEEV=0
-      IF(MINT(44+JT).EQ.3) THEN
-        MEEV=1
-        IF(XB.GE.1.-2.*XEE) MEEV=0
-        IF((IABS(KFLB).LE.10.OR.KFLB.EQ.21).AND.XB.GE.1.-2.*XEC) MEEV=0
-C***Currently kill QED shower for resolved photoproduction.
-        IF(MINT(18+JT).EQ.1) MEEV=0
-C***Currently kill shower for W inside electron.
-        IF(IABS(KFLB).EQ.24) THEN
-          MCEV=0
-          MEEV=0
-        ENDIF
-      ENDIF
-      IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
-        Q2B=0.
-        GOTO 250
-      ENDIF
-C...Maximum Q2 with or without Q2 ordering. Effective Lambda and n_f.
-      Q2B=Q2S(JT)
-      TEVCB=TEVCSV(JT)
-      TEVEB=TEVESV(JT)
-      IF(MSTP(62).LE.1) THEN
-        IF(ZS(JT).GT.0.99999) THEN
-          Q2B=Q2S(JT)
-        ELSE
-          Q2B=0.5*(1./ZS(JT)+1.)*Q2S(JT)+0.5*(1./ZS(JT)-1.)*(Q2S(3-JT)-
-     &    SNGL(DSH)+SQRT((SNGL(DSH)+Q2S(1)+Q2S(2))**2+8.*Q2S(1)*Q2S(2)*
-     &    ZS(JT)/(1.-ZS(JT))))
-        ENDIF
-        IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
-        IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
-      ENDIF
-      IF(MCEV.EQ.1) THEN
-        ALSDUM=ULALPS(FQ2C*Q2B)
-        TEVCB=TEVCB+2.*LOG(ALAM(JT)/PARU(117))
-        ALAM(JT)=PARU(117)
-        B0=(33.-2.*MSTU(118))/6.
-      ENDIF
-      TEVCBS=TEVCB
-      TEVEBS=TEVEB
-C...Select side for interference with final state partons.
-      IF(MFIS.GE.1.AND.N.LE.NS+2) THEN
-        IFI=N-NS
-        ISFI(IFI)=0
-        IF(IABS(KCFI(IFI)).EQ.1.AND.NFIS(IFI).EQ.1) THEN
-          ISFI(IFI)=1
-        ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.1) THEN
-          IF(RLU(0).GT.0.5) ISFI(IFI)=1
-        ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.2) THEN
-          ISFI(IFI)=1
-          IF(RLU(0).GT.0.5) ISFI(IFI)=2
-        ENDIF
-      ENDIF
-C...Calculate Altarelli-Parisi weights.
-      DO 170 KFL=-25,25
-      WTAPC(KFL)=0.
-      WTAPE(KFL)=0.
-      WTSF(KFL)=0.
-  170 CONTINUE
-C...q -> q, g -> q.
-      IF(IABS(KFLB).LE.10) THEN
-        WTAPC(KFLB)=(8./3.)*LOG((1.-XEC-XB)*(XB+XEC)/(XEC*(1.-XEC)))
-        WTAPC(21)=0.5*(XB/(XB+XEC)-XB/(1.-XEC))
-C...f -> f, gamma -> f.
-      ELSEIF(IABS(KFLB).LE.20) THEN
-        WTAPF1=LOG((1.-XEE-XB)*(XB+XEE)/(XEE*(1.-XEE)))
-        WTAPF2=LOG((1.-XEE-XB)*(1.-XEE)/(XEE*(XB+XEE)))
-        WTAPE(KFLB)=2.*(WTAPF1+WTAPF2)
-        IF(MSTP(12).GE.1) WTAPE(22)=XB/(XB+XEE)-XB/(1.-XEE)
-C...f -> g, g -> g.
-      ELSEIF(KFLB.EQ.21) THEN
-        WTAPQ=(16./3.)*(SQRT((1.-XEC)/XB)-SQRT((XB+XEC)/XB))
-        DO 180 KFL=1,MSTP(58)
-        WTAPC(KFL)=WTAPQ
-        WTAPC(-KFL)=WTAPQ
-  180   CONTINUE
-        WTAPC(21)=6.*LOG((1.-XEC-XB)/XEC)
-C...f -> gamma, W+, W-.
-      ELSEIF(KFLB.EQ.22) THEN
-        WTAPF=LOG((1.-XEE-XB)*(1.-XEE)/(XEE*(XB+XEE)))/XB
-        WTAPE(11)=WTAPF
-        WTAPE(-11)=WTAPF
-      ELSEIF(KFLB.EQ.24) THEN
-        WTAPE(-11)=1./(4.*PARU(102))*LOG((1.-XEE-XB)*(1.-XEE)/
-     &  (XEE*(XB+XEE)))/XB
-      ELSEIF(KFLB.EQ.-24) THEN
-        WTAPE(11)=1./(4.*PARU(102))*LOG((1.-XEE-XB)*(1.-XEE)/
-     &  (XEE*(XB+XEE)))/XB
-      ENDIF
-C...Calculate structure function weights and sum.
-      NTRY=0
-  190 NTRY=NTRY+1
-      IF(NTRY.GT.500) THEN
-        MINT(51)=1
-        RETURN
-      ENDIF
-      WTSUMC=0.
-      WTSUME=0.
-      XFBO=MAX(1E-10,XFB(KFLB))
-      DO 200 KFL=-25,25
-      WTSF(KFL)=XFB(KFL)/XFBO
-      WTSUMC=WTSUMC+WTAPC(KFL)*WTSF(KFL)
-      WTSUME=WTSUME+WTAPE(KFL)*WTSF(KFL)
-  200 CONTINUE
-      WTSUMC=MAX(0.0001,WTSUMC)
-      WTSUME=MAX(0.0001/FWTE,WTSUME)
-C...Choose new t: fix alpha_s, alpha_s(Q^2), alpha_s(k_T^2).
-      NTRY2=0
-  210 NTRY2=NTRY2+1
-      IF(NTRY2.GT.500) THEN
-        MINT(51)=1
-        RETURN
-      ENDIF
-      IF(MCEV.EQ.1) THEN
-        IF(MSTP(64).LE.0) THEN
-          TEVCB=TEVCB+LOG(RLU(0))*PARU(2)/(PARU(111)*WTSUMC)
-        ELSEIF(MSTP(64).EQ.1) THEN
-          TEVCB=TEVCB*EXP(MAX(-50.,LOG(RLU(0))*B0/WTSUMC))
-        ELSE
-          TEVCB=TEVCB*EXP(MAX(-50.,LOG(RLU(0))*B0/(5.*WTSUMC)))
-        ENDIF
-      ENDIF
-      IF(MEEV.EQ.1) THEN
-        TEVEB=TEVEB*EXP(MAX(-50.,LOG(RLU(0))*PARU(2)/
-     &  (PARU(101)*FWTE*WTSUME*TEMX)))
-      ENDIF
-C...Translate t into Q2 scale; choose between QCD and QED evolution.
-  220 IF(MCEV.EQ.1) Q2CB=ALAM(JT)**2*EXP(MAX(-50.,TEVCB))/FQ2C
-      IF(MEEV.EQ.1) Q2EB=SPME*EXP(MAX(-50.,TEVEB))
-      MCE=0
-      IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
-      ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.0) THEN
-        IF(Q2CB.GT.Q2MNCS(JT)) MCE=1
-      ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.1) THEN
-        IF(Q2EB.GT.Q2MNE) MCE=2
-      ELSEIF(Q2MNCS(JT).GT.Q2MNE) THEN
-        MCE=1
-        IF(Q2EB.GT.Q2CB.OR.Q2CB.LE.Q2MNCS(JT)) MCE=2
-        IF(MCE.EQ.2.AND.Q2EB.LE.Q2MNE) MCE=0
-      ELSE
-        MCE=2
-        IF(Q2CB.GT.Q2EB.OR.Q2EB.LE.Q2MNE) MCE=1
-        IF(MCE.EQ.1.AND.Q2CB.LE.Q2MNCS(JT)) MCE=0
-      ENDIF
-C...Evolution possibly ended. Update t values.
-      IF(MCE.EQ.0) THEN
-        Q2B=0.
-        GOTO 250
-      ELSEIF(MCE.EQ.1) THEN
-        Q2B=Q2CB
-        Q2REF=FQ2C*Q2B
-        IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
-      ELSE
-        Q2B=Q2EB
-        Q2REF=Q2B
-        IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
-      ENDIF
-C...Select flavour for branching parton.
-      IF(MCE.EQ.1) WTRAN=RLU(0)*WTSUMC
-      IF(MCE.EQ.2) WTRAN=RLU(0)*WTSUME
-      KFLA=-25
-  230 KFLA=KFLA+1
-      IF(MCE.EQ.1) WTRAN=WTRAN-WTAPC(KFLA)*WTSF(KFLA)
-      IF(MCE.EQ.2) WTRAN=WTRAN-WTAPE(KFLA)*WTSF(KFLA)
-      IF(KFLA.LE.24.AND.WTRAN.GT.0.) GOTO 230
-      IF(KFLA.EQ.25) THEN
-        Q2B=0.
-        GOTO 250
-      ENDIF
-C...Choose z value and corrective weight.
-      WTZ=0.
-C...q -> q + g.
-      IF(IABS(KFLA).LE.10.AND.IABS(KFLB).LE.10) THEN
-        Z=1.-((1.-XB-XEC)/(1.-XEC))*
-     &  (XEC*(1.-XEC)/((XB+XEC)*(1.-XB-XEC)))**RLU(0)
-        WTZ=0.5*(1.+Z**2)
-C...q -> g + q.
-      ELSEIF(IABS(KFLA).LE.10.AND.KFLB.EQ.21) THEN
-        Z=XB/(SQRT(XB+XEC)+RLU(0)*(SQRT(1.-XEC)-SQRT(XB+XEC)))**2
-        WTZ=0.5*(1.+(1.-Z)**2)*SQRT(Z)
-C...f -> f + gamma.
-      ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
-        IF(WTAPF1.GT.RLU(0)*(WTAPF1+WTAPF2)) THEN
-          Z=1.-((1.-XB-XEE)/(1.-XEE))*
-     &    (XEE*(1.-XEE)/((XB+XEE)*(1.-XB-XEE)))**RLU(0)
-        ELSE
-          Z=XB+XB*(XEE/(1.-XEE))*
-     &    ((1.-XB-XEE)*(1.-XEE)/(XEE*(XB+XEE)))**RLU(0)
-        ENDIF
-        WTZ=0.5*(1.+Z**2)*(Z-XB)/(1.-XB)
-C...f -> gamma + f.
-      ELSEIF(IABS(KFLA).LE.20.AND.KFLB.EQ.22) THEN
-        Z=XB+XB*(XEE/(1.-XEE))*
-     &  ((1.-XB-XEE)*(1.-XEE)/(XEE*(XB+XEE)))**RLU(0)
-        WTZ=0.5*(1.+(1.-Z)**2)*XB*(Z-XB)/Z
-C...f -> W+- + f'.
-      ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).EQ.24) THEN
-        Z=XB+XB*(XEE/(1.-XEE))*
-     &  ((1.-XB-XEE)*(1.-XEE)/(XEE*(XB+XEE)))**RLU(0)
-        WTZ=0.5*(1.+(1.-Z)**2)*(XB*(Z-XB)/Z)*(Q2B/(Q2B+PMAS(24,1)**2))
-C...g -> q + q~.
-      ELSEIF(KFLA.EQ.21.AND.IABS(KFLB).LE.10) THEN
-        Z=XB/(1.-XEC)+RLU(0)*(XB/(XB+XEC)-XB/(1.-XEC))
-        WTZ=1.-2.*Z*(1.-Z)
-C...g -> g + g.
-      ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
-        Z=1./(1.+((1.-XEC-XB)/XB)*(XEC/(1.-XEC-XB))**RLU(0))
-        WTZ=(1.-Z*(1.-Z))**2
-C...gamma -> f + f~.
-      ELSEIF(KFLA.EQ.22.AND.IABS(KFLB).LE.20) THEN
-        Z=XB/(1.-XEE)+RLU(0)*(XB/(XB+XEE)-XB/(1.-XEE))
-        WTZ=1.-2.*Z*(1.-Z)
-      ENDIF
-      IF(MCE.EQ.2) WTZ=(WTZ/FWTE)*(TEVEB/TEMX)
-C...Option with resummation of soft gluon emission as effective z shift.
-      IF(MCE.EQ.1) THEN
-        IF(MSTP(65).GE.1) THEN
-          RSOFT=6.
-          IF(KFLB.NE.21) RSOFT=8./3.
-          Z=Z*(TEVCB/TEVCSV(JT))**(RSOFT*XEC/((XB+XEC)*B0))
-          IF(Z.LE.XB) GOTO 210
-        ENDIF
-C...Option with alpha_s(k_T^2): demand k_T^2 > cutoff, reweight.
-        IF(MSTP(64).GE.2) THEN
-          IF((1.-Z)*Q2B.LT.Q2MNCS(JT)) GOTO 210
-          ALPRAT=TEVCB/(TEVCB+LOG(1.-Z))
-          IF(ALPRAT.LT.5.*RLU(0)) GOTO 210
-          IF(ALPRAT.GT.5.) WTZ=WTZ*ALPRAT/5.
-        ENDIF
-C...Impose angular constraint in first branching from interference
-C...with final state partons.
-        IF(MFIS.GE.1.AND.N.LE.NS+2.AND.NTRY2.LT.200) THEN
-          THE2D=(4.*Q2B)/(DSH*(1.-Z))
-          IF(N.EQ.NS+1.AND.ISFI(1).GE.1) THEN
-            IF(THE2D.GT.THEFIS(1,ISFI(1))**2) GOTO 210
-          ELSEIF(N.EQ.NS+2.AND.ISFI(2).GE.1) THEN
-            IF(THE2D.GT.THEFIS(2,ISFI(2))**2) GOTO 210
-          ENDIF
-        ENDIF
-C...Option with angular ordering requirement.
-        IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THEN
-          THE2T=(4.*Z**2*Q2B)/(VINT(2)*(1.-Z)*XB**2)
-          IF(THE2T.GT.THE2(JT)) GOTO 210
-        ENDIF
-      ENDIF
-C...Weighting with new structure functions.
-      MINT(105)=MINT(102+JT)
-      MINT(109)=MINT(106+JT)
-      IF(MSTP(57).LE.1) THEN
-        CALL PYSTFU(KFBEAM(JT),XB,Q2REF,XFN)
-      ELSE
-        CALL PYSTFL(KFBEAM(JT),XB,Q2REF,XFN)
-      ENDIF
-      XFBN=XFN(KFLB)
-      IF(XFBN.LT.1E-20) THEN
-        IF(KFLA.EQ.KFLB) THEN
-          TEVCB=TEVCBS
-          TEVEB=TEVEBS
-          WTAPC(KFLB)=0.
-          WTAPE(KFLB)=0.
-          GOTO 190
-        ELSEIF(MCE.EQ.1.AND.TEVCBS-TEVCB.GT.0.2) THEN
-          TEVCB=0.5*(TEVCBS+TEVCB)
-          GOTO 220
-        ELSEIF(MCE.EQ.2.AND.TEVEBS-TEVEB.GT.0.2) THEN
-          TEVEB=0.5*(TEVEBS+TEVEB)
-          GOTO 220
-        ELSE
-          XFBN=1E-10
-          XFN(KFLB)=XFBN
-        ENDIF
-      ENDIF
-      DO 240 KFL=-25,25
-      XFB(KFL)=XFN(KFL)
-  240 CONTINUE
-      XA=XB/Z
-      IF(MSTP(57).LE.1) THEN
-        CALL PYSTFU(KFBEAM(JT),XA,Q2REF,XFA)
-      ELSE
-        CALL PYSTFL(KFBEAM(JT),XA,Q2REF,XFA)
-      ENDIF
-      XFAN=XFA(KFLA)
-      IF(XFAN.LT.1E-20) GOTO 190
-      WTSFA=WTSF(KFLA)
-      IF(WTZ*XFAN/XFBN.LT.RLU(0)*WTSFA) GOTO 190
-C...Define two hard scatterers in their CM-frame.
-  250 IF(N.EQ.NS+2) THEN
-        DQ2(JT)=Q2B
-        DPLCM=SQRT((DSH+DQ2(1)+DQ2(2))**2-4D0*DQ2(1)*DQ2(2))/DSHR
-        DO 270 JR=1,2
-        I=NS+JR
-        IF(JR.EQ.1) IPO=IPUS1
-        IF(JR.EQ.2) IPO=IPUS2
-        DO 260 J=1,5
-        K(I,J)=0
-        P(I,J)=0.
-        V(I,J)=0.
-  260   CONTINUE
-        K(I,1)=14
-        K(I,2)=KFLS(JR+2)
-        K(I,4)=IPO
-        K(I,5)=IPO
-        P(I,3)=DPLCM*(-1)**(JR+1)
-        P(I,4)=(DSH+DQ2(3-JR)-DQ2(JR))/DSHR
-        P(I,5)=-SQRT(SNGL(DQ2(JR)))
-        K(IPO,1)=14
-        K(IPO,3)=I
-        K(IPO,4)=MOD(K(IPO,4),MSTU(5))+MSTU(5)*I
-        K(IPO,5)=MOD(K(IPO,5),MSTU(5))+MSTU(5)*I
-  270   CONTINUE
-C...Find maximum allowed mass of timelike parton.
-      ELSEIF(N.GT.NS+2) THEN
-        JR=3-JT
-        DQ2(3)=Q2B
-        DPC(1)=P(IS(1),4)
-        DPC(2)=P(IS(2),4)
-        DPC(3)=0.5*(ABS(P(IS(1),3))+ABS(P(IS(2),3)))
-        DPD(1)=DSH+DQ2(JR)+DQ2(JT)
-        DPD(2)=DSHZ+DQ2(JR)+DQ2(3)
-        DPD(3)=SQRT(DPD(1)**2-4D0*DQ2(JR)*DQ2(JT))
-        DPD(4)=SQRT(DPD(2)**2-4D0*DQ2(JR)*DQ2(3))
-        IKIN=0
-        IF(Q2S(JR).GE.0.25*Q2MNC.AND.DPD(1)-DPD(3).GE.
-     &  1D-10*DPD(1)) IKIN=1
-        IF(IKIN.EQ.0) DMSMA=(DQ2(JT)/DBLE(ZS(JT))-DQ2(3))*(DSH/
-     &  (DSH+DQ2(JT))-DSH/(DSHZ+DQ2(3)))
-        IF(IKIN.EQ.1) DMSMA=(DPD(1)*DPD(2)-DPD(3)*DPD(4))/(2.*
-     &  DQ2(JR))-DQ2(JT)-DQ2(3)
-C...Generate timelike parton shower (if required).
-        IT=N
-        DO 280 J=1,5
-        K(IT,J)=0
-        P(IT,J)=0.
-        V(IT,J)=0.
-  280   CONTINUE
-        K(IT,1)=3
-C...f -> f + g (gamma).
-        IF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).LE.20) THEN
-          K(IT,2)=21
-          IF(IABS(KFLB).GE.11) K(IT,2)=22
-C...f -> g (gamma, W+-) + f.
-        ELSEIF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).GT.20) THEN
-          K(IT,2)=KFLB
-          IF(KFLS(JT+2).EQ.24) THEN
-            K(IT,2)=-12
-          ELSEIF(KFLS(JT+2).EQ.-24) THEN
-            K(IT,2)=12
-          ENDIF
-C...g (gamma) -> f + f~, g + g.
-        ELSE
-          K(IT,2)=-KFLS(JT+2)
-          IF(KFLS(JT+2).GT.20) K(IT,2)=KFLS(JT+2)
-        ENDIF
-        P(IT,5)=ULMASS(K(IT,2))
-        IF(SNGL(DMSMA).LE.P(IT,5)**2) GOTO 100
-        IF(MSTP(63).GE.1.AND.MCE.EQ.1) THEN
-          MSTJ48=MSTJ(48)
-          PARJ85=PARJ(85)
-          P(IT,4)=(DSHZ-DSH-P(IT,5)**2)/DSHR
-          P(IT,3)=SQRT(P(IT,4)**2-P(IT,5)**2)
-          IF(MSTP(63).EQ.1) THEN
-            Q2TIM=DMSMA
-          ELSEIF(MSTP(63).EQ.2) THEN
-            Q2TIM=MIN(SNGL(DMSMA),PARP(71)*Q2S(JT))
-          ELSE
-            Q2TIM=DMSMA
-            MSTJ(48)=1
-            IF(IKIN.EQ.0) DPT2=DMSMA*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
-            IF(IKIN.EQ.1) DPT2=DMSMA*(0.5*DPD(1)*DPD(2)+0.5*DPD(3)*
-     &      DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)))/(4.*DSH*DPC(3)**2)
-            PARJ(85)=SQRT(MAX(0.,SNGL(DPT2)))*
-     &      (1./P(IT,4)+1./P(IS(JT),4))
-          ENDIF
-          CALL LUSHOW(IT,0,SQRT(Q2TIM))
-          MSTJ(48)=MSTJ48
-          PARJ(85)=PARJ85
-          IF(N.GE.IT+1) P(IT,5)=P(IT+1,5)
-        ENDIF
-C...Reconstruct kinematics of branching: timelike parton shower.
-        DMS=P(IT,5)**2
-        IF(IKIN.EQ.0) DPT2=(DMSMA-DMS)*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
-        IF(IKIN.EQ.1) DPT2=(DMSMA-DMS)*(0.5*DPD(1)*DPD(2)+0.5*DPD(3)*
-     &  DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)+DMS))/(4.*DSH*DPC(3)**2)
-        IF(DPT2.LT.0.) GOTO 100
-        DPB(1)=(0.5*DPD(2)-DPC(JR)*(DSHZ+DQ2(JR)-DQ2(JT)-DMS)/
-     &  DSHR)/DPC(3)-DPC(3)
-        P(IT,1)=SQRT(SNGL(DPT2))
-        P(IT,3)=DPB(1)*(-1)**(JT+1)
-        P(IT,4)=SQRT(DPT2+DPB(1)**2+DMS)
-        IF(N.GE.IT+1) THEN
-          DPB(1)=SQRT(DPB(1)**2+DPT2)
-          DPB(2)=SQRT(DPB(1)**2+DMS)
-          DPB(3)=P(IT+1,3)
-          DPB(4)=SQRT(DPB(3)**2+DMS)
-          DBEZ=(DPB(4)*DPB(1)-DPB(3)*DPB(2))/(DPB(4)*DPB(2)-DPB(3)*
-     &    DPB(1))
-          CALL LUDBRB(IT+1,N,0.,0.,0D0,0D0,DBEZ)
-          THE=ULANGL(P(IT,3),P(IT,1))
-          CALL LUDBRB(IT+1,N,THE,0.,0D0,0D0,0D0)
-        ENDIF
-C...Reconstruct kinematics of branching: spacelike parton.
-        DO 290 J=1,5
-        K(N+1,J)=0
-        P(N+1,J)=0.
-        V(N+1,J)=0.
-  290   CONTINUE
-        K(N+1,1)=14
-        K(N+1,2)=KFLB
-        P(N+1,1)=P(IT,1)
-        P(N+1,3)=P(IT,3)+P(IS(JT),3)
-        P(N+1,4)=P(IT,4)+P(IS(JT),4)
-        P(N+1,5)=-SQRT(SNGL(DQ2(3)))
-C...Define colour flow of branching.
-        K(IS(JT),3)=N+1
-        K(IT,3)=N+1
-        IM1=N+1
-        IM2=N+1
-C...f -> f + gamma (Z, W).
-        IF(IABS(K(IT,2)).GE.22) THEN
-          K(IT,1)=1
-          ID1=IS(JT)
-          ID2=IS(JT)
-C...f -> gamma (Z, W) + f.
-        ELSEIF(IABS(K(IS(JT),2)).GE.22) THEN
-          ID1=IT
-          ID2=IT
-C...gamma -> q + q~, g + g.
-        ELSEIF(K(N+1,2).EQ.22) THEN
-          ID1=IS(JT)
-          ID2=IT
-          IM1=ID2
-          IM2=ID1
-C...q -> q + g.
-        ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21.AND.K(IT,2).EQ.21) THEN
-          ID1=IT
-          ID2=IS(JT)
-C...q -> g + q.
-        ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21) THEN
-          ID1=IS(JT)
-          ID2=IT
-C...q~ -> q~ + g.
-        ELSEIF(K(N+1,2).LT.0.AND.K(IT,2).EQ.21) THEN
-          ID1=IS(JT)
-          ID2=IT
-C...q~ -> g + q~.
-        ELSEIF(K(N+1,2).LT.0) THEN
-          ID1=IT
-          ID2=IS(JT)
-C...g -> g + g; g -> q + q~.
-        ELSEIF((K(IT,2).EQ.21.AND.RLU(0).GT.0.5).OR.K(IT,2).LT.0) THEN
-          ID1=IS(JT)
-          ID2=IT
-        ELSE
-          ID1=IT
-          ID2=IS(JT)
-        ENDIF
-        IF(IM1.EQ.N+1) K(IM1,4)=K(IM1,4)+ID1
-        IF(IM2.EQ.N+1) K(IM2,5)=K(IM2,5)+ID2
-        K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
-        K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
-        IF(ID1.NE.ID2) THEN
-          K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
-          K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
-        ENDIF
-        N=N+1
-C...Boost to new CM-frame.
-        DBSVX=DBLE((P(N,1)+P(IS(JR),1))/(P(N,4)+P(IS(JR),4)))
-        DBSVZ=DBLE((P(N,3)+P(IS(JR),3))/(P(N,4)+P(IS(JR),4)))
-        IF(DBSVX**2+DBSVZ**2.GE.1D0) GOTO 100
-        CALL LUDBRB(NS+1,N,0.,0.,-DBSVX,0D0,-DBSVZ)
-        IR=N+(JT-1)*(IS(1)-N)
-        CALL LUDBRB(NS+1,N,-ULANGL(P(IR,3),P(IR,1)),PARU(2)*RLU(0),
-     &  0D0,0D0,0D0)
-      ENDIF
-C...Update kinematics variables.
-      IS(JT)=N
-      DQ2(JT)=Q2B
-      IF(MSTP(62).GE.3) THE2(JT)=THE2T
-      DSH=DSHZ
-C...Save quantities; loop back.
-      Q2S(JT)=Q2B
-      IF((MCEV.EQ.1.AND.Q2B.GE.0.25*Q2MNC).OR.
-     &(MEEV.EQ.1.AND.Q2B.GE.Q2MNE)) THEN
-        KFLS(JT+2)=KFLS(JT)
-        KFLS(JT)=KFLA
-        XS(JT)=XA
-        ZS(JT)=Z
-        DO 300 KFL=-25,25
-        XFS(JT,KFL)=XFA(KFL)
-  300   CONTINUE
-        TEVCSV(JT)=TEVCB
-        TEVESV(JT)=TEVEB
-      ELSE
-        MORE(JT)=0
-        IF(JT.EQ.1) IPU1=N
-        IF(JT.EQ.2) IPU2=N
-      ENDIF
-      IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
-        CALL LUERRM(11,'(PYSSPA:) no more memory left in LUJETS')
-        IF(MSTU(21).GE.1) N=NS
-        IF(MSTU(21).GE.1) RETURN
-      ENDIF
-      IF(MORE(1).EQ.1.OR.MORE(2).EQ.1) GOTO 150
-C...Boost hard scattering partons to frame of shower initiators.
-      DO 310 J=1,3
-      ROBO(J+2)=(P(NS+1,J)+P(NS+2,J))/(P(NS+1,4)+P(NS+2,4))
-  310 CONTINUE
-      K(N+2,1)=1
-      DO 320 J=1,5
-      P(N+2,J)=P(NS+1,J)
-  320 CONTINUE
-      ROBOT=ROBO(3)**2+ROBO(4)**2+ROBO(5)**2
-      IF(ROBOT.GE.0.999999) THEN
-        ROBOT=1.00001*SQRT(ROBOT)
-        ROBO(3)=ROBO(3)/ROBOT
-        ROBO(4)=ROBO(4)/ROBOT
-        ROBO(5)=ROBO(5)/ROBOT
-      ENDIF
-      CALL LUDBRB(N+2,N+2,0.,0.,-DBLE(ROBO(3)),-DBLE(ROBO(4)),
-     &-DBLE(ROBO(5)))
-      ROBO(2)=ULANGL(P(N+2,1),P(N+2,2))
-      ROBO(1)=ULANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
-      CALL LUDBRB(MINT(83)+5,NS,ROBO(1),ROBO(2),DBLE(ROBO(3)),
-     &DBLE(ROBO(4)),DBLE(ROBO(5)))
-C...Store user information. Reset Lambda value.
-      K(IPU1,3)=MINT(83)+3
-      K(IPU2,3)=MINT(83)+4
-      DO 330 JT=1,2
-      MINT(12+JT)=KFLS(JT)
-      VINT(140+JT)=XS(JT)
-      IF(MINT(18+JT).EQ.1) VINT(140+JT)=VINT(154+JT)*XS(JT)
-  330 CONTINUE
-      PARU(112)=ALAMS
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pystat.F b/PYTHIA/pythia/pystat.F
deleted file mode 100644 (file)
index cc97fea..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-C***********************************************************************
-      SUBROUTINE PYSTAT(MSTAT)
-C...Prints out information about cross-sections, decay widths, branching
-C...ratios, kinematical limits, status codes and parameter values.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT6/PROC(0:200)
-      CHARACTER PROC*28
-      SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT4/,/PYINT5/,/PYINT6/
-      CHARACTER PROGA(6)*28,CHAU*16,CHPA(-100:100)*9,CHIN(2)*12,
-     &STATE(-1:5)*4,CHKIN(21)*18,DISGA(2)*28
-      DATA PROGA/
-     &'VMD/hadron * VMD            ','VMD/hadron * direct         ',
-     &'VMD/hadron * anomalous      ','direct * direct             ',
-     &'direct * anomalous          ','anomalous * anomalous       '/
-      DATA DISGA/'e * VMD','e * anomalous'/
-      DATA STATE/'----','off ','on  ','on/+','on/-','on/1','on/2'/,
-     &CHKIN/' m_hard (GeV/c^2) ',' p_T_hard (GeV/c) ',
-     &'m_finite (GeV/c^2)','   y*_subsystem   ','     y*_large     ',
-     &'     y*_small     ','    eta*_large    ','    eta*_small    ',
-     &'cos(theta*)_large ','cos(theta*)_small ','       x_1        ',
-     &'       x_2        ','       x_F        ',' cos(theta_hard)  ',
-     &'m''_hard (GeV/c^2) ','       tau        ','        y*        ',
-     &'cos(theta_hard^-) ','cos(theta_hard^+) ','      x_T^2       ',
-     &'       tau''       '/
-C...Cross-sections.
-      IF(MSTAT.LE.1) THEN
-        IF(MINT(121).GT.1) CALL PYSAVE(5,0)
-        WRITE(MSTU(11),5000)
-        WRITE(MSTU(11),5100)
-        WRITE(MSTU(11),5200) 0,PROC(0),NGEN(0,3),NGEN(0,1),XSEC(0,3)
-        DO 100 I=1,200
-        IF(MSUB(I).NE.1) GOTO 100
-        WRITE(MSTU(11),5200) I,PROC(I),NGEN(I,3),NGEN(I,1),XSEC(I,3)
-  100   CONTINUE
-        IF(MINT(121).GT.1) THEN
-          WRITE(MSTU(11),5300)
-          DO 110 IGA=1,MINT(121)
-          CALL PYSAVE(3,IGA)
-          IF(MINT(121).EQ.2) THEN
-            WRITE(MSTU(11),5200) IGA,DISGA(IGA),NGEN(0,3),NGEN(0,1),
-     &      XSEC(0,3)
-          ELSE
-            WRITE(MSTU(11),5200) IGA,PROGA(IGA),NGEN(0,3),NGEN(0,1),
-     &      XSEC(0,3)
-          ENDIF
-  110     CONTINUE
-          CALL PYSAVE(5,0)
-        ENDIF
-        WRITE(MSTU(11),5400) 1.-FLOAT(NGEN(0,3))/
-     &  MAX(1.,FLOAT(NGEN(0,2)))
-C...Decay widths and branching ratios.
-      ELSEIF(MSTAT.EQ.2) THEN
-        DO 120 KF=-100,100
-        CALL LUNAME(KF,CHAU)
-        CHPA(KF)=CHAU(1:9)
-  120   CONTINUE
-        WRITE(MSTU(11),5500)
-        WRITE(MSTU(11),5600)
-        DO 150 KC=1,40
-        KCL=KC
-        IF(KC.GE.6.AND.KC.LE.8) KCL=KC+20
-        IF(KC.EQ.17.OR.KC.EQ.18) KCL=KC+12
-        IF(MSTP(6).NE.1) THEN
-          IF(KC.GT.2*MSTP(1).AND.KC.LE.10) GOTO 150
-          IF(KC.GT.10+2*MSTP(1).AND.KC.LE.20) GOTO 150
-        ELSE
-          IF(KC.GT.8.AND.KC.LE.10) GOTO 150
-          IF(KC.GT.18.AND.KC.LE.20) GOTO 150
-        ENDIF
-        IF((KC.GE.26.AND.KC.LE.31).OR.KC.EQ.33) GOTO 150
-        IOFF=0
-        IF(KC.LE.22) IOFF=1
-        IF(KC.EQ.6.AND.MSTP(48).GE.1) IOFF=0
-        IF((KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18).AND.
-     &  (MSTP(6).EQ.1.OR.MSTP(49).GE.1)) IOFF=0
-        IF(KC.EQ.18.AND.PMAS(18,1).LT.1.) IOFF=1
-C...Off-shell branchings.
-        IF(IOFF.EQ.1) THEN
-          NGP=0
-          IF(KC.LE.20) NGP=(MOD(KC,10)+1)/2
-          IF(NGP.LE.MSTP(1)) WRITE(MSTU(11),5700) KC,CHPA(KC),
-     &    PMAS(KC,1),0.,0.,STATE(MDCY(KC,1)),0.
-          DO 130 J=1,MDCY(KC,3)
-          IDC=J+MDCY(KC,2)-1
-          NGP1=0
-          IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
-     &    (MOD(IABS(KFDP(IDC,1)),10)+1)/2
-          NGP2=0
-          IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
-     &    (MOD(IABS(KFDP(IDC,2)),10)+1)/2
-          IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
-     &    WRITE(MSTU(11),5800) IDC,CHPA(KFDP(IDC,1)),CHPA(KFDP(IDC,2)),
-     &    0.,0.,STATE(MDME(IDC,1)),0.
-  130     CONTINUE
-C...On-shell decays.
-        ELSE
-          BRFIN=1.
-          IF(WIDE(KCL,0).LE.0.) BRFIN=0.
-          WRITE(MSTU(11),5700) KC,CHPA(KC),PMAS(KC,1),WIDP(KCL,0),1.,
-     &    STATE(MDCY(KC,1)),BRFIN
-          DO 140 J=1,MDCY(KC,3)
-          IDC=J+MDCY(KC,2)-1
-          NGP1=0
-          IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
-     &    (MOD(IABS(KFDP(IDC,1)),10)+1)/2
-          NGP2=0
-          IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
-     &    (MOD(IABS(KFDP(IDC,2)),10)+1)/2
-          BRFIN=0.
-          IF(WIDE(KCL,0).GT.0.) BRFIN=WIDE(KCL,J)/WIDE(KCL,0)
-          IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1)) WRITE(MSTU(11),5800)
-     &    IDC,CHPA(KFDP(IDC,1)),CHPA(KFDP(IDC,2)),WIDP(KCL,J),
-     &    WIDP(KCL,J)/WIDP(KCL,0),STATE(MDME(IDC,1)),BRFIN
-  140     CONTINUE
-        ENDIF
-  150   CONTINUE
-        WRITE(MSTU(11),5900)
-C...Allowed incoming partons/particles at hard interaction.
-      ELSEIF(MSTAT.EQ.3) THEN
-        WRITE(MSTU(11),6000)
-        CALL LUNAME(MINT(11),CHAU)
-        CHIN(1)=CHAU(1:12)
-        CALL LUNAME(MINT(12),CHAU)
-        CHIN(2)=CHAU(1:12)
-        WRITE(MSTU(11),6100) CHIN(1),CHIN(2)
-        DO 160 KF=-40,40
-        CALL LUNAME(KF,CHAU)
-        CHPA(KF)=CHAU(1:9)
-  160   CONTINUE
-        DO 170 I=-20,22
-        IF(I.EQ.0) GOTO 170
-        IA=IABS(I)
-        IF(IA.GT.MSTP(58).AND.IA.LE.10) GOTO 170
-        IF(IA.GT.10+2*MSTP(1).AND.IA.LE.20) GOTO 170
-        WRITE(MSTU(11),6200) CHPA(I),STATE(KFIN(1,I)),CHPA(I),
-     &  STATE(KFIN(2,I))
-  170   CONTINUE
-        WRITE(MSTU(11),6300)
-C...User-defined limits on kinematical variables.
-      ELSEIF(MSTAT.EQ.4) THEN
-        WRITE(MSTU(11),6400)
-        WRITE(MSTU(11),6500)
-        SHRMAX=CKIN(2)
-        IF(SHRMAX.LT.0.) SHRMAX=VINT(1)
-        WRITE(MSTU(11),6600) CKIN(1),CHKIN(1),SHRMAX
-        PTHMIN=MAX(CKIN(3),CKIN(5))
-        PTHMAX=CKIN(4)
-        IF(PTHMAX.LT.0.) PTHMAX=0.5*SHRMAX
-        WRITE(MSTU(11),6700) CKIN(3),PTHMIN,CHKIN(2),PTHMAX
-        WRITE(MSTU(11),6800) CHKIN(3),CKIN(6)
-        DO 180 I=4,14
-        WRITE(MSTU(11),6600) CKIN(2*I-1),CHKIN(I),CKIN(2*I)
-  180   CONTINUE
-        SPRMAX=CKIN(32)
-        IF(SPRMAX.LT.0.) SPRMAX=VINT(1)
-        WRITE(MSTU(11),6600) CKIN(31),CHKIN(15),SPRMAX
-        WRITE(MSTU(11),6900)
-C...Status codes and parameter values.
-      ELSEIF(MSTAT.EQ.5) THEN
-        WRITE(MSTU(11),7000)
-        WRITE(MSTU(11),7100)
-        DO 190 I=1,100
-        WRITE(MSTU(11),7200) I,MSTP(I),PARP(I),100+I,MSTP(100+I),
-     &  PARP(100+I)
-  190   CONTINUE
-      ENDIF
-C...Formats for printouts.
- 5000 FORMAT('1',9('*'),1X,'PYSTAT:  Statistics on Number of ',
-     &'Events and Cross-sections',1X,9('*'))
- 5100 FORMAT(/1X,78('=')/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',12X,
-     &'Subprocess',12X,'I',6X,'Number of points',6X,'I',4X,'Sigma',3X,
-     &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',34('-'),'I',28('-'),
-     &'I',4X,'(mb)',4X,'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',1X,
-     &'N:o',1X,'Type',25X,'I',4X,'Generated',9X,'Tried',1X,'I',12X,
-     &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/1X,'I',34X,'I',28X,
-     &'I',12X,'I')
- 5200 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I12,1X,I13,1X,'I',1X,1P,
-     &E10.3,1X,'I')
- 5300 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/
-     &1X,'I',34X,'I',28X,'I',12X,'I')
- 5400 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')//
-     &1X,'********* Fraction of events that fail fragmentation ',
-     &'cuts =',1X,F8.5,' *********'/)
- 5500 FORMAT('1',17('*'),1X,'PYSTAT:  Decay Widths and Branching ',
-     &'Ratios',1X,17('*'))
- 5600 FORMAT(/1X,78('=')/1X,'I',29X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
-     &1X,'I',1X,'Branching/Decay Channel',5X,'I',1X,'Width (GeV)',1X,
-     &'I',7X,'B.R.',1X,'I',1X,'Stat',1X,'I',2X,'Eff. B.R.',1X,'I'/1X,
-     &'I',29X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,78('='))
- 5700 FORMAT(1X,'I',29X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,'I',1X,
-     &I4,1X,A9,'(',1P,E8.2,0P,')',1X,'->',1X,'I',2X,1P,E10.3,0P,1X,
-     &'I',1X,1P,E10.3,0P,1X,'I',1X,A4,1X,'I',1X,1P,E10.3,0P,1X,'I')
- 5800 FORMAT(1X,'I',1X,I4,1X,A9,1X,'+',1X,A9,2X,'I',2X,1P,E10.3,0P,
-     &1X,'I',1X,1P,E10.3,0P,1X,'I',1X,A4,1X,'I',1X,1P,E10.3,0P,1X,'I')
- 5900 FORMAT(1X,'I',29X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,78('='))
- 6000 FORMAT('1',7('*'),1X,'PYSTAT: Allowed Incoming Partons/',
-     &'Particles at Hard Interaction',1X,7('*'))
- 6100 FORMAT(/1X,78('=')/1X,'I',38X,'I',37X,'I'/1X,'I',1X,
-     &'Beam particle:',1X,A12,10X,'I',1X,'Target particle:',1X,A12,7X,
-     &'I'/1X,'I',38X,'I',37X,'I'/1X,'I',1X,'Content',6X,'State',19X,
-     &'I',1X,'Content',6X,'State',18X,'I'/1X,'I',38X,'I',37X,'I'/1X,
-     &78('=')/1X,'I',38X,'I',37X,'I')
- 6200 FORMAT(1X,'I',1X,A9,5X,A4,19X,'I',1X,A9,5X,A4,18X,'I')
- 6300 FORMAT(1X,'I',38X,'I',37X,'I'/1X,78('='))
- 6400 FORMAT('1',12('*'),1X,'PYSTAT: User-Defined Limits on ',
-     &'Kinematical Variables',1X,12('*'))
- 6500 FORMAT(/1X,78('=')/1X,'I',76X,'I')
- 6600 FORMAT(1X,'I',16X,1P,E10.3,0P,1X,'<',1X,A,1X,'<',1X,1P,E10.3,0P,
-     &16X,'I')
- 6700 FORMAT(1X,'I',3X,1P,E10.3,0P,1X,'(',1P,E10.3,0P,')',1X,'<',1X,A,
-     &1X,'<',1X,1P,E10.3,0P,16X,'I')
- 6800 FORMAT(1X,'I',29X,A,1X,'=',1X,1P,E10.3,0P,16X,'I')
- 6900 FORMAT(1X,'I',76X,'I'/1X,78('='))
- 7000 FORMAT('1',12('*'),1X,'PYSTAT: Summary of Status Codes and ',
-     &'Parameter Values',1X,12('*'))
- 7100 FORMAT(/3X,'I',4X,'MSTP(I)',9X,'PARP(I)',20X,'I',4X,'MSTP(I)',9X,
-     &'PARP(I)'/)
- 7200 FORMAT(1X,I3,5X,I6,6X,1P,E10.3,0P,18X,I3,5X,I6,6X,1P,E10.3)
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pystel.F b/PYTHIA/pythia/pystel.F
deleted file mode 100644 (file)
index cc7512e..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSTEL(X,Q2,XPEL)
-C...Gives electron structure function.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUDAT1/,/LUDAT2/
-      SAVE /PYPARS/,/PYINT1/
-      DIMENSION XPEL(-25:25),XPGA(-6:6),SXP(0:6)
-C...Interface to PDFLIB.
-      COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
-      SAVE /W50513/
-      DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
-     &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
-      CHARACTER*20 PARM(20)
-      DATA VALUE/20*0D0/,PARM/20*' '/
-C...Some common constants.
-      DO 100 KFL=-25,25
-      XPEL(KFL)=0.
-  100 CONTINUE
-      AEM=PARU(101)
-      PME=PMAS(11,1)
-      XL=LOG(MAX(1E-10,X))
-      X1L=LOG(MAX(1E-10,1.-X))
-      HLE=LOG(MAX(3.,Q2/PME**2))
-      HBE2=(AEM/PARU(1))*(HLE-1.)
-C...Electron inside electron, see R. Kleiss et al., in Z physics at
-C...LEP 1, CERN 89-08, p. 34
-      IF(MSTP(59).LE.1) THEN
-        HDE=1.+(AEM/PARU(1))*(1.5*HLE+1.289868)+(AEM/PARU(1))**2*
-     &  (-2.164868*HLE**2+9.840808*HLE-10.130464)
-        HEE=HBE2*(1.-X)**(HBE2-1.)*SQRT(MAX(0.,HDE))-
-     &  0.5*HBE2*(1.+X)+HBE2**2/8.*((1.+X)*(-4.*X1L+3.*XL)-
-     &  4.*XL/(1.-X)-5.-X)
-      ELSE
-        HEE=HBE2*(1.-X)**(HBE2-1.)*EXP(0.172784*HBE2)/PYGAMM(1.+HBE2)-
-     &  0.5*HBE2*(1.+X)+HBE2**2/8.*((1.+X)*(-4.*X1L+3.*XL)-
-     &  4.*XL/(1.-X)-5.-X)        
-      ENDIF
-      IF(X.GT.0.9999.AND.X.LE.0.999999) THEN
-        HEE=HEE*100.**HBE2/(100.**HBE2-1.)
-      ELSEIF(X.GT.0.999999) THEN
-        HEE=0.
-      ENDIF
-      XPEL(11)=X*HEE
-C...Photon and (transverse) W- inside electron.
-      AEMP=ULALEM(PME*SQRT(MAX(0.,Q2)))/PARU(2)
-      IF(MSTP(13).LE.1) THEN
-        HLG=HLE
-      ELSE
-        HLG=LOG(MAX(1.,(PARP(13)/PME**2)*(1.-X)/X**2))
-      ENDIF
-      XPEL(22)=AEMP*HLG*(1.+(1.-X)**2)
-      HLW=LOG(1.+Q2/PMAS(24,1)**2)/(4.*PARU(102))
-      XPEL(-24)=AEMP*HLW*(1.+(1.-X)**2)
-C...Electron or positron inside photon inside electron.
-      IF(MSTP(12).EQ.1) THEN
-        XFSEA=0.5*(AEMP*(HLE-1.))**2*(4./3.+X-X**2-4.*X**3/3.+
-     &  2.*X*(1.+X)*XL)
-        XPEL(11)=XPEL(11)+XFSEA
-        XPEL(-11)=XFSEA
-C...Initialize PDFLIB photon structure functions.
-        IF(MSTP(56).EQ.2) THEN
-          PARM(1)='NPTYPE'
-          VALUE(1)=3
-          PARM(2)='NGROUP'
-          VALUE(2)=MSTP(55)/1000
-          PARM(3)='NSET'
-          VALUE(3)=MOD(MSTP(55),1000)
-          IF(MINT(93).NE.3000000+MSTP(55)) THEN
-            CALL PDFSET(PARM,VALUE)
-            MINT(93)=3000000+MSTP(55)
-          ENDIF
-        ENDIF
-C...Quarks and gluons inside photon inside electron:
-C...numerical convolution required.
-        DO 110 KFL=0,6
-        SXP(KFL)=0.
-  110   CONTINUE
-        SUMXPP=0.
-        ITER=-1
-  120   ITER=ITER+1
-        SUMXP=SUMXPP
-        NSTP=2**(ITER-1)
-        IF(ITER.EQ.0) NSTP=2
-        DO 130 KFL=0,6
-        SXP(KFL)=0.5*SXP(KFL)
-  130   CONTINUE
-        WTSTP=0.5/NSTP
-        IF(ITER.EQ.0) WTSTP=0.5
-C...Pick grid of x_{gamma} values logarithmically even.
-        DO 150 ISTP=1,NSTP
-        IF(ITER.EQ.0) THEN
-          XLE=XL*(ISTP-1)
-        ELSE
-          XLE=XL*(ISTP-0.5)/NSTP
-        ENDIF
-        XE=MIN(0.999999,EXP(XLE))
-        XG=MIN(0.999999,X/XE)
-C...Evaluate photon inside electron structure function for convolution.
-        XPGP=1.+(1.-XE)**2
-        IF(MSTP(13).LE.1) THEN
-          XPGP=XPGP*HLE
-        ELSE
-          XPGP=XPGP*LOG(MAX(1.,(PARP(13)/PME**2)*(1.-XE)/XE**2))
-        ENDIF
-C...Evaluate photon structure functions for convolution.
-        IF(MSTP(56).EQ.1) THEN
-          CALL PYSTGA(XG,Q2,XPGA)
-          DO 140 KFL=0,5
-          SXP(KFL)=SXP(KFL)+WTSTP*XPGP*XPGA(KFL)
-  140     CONTINUE
-        ELSEIF(MSTP(56).EQ.2) THEN
-C...Call PDFLIB structure functions.
-          XX=XG
-          QQ=SQRT(MAX(0.,SNGL(Q2MIN),Q2))
-          IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
-          CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
-          SXP(0)=SXP(0)+WTSTP*XPGP*GLU
-          SXP(1)=SXP(1)+WTSTP*XPGP*DNV
-          SXP(2)=SXP(2)+WTSTP*XPGP*UPV
-          SXP(3)=SXP(3)+WTSTP*XPGP*STR
-          SXP(4)=SXP(4)+WTSTP*XPGP*CHM
-          SXP(5)=SXP(5)+WTSTP*XPGP*BOT
-          SXP(6)=SXP(6)+WTSTP*XPGP*TOP
-        ENDIF
-  150   CONTINUE
-        SUMXPP=SXP(0)+2.*SXP(1)+2.*SXP(2)
-        IF(ITER.LE.2.OR.(ITER.LE.7.AND.ABS(SUMXPP-SUMXP).GT.
-     &  PARP(14)*(SUMXPP+SUMXP))) GOTO 120
-C...Put convolution into output arrays.
-        FCONV=AEMP*(-XL)
-        XPEL(0)=FCONV*SXP(0)
-        DO 160 KFL=1,6
-        XPEL(KFL)=FCONV*SXP(KFL)
-        XPEL(-KFL)=XPEL(KFL)
-  160   CONTINUE
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pystfl.F b/PYTHIA/pythia/pystfl.F
deleted file mode 100644 (file)
index 05e18e0..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSTFL(KF,X,Q2,XPQ)
-C...Give proton structure function at small x and/or Q^2 according to
-C...correct limiting behaviour.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUDAT1/,/LUDAT2/
-      SAVE /PYPARS/,/PYINT1/
-      DIMENSION XPQ(-25:25),XPA(-25:25),XPB(-25:25),WTSB(-3:3)
-      DATA RMR/0.92/,RMP/0.38/,WTSB/0.5,1.,1.,5.,1.,1.,0.5/
-C...Send everything but protons/neutrons/VMD pions directly to PYSTFU.
-      MINT(92)=0
-      KFA=IABS(KF)
-      IACC=0
-      IF((KFA.EQ.2212.OR.KFA.EQ.2112).AND.MSTP(57).GE.2) IACC=1
-      IF(KFA.EQ.211.AND.MSTP(57).GE.3) IACC=1
-      IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND.MSTP(57).GE.3) IACC=1
-      IF(IACC.EQ.0) THEN
-        CALL PYSTFU(KF,X,Q2,XPQ)
-        RETURN
-      ENDIF
-C...Reset. Check x.
-      DO 100 KFL=-25,25
-      XPQ(KFL)=0.
-  100 CONTINUE
-      IF(X.LE.0..OR.X.GE.1.) THEN
-        WRITE(MSTU(11),5000) X
-        RETURN
-      ENDIF
-C...Define valence content.
-      KFC=KF
-      NV1=2
-      NV2=1
-      IF(KF.EQ.2212) THEN
-        KFV1=2
-        KFV2=1
-      ELSEIF(KF.EQ.-2212) THEN
-        KFV1=-2
-        KFV2=-1
-      ELSEIF(KF.EQ.2112) THEN
-        KFV1=1
-        KFV2=2
-      ELSEIF(KF.EQ.-2112) THEN
-        KFV1=-1
-        KFV2=-2
-      ELSEIF(KF.EQ.211) THEN
-        NV1=1
-        KFV1=2
-        KFV2=-1
-      ELSEIF(KF.EQ.-211) THEN
-        NV1=1
-        KFV1=-2
-        KFV2=1
-      ELSEIF(MINT(105).LE.223) THEN
-        KFV1=1
-        WTV1=0.2
-        KFV2=2
-        WTV2=0.8
-      ELSEIF(MINT(105).EQ.333) THEN
-        KFV1=3
-        WTV1=1.0
-        KFV2=1
-        WTV2=0.0
-      ELSEIF(MINT(105).EQ.443) THEN
-        KFV1=4
-        WTV1=1.0
-        KFV2=1
-        WTV2=0.0
-      ENDIF
-C...Do naive evaluation and find min Q^2, boundary Q^2 and x_0.
-      CALL PYSTFU(KFC,X,Q2,XPA)
-      Q2MN=MAX(3.,VINT(231))
-      Q2B=2.+0.052**2*EXP(3.56*SQRT(MAX(0.,-LOG(3.*X))))
-      XMN=EXP(-(LOG((Q2MN-2.)/0.052**2)/3.56)**2)/3.
-C...Large Q2 and large x: naive call is enough.
-      IF(Q2.GT.Q2MN.AND.Q2.GT.Q2B) THEN
-        DO 110 KFL=-25,25
-        XPQ(KFL)=XPA(KFL)
-  110   CONTINUE
-        MINT(92)=1
-C...Small Q2 and large x: dampen boundary value.
-      ELSEIF(X.GT.XMN) THEN
-C...Evaluate at boundary and define dampening factors.
-        CALL PYSTFU(KFC,X,Q2MN,XPA)
-        FV=(Q2*(Q2MN+RMR)/(Q2MN*(Q2+RMR)))**(0.55*(1.-X)/(1.-XMN))
-        FS=(Q2*(Q2MN+RMP)/(Q2MN*(Q2+RMP)))**1.08
-C...Separate valence and sea parts of structure function.
-        IF(KFA.NE.22) THEN
-          XFV1=XPA(KFV1)-XPA(-KFV1)
-          XPA(KFV1)=XPA(-KFV1)
-          XFV2=XPA(KFV2)-XPA(-KFV2)
-          XPA(KFV2)=XPA(-KFV2)
-        ELSE
-          XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
-          XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
-          XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
-          XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
-        ENDIF
-C...Dampen valence and sea separately. Put back together.
-        DO 120 KFL=-25,25
-        XPQ(KFL)=FS*XPA(KFL)
-  120   CONTINUE
-        IF(KFA.NE.22) THEN
-          XPQ(KFV1)=XPQ(KFV1)+FV*XFV1
-          XPQ(KFV2)=XPQ(KFV2)+FV*XFV2
-        ELSE
-          XPQ(KFV1)=XPQ(KFV1)+FV*WTV1*VINT(232)
-          XPQ(-KFV1)=XPQ(-KFV1)+FV*WTV1*VINT(232)
-          XPQ(KFV2)=XPQ(KFV2)+FV*WTV2*VINT(232)
-          XPQ(-KFV2)=XPQ(-KFV2)+FV*WTV2*VINT(232)          
-        ENDIF
-        MINT(92)=2
-C...Large Q2 and small x: interpolate behaviour.
-      ELSEIF(Q2.GT.Q2MN) THEN
-C...Evaluate at extremes and define coefficients for interpolation.
-        CALL PYSTFU(KFC,XMN,Q2MN,XPA)
-        VI232A=VINT(232)
-        CALL PYSTFU(KFC,X,Q2B,XPB)
-        VI232B=VINT(232) 
-        FLA=LOG(Q2B/Q2)/LOG(Q2B/Q2MN)
-        FVA=(X/XMN)**0.45*FLA
-        FSA=(X/XMN)**(-0.08)*FLA
-        FB=1.-FLA
-C...Separate valence and sea parts of structure function.
-        IF(KFA.NE.22) THEN
-          XFVA1=XPA(KFV1)-XPA(-KFV1)
-          XPA(KFV1)=XPA(-KFV1)
-          XFVA2=XPA(KFV2)-XPA(-KFV2)
-          XPA(KFV2)=XPA(-KFV2)
-          XFVB1=XPB(KFV1)-XPB(-KFV1)
-          XPB(KFV1)=XPB(-KFV1)
-          XFVB2=XPB(KFV2)-XPB(-KFV2)
-          XPB(KFV2)=XPB(-KFV2)
-        ELSE
-          XPA(KFV1)=XPA(KFV1)-WTV1*VI232A
-          XPA(-KFV1)=XPA(-KFV1)-WTV1*VI232A
-          XPA(KFV2)=XPA(KFV2)-WTV2*VI232A
-          XPA(-KFV2)=XPA(-KFV2)-WTV2*VI232A
-          XPB(KFV1)=XPB(KFV1)-WTV1*VI232B
-          XPB(-KFV1)=XPB(-KFV1)-WTV1*VI232B
-          XPB(KFV2)=XPB(KFV2)-WTV2*VI232B
-          XPB(-KFV2)=XPB(-KFV2)-WTV2*VI232B
-        ENDIF
-C...Interpolate for valence and sea. Put back together.
-        DO 130 KFL=-25,25
-        XPQ(KFL)=FSA*XPA(KFL)+FB*XPB(KFL)
-  130   CONTINUE
-        IF(KFA.NE.22) THEN
-          XPQ(KFV1)=XPQ(KFV1)+(FVA*XFVA1+FB*XFVB1)
-          XPQ(KFV2)=XPQ(KFV2)+(FVA*XFVA2+FB*XFVB2)
-        ELSE
-          XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
-          XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
-          XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
-          XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VI232A+FB*VI232B)          
-        ENDIF
-        MINT(92)=3
-C...Small Q2 and small x: dampen boundary value and add term.
-      ELSE
-C...Evaluate at boundary and define dampening factors.
-        CALL PYSTFU(KFC,XMN,Q2MN,XPA)
-        FB=(XMN-X)*(Q2MN-Q2)/(XMN*Q2MN)
-        FA=1.-FB
-        FVC=(X/XMN)**0.45*(Q2/(Q2+RMR))**0.55
-        FVA=FVC*FA*((Q2MN+RMR)/Q2MN)**0.55
-        FVB=FVC*FB*1.10*XMN**0.45*0.11
-        FSC=(X/XMN)**(-0.08)*(Q2/(Q2+RMP))**1.08
-        FSA=FSC*FA*((Q2MN+RMP)/Q2MN)**1.08
-        FSB=FSC*FB*0.21*XMN**(-0.08)*0.21
-C...Separate valence and sea parts of structure function.
-        IF(KFA.NE.22) THEN
-          XFV1=XPA(KFV1)-XPA(-KFV1)
-          XPA(KFV1)=XPA(-KFV1)
-          XFV2=XPA(KFV2)-XPA(-KFV2)
-          XPA(KFV2)=XPA(-KFV2)
-        ELSE
-          XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
-          XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
-          XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
-          XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
-        ENDIF
-C...Dampen valence and sea separately. Add constant terms.
-C...Put back together.
-        DO 140 KFL=-25,25
-        XPQ(KFL)=FSA*XPA(KFL)
-  140   CONTINUE
-        IF(KFA.NE.22) THEN
-          DO 150 KFL=-3,3
-          XPQ(KFL)=XPQ(KFL)+FSB*WTSB(KFL)
-  150     CONTINUE
-          XPQ(KFV1)=XPQ(KFV1)+(FVA*XFV1+FVB*NV1)
-          XPQ(KFV2)=XPQ(KFV2)+(FVA*XFV2+FVB*NV2)
-        ELSE
-          DO 160 KFL=-3,3
-          XPQ(KFL)=XPQ(KFL)+VINT(281)*FSB*WTSB(KFL)
-  160     CONTINUE
-          XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
-          XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
-          XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
-          XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))          
-        ENDIF
-        XPQ(21)=XPQ(0)
-        MINT(92)=4
-      ENDIF
-C...Format for error printout.
- 5000 FORMAT(' Error: x value outside physical range; x =',1P,E12.3)
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pystfu.F b/PYTHIA/pythia/pystfu.F
deleted file mode 100644 (file)
index aaab55f..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSTFU(KF,X,Q2,XPQ)
-C...Gives electron, photon, pi+, neutron, proton and hyperon
-C...structure functions according to a few different parametrizations.
-C...Note that what is coded is x times the probability distribution,
-C...i.e. xq(x,Q2) etc.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
-     &XPDIR(-6:6)
-      SAVE /LUDAT1/,/LUDAT2/
-      SAVE /PYPARS/,/PYINT1/,/PYINT8/
-      DIMENSION XPQ(-25:25),XPEL(-25:25),XPGA(-6:6),XPPI(-6:6),
-     &XPPR(-6:6)
-C...Interface to PDFLIB.
-      COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
-      SAVE /W50513/
-      DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
-     &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
-      CHARACTER*20 PARM(20)
-      DATA VALUE/20*0D0/,PARM/20*' '/
-C...Data related to Schuler-Sjostrand photon distributions.
-      DATA ALAMGA/0.2/, PMCGA/1.3/, PMBGA/4.6/
-C...Reset structure functions.
-      MINT(92)=0
-      DO 100 KFL=-25,25
-      XPQ(KFL)=0.
-  100 CONTINUE
-C...Check x and particle species.
-      IF(X.LE.0..OR.X.GE.1.) THEN
-        WRITE(MSTU(11),5000) X
-        RETURN
-      ENDIF
-      KFA=IABS(KF)
-      IF(KFA.NE.11.AND.KFA.NE.22.AND.KFA.NE.211.AND.KFA.NE.2112.AND.
-     &KFA.NE.2212.AND.KFA.NE.3122.AND.KFA.NE.3112.AND.KFA.NE.3212
-     &.AND.KFA.NE.3222.AND.KFA.NE.3312.AND.KFA.NE.3322.AND.
-     &KFA.NE.3334.AND.KFA.NE.111) THEN
-        WRITE(MSTU(11),5100) KF
-        RETURN
-      ENDIF
-C...Electron structure function call.
-      IF(KFA.EQ.11) THEN
-        CALL PYSTEL(X,Q2,XPEL)
-        DO 110 KFL=-25,25
-        XPQ(KFL)=XPEL(KFL)
-  110   CONTINUE
-C...Photon structure function call (VDM+anomalous).
-      ELSEIF(KFA.EQ.22.AND.MINT(109).LE.1) THEN
-        IF(MSTP(56).EQ.1.AND.MSTP(55).EQ.1) THEN
-          CALL PYSTGA(X,Q2,XPGA)
-          DO 120 KFL=-6,6
-          XPQ(KFL)=XPGA(KFL)
-  120     CONTINUE
-        ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
-          Q2MX=Q2
-          P2MX=0.36
-          IF(MSTP(55).GE.7) P2MX=4.0
-          IF(MSTP(57).EQ.0) Q2MX=P2MX
-          CALL PYGGAM(MSTP(55)-4,X,Q2MX,0.,F2GAM,XPGA)
-          DO 130 KFL=-6,6
-          XPQ(KFL)=XPGA(KFL)
-  130     CONTINUE
-          VINT(231)=P2MX
-        ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
-          Q2MX=Q2
-          P2MX=0.36
-          IF(MSTP(55).GE.11) P2MX=4.0
-          IF(MSTP(57).EQ.0) Q2MX=P2MX
-          CALL PYGGAM(MSTP(55)-8,X,Q2MX,0.,F2GAM,XPGA)
-          DO 140 KFL=-6,6
-          XPQ(KFL)=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
-  140     CONTINUE
-          VINT(231)=P2MX
-        ELSEIF(MSTP(56).EQ.2) THEN
-C...Call PDFLIB structure functions.
-          PARM(1)='NPTYPE'
-          VALUE(1)=3
-          PARM(2)='NGROUP'
-          VALUE(2)=MSTP(55)/1000
-          PARM(3)='NSET'
-          VALUE(3)=MOD(MSTP(55),1000)
-          IF(MINT(93).NE.3000000+MSTP(55)) THEN
-            CALL PDFSET(PARM,VALUE)
-            MINT(93)=3000000+MSTP(55)
-          ENDIF
-          XX=X
-          QQ=SQRT(MAX(0.,SNGL(Q2MIN),Q2))
-          IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
-          CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
-          VINT(231)=Q2MIN
-          XPQ(0)=GLU
-          XPQ(1)=DNV
-          XPQ(-1)=DNV
-          XPQ(2)=UPV
-          XPQ(-2)=UPV
-          XPQ(3)=STR
-          XPQ(-3)=STR
-          XPQ(4)=CHM
-          XPQ(-4)=CHM
-          XPQ(5)=BOT
-          XPQ(-5)=BOT
-          XPQ(6)=TOP
-          XPQ(-6)=TOP
-        ELSE
-          WRITE(MSTU(11),5200) KF,MSTP(56),MSTP(55)
-        ENDIF
-C...Pion/gammaVDM structure function call.
-      ELSEIF(KFA.EQ.211.OR.KFA.EQ.111.OR.(KFA.EQ.22.AND.
-     &MINT(109).EQ.2)) THEN
-        IF(KFA.EQ.22.AND.MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.
-     &  MSTP(55).LE.12) THEN
-          ISET=1+MOD(MSTP(55)-1,4)
-          Q2MX=Q2
-          P2MX=0.36
-          IF(ISET.GE.3) P2MX=4.0
-          IF(MSTP(57).EQ.0) Q2MX=P2MX
-          CALL PYGVMD(ISET,2,X,Q2MX,P2MX,ALAMGA,XPGA)
-          DO 150 KFL=-6,6
-          XPQ(KFL)=XPGA(KFL)
-  150     CONTINUE
-          VINT(231)=P2MX
-        ELSEIF(MSTP(54).EQ.1.AND.MSTP(53).GE.1.AND.MSTP(53).LE.3) THEN
-          CALL PYSTPI(X,Q2,XPPI)
-          DO 160 KFL=-6,6
-          XPQ(KFL)=XPPI(KFL)
-  160     CONTINUE
-        ELSEIF(MSTP(54).EQ.2) THEN
-C...Call PDFLIB structure functions.
-          PARM(1)='NPTYPE'
-          VALUE(1)=2
-          PARM(2)='NGROUP'
-          VALUE(2)=MSTP(53)/1000
-          PARM(3)='NSET'
-          VALUE(3)=MOD(MSTP(53),1000)
-          IF(MINT(93).NE.2000000+MSTP(53)) THEN
-            CALL PDFSET(PARM,VALUE)
-            MINT(93)=2000000+MSTP(53)
-          ENDIF
-          XX=X
-          QQ=SQRT(MAX(0.,SNGL(Q2MIN),Q2))
-          IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
-          CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
-          VINT(231)=Q2MIN
-          XPQ(0)=GLU
-          XPQ(1)=DSEA
-          XPQ(-1)=UPV+DSEA
-          XPQ(2)=UPV+USEA
-          XPQ(-2)=USEA
-          XPQ(3)=STR
-          XPQ(-3)=STR
-          XPQ(4)=CHM
-          XPQ(-4)=CHM
-          XPQ(5)=BOT
-          XPQ(-5)=BOT
-          XPQ(6)=TOP
-          XPQ(-6)=TOP
-        ELSE
-          WRITE(MSTU(11),5200) KF,MSTP(54),MSTP(53)
-        ENDIF
-C...Anomalous photon structure function call.
-      ELSEIF(KFA.EQ.22.AND.MINT(109).EQ.3) THEN
-        Q2MX=Q2
-        P2MX=PARP(15)**2
-        IF(MSTP(56).EQ.1.AND.MSTP(55).LE.8) THEN
-          IF(MSTP(55).EQ.5.OR.MSTP(55).EQ.6) P2MX=0.36
-          IF(MSTP(55).EQ.7.OR.MSTP(55).EQ.8) P2MX=4.0
-          IF(MSTP(57).EQ.0) Q2MX=P2MX
-          CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA)
-          DO 170 KFL=-6,6
-          XPQ(KFL)=XPGA(KFL)
-  170     CONTINUE
-          VINT(231)=P2MX
-        ELSEIF(MSTP(56).EQ.1) THEN
-          IF(MSTP(55).EQ.9.OR.MSTP(55).EQ.10) P2MX=0.36
-          IF(MSTP(55).EQ.11.OR.MSTP(55).EQ.12) P2MX=4.0
-          IF(MSTP(57).EQ.0) Q2MX=P2MX
-          CALL PYGGAM(MSTP(55)-8,X,Q2MX,0.,F2GM,XPGA)
-          DO 180 KFL=-6,6
-          XPQ(KFL)=MAX(0.,XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
-  180     CONTINUE
-          VINT(231)=P2MX
-        ELSEIF(MSTP(56).EQ.2) THEN
-          IF(MSTP(57).EQ.0) Q2MX=P2MX
-          CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA)
-          DO 185 KFL=-6,6
-          XPQ(KFL)=XPGA(KFL)
-  185     CONTINUE
-          VINT(231)=P2MX
-        ELSEIF(MSTP(55).GE.1.AND.MSTP(55).LE.5) THEN
-          IF(MSTP(57).EQ.0) Q2MX=P2MX
-          CALL PYGVMD(0,MSTP(55),X,Q2MX,P2MX,PARP(1),XPGA)
-          DO 190 KFL=-6,6
-          XPQ(KFL)=XPGA(KFL)
-  190     CONTINUE
-          VINT(231)=P2MX
-        ELSE
-  200     RKF=11.*RLU(0)
-          KFR=1
-          IF(RKF.GT.1.) KFR=2
-          IF(RKF.GT.5.) KFR=3
-          IF(RKF.GT.6.) KFR=4
-          IF(RKF.GT.10.) KFR=5
-          IF(KFR.EQ.4.AND.Q2.LT.PMCGA**2) GOTO 200
-          IF(KFR.EQ.5.AND.Q2.LT.PMBGA**2) GOTO 200
-          IF(MSTP(57).EQ.0) Q2MX=P2MX
-          CALL PYGVMD(0,KFR,X,Q2MX,P2MX,PARP(1),XPGA)
-          DO 210 KFL=-6,6
-          XPQ(KFL)=XPGA(KFL)
-  210     CONTINUE
-          VINT(231)=P2MX
-        ENDIF
-C...Proton structure function call.
-      ELSE
-        IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.11) THEN
-          CALL PYSTPR(X,Q2,XPPR)
-          DO 220 KFL=-6,6
-          XPQ(KFL)=XPPR(KFL)
-  220     CONTINUE
-        ELSEIF(MSTP(52).EQ.2) THEN
-C...Call PDFLIB structure functions.
-          PARM(1)='NPTYPE'
-          VALUE(1)=1
-          PARM(2)='NGROUP'
-          VALUE(2)=MSTP(51)/1000
-          PARM(3)='NSET'
-          VALUE(3)=MOD(MSTP(51),1000)
-          IF(MINT(93).NE.1000000+MSTP(51)) THEN
-            CALL PDFSET(PARM,VALUE)
-            MINT(93)=1000000+MSTP(51)
-          ENDIF
-          XX=X
-          QQ=SQRT(MAX(0.,SNGL(Q2MIN),Q2))
-          IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
-          CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
-          VINT(231)=Q2MIN
-          XPQ(0)=GLU
-          XPQ(1)=DNV+DSEA
-          XPQ(-1)=DSEA
-          XPQ(2)=UPV+USEA
-          XPQ(-2)=USEA
-          XPQ(3)=STR
-          XPQ(-3)=STR
-          XPQ(4)=CHM
-          XPQ(-4)=CHM
-          XPQ(5)=BOT
-          XPQ(-5)=BOT
-          XPQ(6)=TOP
-          XPQ(-6)=TOP
-        ELSE
-          WRITE(MSTU(11),5200) KF,MSTP(52),MSTP(51)
-        ENDIF
-      ENDIF
-C...Isospin average for pi0/gammaVDM.
-      IF(KFA.EQ.111.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
-        IF(KFA.EQ.22.AND.MSTP(55).GE.5.AND.MSTP(55).LE.12) THEN
-          XPV=XPQ(2)-XPQ(1)
-          XPQ(2)=XPQ(1)
-          XPQ(-2)=XPQ(-1)
-        ELSE
-          XPS=0.5*(XPQ(1)+XPQ(-2))
-          XPV=0.5*(XPQ(2)+XPQ(-1))-XPS
-          XPQ(2)=XPS
-          XPQ(-1)=XPS
-        ENDIF
-        IF(KFA.EQ.22.AND.MINT(105).LE.223) THEN
-          XPQ(1)=XPQ(1)+0.2*XPV
-          XPQ(-1)=XPQ(-1)+0.2*XPV
-          XPQ(2)=XPQ(2)+0.8*XPV
-          XPQ(-2)=XPQ(-2)+0.8*XPV
-        ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.333) THEN
-          XPQ(3)=XPQ(3)+XPV
-          XPQ(-3)=XPQ(-3)+XPV
-        ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.443) THEN
-          XPQ(4)=XPQ(4)+XPV
-          XPQ(-4)=XPQ(-4)+XPV
-          IF(MSTP(55).GE.9) THEN
-            DO 230 KFL=-6,6
-            XPQ(KFL)=0.
-  230       CONTINUE
-          ENDIF
-        ELSE
-          XPQ(1)=XPQ(1)+0.5*XPV
-          XPQ(-1)=XPQ(-1)+0.5*XPV
-          XPQ(2)=XPQ(2)+0.5*XPV
-          XPQ(-2)=XPQ(-2)+0.5*XPV
-        ENDIF
-C...Rescale for gammaVDM by effective gamma -> rho coupling.
-        IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
-          DO 240 KFL=-6,6
-          XPQ(KFL)=VINT(281)*XPQ(KFL)
-  240     CONTINUE
-          VINT(232)=VINT(281)*XPV
-        ENDIF
-C...Isospin conjugation for neutron.
-      ELSEIF(KFA.EQ.2112) THEN
-        XPS=XPQ(1)
-        XPQ(1)=XPQ(2)
-        XPQ(2)=XPS
-        XPS=XPQ(-1)
-        XPQ(-1)=XPQ(-2)
-        XPQ(-2)=XPS
-C...Simple recipes for hyperon (average valence structure function).
-      ELSEIF(KFA.EQ.3122.OR.KFA.EQ.3112.OR.KFA.EQ.3212.OR.KFA.EQ.3222
-     &.OR.KFA.EQ.3312.OR.KFA.EQ.3322.OR.KFA.EQ.3334) THEN
-        XPVAL=(XPQ(1)+XPQ(2)-XPQ(-1)-XPQ(-2))/3.
-        XPSEA=0.5*(XPQ(-1)+XPQ(-2))
-        XPQ(1)=XPSEA
-        XPQ(2)=XPSEA
-        XPQ(-1)=XPSEA
-        XPQ(-2)=XPSEA
-        XPQ(KFA/1000)=XPQ(KFA/1000)+XPVAL
-        XPQ(MOD(KFA/100,10))=XPQ(MOD(KFA/100,10))+XPVAL
-        XPQ(MOD(KFA/10,10))=XPQ(MOD(KFA/10,10))+XPVAL
-      ENDIF
-C...Charge conjugation for antiparticle.
-      IF(KF.LT.0) THEN
-        DO 250 KFL=1,25
-        IF(KFL.EQ.21.OR.KFL.EQ.22.OR.KFL.EQ.23.OR.KFL.EQ.25) GOTO 250
-        XPS=XPQ(KFL)
-        XPQ(KFL)=XPQ(-KFL)
-        XPQ(-KFL)=XPS
-  250   CONTINUE
-      ENDIF
-C...Allow gluon also in position 21.
-      XPQ(21)=XPQ(0)
-C...Check positivity and reset above maximum allowed flavour.
-      DO 260 KFL=-25,25
-      XPQ(KFL)=MAX(0.,XPQ(KFL))
-      IF(IABS(KFL).GT.MSTP(58).AND.IABS(KFL).LE.8) XPQ(KFL)=0.
-  260 CONTINUE
-C...Formats for error printouts.
- 5000 FORMAT(' Error: x value outside physical range; x =',1P,E12.3)
- 5100 FORMAT(' Error: illegal particle code for structure function;',
-     &' KF =',I5)
- 5200 FORMAT(' Error: unknown structure function; KF, library, set =',
-     &3I5)
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pystga.F b/PYTHIA/pythia/pystga.F
deleted file mode 100644 (file)
index 7f1e85c..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSTGA(X,Q2,XPGA)
-C...Gives photon structure function.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUDAT1/
-      SAVE /PYPARS/,/PYINT1/
-      DIMENSION XPGA(-6:6),DGAG(4,3),DGBG(4,3),DGCG(4,3),DGAN(4,3),
-     &DGBN(4,3),DGCN(4,3),DGDN(4,3),DGEN(4,3),DGAS(4,3),DGBS(4,3),
-     &DGCS(4,3),DGDS(4,3),DGES(4,3)
-C...The following data lines are coefficients needed in the
-C...Drees and Grassie photon structure function parametrization.
-      DATA DGAG/-.207E0,.6158E0,1.074E0,0.E0,.8926E-2,.6594E0,
-     &.4766E0,.1975E-1,.03197E0,1.018E0,.2461E0,.2707E-1/
-      DATA DGBG/-.1987E0,.6257E0,8.352E0,5.024E0,.5085E-1,.2774E0,
-     &-.3906E0,-.3212E0,-.618E-2,.9476E0,-.6094E0,-.1067E-1/
-      DATA DGCG/5.119E0,-.2752E0,-6.993E0,2.298E0,-.2313E0,.1382E0,
-     &6.542E0,.5162E0,-.1216E0,.9047E0,2.653E0,.2003E-2/
-      DATA DGAN/2.285E0,-.1526E-1,1330.E0,4.219E0,-.3711E0,1.061E0,
-     &4.758E0,-.1503E-1,15.8E0,-.9464E0,-.5E0,-.2118E0/
-      DATA DGBN/6.073E0,-.8132E0,-41.31E0,3.165E0,-.1717E0,.7815E0,
-     &1.535E0,.7067E-2,2.742E0,-.7332E0,.7148E0,3.287E0/
-      DATA DGCN/-.4202E0,.1778E-1,.9216E0,.18E0,.8766E-1,.2197E-1,
-     &.1096E0,.204E0,.2917E-1,.4657E-1,.1785E0,.4811E-1/
-      DATA DGDN/-.8083E-1,.6346E0,1.208E0,.203E0,-.8915E0,.2857E0,
-     &2.973E0,.1185E0,-.342E-1,.7196E0,.7338E0,.8139E-1/
-      DATA DGEN/.5526E-1,1.136E0,.9512E0,.1163E-1,-.1816E0,.5866E0,
-     &2.421E0,.4059E0,-.2302E-1,.9229E0,.5873E0,-.79E-4/
-      DATA DGAS/16.69E0,-.7916E0,1099.E0,4.428E0,-.1207E0,1.071E0,
-     &1.977E0,-.8625E-2,6.734E0,-1.008E0,-.8594E-1,.7625E-1/
-      DATA DGBS/.176E0,.4794E-1,1.047E0,.25E-1,25.E0,-1.648E0,
-     &-.1563E-1,6.438E0,59.88E0,-2.983E0,4.48E0,.9686E0/
-      DATA DGCS/-.208E-1,.3386E-2,4.853E0,.8404E0,-.123E-1,1.162E0,
-     &.4824E0,-.11E-1,-.3226E-2,.8432E0,.3616E0,.1383E-2/
-      DATA DGDS/-.1685E-1,1.353E0,1.426E0,1.239E0,-.9194E-1,.7912E0,
-     &.6397E0,2.327E0,-.3321E-1,.9475E0,-.3198E0,.2132E-1/
-      DATA DGES/-.1986E0,1.1E0,1.136E0,-.2779E0,.2015E-1,.9869E0,
-     &-.7036E-1,.1694E-1,.1059E0,.6954E0,-.6663E0,.3683E0/
-C...Photon structure function from Drees and Grassie.
-C...Allowed variable range: 1 GeV^2 < Q^2 < 10000 GeV^2.
-      DO 100 KFL=-6,6
-      XPGA(KFL)=0.
-  100 CONTINUE
-      VINT(231)=1.
-      IF(MSTP(57).LE.0) THEN
-        T=LOG(1./0.16)
-      ELSE
-        T=LOG(MIN(1E4,MAX(1.,Q2))/0.16)
-      ENDIF
-      X1=1.-X
-      NF=3
-      IF(Q2.GT.25.) NF=4
-      IF(Q2.GT.300.) NF=5
-      NFE=NF-2
-      AEM=PARU(101)
-C...Evaluate gluon content.
-      DGA=DGAG(1,NFE)*T**DGAG(2,NFE)+DGAG(3,NFE)*T**(-DGAG(4,NFE))
-      DGB=DGBG(1,NFE)*T**DGBG(2,NFE)+DGBG(3,NFE)*T**(-DGBG(4,NFE))
-      DGC=DGCG(1,NFE)*T**DGCG(2,NFE)+DGCG(3,NFE)*T**(-DGCG(4,NFE))
-      XPGL=DGA*X**DGB*X1**DGC
-C...Evaluate up- and down-type quark content.
-      DGA=DGAN(1,NFE)*T**DGAN(2,NFE)+DGAN(3,NFE)*T**(-DGAN(4,NFE))
-      DGB=DGBN(1,NFE)*T**DGBN(2,NFE)+DGBN(3,NFE)*T**(-DGBN(4,NFE))
-      DGC=DGCN(1,NFE)*T**DGCN(2,NFE)+DGCN(3,NFE)*T**(-DGCN(4,NFE))
-      DGD=DGDN(1,NFE)*T**DGDN(2,NFE)+DGDN(3,NFE)*T**(-DGDN(4,NFE))
-      DGE=DGEN(1,NFE)*T**DGEN(2,NFE)+DGEN(3,NFE)*T**(-DGEN(4,NFE))
-      XPQN=X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
-      DGA=DGAS(1,NFE)*T**DGAS(2,NFE)+DGAS(3,NFE)*T**(-DGAS(4,NFE))
-      DGB=DGBS(1,NFE)*T**DGBS(2,NFE)+DGBS(3,NFE)*T**(-DGBS(4,NFE))
-      DGC=DGCS(1,NFE)*T**DGCS(2,NFE)+DGCS(3,NFE)*T**(-DGCS(4,NFE))
-      DGD=DGDS(1,NFE)*T**DGDS(2,NFE)+DGDS(3,NFE)*T**(-DGDS(4,NFE))
-      DGE=DGES(1,NFE)*T**DGES(2,NFE)+DGES(3,NFE)*T**(-DGES(4,NFE))
-      DGF=9.
-      IF(NF.EQ.4) DGF=10.
-      IF(NF.EQ.5) DGF=55./6.
-      XPQS=DGF*X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
-      IF(NF.LE.3) THEN
-        XPQU=(XPQS+9.*XPQN)/6.
-        XPQD=(XPQS-4.5*XPQN)/6.
-      ELSEIF(NF.EQ.4) THEN
-        XPQU=(XPQS+6.*XPQN)/8.
-        XPQD=(XPQS-6.*XPQN)/8.
-      ELSE
-        XPQU=(XPQS+7.5*XPQN)/10.
-        XPQD=(XPQS-5.*XPQN)/10.
-      ENDIF
-C...Put into output arrays.
-      XPGA(0)=AEM*XPGL
-      XPGA(1)=AEM*XPQD
-      XPGA(2)=AEM*XPQU
-      XPGA(3)=AEM*XPQD
-      IF(NF.GE.4) XPGA(4)=AEM*XPQU
-      IF(NF.GE.5) XPGA(5)=AEM*XPQD
-      DO 110 KFL=1,6
-      XPGA(-KFL)=XPGA(KFL)
-  110 CONTINUE
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pystpi.F b/PYTHIA/pythia/pystpi.F
deleted file mode 100644 (file)
index 2ac2e0e..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSTPI(X,Q2,XPPI)
-C...Gives pi+ structure function according to two different
-C...parametrizations.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUDAT1/
-      SAVE /PYPARS/,/PYINT1/
-      DIMENSION XPPI(-6:6),COW(3,5,4,2),XQ(9),TS(6)
-C...The following data lines are coefficients needed in the
-C...Owens pion structure function parametrizations, see below.
-C...Expansion coefficients for up and down valence quark distributions.
-      DATA ((COW(IP,IS,1,1),IS=1,5),IP=1,3)/
-     1  4.0000E-01,  7.0000E-01,  0.0000E+00,  0.0000E+00,  0.0000E+00,
-     2 -6.2120E-02,  6.4780E-01,  0.0000E+00,  0.0000E+00,  0.0000E+00,
-     3 -7.1090E-03,  1.3350E-02,  0.0000E+00,  0.0000E+00,  0.0000E+00/
-      DATA ((COW(IP,IS,1,2),IS=1,5),IP=1,3)/
-     1  4.0000E-01,  6.2800E-01,  0.0000E+00,  0.0000E+00,  0.0000E+00,
-     2 -5.9090E-02,  6.4360E-01,  0.0000E+00,  0.0000E+00,  0.0000E+00,
-     3 -6.5240E-03,  1.4510E-02,  0.0000E+00,  0.0000E+00,  0.0000E+00/
-C...Expansion coefficients for gluon distribution.
-      DATA ((COW(IP,IS,2,1),IS=1,5),IP=1,3)/
-     1  8.8800E-01,  0.0000E+00,  3.1100E+00,  6.0000E+00,  0.0000E+00,
-     2 -1.8020E+00, -1.5760E+00, -1.3170E-01,  2.8010E+00, -1.7280E+01,
-     3  1.8120E+00,  1.2000E+00,  5.0680E-01, -1.2160E+01,  2.0490E+01/
-      DATA ((COW(IP,IS,2,2),IS=1,5),IP=1,3)/
-     1  7.9400E-01,  0.0000E+00,  2.8900E+00,  6.0000E+00,  0.0000E+00,
-     2 -9.1440E-01, -1.2370E+00,  5.9660E-01, -3.6710E+00, -8.1910E+00,
-     3  5.9660E-01,  6.5820E-01, -2.5500E-01, -2.3040E+00,  7.7580E+00/
-C...Expansion coefficients for (up+down+strange) quark sea distribution.
-      DATA ((COW(IP,IS,3,1),IS=1,5),IP=1,3)/
-     1  9.0000E-01,  0.0000E+00,  5.0000E+00,  0.0000E+00,  0.0000E+00,
-     2 -2.4280E-01, -2.1200E-01,  8.6730E-01,  1.2660E+00,  2.3820E+00,
-     3  1.3860E-01,  3.6710E-03,  4.7470E-02, -2.2150E+00,  3.4820E-01/
-      DATA ((COW(IP,IS,3,2),IS=1,5),IP=1,3)/
-     1  9.0000E-01,  0.0000E+00,  5.0000E+00,  0.0000E+00,  0.0000E+00,
-     2 -1.4170E-01, -1.6970E-01, -2.4740E+00, -2.5340E+00,  5.6210E-01,
-     3 -1.7400E-01, -9.6230E-02,  1.5750E+00,  1.3780E+00, -2.7010E-01/
-C...Expansion coefficients for charm quark sea distribution.
-      DATA ((COW(IP,IS,4,1),IS=1,5),IP=1,3)/
-     1  0.0000E+00, -2.2120E-02,  2.8940E+00,  0.0000E+00,  0.0000E+00,
-     2  7.9280E-02, -3.7850E-01,  9.4330E+00,  5.2480E+00,  8.3880E+00,
-     3 -6.1340E-02, -1.0880E-01, -1.0852E+01, -7.1870E+00, -1.1610E+01/
-      DATA ((COW(IP,IS,4,2),IS=1,5),IP=1,3)/
-     1  0.0000E+00, -8.8200E-02,  1.9240E+00,  0.0000E+00,  0.0000E+00,
-     2  6.2290E-02, -2.8920E-01,  2.4240E-01, -4.4630E+00, -8.3670E-01,
-     3 -4.0990E-02, -1.0820E-01,  2.0360E+00,  5.2090E+00, -4.8400E-02/
-C...Euler's beta function, requires ordinary Gamma function
-      EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
-C...Reset output array.
-      DO 100 KFL=-6,6
-      XPPI(KFL)=0.
-  100 CONTINUE
-      IF(MSTP(53).LE.2) THEN
-C...Pion structure functions from Owens.
-C...Allowed variable range: 4 GeV^2 < Q^2 < approx 2000 GeV^2.
-C...Determine set, Lambda and s expansion variable.
-        NSET=MSTP(53)
-        IF(NSET.EQ.1) ALAM=0.2
-        IF(NSET.EQ.2) ALAM=0.4
-        VINT(231)=4.
-        IF(MSTP(57).LE.0) THEN
-          SD=0.
-        ELSE
-          Q2IN=MIN(2E3,MAX(4.,Q2))
-          SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4./ALAM**2))
-        ENDIF
-C...Calculate structure functions.
-        DO 120 KFL=1,4
-        DO 110 IS=1,5
-        TS(IS)=COW(1,IS,KFL,NSET)+COW(2,IS,KFL,NSET)*SD+
-     &  COW(3,IS,KFL,NSET)*SD**2
-  110   CONTINUE
-        IF(KFL.EQ.1) THEN
-          XQ(KFL)=X**TS(1)*(1.-X)**TS(2)/EULBET(TS(1),TS(2)+1.)
-        ELSE
-          XQ(KFL)=TS(1)*X**TS(2)*(1.-X)**TS(3)*(1.+TS(4)*X+TS(5)*X**2)
-        ENDIF
-  120   CONTINUE
-C...Put into output array.
-        XPPI(0)=XQ(2)
-        XPPI(1)=XQ(3)/6.
-        XPPI(2)=XQ(1)+XQ(3)/6.
-        XPPI(3)=XQ(3)/6.
-        XPPI(4)=XQ(4)
-        XPPI(-1)=XQ(1)+XQ(3)/6.
-        XPPI(-2)=XQ(3)/6.
-        XPPI(-3)=XQ(3)/6.
-        XPPI(-4)=XQ(4)
-C...Leading order pion structure functions from Gluck, Reya and Vogt.
-C...Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
-C...10^-5 < x < 1.
-      ELSE
-C...Determine s expansion variable and some x expressions.
-        VINT(231)=0.25
-        IF(MSTP(57).LE.0) THEN
-          SD=0.
-        ELSE
-          Q2IN=MIN(1E8,MAX(0.25,Q2))
-          SD=LOG(LOG(Q2IN/0.232**2)/LOG(0.25/0.232**2))
-        ENDIF
-        SD2=SD**2
-        XL=-LOG(X)
-        XS=SQRT(X)
-C...Evaluate valence, gluon and sea distributions.
-        XFVAL=(0.519+0.180*SD-0.011*SD2)*X**(0.499-0.027*SD)*
-     &  (1.+(0.381-0.419*SD)*XS)*(1.-X)**(0.367+0.563*SD)
-        XFGLU=(X**(0.482+0.341*SQRT(SD))*((0.678+0.877*SD-0.175*SD2)+
-     &  (0.338-1.597*SD)*XS+(-0.233*SD+0.406*SD2)*X)+
-     &  SD**0.599*EXP(-(0.618+2.070*SD)+SQRT(3.676*SD**1.263*XL)))*
-     &  (1.-X)**(0.390+1.053*SD)
-        XFSEA=SD**0.55*(1.-0.748*XS+(0.313+0.935*SD)*X)*(1.-X)**3.359*
-     &  EXP(-(4.433+1.301*SD)+SQRT((9.30-0.887*SD)*SD**0.56*XL))/
-     &  XL**(2.538-0.763*SD)
-        IF(SD.LE.0.888) THEN
-          XFCHM=0.
-        ELSE
-          XFCHM=(SD-0.888)**1.02*(1.+1.008*X)*(1.-X)**(1.208+0.771*SD)*
-     &    EXP(-(4.40+1.493*SD)+SQRT((2.032+1.901*SD)*SD**0.39*XL))
-        ENDIF
-        IF(SD.LE.1.351) THEN
-          XFBOT=0.
-        ELSE
-          XFBOT=(SD-1.351)**1.03*(1.-X)**(0.697+0.855*SD)*
-     &    EXP(-(4.51+1.490*SD)+SQRT((3.056+1.694*SD)*SD**0.39*XL))
-        ENDIF
-C...Put into output array.
-        XPPI(0)=XFGLU
-        XPPI(1)=XFSEA
-        XPPI(2)=XFSEA
-        XPPI(3)=XFSEA
-        XPPI(4)=XFCHM
-        XPPI(5)=XFBOT
-        DO 130 KFL=1,5
-        XPPI(-KFL)=XPPI(KFL)
-  130   CONTINUE
-        XPPI(2)=XPPI(2)+XFVAL
-        XPPI(-1)=XPPI(-1)+XFVAL
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pystpr.F b/PYTHIA/pythia/pystpr.F
deleted file mode 100644 (file)
index 2caaded..0000000
+++ /dev/null
@@ -1,533 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYSTPR(X,Q2,XPPR)
-C...Gives proton structure functions according to a few different
-C...parametrizations.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      SAVE /LUDAT1/,/LUDAT2/
-      SAVE /PYPARS/,/PYINT1/
-      DIMENSION XPPR(-6:6),XQ(9),TX(6),TT(6),TS(6),NEHLQ(8,2),
-     &CEHLQ(6,6,2,8,2),CDO(3,6,5,2)
-C...The following data lines are coefficients needed in the
-C...Eichten, Hinchliffe, Lane, Quigg proton structure function
-C...parametrizations, see below.
-C...Powers of 1-x in different cases.
-      DATA NEHLQ/3,4,7,5,7,7,7,7,3,4,7,6,7,7,7,7/
-C...Expansion coefficients for up valence quark distribution.
-      DATA (((CEHLQ(IX,IT,NX,1,1),IX=1,6),IT=1,6),NX=1,2)/
-     1 7.677E-01,-2.087E-01,-3.303E-01,-2.517E-02,-1.570E-02,-1.000E-04,
-     2-5.326E-01,-2.661E-01, 3.201E-01, 1.192E-01, 2.434E-02, 7.620E-03,
-     3 2.162E-01, 1.881E-01,-8.375E-02,-6.515E-02,-1.743E-02,-5.040E-03,
-     4-9.211E-02,-9.952E-02, 1.373E-02, 2.506E-02, 8.770E-03, 2.550E-03,
-     5 3.670E-02, 4.409E-02, 9.600E-04,-7.960E-03,-3.420E-03,-1.050E-03,
-     6-1.549E-02,-2.026E-02,-3.060E-03, 2.220E-03, 1.240E-03, 4.100E-04,
-     1 2.395E-01, 2.905E-01, 9.778E-02, 2.149E-02, 3.440E-03, 5.000E-04,
-     2 1.751E-02,-6.090E-03,-2.687E-02,-1.916E-02,-7.970E-03,-2.750E-03,
-     3-5.760E-03,-5.040E-03, 1.080E-03, 2.490E-03, 1.530E-03, 7.500E-04,
-     4 1.740E-03, 1.960E-03, 3.000E-04,-3.400E-04,-2.900E-04,-1.800E-04,
-     5-5.300E-04,-6.400E-04,-1.700E-04, 4.000E-05, 6.000E-05, 4.000E-05,
-     6 1.700E-04, 2.200E-04, 8.000E-05, 1.000E-05,-1.000E-05,-1.000E-05/
-      DATA (((CEHLQ(IX,IT,NX,1,2),IX=1,6),IT=1,6),NX=1,2)/
-     1 7.237E-01,-2.189E-01,-2.995E-01,-1.909E-02,-1.477E-02, 2.500E-04,
-     2-5.314E-01,-2.425E-01, 3.283E-01, 1.119E-01, 2.223E-02, 7.070E-03,
-     3 2.289E-01, 1.890E-01,-9.859E-02,-6.900E-02,-1.747E-02,-5.080E-03,
-     4-1.041E-01,-1.084E-01, 2.108E-02, 2.975E-02, 9.830E-03, 2.830E-03,
-     5 4.394E-02, 5.116E-02,-1.410E-03,-1.055E-02,-4.230E-03,-1.270E-03,
-     6-1.991E-02,-2.539E-02,-2.780E-03, 3.430E-03, 1.720E-03, 5.500E-04,
-     1 2.410E-01, 2.884E-01, 9.369E-02, 1.900E-02, 2.530E-03, 2.400E-04,
-     2 1.765E-02,-9.220E-03,-3.037E-02,-2.085E-02,-8.440E-03,-2.810E-03,
-     3-6.450E-03,-5.260E-03, 1.720E-03, 3.110E-03, 1.830E-03, 8.700E-04,
-     4 2.120E-03, 2.320E-03, 2.600E-04,-4.900E-04,-3.900E-04,-2.300E-04,
-     5-6.900E-04,-8.200E-04,-2.000E-04, 7.000E-05, 9.000E-05, 6.000E-05,
-     6 2.400E-04, 3.100E-04, 1.100E-04, 0.000E+00,-2.000E-05,-2.000E-05/
-C...Expansion coefficients for down valence quark distribution.
-      DATA (((CEHLQ(IX,IT,NX,2,1),IX=1,6),IT=1,6),NX=1,2)/
-     1 3.813E-01,-8.090E-02,-1.634E-01,-2.185E-02,-8.430E-03,-6.200E-04,
-     2-2.948E-01,-1.435E-01, 1.665E-01, 6.638E-02, 1.473E-02, 4.080E-03,
-     3 1.252E-01, 1.042E-01,-4.722E-02,-3.683E-02,-1.038E-02,-2.860E-03,
-     4-5.478E-02,-5.678E-02, 8.900E-03, 1.484E-02, 5.340E-03, 1.520E-03,
-     5 2.220E-02, 2.567E-02,-3.000E-05,-4.970E-03,-2.160E-03,-6.500E-04,
-     6-9.530E-03,-1.204E-02,-1.510E-03, 1.510E-03, 8.300E-04, 2.700E-04,
-     1 1.261E-01, 1.354E-01, 3.958E-02, 8.240E-03, 1.660E-03, 4.500E-04,
-     2 3.890E-03,-1.159E-02,-1.625E-02,-9.610E-03,-3.710E-03,-1.260E-03,
-     3-1.910E-03,-5.600E-04, 1.590E-03, 1.590E-03, 8.400E-04, 3.900E-04,
-     4 6.400E-04, 4.900E-04,-1.500E-04,-2.900E-04,-1.800E-04,-1.000E-04,
-     5-2.000E-04,-1.900E-04, 0.000E+00, 6.000E-05, 4.000E-05, 3.000E-05,
-     6 7.000E-05, 8.000E-05, 2.000E-05,-1.000E-05,-1.000E-05,-1.000E-05/
-      DATA (((CEHLQ(IX,IT,NX,2,2),IX=1,6),IT=1,6),NX=1,2)/
-     1 3.578E-01,-8.622E-02,-1.480E-01,-1.840E-02,-7.820E-03,-4.500E-04,
-     2-2.925E-01,-1.304E-01, 1.696E-01, 6.243E-02, 1.353E-02, 3.750E-03,
-     3 1.318E-01, 1.041E-01,-5.486E-02,-3.872E-02,-1.038E-02,-2.850E-03,
-     4-6.162E-02,-6.143E-02, 1.303E-02, 1.740E-02, 5.940E-03, 1.670E-03,
-     5 2.643E-02, 2.957E-02,-1.490E-03,-6.450E-03,-2.630E-03,-7.700E-04,
-     6-1.218E-02,-1.497E-02,-1.260E-03, 2.240E-03, 1.120E-03, 3.500E-04,
-     1 1.263E-01, 1.334E-01, 3.732E-02, 7.070E-03, 1.260E-03, 3.400E-04,
-     2 3.660E-03,-1.357E-02,-1.795E-02,-1.031E-02,-3.880E-03,-1.280E-03,
-     3-2.100E-03,-3.600E-04, 2.050E-03, 1.920E-03, 9.800E-04, 4.400E-04,
-     4 7.700E-04, 5.400E-04,-2.400E-04,-3.900E-04,-2.400E-04,-1.300E-04,
-     5-2.600E-04,-2.300E-04, 2.000E-05, 9.000E-05, 6.000E-05, 4.000E-05,
-     6 9.000E-05, 1.000E-04, 2.000E-05,-2.000E-05,-2.000E-05,-1.000E-05/
-C...Expansion coefficients for up and down sea quark distributions.
-      DATA (((CEHLQ(IX,IT,NX,3,1),IX=1,6),IT=1,6),NX=1,2)/
-     1 6.870E-02,-6.861E-02, 2.973E-02,-5.400E-03, 3.780E-03,-9.700E-04,
-     2-1.802E-02, 1.400E-04, 6.490E-03,-8.540E-03, 1.220E-03,-1.750E-03,
-     3-4.650E-03, 1.480E-03,-5.930E-03, 6.000E-04,-1.030E-03,-8.000E-05,
-     4 6.440E-03, 2.570E-03, 2.830E-03, 1.150E-03, 7.100E-04, 3.300E-04,
-     5-3.930E-03,-2.540E-03,-1.160E-03,-7.700E-04,-3.600E-04,-1.900E-04,
-     6 2.340E-03, 1.930E-03, 5.300E-04, 3.700E-04, 1.600E-04, 9.000E-05,
-     1 1.014E+00,-1.106E+00, 3.374E-01,-7.444E-02, 8.850E-03,-8.700E-04,
-     2 9.233E-01,-1.285E+00, 4.475E-01,-9.786E-02, 1.419E-02,-1.120E-03,
-     3 4.888E-02,-1.271E-01, 8.606E-02,-2.608E-02, 4.780E-03,-6.000E-04,
-     4-2.691E-02, 4.887E-02,-1.771E-02, 1.620E-03, 2.500E-04,-6.000E-05,
-     5 7.040E-03,-1.113E-02, 1.590E-03, 7.000E-04,-2.000E-04, 0.000E+00,
-     6-1.710E-03, 2.290E-03, 3.800E-04,-3.500E-04, 4.000E-05, 1.000E-05/
-      DATA (((CEHLQ(IX,IT,NX,3,2),IX=1,6),IT=1,6),NX=1,2)/
-     1 1.008E-01,-7.100E-02, 1.973E-02,-5.710E-03, 2.930E-03,-9.900E-04,
-     2-5.271E-02,-1.823E-02, 1.792E-02,-6.580E-03, 1.750E-03,-1.550E-03,
-     3 1.220E-02, 1.763E-02,-8.690E-03,-8.800E-04,-1.160E-03,-2.100E-04,
-     4-1.190E-03,-7.180E-03, 2.360E-03, 1.890E-03, 7.700E-04, 4.100E-04,
-     5-9.100E-04, 2.040E-03,-3.100E-04,-1.050E-03,-4.000E-04,-2.400E-04,
-     6 1.190E-03,-1.700E-04,-2.000E-04, 4.200E-04, 1.700E-04, 1.000E-04,
-     1 1.081E+00,-1.189E+00, 3.868E-01,-8.617E-02, 1.115E-02,-1.180E-03,
-     2 9.917E-01,-1.396E+00, 4.998E-01,-1.159E-01, 1.674E-02,-1.720E-03,
-     3 5.099E-02,-1.338E-01, 9.173E-02,-2.885E-02, 5.890E-03,-6.500E-04,
-     4-3.178E-02, 5.703E-02,-2.070E-02, 2.440E-03, 1.100E-04,-9.000E-05,
-     5 8.970E-03,-1.392E-02, 2.050E-03, 6.500E-04,-2.300E-04, 2.000E-05,
-     6-2.340E-03, 3.010E-03, 5.000E-04,-3.900E-04, 6.000E-05, 1.000E-05/
-C...Expansion coefficients for gluon distribution.
-      DATA (((CEHLQ(IX,IT,NX,4,1),IX=1,6),IT=1,6),NX=1,2)/
-     1 9.482E-01,-9.578E-01, 1.009E-01,-1.051E-01, 3.456E-02,-3.054E-02,
-     2-9.627E-01, 5.379E-01, 3.368E-01,-9.525E-02, 1.488E-02,-2.051E-02,
-     3 4.300E-01,-8.306E-02,-3.372E-01, 4.902E-02,-9.160E-03, 1.041E-02,
-     4-1.925E-01,-1.790E-02, 2.183E-01, 7.490E-03, 4.140E-03,-1.860E-03,
-     5 8.183E-02, 1.926E-02,-1.072E-01,-1.944E-02,-2.770E-03,-5.200E-04,
-     6-3.884E-02,-1.234E-02, 5.410E-02, 1.879E-02, 3.350E-03, 1.040E-03,
-     1 2.948E+01,-3.902E+01, 1.464E+01,-3.335E+00, 5.054E-01,-5.915E-02,
-     2 2.559E+01,-3.955E+01, 1.661E+01,-4.299E+00, 6.904E-01,-8.243E-02,
-     3-1.663E+00, 1.176E+00, 1.118E+00,-7.099E-01, 1.948E-01,-2.404E-02,
-     4-2.168E-01, 8.170E-01,-7.169E-01, 1.851E-01,-1.924E-02,-3.250E-03,
-     5 2.088E-01,-4.355E-01, 2.239E-01,-2.446E-02,-3.620E-03, 1.910E-03,
-     6-9.097E-02, 1.601E-01,-5.681E-02,-2.500E-03, 2.580E-03,-4.700E-04/
-      DATA (((CEHLQ(IX,IT,NX,4,2),IX=1,6),IT=1,6),NX=1,2)/
-     1 2.367E+00, 4.453E-01, 3.660E-01, 9.467E-02, 1.341E-01, 1.661E-02,
-     2-3.170E+00,-1.795E+00, 3.313E-02,-2.874E-01,-9.827E-02,-7.119E-02,
-     3 1.823E+00, 1.457E+00,-2.465E-01, 3.739E-02, 6.090E-03, 1.814E-02,
-     4-1.033E+00,-9.827E-01, 2.136E-01, 1.169E-01, 5.001E-02, 1.684E-02,
-     5 5.133E-01, 5.259E-01,-1.173E-01,-1.139E-01,-4.988E-02,-2.021E-02,
-     6-2.881E-01,-3.145E-01, 5.667E-02, 9.161E-02, 4.568E-02, 1.951E-02,
-     1 3.036E+01,-4.062E+01, 1.578E+01,-3.699E+00, 6.020E-01,-7.031E-02,
-     2 2.700E+01,-4.167E+01, 1.770E+01,-4.804E+00, 7.862E-01,-1.060E-01,
-     3-1.909E+00, 1.357E+00, 1.127E+00,-7.181E-01, 2.232E-01,-2.481E-02,
-     4-2.488E-01, 9.781E-01,-8.127E-01, 2.094E-01,-2.997E-02,-4.710E-03,
-     5 2.506E-01,-5.427E-01, 2.672E-01,-3.103E-02,-1.800E-03, 2.870E-03,
-     6-1.128E-01, 2.087E-01,-6.972E-02,-2.480E-03, 2.630E-03,-8.400E-04/
-C...Expansion coefficients for strange sea quark distribution.
-      DATA (((CEHLQ(IX,IT,NX,5,1),IX=1,6),IT=1,6),NX=1,2)/
-     1 4.968E-02,-4.173E-02, 2.102E-02,-3.270E-03, 3.240E-03,-6.700E-04,
-     2-6.150E-03,-1.294E-02, 6.740E-03,-6.890E-03, 9.000E-04,-1.510E-03,
-     3-8.580E-03, 5.050E-03,-4.900E-03,-1.600E-04,-9.400E-04,-1.500E-04,
-     4 7.840E-03, 1.510E-03, 2.220E-03, 1.400E-03, 7.000E-04, 3.500E-04,
-     5-4.410E-03,-2.220E-03,-8.900E-04,-8.500E-04,-3.600E-04,-2.000E-04,
-     6 2.520E-03, 1.840E-03, 4.100E-04, 3.900E-04, 1.600E-04, 9.000E-05,
-     1 9.235E-01,-1.085E+00, 3.464E-01,-7.210E-02, 9.140E-03,-9.100E-04,
-     2 9.315E-01,-1.274E+00, 4.512E-01,-9.775E-02, 1.380E-02,-1.310E-03,
-     3 4.739E-02,-1.296E-01, 8.482E-02,-2.642E-02, 4.760E-03,-5.700E-04,
-     4-2.653E-02, 4.953E-02,-1.735E-02, 1.750E-03, 2.800E-04,-6.000E-05,
-     5 6.940E-03,-1.132E-02, 1.480E-03, 6.500E-04,-2.100E-04, 0.000E+00,
-     6-1.680E-03, 2.340E-03, 4.200E-04,-3.400E-04, 5.000E-05, 1.000E-05/
-      DATA (((CEHLQ(IX,IT,NX,5,2),IX=1,6),IT=1,6),NX=1,2)/
-     1 6.478E-02,-4.537E-02, 1.643E-02,-3.490E-03, 2.710E-03,-6.700E-04,
-     2-2.223E-02,-2.126E-02, 1.247E-02,-6.290E-03, 1.120E-03,-1.440E-03,
-     3-1.340E-03, 1.362E-02,-6.130E-03,-7.900E-04,-9.000E-04,-2.000E-04,
-     4 5.080E-03,-3.610E-03, 1.700E-03, 1.830E-03, 6.800E-04, 4.000E-04,
-     5-3.580E-03, 6.000E-05,-2.600E-04,-1.050E-03,-3.800E-04,-2.300E-04,
-     6 2.420E-03, 9.300E-04,-1.000E-04, 4.500E-04, 1.700E-04, 1.100E-04,
-     1 9.868E-01,-1.171E+00, 3.940E-01,-8.459E-02, 1.124E-02,-1.250E-03,
-     2 1.001E+00,-1.383E+00, 5.044E-01,-1.152E-01, 1.658E-02,-1.830E-03,
-     3 4.928E-02,-1.368E-01, 9.021E-02,-2.935E-02, 5.800E-03,-6.600E-04,
-     4-3.133E-02, 5.785E-02,-2.023E-02, 2.630E-03, 1.600E-04,-8.000E-05,
-     5 8.840E-03,-1.416E-02, 1.900E-03, 5.800E-04,-2.500E-04, 1.000E-05,
-     6-2.300E-03, 3.080E-03, 5.500E-04,-3.700E-04, 7.000E-05, 1.000E-05/
-C...Expansion coefficients for charm sea quark distribution.
-      DATA (((CEHLQ(IX,IT,NX,6,1),IX=1,6),IT=1,6),NX=1,2)/
-     1 9.270E-03,-1.817E-02, 9.590E-03,-6.390E-03, 1.690E-03,-1.540E-03,
-     2 5.710E-03,-1.188E-02, 6.090E-03,-4.650E-03, 1.240E-03,-1.310E-03,
-     3-3.960E-03, 7.100E-03,-3.590E-03, 1.840E-03,-3.900E-04, 3.400E-04,
-     4 1.120E-03,-1.960E-03, 1.120E-03,-4.800E-04, 1.000E-04,-4.000E-05,
-     5 4.000E-05,-3.000E-05,-1.800E-04, 9.000E-05,-5.000E-05,-2.000E-05,
-     6-4.200E-04, 7.300E-04,-1.600E-04, 5.000E-05, 5.000E-05, 5.000E-05,
-     1 8.098E-01,-1.042E+00, 3.398E-01,-6.824E-02, 8.760E-03,-9.000E-04,
-     2 8.961E-01,-1.217E+00, 4.339E-01,-9.287E-02, 1.304E-02,-1.290E-03,
-     3 3.058E-02,-1.040E-01, 7.604E-02,-2.415E-02, 4.600E-03,-5.000E-04,
-     4-2.451E-02, 4.432E-02,-1.651E-02, 1.430E-03, 1.200E-04,-1.000E-04,
-     5 1.122E-02,-1.457E-02, 2.680E-03, 5.800E-04,-1.200E-04, 3.000E-05,
-     6-7.730E-03, 7.330E-03,-7.600E-04,-2.400E-04, 1.000E-05, 0.000E+00/
-      DATA (((CEHLQ(IX,IT,NX,6,2),IX=1,6),IT=1,6),NX=1,2)/
-     1 9.980E-03,-1.945E-02, 1.055E-02,-6.870E-03, 1.860E-03,-1.560E-03,
-     2 5.700E-03,-1.203E-02, 6.250E-03,-4.860E-03, 1.310E-03,-1.370E-03,
-     3-4.490E-03, 7.990E-03,-4.170E-03, 2.050E-03,-4.400E-04, 3.300E-04,
-     4 1.470E-03,-2.480E-03, 1.460E-03,-5.700E-04, 1.200E-04,-1.000E-05,
-     5-9.000E-05, 1.500E-04,-3.200E-04, 1.200E-04,-6.000E-05,-4.000E-05,
-     6-4.200E-04, 7.600E-04,-1.400E-04, 4.000E-05, 7.000E-05, 5.000E-05,
-     1 8.698E-01,-1.131E+00, 3.836E-01,-8.111E-02, 1.048E-02,-1.300E-03,
-     2 9.626E-01,-1.321E+00, 4.854E-01,-1.091E-01, 1.583E-02,-1.700E-03,
-     3 3.057E-02,-1.088E-01, 8.022E-02,-2.676E-02, 5.590E-03,-5.600E-04,
-     4-2.845E-02, 5.164E-02,-1.918E-02, 2.210E-03,-4.000E-05,-1.500E-04,
-     5 1.311E-02,-1.751E-02, 3.310E-03, 5.100E-04,-1.200E-04, 5.000E-05,
-     6-8.590E-03, 8.380E-03,-9.200E-04,-2.600E-04, 1.000E-05,-1.000E-05/
-C...Expansion coefficients for bottom sea quark distribution.
-      DATA (((CEHLQ(IX,IT,NX,7,1),IX=1,6),IT=1,6),NX=1,2)/
-     1 9.010E-03,-1.401E-02, 7.150E-03,-4.130E-03, 1.260E-03,-1.040E-03,
-     2 6.280E-03,-9.320E-03, 4.780E-03,-2.890E-03, 9.100E-04,-8.200E-04,
-     3-2.930E-03, 4.090E-03,-1.890E-03, 7.600E-04,-2.300E-04, 1.400E-04,
-     4 3.900E-04,-1.200E-03, 4.400E-04,-2.500E-04, 2.000E-05,-2.000E-05,
-     5 2.600E-04, 1.400E-04,-8.000E-05, 1.000E-04, 1.000E-05, 1.000E-05,
-     6-2.600E-04, 3.200E-04, 1.000E-05,-1.000E-05, 1.000E-05,-1.000E-05,
-     1 8.029E-01,-1.075E+00, 3.792E-01,-7.843E-02, 1.007E-02,-1.090E-03,
-     2 7.903E-01,-1.099E+00, 4.153E-01,-9.301E-02, 1.317E-02,-1.410E-03,
-     3-1.704E-02,-1.130E-02, 2.882E-02,-1.341E-02, 3.040E-03,-3.600E-04,
-     4-7.200E-04, 7.230E-03,-5.160E-03, 1.080E-03,-5.000E-05,-4.000E-05,
-     5 3.050E-03,-4.610E-03, 1.660E-03,-1.300E-04,-1.000E-05, 1.000E-05,
-     6-4.360E-03, 5.230E-03,-1.610E-03, 2.000E-04,-2.000E-05, 0.000E+00/
-      DATA (((CEHLQ(IX,IT,NX,7,2),IX=1,6),IT=1,6),NX=1,2)/
-     1 8.980E-03,-1.459E-02, 7.510E-03,-4.410E-03, 1.310E-03,-1.070E-03,
-     2 5.970E-03,-9.440E-03, 4.800E-03,-3.020E-03, 9.100E-04,-8.500E-04,
-     3-3.050E-03, 4.440E-03,-2.100E-03, 8.500E-04,-2.400E-04, 1.400E-04,
-     4 5.300E-04,-1.300E-03, 5.600E-04,-2.700E-04, 3.000E-05,-2.000E-05,
-     5 2.000E-04, 1.400E-04,-1.100E-04, 1.000E-04, 0.000E+00, 0.000E+00,
-     6-2.600E-04, 3.200E-04, 0.000E+00,-3.000E-05, 1.000E-05,-1.000E-05,
-     1 8.672E-01,-1.174E+00, 4.265E-01,-9.252E-02, 1.244E-02,-1.460E-03,
-     2 8.500E-01,-1.194E+00, 4.630E-01,-1.083E-01, 1.614E-02,-1.830E-03,
-     3-2.241E-02,-5.630E-03, 2.815E-02,-1.425E-02, 3.520E-03,-4.300E-04,
-     4-7.300E-04, 8.030E-03,-5.780E-03, 1.380E-03,-1.300E-04,-4.000E-05,
-     5 3.460E-03,-5.380E-03, 1.960E-03,-2.100E-04, 1.000E-05, 1.000E-05,
-     6-4.850E-03, 5.950E-03,-1.890E-03, 2.600E-04,-3.000E-05, 0.000E+00/
-C...Expansion coefficients for top sea quark distribution.
-      DATA (((CEHLQ(IX,IT,NX,8,1),IX=1,6),IT=1,6),NX=1,2)/
-     1 4.410E-03,-7.480E-03, 3.770E-03,-2.580E-03, 7.300E-04,-7.100E-04,
-     2 3.840E-03,-6.050E-03, 3.030E-03,-2.030E-03, 5.800E-04,-5.900E-04,
-     3-8.800E-04, 1.660E-03,-7.500E-04, 4.700E-04,-1.000E-04, 1.000E-04,
-     4-8.000E-05,-1.500E-04, 1.200E-04,-9.000E-05, 3.000E-05, 0.000E+00,
-     5 1.300E-04,-2.200E-04,-2.000E-05,-2.000E-05,-2.000E-05,-2.000E-05,
-     6-7.000E-05, 1.900E-04,-4.000E-05, 2.000E-05, 0.000E+00, 0.000E+00,
-     1 6.623E-01,-9.248E-01, 3.519E-01,-7.930E-02, 1.110E-02,-1.180E-03,
-     2 6.380E-01,-9.062E-01, 3.582E-01,-8.479E-02, 1.265E-02,-1.390E-03,
-     3-2.581E-02, 2.125E-02, 4.190E-03,-4.980E-03, 1.490E-03,-2.100E-04,
-     4 7.100E-04, 5.300E-04,-1.270E-03, 3.900E-04,-5.000E-05,-1.000E-05,
-     5 3.850E-03,-5.060E-03, 1.860E-03,-3.500E-04, 4.000E-05, 0.000E+00,
-     6-3.530E-03, 4.460E-03,-1.500E-03, 2.700E-04,-3.000E-05, 0.000E+00/
-      DATA (((CEHLQ(IX,IT,NX,8,2),IX=1,6),IT=1,6),NX=1,2)/
-     1 4.260E-03,-7.530E-03, 3.830E-03,-2.680E-03, 7.600E-04,-7.300E-04,
-     2 3.640E-03,-6.050E-03, 3.030E-03,-2.090E-03, 5.900E-04,-6.000E-04,
-     3-9.200E-04, 1.710E-03,-8.200E-04, 5.000E-04,-1.200E-04, 1.000E-04,
-     4-5.000E-05,-1.600E-04, 1.300E-04,-9.000E-05, 3.000E-05, 0.000E+00,
-     5 1.300E-04,-2.100E-04,-1.000E-05,-2.000E-05,-2.000E-05,-1.000E-05,
-     6-8.000E-05, 1.800E-04,-5.000E-05, 2.000E-05, 0.000E+00, 0.000E+00,
-     1 7.146E-01,-1.007E+00, 3.932E-01,-9.246E-02, 1.366E-02,-1.540E-03,
-     2 6.856E-01,-9.828E-01, 3.977E-01,-9.795E-02, 1.540E-02,-1.790E-03,
-     3-3.053E-02, 2.758E-02, 2.150E-03,-4.880E-03, 1.640E-03,-2.500E-04,
-     4 9.200E-04, 4.200E-04,-1.340E-03, 4.600E-04,-8.000E-05,-1.000E-05,
-     5 4.230E-03,-5.660E-03, 2.140E-03,-4.300E-04, 6.000E-05, 0.000E+00,
-     6-3.890E-03, 5.000E-03,-1.740E-03, 3.300E-04,-4.000E-05, 0.000E+00/
-C...The following data lines are coefficients needed in the
-C...Duke, Owens proton structure function parametrizations, see below.
-C...Expansion coefficients for (up+down) valence quark distribution.
-      DATA ((CDO(IP,IS,1,1),IS=1,6),IP=1,3)/
-     1 4.190E-01, 3.460E+00, 4.400E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     2 4.000E-03, 7.240E-01,-4.860E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     3-7.000E-03,-6.600E-02, 1.330E+00, 0.000E+00, 0.000E+00, 0.000E+00/
-      DATA ((CDO(IP,IS,1,2),IS=1,6),IP=1,3)/
-     1 3.740E-01, 3.330E+00, 6.030E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     2 1.400E-02, 7.530E-01,-6.220E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     3 0.000E+00,-7.600E-02, 1.560E+00, 0.000E+00, 0.000E+00, 0.000E+00/
-C...Expansion coefficients for down valence quark distribution.
-      DATA ((CDO(IP,IS,2,1),IS=1,6),IP=1,3)/
-     1 7.630E-01, 4.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     2-2.370E-01, 6.270E-01,-4.210E-01, 0.000E+00, 0.000E+00, 0.000E+00,
-     3 2.600E-02,-1.900E-02, 3.300E-02, 0.000E+00, 0.000E+00, 0.000E+00/
-      DATA ((CDO(IP,IS,2,2),IS=1,6),IP=1,3)/
-     1 7.610E-01, 3.830E+00, 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     2-2.320E-01, 6.270E-01,-4.180E-01, 0.000E+00, 0.000E+00, 0.000E+00,
-     3 2.300E-02,-1.900E-02, 3.600E-02, 0.000E+00, 0.000E+00, 0.000E+00/
-C...Expansion coefficients for (up+down+strange) sea quark distribution.
-      DATA ((CDO(IP,IS,3,1),IS=1,6),IP=1,3)/
-     1 1.265E+00, 0.000E+00, 8.050E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     2-1.132E+00,-3.720E-01, 1.590E+00, 6.310E+00,-1.050E+01, 1.470E+01,
-     3 2.930E-01,-2.900E-02,-1.530E-01,-2.730E-01,-3.170E+00, 9.800E+00/
-      DATA ((CDO(IP,IS,3,2),IS=1,6),IP=1,3)/
-     1 1.670E+00, 0.000E+00, 9.150E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     2-1.920E+00,-2.730E-01, 5.300E-01, 1.570E+01,-1.010E+02, 2.230E+02,
-     3 5.820E-01,-1.640E-01,-7.630E-01,-2.830E+00, 4.470E+01,-1.170E+02/
-C...Expansion coefficients for charm sea quark distribution.
-      DATA ((CDO(IP,IS,4,1),IS=1,6),IP=1,3)/
-     1 0.000E+00,-3.600E-02, 6.350E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     2 1.350E-01,-2.220E-01, 3.260E+00,-3.030E+00, 1.740E+01,-1.790E+01,
-     3-7.500E-02,-5.800E-02,-9.090E-01, 1.500E+00,-1.130E+01, 1.560E+01/
-       DATA ((CDO(IP,IS,4,2),IS=1,6),IP=1,3)/
-     1 0.000E+00,-1.200E-01, 3.510E+00, 0.000E+00, 0.000E+00, 0.000E+00,
-     2 6.700E-02,-2.330E-01, 3.660E+00,-4.740E-01, 9.500E+00,-1.660E+01,
-     3-3.100E-02,-2.300E-02,-4.530E-01, 3.580E-01,-5.430E+00, 1.550E+01/
-C...Expansion coefficients for gluon distribution.
-      DATA ((CDO(IP,IS,5,1),IS=1,6),IP=1,3)/
-     1 1.560E+00, 0.000E+00, 6.000E+00, 9.000E+00, 0.000E+00, 0.000E+00,
-     2-1.710E+00,-9.490E-01, 1.440E+00,-7.190E+00,-1.650E+01, 1.530E+01,
-     3 6.380E-01, 3.250E-01,-1.050E+00, 2.550E-01, 1.090E+01,-1.010E+01/
-      DATA ((CDO(IP,IS,5,2),IS=1,6),IP=1,3)/
-     1 8.790E-01, 0.000E+00, 4.000E+00, 9.000E+00, 0.000E+00, 0.000E+00,
-     2-9.710E-01,-1.160E+00, 1.230E+00,-5.640E+00,-7.540E+00,-5.960E-01,
-     3 4.340E-01, 4.760E-01,-2.540E-01,-8.170E-01, 5.500E+00, 1.260E-01/
-C...Euler's beta function, requires ordinary Gamma function
-      EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
-C...Reset output array.
-      DO 100 KFL=-6,6
-      XPPR(KFL)=0.
-  100 CONTINUE
-      IF(MSTP(51).EQ.1.OR.MSTP(51).EQ.2) THEN
-C...Proton structure functions from Eichten, Hinchliffe, Lane, Quigg.
-C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1
-C...Determine set, Lambda and x and t expansion variables.
-        NSET=MSTP(51)
-        IF(NSET.EQ.1) ALAM=0.2
-        IF(NSET.EQ.2) ALAM=0.29
-        VINT(231)=5.
-        TMIN=LOG(5./ALAM**2)
-        TMAX=LOG(1E8/ALAM**2)
-        IF(MSTP(57).EQ.0) THEN
-          T=TMIN
-        ELSE
-          T=LOG(MAX(1.,Q2/ALAM**2))
-        ENDIF
-        VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN)))
-        NX=1
-        IF(X.LE.0.1) NX=2
-        IF(NX.EQ.1) VX=(2.*X-1.1)/0.9
-        IF(NX.EQ.2) VX=MAX(-1.,(2.*LOG(X)+11.51293)/6.90776)
-        CXS=1.
-        IF(X.LT.1E-4.AND.ABS(PARP(51)-1.).GT.0.01) CXS=
-     &  (1E-4/X)**(PARP(51)-1.)
-C...Chebyshev polynomials for x and t expansion.
-        TX(1)=1.
-        TX(2)=VX
-        TX(3)=2.*VX**2-1.
-        TX(4)=4.*VX**3-3.*VX
-        TX(5)=8.*VX**4-8.*VX**2+1.
-        TX(6)=16.*VX**5-20.*VX**3+5.*VX
-        TT(1)=1.
-        TT(2)=VT
-        TT(3)=2.*VT**2-1.
-        TT(4)=4.*VT**3-3.*VT
-        TT(5)=8.*VT**4-8.*VT**2+1.
-        TT(6)=16.*VT**5-20.*VT**3+5.*VT
-C...Calculate structure functions.
-        DO 130 KFL=1,6
-        XQSUM=0.
-        DO 120 IT=1,6
-        DO 110 IX=1,6
-        XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL,NSET)*TX(IX)*TT(IT)
-  110   CONTINUE
-  120   CONTINUE
-       XQ(KFL)=XQSUM*(1.-X)**NEHLQ(KFL,NSET)*CXS
-  130   CONTINUE
-C...Put into output array.
-        XPPR(0)=XQ(4)
-        XPPR(1)=XQ(2)+XQ(3)
-        XPPR(2)=XQ(1)+XQ(3)
-        XPPR(3)=XQ(5)
-        XPPR(4)=XQ(6)
-        XPPR(-1)=XQ(3)
-        XPPR(-2)=XQ(3)
-        XPPR(-3)=XQ(5)
-        XPPR(-4)=XQ(6)
-C...Special expansion for bottom (threshold effects).
-        IF(MSTP(58).GE.5) THEN
-          IF(NSET.EQ.1) TMIN=8.1905
-          IF(NSET.EQ.2) TMIN=7.4474
-          IF(T.GT.TMIN) THEN
-            VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN)))
-            TT(1)=1.
-            TT(2)=VT
-            TT(3)=2.*VT**2-1.
-            TT(4)=4.*VT**3-3.*VT
-            TT(5)=8.*VT**4-8.*VT**2+1.
-            TT(6)=16.*VT**5-20.*VT**3+5.*VT
-            XQSUM=0.
-            DO 150 IT=1,6
-            DO 140 IX=1,6
-            XQSUM=XQSUM+CEHLQ(IX,IT,NX,7,NSET)*TX(IX)*TT(IT)
-  140       CONTINUE
-  150       CONTINUE
-            XPPR(5)=XQSUM*(1.-X)**NEHLQ(7,NSET)*CXS
-            XPPR(-5)=XPPR(5)
-          ENDIF
-        ENDIF
-C...Special expansion for top (threshold effects).
-        IF(MSTP(58).GE.6) THEN
-          IF(NSET.EQ.1) TMIN=11.5528
-          IF(NSET.EQ.2) TMIN=10.8097
-          TMIN=TMIN+2.*LOG(PMAS(6,1)/30.)
-          TMAX=TMAX+2.*LOG(PMAS(6,1)/30.)
-          IF(T.GT.TMIN) THEN
-            VT=MAX(-1.,MIN(1.,(2.*T-TMAX-TMIN)/(TMAX-TMIN)))
-            TT(1)=1.
-            TT(2)=VT
-            TT(3)=2.*VT**2-1.
-            TT(4)=4.*VT**3-3.*VT
-            TT(5)=8.*VT**4-8.*VT**2+1.
-            TT(6)=16.*VT**5-20.*VT**3+5.*VT
-            XQSUM=0.
-            DO 170 IT=1,6
-            DO 160 IX=1,6
-            XQSUM=XQSUM+CEHLQ(IX,IT,NX,8,NSET)*TX(IX)*TT(IT)
-  160       CONTINUE
-  170       CONTINUE
-            XPPR(6)=XQSUM*(1.-X)**NEHLQ(8,NSET)*CXS
-            XPPR(-6)=XPPR(6)
-          ENDIF
-        ENDIF
-      ELSEIF(MSTP(51).EQ.3.OR.MSTP(51).EQ.4) THEN
-C...Proton structure functions from Duke, Owens.
-C...Allowed variable range: 4 GeV^2 < Q^2 < approx 1E6 GeV^2.
-C...Determine set, Lambda and s expansion parameter.
-        NSET=MSTP(51)-2
-        IF(NSET.EQ.1) ALAM=0.2
-        IF(NSET.EQ.2) ALAM=0.4
-        VINT(231)=4.
-        IF(MSTP(57).LE.0) THEN
-          SD=0.
-        ELSE
-          Q2IN=MIN(1E6,MAX(4.,Q2))
-          SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4./ALAM**2))
-        ENDIF
-C...Calculate structure functions.
-        DO 190 KFL=1,5
-        DO 180 IS=1,6
-        TS(IS)=CDO(1,IS,KFL,NSET)+CDO(2,IS,KFL,NSET)*SD+
-     &  CDO(3,IS,KFL,NSET)*SD**2
-  180   CONTINUE
-        IF(KFL.LE.2) THEN
-          XQ(KFL)=X**TS(1)*(1.-X)**TS(2)*(1.+TS(3)*X)/(EULBET(TS(1),
-     &    TS(2)+1.)*(1.+TS(3)*TS(1)/(TS(1)+TS(2)+1.)))
-        ELSE
-          XQ(KFL)=TS(1)*X**TS(2)*(1.-X)**TS(3)*(1.+TS(4)*X+TS(5)*X**2+
-     &    TS(6)*X**3)
-        ENDIF
-  190   CONTINUE
-C...Put into output arrays.
-        XPPR(0)=XQ(5)
-        XPPR(1)=XQ(2)+XQ(3)/6.
-        XPPR(2)=3.*XQ(1)-XQ(2)+XQ(3)/6.
-        XPPR(3)=XQ(3)/6.
-        XPPR(4)=XQ(4)
-        XPPR(-1)=XQ(3)/6.
-        XPPR(-2)=XQ(3)/6.
-        XPPR(-3)=XQ(3)/6.
-        XPPR(-4)=XQ(4)
-      ELSEIF(MSTP(51).GE.5.AND.MSTP(51).LE.10) THEN
-C...Interface to the CTEQ 2 structure functions.
-        NSET=MSTP(51)-4
-        QRT=SQRT(MAX(1.,Q2))
-C...Loop over flavours; put u and d in right order.
-        DO 200 I=-6,2
-        KFL=I
-        IF(I.EQ.1) KFL=2
-        IF(I.EQ.2) KFL=1
-        IF(I.EQ.-1) KFL=-2
-        IF(I.EQ.-2) KFL=-1
-        IF(I.LE.0) THEN
-          XPPR(KFL)=PYCTQ2(NSET,I,X,QRT)
-          XPPR(-KFL)=XPPR(KFL)
-        ELSE
-          XPPR(KFL)=PYCTQ2(NSET,I,X,QRT)+XPPR(-KFL)
-        ENDIF
-  200   CONTINUE
-C...Leading order proton structure functions from Gluck, Reya and Vogt.
-C...Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
-C...10^-5 < x < 1.
-      ELSE
-C...Determine s expansion variable and some x expressions.
-        VINT(231)=0.25
-        IF(MSTP(57).LE.0) THEN
-          SD=0.
-        ELSE
-          Q2IN=MIN(1E8,MAX(0.25,Q2))
-          SD=LOG(LOG(Q2IN/0.232**2)/LOG(0.25/0.232**2))
-        ENDIF
-        SD2=SD**2
-        XL=-LOG(X)
-        XS=SQRT(X)
-C...Evaluate valence, gluon and sea distributions.
-        XFVUD=(0.663+0.191*SD-0.041*SD2+0.031*SD**3)*X**0.326*
-     &  (1.+(-1.97+6.74*SD-1.96*SD2)*XS+(24.4-20.7*SD+4.08*SD2)*X)*
-     &  (1.-X)**(2.86+0.70*SD-0.02*SD2)
-        XFVDD=(0.579+0.283*SD+0.047*SD2)*X**(0.523-0.015*SD)*
-     &  (1.+(2.22-0.59*SD-0.27*SD2)*XS+(5.95-6.19*SD+1.55*SD2)*X)*
-     &  (1.-X)**(3.57+0.94*SD-0.16*SD2)
-        XFGLU=(X**(1.00-0.17*SD)*((4.879*SD-1.383*SD2)+
-     &  (25.92-28.97*SD+5.596*SD2)*X+(-25.69+23.68*SD-1.975*SD2)*X**2)+
-     &  SD**0.558*EXP(-(0.595+2.138*SD)+SQRT(4.066*SD**1.218*XL)))*
-     &  (1.-X)**(2.537+1.718*SD+0.353*SD2)
-        XFSEA=(X**(0.412-0.171*SD)*(0.363-1.196*X+
-     &  (1.029+1.785*SD-0.459*SD2)*X**2)*XL**(0.566-0.496*SD)+
-     &  SD**1.396*EXP(-(3.838+1.944*SD)+SQRT(2.845*SD**1.331*XL)))*
-     &  (1.-X)**(4.696+2.109*SD)
-        XFSTR=SD**0.803*(1.+(-3.055+1.024*SD**0.67)*XS+
-     &  (27.4-20.0*SD**0.154)*X)*(1.-X)**6.22*
-     &  EXP(-(4.33+1.408*SD)+SQRT((8.27-0.437*SD)*SD**0.563*XL))/
-     &  XL**(2.082-0.577*SD)
-        IF(SD.LE.0.888) THEN
-          XFCHM=0.
-        ELSE
-          XFCHM=(SD-0.888)**1.01*(1.+(4.24-0.804*SD)*X)*
-     &    (1.-X)**(3.46+1.076*SD)*EXP(-(4.61+1.49*SD)+
-     &    SQRT((2.555+1.961*SD)*SD**0.37*XL))
-        ENDIF
-        IF(SD.LE.1.351) THEN
-          XFBOT=0.
-        ELSE
-          XFBOT=(SD-1.351)*(1.+1.848*X)*(1.-X)**(2.929+1.396*SD)*
-     &    EXP(-(4.71+1.514*SD)+SQRT((4.02+1.239*SD)*SD**0.51*XL))
-        ENDIF
-C...Put into output array.
-        XPPR(0)=XFGLU
-        XPPR(1)=XFVDD+XFSEA
-        XPPR(2)=XFVUD-XFVDD+XFSEA
-        XPPR(3)=XFSTR
-        XPPR(4)=XFCHM
-        XPPR(5)=XFBOT
-        XPPR(-1)=XFSEA
-        XPPR(-2)=XFSEA
-        XPPR(-3)=XFSTR
-        XPPR(-4)=XFCHM
-        XPPR(-5)=XFBOT
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pytest.F b/PYTHIA/pythia/pytest.F
deleted file mode 100644 (file)
index f3202ae..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-C***********************************************************************
-       SUBROUTINE PYTEST(MTEST)
-C...Purpose: to provide a simple program (disguised as a subroutine) to
-C...run at installation as a check that the program works as intended.
-      COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/
-C...Common initial values. Loop over initiating conditions.
-      MSTP(122)=MAX(0,MIN(2,MTEST))
-      MDCY(LUCOMP(111),1)=0
-      NERR=0
-      DO 130 IPROC=1,8
-C...Reset process type, kinematics cuts, and the flags used.
-      MSEL=0
-      DO 100 ISUB=1,200
-      MSUB(ISUB)=0
-  100 CONTINUE
-      CKIN(1)=2.
-      CKIN(3)=0.
-      MSTP(2)=1
-      MSTP(11)=0
-      MSTP(33)=0
-      MSTP(81)=1
-      MSTP(82)=1
-      MSTP(111)=1
-      MSTP(131)=0
-      MSTP(133)=0
-      PARP(131)=0.01
-C...Prompt photon production at fixed target.
-      IF(IPROC.EQ.1) THEN
-        PZSUM=300.
-        PESUM=SQRT(PZSUM**2+ULMASS(211)**2)+ULMASS(2212)
-        PQSUM=2.
-        MSEL=10
-        CKIN(3)=5.
-        CALL PYINIT('FIXT','pi+','p',PZSUM)
-C...QCD processes at ISR energies.
-      ELSEIF(IPROC.EQ.2) THEN
-        PESUM=63.
-        PZSUM=0.
-        PQSUM=2.
-        MSEL=1
-        CKIN(3)=5.
-        CALL PYINIT('CMS','p','p',PESUM)
-C...W production + multiple interactions at CERN Collider.
-      ELSEIF(IPROC.EQ.3) THEN
-        PESUM=630.
-        PZSUM=0.
-        PQSUM=0.
-        MSEL=12
-        CKIN(1)=20.
-        MSTP(82)=4
-        MSTP(2)=2
-        MSTP(33)=3
-        CALL PYINIT('CMS','p','pbar',PESUM)
-C...W/Z gauge boson pairs + pileup events at the Tevatron.
-      ELSEIF(IPROC.EQ.4) THEN
-        PESUM=1800.
-        PZSUM=0.
-        PQSUM=0.
-        MSUB(22)=1
-        MSUB(23)=1
-        MSUB(25)=1
-        CKIN(1)=200.
-        MSTP(111)=0
-        MSTP(131)=1
-        MSTP(133)=2
-        PARP(131)=0.04
-        CALL PYINIT('CMS','p','pbar',PESUM)
-C...Higgs production at LHC.
-      ELSEIF(IPROC.EQ.5) THEN
-        PESUM=15400.
-        PZSUM=0.
-        PQSUM=2.
-        MSUB(3)=1
-        MSUB(102)=1
-        MSUB(123)=1
-        MSUB(124)=1
-        PMAS(25,1)=300.
-        CKIN(1)=200.
-        MSTP(81)=0
-        MSTP(111)=0
-        CALL PYINIT('CMS','p','p',PESUM)
-C...Z' production at SSC.
-      ELSEIF(IPROC.EQ.6) THEN
-        PESUM=40000.
-        PZSUM=0.
-        PQSUM=2.
-        MSEL=21
-        PMAS(32,1)=600.
-        CKIN(1)=400.
-        MSTP(81)=0
-        MSTP(111)=0
-        CALL PYINIT('CMS','p','p',PESUM)
-C...W pair production at 1 TeV e+e- collider.
-      ELSEIF(IPROC.EQ.7) THEN
-        PESUM=1000.
-        PZSUM=0.
-        PQSUM=0.
-        MSUB(25)=1
-        MSUB(69)=1
-        MSTP(11)=1
-        CALL PYINIT('CMS','e+','e-',PESUM)
-C...Deep inelastic scattering at a LEP+LHC ep collider.
-      ELSEIF(IPROC.EQ.8) THEN
-        P(1,1)=0.
-        P(1,2)=0.
-        P(1,3)=8000.
-        P(2,1)=0.
-        P(2,2)=0.
-        P(2,3)=-80.
-        PESUM=8080.
-        PZSUM=7920.
-        PQSUM=0.
-        MSUB(10)=1
-        CKIN(3)=50.
-        MSTP(111)=0
-        CALL PYINIT('USER','p','e-',PESUM)
-      ENDIF
-C...Generate 20 events of each required type.
-      DO 120 IEV=1,20
-      CALL PYEVNT
-      PESUMM=PESUM
-      IF(IPROC.EQ.4) PESUMM=MSTI(41)*PESUM
-C...Check conservation of energy/momentum/flavour.
-      MERR=0
-      DEVE=ABS(PLU(0,4)-PESUMM)+ABS(PLU(0,3)-PZSUM)
-      DEVT=ABS(PLU(0,1))+ABS(PLU(0,2))
-      DEVQ=ABS(PLU(0,6)-PQSUM)
-      IF(DEVE.GT.2E-3*PESUM.OR.DEVT.GT.MAX(0.01,1E-4*PESUM).OR.
-     &DEVQ.GT.0.1) MERR=1
-      IF(MERR.NE.0) WRITE(MSTU(11),5000) IPROC,IEV
-C...Check that all KF codes are known ones, and that partons/particles
-C...satisfy energy-momentum-mass relation.
-      DO 110 I=1,N
-      IF(K(I,1).GT.20) GOTO 110
-      IF(LUCOMP(K(I,2)).EQ.0) THEN
-        WRITE(MSTU(11),5100) I
-        MERR=MERR+1
-      ENDIF
-      PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2*
-     &SIGN(1.,P(I,5))
-      IF(ABS(PD).GT.MAX(0.1,0.002*P(I,4)**2,0.002*P(I,5)**2).OR.
-     &(P(I,5).GE.0..AND.P(I,4).LT.0.)) THEN
-        WRITE(MSTU(11),5200) I
-        MERR=MERR+1
-      ENDIF
-  110 CONTINUE
-C...Listing of erroneous events, and first event of each type.
-      IF(MERR.GE.1) NERR=NERR+1
-      IF(NERR.GE.10) THEN
-        WRITE(MSTU(11),5300)
-        CALL LULIST(1)
-        STOP
-      ENDIF
-      IF(MTEST.GE.1.AND.(MERR.GE.1.OR.IEV.EQ.1)) THEN
-        IF(MERR.GE.1) WRITE(MSTU(11),5400)
-        CALL LULIST(1)
-      ENDIF
-  120 CONTINUE
-C...List statistics for each process type.
-      IF(MTEST.GE.1) CALL PYSTAT(1)
-  130 CONTINUE
-C...Summarize result of run.
-      IF(NERR.EQ.0) WRITE(MSTU(11),5500)
-      IF(NERR.GT.0) WRITE(MSTU(11),5600) NERR
-      RETURN
-C...Formats for information.
- 5000 FORMAT(/5X,'Energy/momentum/flavour nonconservation for process',
-     &I2,', event',I4)
- 5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code')
- 5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ',
-     &'kinematics')
- 5300 FORMAT(/5X,'This is the tenth error experienced! Something is ',
-     &'wrong.'/5X,'Execution will be stopped after listing of event.')
- 5400 FORMAT(5X,'Faulty event follows:')
- 5500 FORMAT(//5X,'End result of PYTEST: no errors detected.')
- 5600 FORMAT(//5X,'End result of PYTEST:',I2,' errors detected.'/
-     &5X,'This should not have happened!')
-      END
diff --git a/PYTHIA/pythia/pyupev.F b/PYTHIA/pythia/pyupev.F
deleted file mode 100644 (file)
index 84c35a2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYUPEV(ISUB,SIGEV)
-C...Dummy routine, to be replaced by user. When called from PYTHIA
-C...the subprocess number ISUB will be given, and PYUPEV is supposed
-C...to generate an event of this type, to be stored in the PYUPPR
-C...commonblock. SIGEV gives the differential cross-section associated
-C...with the event, i.e. the acceptance probability of the event is
-C...taken to be SIGEV/SIGMAX, where SIGMAX was given in the PYUPIN
-C...call.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-      COMMON/PYUPPR/NUP,KUP(20,7),PUP(20,5),NFUP,IFUP(10,2),Q2UP(0:10)
-      SAVE /PYUPPR/
-C...Stop program if this routine is ever called.
-C...You should not copy these lines to your own routine.
-      WRITE(MSTU(11),5000)
-      IF(RLU(0).LT.10.) STOP
-      SIGEV=ISUB
-C...Format for error printout.
- 5000 FORMAT(1X,'Error: you did not link your PYUPEV routine ',
-     &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
-     &1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyupin.F b/PYTHIA/pythia/pyupin.F
deleted file mode 100644 (file)
index d5a5b93..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYUPIN(ISUB,TITLE,SIGMAX)
-C...Routine to be called by user to set up a user-defined process.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
-      COMMON/PYINT6/PROC(0:200)
-      CHARACTER PROC*28
-      SAVE /LUDAT1/,/PYINT2/,/PYINT6/
-      CHARACTER*(*) TITLE
-C...Check that subprocess number free.
-      IF(ISUB.LT.1.OR.ISUB.GT.200.OR.ISET(ISUB).GE.0) THEN
-        WRITE(MSTU(11),5000) ISUB
-        STOP
-      ENDIF
-C...Fill information on new process.
-      ISET(ISUB)=11
-      COEF(ISUB,1)=SIGMAX
-      PROC(ISUB)=TITLE//' '
-C...Format for error output.
- 5000 FORMAT(1X,'Error: user-defined subprocess code ',I4,
-     &' not allowed.'//1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pywaux.F b/PYTHIA/pythia/pywaux.F
deleted file mode 100644 (file)
index ca0a671..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-C***********************************************************************
-      SUBROUTINE PYWAUX(IAUX,EPS,WRE,WIM)
-C...Calculates real and imaginary parts of the auxiliary functions W1
-C...and W2; see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van
-C...der Bij, Nucl. Phys. B297 (1988) 221.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-      ASINH(X)=LOG(X+SQRT(X**2+1.))
-      ACOSH(X)=LOG(X+SQRT(X**2-1.))
-      IF(EPS.LT.0.) THEN
-        IF(IAUX.EQ.1) WRE=2.*SQRT(1.-EPS)*ASINH(SQRT(-1./EPS))
-        IF(IAUX.EQ.2) WRE=4.*(ASINH(SQRT(-1./EPS)))**2
-        WIM=0.
-      ELSEIF(EPS.LT.1.) THEN
-        IF(IAUX.EQ.1) WRE=2.*SQRT(1.-EPS)*ACOSH(SQRT(1./EPS))
-        IF(IAUX.EQ.2) WRE=4.*(ACOSH(SQRT(1./EPS)))**2-PARU(1)**2
-        IF(IAUX.EQ.1) WIM=-PARU(1)*SQRT(1.-EPS)
-        IF(IAUX.EQ.2) WIM=-4.*PARU(1)*ACOSH(SQRT(1./EPS))
-      ELSE
-        IF(IAUX.EQ.1) WRE=2.*SQRT(EPS-1.)*ASIN(SQRT(1./EPS))
-        IF(IAUX.EQ.2) WRE=-4.*(ASIN(SQRT(1./EPS)))**2
-        WIM=0.
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pywidt.F b/PYTHIA/pythia/pywidt.F
deleted file mode 100644 (file)
index a9e08f5..0000000
+++ /dev/null
@@ -1,1242 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYWIDT(KFLR,SH,WDTP,WDTE)
-C...Calculates full and partial widths of resonances.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
-      COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
-      COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
-      SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/
-      SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT4/
-      DIMENSION WDTP(0:40),WDTE(0:40,0:5),MOFSV(3,2),WIDWSV(3,2),
-     &WID2SV(3,2)
-      SAVE MOFSV,WIDWSV,WID2SV
-      DATA MOFSV/6*0/,WIDWSV/6*0./,WID2SV/6*0./
-C...Some common constants.
-      KFLA=IABS(KFLR)
-      KFHIGG=25
-      IHIGG=1
-      IF(KFLA.EQ.35.OR.KFLA.EQ.36) THEN
-        KFHIGG=KFLA
-        IHIGG=KFLA-33
-      ENDIF
-      XW=PARU(102)
-      XWV=XW
-      IF(MSTP(8).GE.2) XW=1.-(PMAS(24,1)/PMAS(23,1))**2
-      XW1=1.-XW
-      AEM=ULALEM(SH)
-      IF(MSTP(8).GE.1) AEM=SQRT(2.)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
-      AS=ULALPS(SH)
-      RADC=1.+AS/PARU(1)
-C...Reset width information.
-      DO 110 I=0,40
-      WDTP(I)=0.
-      DO 100 J=0,5
-      WDTE(I,J)=0.
-  100 CONTINUE
-  110 CONTINUE
-      IF(KFLA.EQ.6) THEN
-C...t quark.
-        DO 120 I=1,MDCY(6,3)
-        IDC=I+MDCY(6,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 120
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 120
-        IF(I.GE.4.AND.I.LE.7) THEN
-C...t -> W + q.
-          WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*VCKM(3,I-3)*
-     &    SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &    ((1.-RM2)**2+(1.+RM2)*RM1-2.*RM1**2)
-          IF(KFLR.GT.0) THEN
-            WID2=WIDS(24,2)
-            IF(I.EQ.7.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,2)
-          ELSE
-            WID2=WIDS(24,3)
-            IF(I.EQ.7.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,3)
-          ENDIF
-        ELSEIF(I.EQ.9) THEN
-C...t -> H + b.
-          WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*
-     &    SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &    ((1.+RM2-RM1)*(RM2*PARU(141)**2+1./PARU(141)**2)+4.*RM2)
-          WID2=WIDS(37,2)
-          IF(KFLR.LT.0) WID2=WIDS(37,3)
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  120   CONTINUE
-      ELSEIF(KFLA.EQ.7) THEN
-C...l or d* (masked as particle code 7).
-        DO 130 I=1,MDCY(7,3)
-        IDC=I+MDCY(7,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 130
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 130
-        IF(MSTP(6).NE.1) THEN
-          IF(I.GE.4.AND.I.LE.7) THEN
-C...l -> W + q.
-            WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*VCKM(I-3,4)*
-     &      SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &      ((1.-RM2)**2+(1.+RM2)*RM1-2.*RM1**2)
-            IF(KFLR.GT.0) THEN
-              WID2=WIDS(24,3)
-              IF(I.EQ.6.AND.MSTP(48).GE.1) WID2=WID2*WIDS(26,2)
-              IF(I.EQ.7.AND.MSTP(49).GE.1) WID2=WID2*WIDS(28,2)
-            ELSE
-              WID2=WIDS(24,2)
-              IF(I.EQ.6.AND.MSTP(48).GE.1) WID2=WID2*WIDS(26,3)
-              IF(I.EQ.7.AND.MSTP(49).GE.1) WID2=WID2*WIDS(28,3)
-            ENDIF
-            WID2=WIDS(24,3)
-            IF(KFLR.LT.0) WID2=WIDS(24,2)
-          ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
-C...l -> H + q.
-            WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*
-     &      SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &      ((1.+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4.*RM2)
-            IF(KFLR.GT.0) THEN
-              WID2=WIDS(37,3)
-              IF(I.EQ.10.AND.MSTP(48).GE.1) WID2=WID2*WIDS(26,2)
-            ELSE
-              WID2=WIDS(37,2)
-              IF(I.EQ.10.AND.MSTP(48).GE.1) WID2=WID2*WIDS(26,3)
-            ENDIF
-          ENDIF
-        ELSE
-          IF(I.EQ.1) THEN
-C...d* -> g + d.
-            WDTP(I)=AS*PARU(159)**2*SH/(3.*PARU(155)**2)
-            WID2=1.
-          ELSEIF(I.EQ.2) THEN
-C...d* -> gamma + d.
-            QF=-PARU(157)/2.+PARU(158)/6.
-            WDTP(I)=AEM*QF**2*SH/(4.*PARU(155)**2)
-            WID2=1.
-          ELSEIF(I.EQ.3) THEN
-C...d* -> Z0 + d.
-            QF=-PARU(157)*XW1/2.-PARU(158)*XW/6.
-            WDTP(I)=AEM*QF**2*SH/(8.*XW*XW1*PARU(155)**2)*
-     &      (1.-RM1)**2*(2.+RM1)
-            WID2=WIDS(23,2)
-          ELSEIF(I.EQ.4) THEN
-C...d* -> W- + u.
-            WDTP(I)=AEM*PARU(157)**2*SH/(16.*XW*PARU(155)**2)*
-     &      (1.-RM1)**2*(2.+RM1)
-            IF(KFLR.GT.0) WID2=WIDS(24,3)
-            IF(KFLR.LT.0) WID2=WIDS(24,2)
-          ENDIF
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  130   CONTINUE
-      ELSEIF(KFLA.EQ.8) THEN
-C...h or u* (masked as particle code 8).
-        DO 140 I=1,MDCY(8,3)
-        IDC=I+MDCY(8,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 140
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 140
-        IF(MSTP(6).NE.1) THEN
-          IF(I.GE.4.AND.I.LE.7) THEN
-C...h -> W + q.
-            WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*VCKM(4,I-3)*
-     &      SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &      ((1.-RM2)**2+(1.+RM2)*RM1-2.*RM1**2)
-            IF(KFLR.GT.0) THEN
-              WID2=WIDS(24,2)
-              IF(I.EQ.7.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,2)
-            ELSE
-              WID2=WIDS(24,3)
-              IF(I.EQ.7.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,3)
-            ENDIF
-          ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
-C...h -> H + q.
-            WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*
-     &      SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &      ((1.+RM2-RM1)*(RM2*PARU(141)**2+1./PARU(141)**2)+4.*RM2)
-            IF(KFLR.GT.0) THEN
-              WID2=WIDS(37,2)
-              IF(I.EQ.10.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,2)
-            ELSE
-              WID2=WIDS(37,3)
-              IF(I.EQ.10.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,3)
-            ENDIF
-          ENDIF
-        ELSE
-          IF(I.EQ.1) THEN
-C...u* -> g + u.
-            WDTP(I)=AS*PARU(159)**2*SH/(3.*PARU(155)**2)
-            WID2=1.
-          ELSEIF(I.EQ.2) THEN
-C...u* -> gamma + u.
-            QF=PARU(157)/2.+PARU(158)/6.
-            WDTP(I)=AEM*QF**2*SH/(4.*PARU(155)**2)
-            WID2=1.
-          ELSEIF(I.EQ.3) THEN
-C...u* -> Z0 + u.
-            QF=PARU(157)*XW1/2.-PARU(158)*XW/6.
-            WDTP(I)=AEM*QF**2*SH/(8.*XW*XW1*PARU(155)**2)*
-     &      (1.-RM1)**2*(2.+RM1)
-            WID2=WIDS(23,2)
-          ELSEIF(I.EQ.4) THEN
-C...u* -> W+ + d.
-            WDTP(I)=AEM*PARU(157)**2*SH/(16.*XW*PARU(155)**2)*
-     &      (1.-RM1)**2*(2.+RM1)
-            IF(KFLR.GT.0) WID2=WIDS(24,2)
-            IF(KFLR.LT.0) WID2=WIDS(24,3)
-          ENDIF
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  140   CONTINUE
-      ELSEIF(KFLA.EQ.17) THEN
-C...chi or e* (masked as particle code 17).
-        DO 150 I=1,MDCY(17,3)
-        IDC=I+MDCY(17,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 150
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 150
-        IF(MSTP(6).NE.1) THEN
-          IF(I.EQ.4) THEN
-C...chi -> W + nu_chi.
-            WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*
-     &      SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &      ((1.-RM2)**2+(1.+RM2)*RM1-2.*RM1**2)
-            IF(KFLR.GT.0) THEN
-              WID2=WIDS(24,3)
-              IF(MSTP(49).GE.1) WID2=WID2*WIDS(30,2)
-            ELSE
-              WID2=WIDS(24,2)
-              IF(MSTP(49).GE.1) WID2=WID2*WIDS(30,3)
-            ENDIF
-          ELSEIF(I.EQ.6) THEN
-C...chi -> H + nu_chi.
-            WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*
-     &      SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &      ((1.+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4.*RM2)
-            IF(KFLR.GT.0) THEN
-              WID2=WIDS(37,3)
-              IF(MSTP(49).GE.1) WID2=WID2*WIDS(30,2)
-            ELSE
-              WID2=WIDS(37,2)
-              IF(MSTP(49).GE.1) WID2=WID2*WIDS(30,3)
-            ENDIF
-          ENDIF
-        ELSE
-          IF(I.EQ.2) THEN
-C...e* -> gamma + e.
-            QF=-PARU(157)/2.-PARU(158)/2.
-            WDTP(I)=AEM*QF**2*SH/(4.*PARU(155)**2)
-            WID2=1.
-          ELSEIF(I.EQ.3) THEN
-C...e* -> Z0 + e.
-            QF=-PARU(157)*XW1/2.+PARU(158)*XW/2.
-            WDTP(I)=AEM*QF**2*SH/(8.*XW*XW1*PARU(155)**2)*
-     &      (1.-RM1)**2*(2.+RM1)
-            WID2=WIDS(23,2)
-          ELSEIF(I.EQ.4) THEN
-C...e* -> W- + nu.
-            WDTP(I)=AEM*PARU(157)**2*SH/(16.*XW*PARU(155)**2)*
-     &      (1.-RM1)**2*(2.+RM1)
-            IF(KFLR.GT.0) WID2=WIDS(24,3)
-            IF(KFLR.LT.0) WID2=WIDS(24,2)
-          ENDIF
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  150   CONTINUE
-      ELSEIF(KFLA.EQ.18) THEN
-C...nu_chi or nu*_e (masked as particle code 18).
-        DO 160 I=1,MDCY(18,3)
-        IDC=I+MDCY(18,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 160
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 160
-        IF(MSTP(6).NE.1) THEN
-          IF(I.EQ.2) THEN
-C...nu_chi -> W + chi.
-            WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*
-     &      SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &      ((1.-RM2)**2+(1.+RM2)*RM1-2.*RM1**2)
-            IF(KFLR.GT.0) THEN
-              WID2=WIDS(24,2)
-              IF(MSTP(49).GE.1) WID2=WID2*WIDS(29,2)
-            ELSE
-              WID2=WIDS(24,3)
-              IF(MSTP(49).GE.1) WID2=WID2*WIDS(29,3)
-            ENDIF
-          ELSEIF(I.EQ.3) THEN
-C...nu_chi -> H + chi.
-            WDTP(I)=AEM*SH/(16.*PMAS(24,1)**2*XW)*
-     &      SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))*
-     &      ((1.+RM2-RM1)*(RM2*PARU(141)**2+1./PARU(141)**2)+4.*RM2)
-            IF(KFLR.GT.0) THEN
-              WID2=WIDS(37,2)
-              IF(MSTP(49).GE.1) WID2=WID2*WIDS(29,2)
-            ELSE
-              WID2=WIDS(37,3)
-              IF(MSTP(49).GE.1) WID2=WID2*WIDS(29,3)
-            ENDIF
-          ENDIF
-        ELSE
-          IF(I.EQ.1) THEN
-C...nu*_e -> Z0 + nu*_e.
-            QF=PARU(157)*XW1/2.+PARU(158)*XW/2.
-            WDTP(I)=AEM*QF**2*SH/(8.*XW*XW1*PARU(155)**2)*
-     &      (1.-RM1)**2*(2.+RM1)
-            WID2=WIDS(23,2)
-          ELSEIF(I.EQ.2) THEN
-C...nu*_e -> W+ + e.
-            WDTP(I)=AEM*PARU(157)**2*SH/(16.*XW*PARU(155)**2)*
-     &      (1.-RM1)**2*(2.+RM1)
-            IF(KFLR.GT.0) WID2=WIDS(24,2)
-            IF(KFLR.LT.0) WID2=WIDS(24,3)
-          ENDIF
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  160   CONTINUE
-      ELSEIF(KFLA.EQ.21) THEN
-C...QCD:
-        DO 170 I=1,MDCY(21,3)
-        IDC=I+MDCY(21,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 170
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 170
-        WID2=1.
-        IF(I.LE.8) THEN
-C...QCD -> q + q~
-          WDTP(I)=(1.+2.*RM1)*SQRT(MAX(0.,1.-4.*RM1))
-          IF(I.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-          IF((I.EQ.7.OR.I.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(20+I,1)
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  170   CONTINUE
-      ELSEIF(KFLA.EQ.22) THEN
-C...QED photon.
-        DO 180 I=1,MDCY(22,3)
-        IDC=I+MDCY(22,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 180
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 180
-        WID2=1.
-        IF(I.LE.8) THEN
-C...QED -> q + q~.
-          EF=KCHG(I,1)/3.
-          FCOF=3.*RADC
-          IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1.)
-          WDTP(I)=FCOF*EF**2*(1.+2.*RM1)*SQRT(MAX(0.,1.-4.*RM1))
-          IF(I.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-          IF((I.EQ.7.OR.I.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(20+I,1)
-        ELSEIF(I.LE.12) THEN
-C...QED -> l+ + l-.
-          EF=KCHG(9+2*(I-8),1)/3.
-          WDTP(I)=EF**2*(1.+2.*RM1)*SQRT(MAX(0.,1.-4.*RM1))
-          IF(I.EQ.12.AND.MSTP(49).GE.1) WID2=WIDS(29,1)
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  180   CONTINUE
-      ELSEIF(KFLA.EQ.23) THEN
-C...Z0:
-        ICASE=1
-        XWC=1./(16.*XW*XW1)
-        FACH=AEM/3.*XWC*SH
-  190   CONTINUE
-        IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
-          VINT(111)=0.
-          VINT(112)=0.
-          VINT(114)=0.
-        ENDIF
-        IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
-          EI=KCHG(IABS(MINT(15)),1)/3.
-          AI=SIGN(1.,EI)
-          VI=AI-4.*EI*XWV
-          SQMZ=PMAS(23,1)**2
-          HZ=FACH*WDTP(0)
-          IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=1.
-          IF(MSTP(43).EQ.3) VINT(112)=
-     &    2.*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
-          IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
-     &    XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
-        ENDIF
-        DO 200 I=1,MDCY(23,3)
-        IDC=I+MDCY(23,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 200
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 200
-        WID2=1.
-        IF(I.LE.8) THEN
-C...Z0 -> q + q~
-          EF=KCHG(I,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-          FCOF=3.*RADC
-          IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1.)
-          IF(I.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-          IF((I.EQ.7.OR.I.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(20+I,1)
-        ELSEIF(I.LE.16) THEN
-C...Z0 -> l+ + l-, nu + nu~
-          EF=KCHG(I+2,1)/3.
-          AF=SIGN(1.,EF+0.1)
-          VF=AF-4.*EF*XWV
-          FCOF=1.
-          IF((I.EQ.15.OR.I.EQ.16).AND.MSTP(49).GE.1) WID2=WIDS(14+I,1)
-        ENDIF
-        BE34=SQRT(MAX(0.,1.-4.*RM1))
-        IF(ICASE.EQ.1) THEN
-          WDTP(I)=FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-        ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
-          WDTP(I)=FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
-     &    EF*VF+(VI**2+AI**2)*VINT(114)*VF**2)*(1.+2.*RM1)+
-     &    (VI**2+AI**2)*VINT(114)*AF**2*(1.-4.*RM1))*BE34
-        ELSEIF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
-          FGGF=FCOF*EF**2*(1.+2.*RM1)*BE34
-          FGZF=FCOF*EF*VF*(1.+2.*RM1)*BE34
-          FZZF=FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-        ENDIF
-        IF(ICASE.EQ.1) WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
-     &    (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
-            WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-            WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-            WDTE(I,0)=WDTE(I,MDME(IDC,1))
-            WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-          ENDIF
-          IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
-            IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=
-     &      VINT(111)+FGGF*WID2
-            IF(MSTP(43).EQ.3) VINT(112)=VINT(112)+FGZF*WID2
-            IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
-     &      VINT(114)+FZZF*WID2
-          ENDIF
-        ENDIF
-  200   CONTINUE
-        IF(MINT(61).GE.1) ICASE=3-ICASE
-        IF(ICASE.EQ.2) GOTO 190
-      ELSEIF(KFLA.EQ.24) THEN
-C...W+/-:
-        DO 210 I=1,MDCY(24,3)
-        IDC=I+MDCY(24,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 210
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 210
-        WID2=1.
-        IF(I.LE.16) THEN
-C...W+/- -> q + q~'
-          FCOF=3.*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
-          IF(KFLR.GT.0) THEN
-            IF(MOD(I,4).EQ.3.AND.MSTP(48).GE.1) WID2=WIDS(26,2)
-            IF(MOD(I,4).EQ.0.AND.MSTP(49).GE.1) WID2=WIDS(28,2)
-            IF(I.GE.13.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,3)
-          ELSE
-            IF(MOD(I,4).EQ.3.AND.MSTP(48).GE.1) WID2=WIDS(26,3)
-            IF(MOD(I,4).EQ.0.AND.MSTP(49).GE.1) WID2=WIDS(28,3)
-            IF(I.GE.13.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,2)
-          ENDIF
-        ELSEIF(I.LE.20) THEN
-C...W+/- -> l+/- + nu
-          FCOF=1.
-          IF(KFLR.GT.0) THEN
-            IF(I.EQ.20.AND.MSTP(49).GE.1) WID2=WIDS(29,3)*WIDS(30,2)
-          ELSE
-            IF(I.EQ.20.AND.MSTP(49).GE.1) WID2=WIDS(29,2)*WIDS(30,3)
-          ENDIF
-        ENDIF
-        WDTP(I)=FCOF*(2.-RM1-RM2-(RM1-RM2)**2)*
-     &  SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  210   CONTINUE
-      ELSEIF(KFLA.EQ.25.OR.KFLA.EQ.35.OR.KFLA.EQ.36) THEN
-C...H0 (or H'0, or A0):
-        DO 250 I=1,MDCY(KFHIGG,3)
-        IDC=I+MDCY(KFHIGG,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 250
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(I.NE.16.AND.I.NE.17.AND.SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 250
-        WID2=1.
-        IF(I.LE.8) THEN
-C...H0 -> q + q~
-          WDTP(I)=3.*RM1*(1.-4.*RM1)*SQRT(MAX(0.,1.-4.*RM1))*RADC
-          IF(MSTP(37).EQ.1.AND.MSTP(2).GE.1) WDTP(I)=WDTP(I)*
-     &    (LOG(MAX(4.,PARP(37)**2*RM1*SH/PARU(117)**2))/
-     &    LOG(MAX(4.,SH/PARU(117)**2)))**(24./(33.-2.*MSTU(118)))
-          IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
-            IF(MOD(I,2).EQ.1) WDTP(I)=WDTP(I)*PARU(151+10*IHIGG)**2
-            IF(MOD(I,2).EQ.0) WDTP(I)=WDTP(I)*PARU(152+10*IHIGG)**2
-          ENDIF
-          IF(I.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-          IF((I.EQ.7.OR.I.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(20+I,1)
-        ELSEIF(I.LE.12) THEN
-C...H0 -> l+ + l-
-          WDTP(I)=RM1*(1.-4.*RM1)*SQRT(MAX(0.,1.-4.*RM1))
-          IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
-     &    PARU(153+10*IHIGG)**2
-          IF(I.EQ.12.AND.MSTP(49).GE.1) WID2=WIDS(29,1)
-        ELSEIF(I.EQ.13) THEN
-C...H0 -> g + g; quark loop contribution only
-          ETARE=0.
-          ETAIM=0.
-          DO 220 J=1,2*MSTP(1)
-          EPS=(2.*PMAS(J,1))**2/SH
-C...Loop integral; function of eps=4m^2/shat; different for A0.
-          IF(EPS.LE.1.) THEN
-            IF(EPS.GT.1.E-4) THEN
-              ROOT=SQRT(1.-EPS)
-              RLN=LOG((1.+ROOT)/(1.-ROOT))
-            ELSE
-              RLN=LOG(4./EPS-2.)
-            ENDIF
-            PHIRE=-0.25*(RLN**2-PARU(1)**2)
-            PHIIM=0.5*PARU(1)*RLN
-          ELSE
-            PHIRE=(ASIN(1./SQRT(EPS)))**2
-            PHIIM=0.
-          ENDIF
-          IF(IHIGG.LE.2) THEN
-            ETAREJ=-0.5*EPS*(1.+(1.-EPS)*PHIRE)
-            ETAIMJ=-0.5*EPS*(1.-EPS)*PHIIM
-          ELSE
-            ETAREJ=-0.5*EPS*PHIRE
-            ETAIMJ=-0.5*EPS*PHIIM
-          ENDIF
-C...Couplings (=1 for standard model Higgs).
-          IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
-            IF(MOD(J,2).EQ.1) THEN
-              ETAREJ=ETAREJ*PARU(151+10*IHIGG)
-              ETAIMJ=ETAIMJ*PARU(151+10*IHIGG)
-            ELSE
-              ETAREJ=ETAREJ*PARU(152+10*IHIGG)
-              ETAIMJ=ETAIMJ*PARU(152+10*IHIGG)
-            ENDIF
-          ENDIF
-          ETARE=ETARE+ETAREJ
-          ETAIM=ETAIM+ETAIMJ
-  220     CONTINUE
-          ETA2=ETARE**2+ETAIM**2
-          WDTP(I)=(AS/PARU(1))**2*ETA2
-        ELSEIF(I.EQ.14) THEN
-C...H0 -> gamma + gamma; quark, lepton, W+- and H+- loop contributions
-          ETARE=0.
-          ETAIM=0.
-          JMAX=3*MSTP(1)+1
-          IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
-          DO 230 J=1,JMAX
-          IF(J.LE.2*MSTP(1)) THEN
-            EJ=KCHG(J,1)/3.
-            EPS=(2.*PMAS(J,1))**2/SH
-          ELSEIF(J.LE.3*MSTP(1)) THEN
-            JL=2*(J-2*MSTP(1))-1
-            EJ=KCHG(10+JL,1)/3.
-            EPS=(2.*PMAS(10+JL,1))**2/SH
-          ELSEIF(J.EQ.3*MSTP(1)+1) THEN
-            EPS=(2.*PMAS(24,1))**2/SH
-          ELSE
-            EPS=(2.*PMAS(37,1))**2/SH
-          ENDIF
-C...Loop integral; function of eps=4m^2/shat.
-          IF(EPS.LE.1.) THEN
-            IF(EPS.GT.1.E-4) THEN
-              ROOT=SQRT(1.-EPS)
-              RLN=LOG((1.+ROOT)/(1.-ROOT))
-            ELSE
-              RLN=LOG(4./EPS-2.)
-            ENDIF
-            PHIRE=-0.25*(RLN**2-PARU(1)**2)
-            PHIIM=0.5*PARU(1)*RLN
-          ELSE
-            PHIRE=(ASIN(1./SQRT(EPS)))**2
-            PHIIM=0.
-          ENDIF
-          IF(J.LE.3*MSTP(1)) THEN
-C...Fermion loops: loop integral different for A0; charges.
-            IF(IHIGG.LE.2) THEN
-              PHIPRE=-0.5*EPS*(1.+(1.-EPS)*PHIRE)
-              PHIPIM=-0.5*EPS*(1.-EPS)*PHIIM
-            ELSE
-              PHIPRE=-0.5*EPS*PHIRE
-              PHIPIM=-0.5*EPS*PHIIM
-            ENDIF
-            IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
-              EJC=3.*EJ**2
-              EJH=PARU(151+10*IHIGG)
-            ELSEIF(J.LE.2*MSTP(1)) THEN
-              EJC=3.*EJ**2
-              EJH=PARU(152+10*IHIGG)
-            ELSE
-              EJC=EJ**2
-              EJH=PARU(153+10*IHIGG)
-            ENDIF
-            IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1.
-            ETAREJ=EJC*EJH*PHIPRE
-            ETAIMJ=EJC*EJH*PHIPIM
-          ELSEIF(J.EQ.3*MSTP(1)+1) THEN
-C...W loops: loop integral and charges.
-            ETAREJ=0.5+0.75*EPS*(1.+(2.-EPS)*PHIRE)
-            ETAIMJ=0.75*EPS*(2.-EPS)*PHIIM
-            IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
-              ETAREJ=ETAREJ*PARU(155+10*IHIGG)
-              ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
-            ENDIF
-          ELSE
-C...Charged H loops: loop integral and charges.
-            FACHHH=(PMAS(24,1)/PMAS(37,1))**2*
-     &      PARU(158+10*IHIGG+2*(IHIGG/3))
-            ETAREJ=EPS*(1.-EPS*PHIRE)*FACHHH
-            ETAIMJ=-EPS**2*PHIIM*FACHHH
-          ENDIF
-          ETARE=ETARE+ETAREJ
-          ETAIM=ETAIM+ETAIMJ
-  230     CONTINUE
-          ETA2=ETARE**2+ETAIM**2
-          WDTP(I)=(AEM/PARU(1))**2*0.5*ETA2
-        ELSEIF(I.EQ.15) THEN
-C...H0 -> gamma + Z0; quark, lepton, W and H+- loop contributions
-          ETARE=0.
-          ETAIM=0.
-          JMAX=3*MSTP(1)+1
-          IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
-          DO 240 J=1,JMAX
-          IF(J.LE.2*MSTP(1)) THEN
-            EJ=KCHG(J,1)/3.
-            AJ=SIGN(1.,EJ+0.1)
-            VJ=AJ-4.*EJ*XWV
-            EPS=(2.*PMAS(J,1))**2/SH
-            EPSP=(2.*PMAS(J,1)/PMAS(23,1))**2
-          ELSEIF(J.LE.3*MSTP(1)) THEN
-            JL=2*(J-2*MSTP(1))-1
-            EJ=KCHG(10+JL,1)/3.
-            AJ=SIGN(1.,EJ+0.1)
-            VJ=AJ-4.*EJ*XWV
-            EPS=(2.*PMAS(10+JL,1))**2/SH
-            EPSP=(2.*PMAS(10+JL,1)/PMAS(23,1))**2
-          ELSE
-            EPS=(2.*PMAS(24,1))**2/SH
-            EPSP=(2.*PMAS(24,1)/PMAS(23,1))**2
-          ENDIF
-C...Loop integrals; functions of eps=4m^2/shat and eps'=4m^2/m_Z^2.
-          IF(EPS.LE.1.) THEN
-            ROOT=SQRT(1.-EPS)
-            IF(EPS.GT.1.E-4) THEN
-              RLN=LOG((1.+ROOT)/(1.-ROOT))
-            ELSE
-              RLN=LOG(4./EPS-2.)
-            ENDIF
-            PHIRE=-0.25*(RLN**2-PARU(1)**2)
-            PHIIM=0.5*PARU(1)*RLN
-            PSIRE=0.5*ROOT*RLN
-            PSIIM=-0.5*ROOT*PARU(1)
-          ELSE
-            PHIRE=(ASIN(1./SQRT(EPS)))**2
-            PHIIM=0.
-            PSIRE=SQRT(EPS-1.)*ASIN(1./SQRT(EPS))
-            PSIIM=0.
-          ENDIF
-          IF(EPSP.LE.1.) THEN
-            ROOT=SQRT(1.-EPSP)
-            IF(EPSP.GT.1.E-4) THEN
-              RLN=LOG((1.+ROOT)/(1.-ROOT))
-            ELSE
-              RLN=LOG(4./EPSP-2.)
-            ENDIF
-            PHIREP=-0.25*(RLN**2-PARU(1)**2)
-            PHIIMP=0.5*PARU(1)*RLN
-            PSIREP=0.5*ROOT*RLN
-            PSIIMP=-0.5*ROOT*PARU(1)
-          ELSE
-            PHIREP=(ASIN(1./SQRT(EPSP)))**2
-            PHIIMP=0.
-            PSIREP=SQRT(EPSP-1.)*ASIN(1./SQRT(EPSP))
-            PSIIMP=0.
-          ENDIF
-          FXYRE=EPS*EPSP/(8.*(EPS-EPSP))*(1.+EPS*EPSP/(EPS-EPSP)*(PHIRE-
-     &    PHIREP)+2.*EPS/(EPS-EPSP)*(PSIRE-PSIREP))
-          FXYIM=EPS**2*EPSP/(8.*(EPS-EPSP)**2)*(EPSP*(PHIIM-PHIIMP)+
-     &    2.*(PSIIM-PSIIMP))
-          F1RE=-EPS*EPSP/(2.*(EPS-EPSP))*(PHIRE-PHIREP)
-          F1IM=-EPS*EPSP/(2.*(EPS-EPSP))*(PHIIM-PHIIMP)
-          IF(J.LE.3*MSTP(1)) THEN
-C...Fermion loops: loop integral different for A0; charges.
-            IF(IHIGG.EQ.3) FXYRE=0.
-            IF(IHIGG.EQ.3) FXYIM=0.
-            IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
-              EJC=-3.*EJ*VJ
-              EJH=PARU(151+10*IHIGG)
-            ELSEIF(J.LE.2*MSTP(1)) THEN
-              EJC=-3.*EJ*VJ
-              EJH=PARU(152+10*IHIGG)
-            ELSE
-              EJC=-EJ*VJ
-              EJH=PARU(153+10*IHIGG)
-            ENDIF
-            IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1.
-            ETAREJ=EJC*EJH*(FXYRE-0.25*F1RE)
-            ETAIMJ=EJC*EJH*(FXYIM-0.25*F1IM)
-          ELSEIF(J.EQ.3*MSTP(1)+1) THEN
-C...W loops: loop integral and charges.
-            HEPS=(1.+2./EPS)*XW/XW1-(5.+2./EPS)
-            ETAREJ=-XW1*((3.-XW/XW1)*F1RE+HEPS*FXYRE)
-            ETAIMJ=-XW1*((3.-XW/XW1)*F1IM+HEPS*FXYIM)
-            IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
-              ETAREJ=ETAREJ*PARU(155+10*IHIGG)
-              ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
-            ENDIF
-          ELSE
-C...Charged H loops: loop integral and charges.
-            FACHHH=(PMAS(24,1)/PMAS(37,1))**2*(1.-2.*XW)*
-     &      PARU(158+10*IHIGG+2*(IHIGG/3))
-            ETAREJ=FACHHH*FXYRE
-            ETAIMJ=FACHHH*FXYIM
-          ENDIF
-          ETARE=ETARE+ETAREJ
-          ETAIM=ETAIM+ETAIMJ
-  240     CONTINUE
-          ETA2=(ETARE**2+ETAIM**2)/(XW*XW1)
-          WDTP(I)=(AEM/PARU(1))**2*(1.-PMAS(23,1)**2/SH)**3*ETA2
-          WID2=WIDS(23,2)
-        ELSEIF(I.LE.17) THEN
-C...H0 -> Z0 + Z0, W+ + W-
-          PM1=PMAS(IABS(KFDP(IDC,1)),1)
-          PG1=PMAS(IABS(KFDP(IDC,1)),2)
-          IF(MINT(62).GE.1) THEN
-            IF(MSTP(42).EQ.0.OR.(4.*(PM1+10.*PG1)**2.LT.SH.AND.
-     &      CKIN(46).LT.CKIN(45).AND.CKIN(48).LT.CKIN(47).AND.
-     &      MAX(CKIN(45),CKIN(47)).LT.PM1-10.*PG1)) THEN
-              MOFSV(IHIGG,I-15)=0
-              WIDW=(1.-4.*RM1+12.*RM1**2)*SQRT(MAX(0.,1.-4.*RM1))
-              WID2=1.
-            ELSE
-              MOFSV(IHIGG,I-15)=1
-              RMAS=SQRT(MAX(0.,SH))
-              CALL PYOFSH(1,KFLA,KFDP(IDC,1),KFDP(IDC,2),RMAS,WIDW,WID2)
-              WIDWSV(IHIGG,I-15)=WIDW
-              WID2SV(IHIGG,I-15)=WID2
-            ENDIF
-          ELSE
-            IF(MOFSV(IHIGG,I-15).EQ.0) THEN
-              WIDW=(1.-4.*RM1+12.*RM1**2)*SQRT(MAX(0.,1.-4.*RM1))
-              WID2=1.
-            ELSE
-              WIDW=WIDWSV(IHIGG,I-15)
-              WID2=WID2SV(IHIGG,I-15)
-            ENDIF
-          ENDIF
-          WDTP(I)=WIDW/(2.*(18-I))
-          IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
-     &    PARU(138+I+10*IHIGG)**2
-          WID2=WID2*WIDS(7+I,1)
-        ELSEIF(I.EQ.18.AND.KFLA.EQ.35) THEN
-C***H'0 -> Z0 + H0 (not yet implemented).
-        ELSEIF(I.EQ.19.AND.KFLA.EQ.35) THEN
-C...H'0 -> H0 + H0.
-          WDTP(I)=PARU(176)**2*0.25*PMAS(23,1)**4/SH**2*
-     &    SQRT(MAX(0.,1.-4.*RM1))
-          WID2=WIDS(25,2)**2
-        ELSEIF(I.EQ.20.AND.KFLA.EQ.35) THEN
-C...H'0 -> A0 + A0.
-          WDTP(I)=PARU(177)**2*0.25*PMAS(23,1)**4/SH**2*
-     &    SQRT(MAX(0.,1.-4.*RM1))
-          WID2=WIDS(36,2)**2
-        ELSEIF(I.EQ.18.AND.KFLA.EQ.36) THEN
-C...A0 -> Z0 + H0.
-          WDTP(I)=PARU(186)**2*0.5*SQRT(MAX(0.,(1.-RM1-RM2)**2-
-     &    4.*RM1*RM2))**3
-          WID2=WIDS(23,2)*WIDS(25,2)
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  250   CONTINUE
-      ELSEIF(KFLA.EQ.32) THEN
-C...Z'0:
-        ICASE=1
-        XWC=1./(16.*XW*XW1)
-        FACH=AEM/3.*XWC*SH
-        VINT(117)=0.
-  260   CONTINUE
-        IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
-          VINT(111)=0.
-          VINT(112)=0.
-          VINT(113)=0.
-          VINT(114)=0.
-          VINT(115)=0.
-          VINT(116)=0.
-        ENDIF
-        IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
-          KFAI=IABS(MINT(15))
-          EI=KCHG(KFAI,1)/3.
-          AI=SIGN(1.,EI+0.1)
-          VI=AI-4.*EI*XWV
-          KFAIC=1
-          IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
-          IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
-          IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
-          VPI=PARU(119+2*KFAIC)
-          API=PARU(120+2*KFAIC)
-          SQMZ=PMAS(23,1)**2
-          HZ=FACH*VINT(117)
-          SQMZP=PMAS(32,1)**2
-          HZP=FACH*WDTP(0)
-          IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
-     &    MSTP(44).EQ.7) VINT(111)=1.
-          IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=
-     &    2.*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
-          IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=
-     &    2.*XWC*SH*(SH-SQMZP)/((SH-SQMZP)**2+HZP**2)
-          IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
-     &    MSTP(44).EQ.7) VINT(114)=XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
-          IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=
-     &    2.*XWC**2*SH**2*((SH-SQMZ)*(SH-SQMZP)+HZ*HZP)/
-     &    (((SH-SQMZ)**2+HZ**2)*((SH-SQMZP)**2+HZP**2))
-          IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
-     &    MSTP(44).EQ.7) VINT(116)=XWC**2*SH**2/((SH-SQMZP)**2+HZP**2)
-        ENDIF
-        DO 270 I=1,MDCY(32,3)
-        IDC=I+MDCY(32,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 270
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1..OR.MDME(IDC,1).LT.0) GOTO 270
-        WID2=1.
-        IF(I.LE.16) THEN
-          IF(I.LE.8) THEN
-C...Z'0 -> q + q~
-            EF=KCHG(I,1)/3.
-            AF=SIGN(1.,EF+0.1)
-            VF=AF-4.*EF*XWV
-            VPF=PARU(123-2*MOD(I,2))
-            APF=PARU(124-2*MOD(I,2))
-            FCOF=3.*RADC
-            IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1.)
-            IF(I.EQ.6.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-            IF((I.EQ.7.OR.I.EQ.8).AND.MSTP(49).GE.1) WID2=WIDS(20+I,1)
-          ELSEIF(I.LE.16) THEN
-C...Z'0 -> l+ + l-, nu + nu~
-            EF=KCHG(I+2,1)/3.
-            AF=SIGN(1.,EF+0.1)
-            VF=AF-4.*EF*XWV
-            VPF=PARU(127-2*MOD(I,2))
-            APF=PARU(128-2*MOD(I,2))
-            FCOF=1.
-            IF((I.EQ.15.OR.I.EQ.16).AND.MSTP(49).GE.1) WID2=WIDS(14+I,1)
-          ENDIF
-          BE34=SQRT(MAX(0.,1.-4.*RM1))
-          IF(ICASE.EQ.1) THEN
-            WDTPZ=FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-            WDTP(I)=FCOF*(VPF**2*(1.+2.*RM1)+APF**2*(1.-4.*RM1))*BE34
-          ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
-            WDTP(I)=FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
-     &      EF*VF+EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
-     &      VF**2+(VI*VPI+AI*API)*VINT(115)*VF*VPF+(VPI**2+API**2)*
-     &      VINT(116)*VPF**2)*(1.+2.*RM1)+((VI**2+AI**2)*VINT(114)*
-     &      AF**2+(VI*VPI+AI*API)*VINT(115)*AF*APF+(VPI**2+API**2)*
-     &      VINT(116)*APF**2)*(1.-4.*RM1))*BE34
-          ELSEIF(MINT(61).EQ.2) THEN
-            FGGF=FCOF*EF**2*(1.+2.*RM1)*BE34
-            FGZF=FCOF*EF*VF*(1.+2.*RM1)*BE34
-            FGZPF=FCOF*EF*VPF*(1.+2.*RM1)*BE34
-            FZZF=FCOF*(VF**2*(1.+2.*RM1)+AF**2*(1.-4.*RM1))*BE34
-            FZZPF=FCOF*(VF*VPF*(1.+2.*RM1)+AF*APF*(1.-4.*RM1))*BE34
-            FZPZPF=FCOF*(VPF**2*(1.+2.*RM1)+APF**2*(1.-4.*RM1))*BE34
-          ENDIF
-        ELSEIF(I.EQ.17) THEN
-C...Z'0 -> W+ + W-
-          WDTPZP=PARU(129)**2*XW1**2*
-     &    SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))**3*
-     &    (1.+10.*RM1+10.*RM2+RM1**2+RM2**2+10.*RM1*RM2)
-          IF(ICASE.EQ.1) THEN
-            WDTPZ=0.
-            WDTP(I)=WDTPZP
-          ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
-            WDTP(I)=(VPI**2+API**2)*VINT(116)*WDTPZP
-          ELSEIF(MINT(61).EQ.2) THEN
-            FGGF=0.
-            FGZF=0.
-            FGZPF=0.
-            FZZF=0.
-            FZZPF=0.
-            FZPZPF=WDTPZP
-          ENDIF
-          WID2=WIDS(24,1)
-        ELSEIF(I.EQ.18) THEN
-C...Z'0 -> H+ + H-
-          CZC=2.*(1.-2.*XW)
-          BE34C=(1.-4.*RM1)*SQRT(MAX(0.,1.-4.*RM1))
-          IF(ICASE.EQ.1) THEN
-            WDTPZ=0.25*PARU(142)**2*CZC**2*BE34C
-            WDTP(I)=0.25*PARU(143)**2*CZC**2*BE34C
-          ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
-            WDTP(I)=0.25*(EI**2*VINT(111)+PARU(142)*EI*VI*VINT(112)*
-     &      CZC+PARU(143)*EI*VPI*VINT(113)*CZC+PARU(142)**2*
-     &      (VI**2+AI**2)*VINT(114)*CZC**2+PARU(142)*PARU(143)*
-     &      (VI*VPI+AI*API)*VINT(115)*CZC**2+PARU(143)**2*
-     &      (VPI**2+API**2)*VINT(116)*CZC**2)*BE34C
-          ELSEIF(MINT(61).EQ.2) THEN
-            FGGF=0.25*BE34C
-            FGZF=0.25*PARU(142)*CZC*BE34C
-            FGZPF=0.25*PARU(143)*CZC*BE34C
-            FZZF=0.25*PARU(142)**2*CZC**2*BE34C
-            FZZPF=0.25*PARU(142)*PARU(143)*CZC**2*BE34C
-            FZPZPF=0.25*PARU(143)**2*CZC**2*BE34C
-          ENDIF
-          WID2=WIDS(37,1)
-        ELSEIF(I.EQ.19) THEN
-C...Z'0 -> Z0 + gamma.
-        ELSEIF(I.EQ.20) THEN
-C...Z'0 -> Z0 + H0
-          FLAM=SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))
-          WDTPZP=PARU(145)**2*4.*ABS(1.-2.*XW)*(3.*RM1+0.25*FLAM**2)*
-     &    FLAM
-          IF(ICASE.EQ.1) THEN
-            WDTPZ=0.
-            WDTP(I)=WDTPZP
-          ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
-            WDTP(I)=(VPI**2+API**2)*VINT(116)*WDTPZP
-          ELSEIF(MINT(61).EQ.2) THEN
-            FGGF=0.
-            FGZF=0.
-            FGZPF=0.
-            FZZF=0.
-            FZZPF=0.
-            FZPZPF=WDTPZP
-          ENDIF
-          WID2=WIDS(23,2)*WIDS(25,2)
-        ELSEIF(I.EQ.21.OR.I.EQ.22) THEN
-C...Z' -> H0 + A0 or H'0 + A0.
-          BE34C=SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))**3
-          IF(I.EQ.21) THEN
-            CZAH=PARU(186)
-            CZPAH=PARU(188)
-          ELSE
-            CZAH=PARU(187)
-            CZPAH=PARU(189)
-          ENDIF
-          IF(ICASE.EQ.1) THEN
-            WDTPZ=CZAH**2*BE34C
-            WDTP(I)=CZPAH**2*BE34C
-          ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
-            WDTP(I)=(CZAH**2*(VI**2+AI**2)*VINT(114)+CZAH*CZPAH*
-     &      (VI*VPI+AI*API)*VINT(115)+CZPAH**2*(VPI**2+API**2)*
-     &      VINT(116))*BE34C
-          ELSEIF(MINT(61).EQ.2) THEN
-            FGGF=0.
-            FGZF=0.
-            FGZPF=0.
-            FZZF=CZAH**2*BE34C
-            FZZPF=CZAH*CZPAH*BE34C
-            FZPZPF=CZPAH**2*BE34C
-          ENDIF
-          IF(I.EQ.21) WID2=WIDS(25,2)*WIDS(36,2)
-          IF(I.EQ.22) WID2=WIDS(35,2)*WIDS(36,2)
-        ENDIF
-        IF(ICASE.EQ.1) THEN
-          VINT(117)=VINT(117)+WDTPZ
-          WDTP(0)=WDTP(0)+WDTP(I)
-        ENDIF
-        IF(MDME(IDC,1).GT.0) THEN
-          IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
-     &    (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
-            WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-            WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-            WDTE(I,0)=WDTE(I,MDME(IDC,1))
-            WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-          ENDIF
-          IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
-            IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
-     &      MSTP(44).EQ.7) VINT(111)=VINT(111)+FGGF*WID2
-            IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=VINT(112)+
-     &      FGZF*WID2
-            IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=VINT(113)+
-     &      FGZPF*WID2
-            IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
-     &      MSTP(44).EQ.7) VINT(114)=VINT(114)+FZZF*WID2
-            IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=VINT(115)+
-     &      FZZPF*WID2
-            IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
-     &      MSTP(44).EQ.7) VINT(116)=VINT(116)+FZPZPF*WID2
-          ENDIF
-        ENDIF
-  270   CONTINUE
-        IF(MINT(61).GE.1) ICASE=3-ICASE
-        IF(ICASE.EQ.2) GOTO 260
-      ELSEIF(KFLA.EQ.34) THEN
-C...W'+/-:
-        DO 280 I=1,MDCY(34,3)
-        IDC=I+MDCY(34,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 280
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 280
-        WID2=1.
-        IF(I.LE.20) THEN
-          IF(I.LE.16) THEN
-C...W'+/- -> q + q~'
-            FCOF=3.*RADC*(PARU(131)**2+PARU(132)**2)*
-     &      VCKM((I-1)/4+1,MOD(I-1,4)+1)
-            IF(KFLR.GT.0) THEN
-              IF(MOD(I,4).EQ.3.AND.MSTP(48).GE.1) WID2=WIDS(26,2)
-              IF(MOD(I,4).EQ.0.AND.MSTP(49).GE.1) WID2=WIDS(28,2)
-              IF(I.GE.13.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,3)
-            ELSE
-              IF(MOD(I,4).EQ.3.AND.MSTP(48).GE.1) WID2=WIDS(26,3)
-              IF(MOD(I,4).EQ.0.AND.MSTP(49).GE.1) WID2=WIDS(28,3)
-              IF(I.GE.13.AND.MSTP(49).GE.1) WID2=WID2*WIDS(27,2)
-            ENDIF
-          ELSEIF(I.LE.20) THEN
-C...W'+/- -> l+/- + nu
-            FCOF=PARU(133)**2+PARU(134)**2
-            IF(KFLR.GT.0) THEN
-              IF(I.EQ.20.AND.MSTP(49).GE.1) WID2=WIDS(29,3)*WIDS(30,2)
-            ELSE
-              IF(I.EQ.20.AND.MSTP(49).GE.1) WID2=WIDS(29,2)*WIDS(30,3)
-            ENDIF
-          ENDIF
-          WDTP(I)=FCOF*0.5*(2.-RM1-RM2-(RM1-RM2)**2)*
-     &    SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))
-        ELSEIF(I.EQ.21) THEN
-C...W'+/- -> W+/- + Z0
-          WDTP(I)=PARU(135)**2*0.5*XW1*(RM1/RM2)*
-     &    SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))**3*
-     &    (1.+10.*RM1+10.*RM2+RM1**2+RM2**2+10.*RM1*RM2)
-          IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(23,2)
-          IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(23,2)
-        ELSEIF(I.EQ.23) THEN
-C...W'+/- -> W+/- + H0
-          FLAM=SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))
-          WDTP(I)=PARU(146)**2*2.*(3.*RM1+0.25*FLAM**2)*FLAM
-          IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
-          IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  280   CONTINUE
-      ELSEIF(KFLA.EQ.37) THEN
-C...H+/-:
-        DO 290 I=1,MDCY(37,3)
-        IDC=I+MDCY(37,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 290
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 290
-        WID2=1.
-        IF(I.LE.4) THEN
-C...H+/- -> q + q~'
-          RM1R=RM1
-          IF(MSTP(37).EQ.1.AND.MSTP(2).GE.1) RM1R=RM1*
-     &    (LOG(MAX(4.,PARP(37)**2*RM1*SH/PARU(117)**2))/
-     &    LOG(MAX(4.,SH/PARU(117)**2)))**(24./(33.-2.*MSTU(118)))
-          WDTP(I)=3.*RADC*((RM1R*PARU(141)**2+RM2/PARU(141)**2)*
-     &    (1.-RM1R-RM2)-4.*RM1R*RM2)*
-     &    SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))
-          IF(KFLR.GT.0) THEN
-            IF(I.EQ.3.AND.MSTP(48).GE.1) WID2=WIDS(26,2)
-            IF(I.EQ.4.AND.MSTP(49).GE.1) WID2=WIDS(27,3)*WIDS(28,2)
-          ELSE
-            IF(I.EQ.3.AND.MSTP(48).GE.1) WID2=WIDS(26,3)
-            IF(I.EQ.4.AND.MSTP(49).GE.1) WID2=WIDS(27,2)*WIDS(28,3)
-          ENDIF
-        ELSEIF(I.LE.8) THEN
-C...H+/- -> l+/- + nu
-          WDTP(I)=((RM1*PARU(141)**2+RM2/PARU(141)**2)*(1.-RM1-RM2)-
-     &    4.*RM1*RM2)*SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))
-          IF(KFLR.GT.0) THEN
-            IF(I.EQ.8.AND.MSTP(49).GE.1) WID2=WIDS(29,3)*WIDS(30,2)
-          ELSE
-            IF(I.EQ.8.AND.MSTP(49).GE.1) WID2=WIDS(29,2)*WIDS(30,3)
-          ENDIF
-        ELSEIF(I.EQ.9) THEN
-C...H+/- -> W+/- + H0.
-          WDTP(I)=PARU(195)**2*0.5*SQRT(MAX(0.,(1.-RM1-RM2)**2-
-     &    4.*RM1*RM2))**3
-          IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
-          IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  290   CONTINUE
-      ELSEIF(KFLA.EQ.38) THEN
-C...Techni-eta.
-        DO 300 I=1,MDCY(38,3)
-        IDC=I+MDCY(38,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 300
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 300
-        WID2=1.
-        IF(I.LE.2) THEN
-          WDTP(I)=RM1*SH*SQRT(MAX(0.,1.-4.*RM1))/
-     &    (4.*PARU(1)*PARP(46)**2)
-          IF(I.EQ.2.AND.MSTP(48).GE.1) WID2=WIDS(26,1)
-        ELSE
-          WDTP(I)=5.*AS**2*SH/(96.*PARU(1)**3*PARP(46)**2)
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  300   CONTINUE
-      ELSEIF(KFLA.EQ.39) THEN
-C...LQ (leptoquark).
-        DO 310 I=1,MDCY(39,3)
-        IDC=I+MDCY(39,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 310
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 310
-        WDTP(I)=PARU(151)*SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))**3
-        WID2=1.
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  310   CONTINUE
-      ELSEIF(KFLA.EQ.40) THEN
-C...R:
-        DO 320 I=1,MDCY(40,3)
-        IDC=I+MDCY(40,2)-1
-        IF(MDME(IDC,1).LT.0) GOTO 320
-        RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
-        RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
-        IF(SQRT(RM1)+SQRT(RM2).GT.1.) GOTO 320
-        WID2=1.
-        IF(I.LE.6) THEN
-C...R -> q + q~'
-          FCOF=3.*RADC
-        ELSEIF(I.LE.9) THEN
-C...R -> l+ + l'-
-          FCOF=1.
-        ENDIF
-        WDTP(I)=FCOF*(2.-RM1-RM2-(RM1-RM2)**2)*
-     &  SQRT(MAX(0.,(1.-RM1-RM2)**2-4.*RM1*RM2))
-        IF(KFLR.GT.0) THEN
-          IF(I.EQ.4.AND.MSTP(48).GE.1) WID2=WIDS(26,3)
-          IF(I.EQ.5.AND.MSTP(49).GE.1) WID2=WIDS(27,3)
-          IF(I.EQ.6.AND.MSTP(49).GE.1) WID2=WIDS(26,2)*WIDS(28,3)
-          IF(I.EQ.9.AND.MSTP(49).GE.1) WID2=WIDS(29,3)
-        ELSE
-          IF(I.EQ.4.AND.MSTP(48).GE.1) WID2=WIDS(26,2)
-          IF(I.EQ.5.AND.MSTP(49).GE.1) WID2=WIDS(27,2)
-          IF(I.EQ.6.AND.MSTP(49).GE.1) WID2=WIDS(26,3)*WIDS(28,2)
-          IF(I.EQ.9.AND.MSTP(49).GE.1) WID2=WIDS(29,2)
-        ENDIF
-        WDTP(0)=WDTP(0)+WDTP(I)
-        IF(MDME(IDC,1).GT.0) THEN
-          WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
-          WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
-          WDTE(I,0)=WDTE(I,MDME(IDC,1))
-          WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
-        ENDIF
-  320   CONTINUE
-      ENDIF
-      MINT(61)=0
-      MINT(62)=0
-      RETURN
-      END
diff --git a/PYTHIA/pythia/pyxtot.F b/PYTHIA/pythia/pyxtot.F
deleted file mode 100644 (file)
index 50a1c89..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-C*********************************************************************
-      SUBROUTINE PYXTOT
-C...Parametrizes total, elastic and diffractive cross-sections
-C...for different energies and beams. Donnachie-Landshoff for
-C...total and Schuler-Sjostrand for elastic and diffractive.
-C...Process code IPROC:
-C...=  1 : p + p;
-C...=  2 : pbar + p;
-C...=  3 : pi+ + p;
-C...=  4 : pi- + p;
-C...=  5 : pi0 + p;
-C...=  6 : phi + p;
-C...=  7 : J/psi + p;
-C...= 11 : rho + rho;
-C...= 12 : rho + phi;
-C...= 13 : rho + J/psi;
-C...= 14 : phi + phi;
-C...= 15 : phi + J/psi;
-C...= 16 : J/psi + J/psi;
-C...= 21 : gamma + p (DL);
-C...= 22 : gamma + p (VDM).
-C...= 23 : gamma + pi (DL);
-C...= 24 : gamma + pi (VDM);
-C...= 25 : gamma + gamma (DL);
-C...= 26 : gamma + gamma (VDM).
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
-      COMMON/PYINT1/MINT(400),VINT(400)
-      COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
-      COMMON/PYINT7/SIGT(0:6,0:6,0:5)
-      SAVE /LUDAT1/
-      SAVE /PYPARS/,/PYINT1/,/PYINT5/,/PYINT7/
-      DIMENSION NPROC(30),XPAR(30),YPAR(30),IHADA(20),IHADB(20),
-     &PMHAD(4),BHAD(4),BETP(4),IFITSD(20),IFITDD(20),CEFFS(10,10),
-     &CEFFD(10,10),SIGTMP(6,0:5)
-C...Common constants.
-      DATA EPS/0.0808/, ETA/-0.4525/, ALP/0.25/, CRES/2./, PMRC/1.062/,
-     &SMP/0.880/, FACEL/0.0511/, FACSD/0.0336/, FACDD/0.0084/
-C...Number of multiple processes to be evaluated (= 0 : undefined).
-      DATA NPROC/7*1,3*0,6*1,4*0,4*3,2*6,4*0/
-C...X and Y parameters of sigmatot = X * s**epsilon + Y * s**(-eta).
-      DATA XPAR/2*21.70,3*13.63,10.01,0.970,3*0.,
-     &8.56,6.29,0.609,4.62,0.447,0.0434,4*0.,
-     &0.0677,0.0534,0.0425,0.0335,2.11E-4,1.31E-4,4*0./
-      DATA YPAR/56.08,98.39,27.56,36.02,31.79,-1.51,-0.146,3*0.,
-     &18.02,-0.86,-0.083,0.041,-0.0039,0.00038,4*0.,
-     &0.129,0.115,0.081,0.072,2.97E-4,2.36E-4,4*0./
-C...Beam and target hadron class:
-C...= 1 : p/n ; = 2 : pi/rho/omega; = 3 : phi; = 4 : J/psi.
-      DATA IHADA/2*1,3*2,3,4,3*0,3*2,2*3,4,4*0/
-      DATA IHADB/7*1,3*0,2,3,4,3,2*4,4*0/
-C...Characteristic class masses, slope parameters, beta = sqrt(X).
-      DATA PMHAD/0.938,0.770,1.020,3.097/
-      DATA BHAD/2.3,1.4,1.4,0.23/
-      DATA BETP/4.658,2.926,2.149,0.208/
-C...Fitting constants used in parametrizations of diffractive results.
-      DATA IFITSD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
-      DATA IFITDD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
-      DATA ((CEFFS(J1,J2),J2=1,10),J1=1,10)/
-     & 0.213, 0.0, -0.47, 150., 0.213, 0.0, -0.47, 150., 0., 0.,
-     & 0.213, 0.0, -0.47, 150., 0.267, 0.0, -0.47, 100., 0., 0.,
-     & 0.213, 0.0, -0.47, 150., 0.232, 0.0, -0.47, 110., 0., 0.,
-     & 0.213, 7.0, -0.55, 800., 0.115, 0.0, -0.47, 110., 0., 0.,
-     & 0.267, 0.0, -0.46,  75., 0.267, 0.0, -0.46,  75., 0., 0.,
-     & 0.232, 0.0, -0.46,  85., 0.267, 0.0, -0.48, 100., 0., 0.,
-     & 0.115, 0.0, -0.50,  90., 0.267, 6.0, -0.56, 420., 0., 0.,
-     & 0.232, 0.0, -0.48, 110., 0.232, 0.0, -0.48, 110., 0., 0.,
-     & 0.115, 0.0, -0.52, 120., 0.232, 6.0, -0.56, 470., 0., 0.,
-     & 0.115, 5.5, -0.58, 570., 0.115, 5.5, -0.58, 570., 0., 0./
-      DATA ((CEFFD(J1,J2),J2=1,10),J1=1,10)/
-     & 3.11, -7.34,  9.71, 0.068, -0.42, 1.31, -1.37,  35.0,  118., 0.,
-     & 3.11, -7.10,  10.6, 0.073, -0.41, 1.17, -1.41,  31.6,   95., 0.,
-     & 3.12, -7.43,  9.21, 0.067, -0.44, 1.41, -1.35,  36.5,  132., 0.,
-     & 3.13, -8.18, -4.20, 0.056, -0.71, 3.12, -1.12,  55.2, 1298., 0.,
-     & 3.11, -6.90,  11.4, 0.078, -0.40, 1.05, -1.40,  28.4,   78., 0.,
-     & 3.11, -7.13,  10.0, 0.071, -0.41, 1.23, -1.34,  33.1,  105., 0.,
-     & 3.12, -7.90, -1.49, 0.054, -0.64, 2.72, -1.13,  53.1,  995., 0.,
-     & 3.11, -7.39,  8.22, 0.065, -0.44, 1.45, -1.36,  38.1,  148., 0.,
-     & 3.18, -8.95, -3.37, 0.057, -0.76, 3.32, -1.12,  55.6, 1472., 0.,
-     & 4.18, -29.2,  56.2, 0.074, -1.36, 6.67, -1.14, 116.2, 6532., 0./
-C...Parameters. Combinations of the energy.
-      AEM=PARU(101)
-      PMTH=PARP(102)
-      S=VINT(2)
-      SRT=VINT(1)
-      SEPS=S**EPS
-      SETA=S**ETA
-      SLOG=LOG(S)
-C...Ratio of gamma/pi (for rescaling in structure functions).
-      VINT(281)=(XPAR(22)*SEPS+YPAR(22)*SETA)/
-     &(XPAR(5)*SEPS+YPAR(5)*SETA)
-      IF(MINT(50).NE.1) RETURN
-C...Order flavours of incoming particles: KF1 < KF2.
-      IF(IABS(MINT(11)).LE.IABS(MINT(12))) THEN
-        KF1=IABS(MINT(11))
-        KF2=IABS(MINT(12))
-        IORD=1
-      ELSE
-        KF1=IABS(MINT(12))
-        KF2=IABS(MINT(11))
-        IORD=2
-      ENDIF
-      ISGN12=ISIGN(1,MINT(11)*MINT(12))
-C...Find process number (for lookup tables).
-      IF(KF1.GT.1000) THEN
-        IPROC=1
-        IF(ISGN12.LT.0) IPROC=2
-      ELSEIF(KF1.GT.100.AND.KF2.GT.1000) THEN
-        IPROC=3
-        IF(ISGN12.LT.0) IPROC=4
-        IF(KF1.EQ.111) IPROC=5
-      ELSEIF(KF1.GT.100) THEN
-        IPROC=11
-      ELSEIF(KF2.GT.1000) THEN
-        IPROC=21
-        IF(MINT(123).EQ.2) IPROC=22
-      ELSEIF(KF2.GT.100) THEN
-        IPROC=23
-        IF(MINT(123).EQ.2) IPROC=24
-      ELSE
-        IPROC=25
-        IF(MINT(123).EQ.2) IPROC=26
-      ENDIF
-C... Number of multiple processes to be stored; beam/target side.
-      NPR=NPROC(IPROC)
-      MINT(101)=1
-      MINT(102)=1
-      IF(NPR.EQ.3) THEN
-        MINT(100+IORD)=4
-      ELSEIF(NPR.EQ.6) THEN
-        MINT(101)=4
-        MINT(102)=4
-      ENDIF
-      N1=0
-      IF(MINT(101).EQ.4) N1=4
-      N2=0
-      IF(MINT(102).EQ.4) N2=4
-C...Do not do any more for user-set or undefined cross-sections.
-      IF(MSTP(31).LE.0) RETURN
-      IF(NPR.EQ.0) CALL LUERRM(26,
-     &'(PYXTOT:) cross section for this process not yet implemented')
-C...Parameters. Combinations of the energy.
-      AEM=PARU(101)
-      PMTH=PARP(102)
-      S=VINT(2)
-      SRT=VINT(1)
-      SEPS=S**EPS
-      SETA=S**ETA
-      SLOG=LOG(S)
-C...Loop over multiple processes (for VDM).
-      DO 110 I=1,NPR
-      IF(NPR.EQ.1) THEN
-        IPR=IPROC
-      ELSEIF(NPR.EQ.3) THEN
-        IPR=I+4
-        IF(KF2.LT.1000) IPR=I+10
-      ELSEIF(NPR.EQ.6) THEN
-        IPR=I+10
-      ENDIF
-C...Evaluate hadron species, mass, slope contribution and fit number.
-      IHA=IHADA(IPR)
-      IHB=IHADB(IPR)
-      PMA=PMHAD(IHA)
-      PMB=PMHAD(IHB)
-      BHA=BHAD(IHA)
-      BHB=BHAD(IHB)
-      ISD=IFITSD(IPR)
-      IDD=IFITDD(IPR)
-C...Skip if energy too low relative to masses.
-      DO 100 J=0,5
-      SIGTMP(I,J)=0.
-  100 CONTINUE
-      IF(SRT.LT.1.5*(PMA+PMB)) GOTO 110
-C...Total cross-section. Elastic slope parameter and cross-section.
-      SIGTMP(I,0)=XPAR(IPR)*SEPS+YPAR(IPR)*SETA
-      BEL=2.*BHA+2.*BHB+4.*SEPS-4.2
-      SIGTMP(I,1)=FACEL*SIGTMP(I,0)**2/BEL
-C...Diffractive scattering A + B -> X + B.
-      BSD=2.*BHB
-      SQML=(PMA+PMTH)**2
-      SQMU=S*CEFFS(ISD,1)+CEFFS(ISD,2)
-      SUM1=LOG((BSD+2.*ALP*LOG(S/SQML))/
-     &(BSD+2.*ALP*LOG(S/SQMU)))/(2.*ALP)
-      BXB=CEFFS(ISD,3)+CEFFS(ISD,4)/S
-      SUM2=CRES*LOG(1.+((PMA+PMRC)/(PMA+PMTH))**2)/
-     &(BSD+2.*ALP*LOG(S/((PMA+PMTH)*(PMA+PMRC)))+BXB)
-      SIGTMP(I,2)=FACSD*XPAR(IPR)*BETP(IHB)*MAX(0.,SUM1+SUM2)
-C...Diffractive scattering A + B -> A + X.
-      BSD=2.*BHA
-      SQML=(PMB+PMTH)**2
-      SQMU=S*CEFFS(ISD,5)+CEFFS(ISD,6)
-      SUM1=LOG((BSD+2.*ALP*LOG(S/SQML))/
-     &(BSD+2.*ALP*LOG(S/SQMU)))/(2.*ALP)
-      BAX=CEFFS(ISD,7)+CEFFS(ISD,8)/S
-      SUM2=CRES*LOG(1.+((PMB+PMRC)/(PMB+PMTH))**2)/
-     &(BSD+2.*ALP*LOG(S/((PMB+PMTH)*(PMB+PMRC)))+BAX)
-      SIGTMP(I,3)=FACSD*XPAR(IPR)*BETP(IHA)*MAX(0.,SUM1+SUM2)
-C...Order single diffractive correctly.
-      IF(IORD.EQ.2) THEN
-        SIGSAV=SIGTMP(I,2)
-        SIGTMP(I,2)=SIGTMP(I,3)
-        SIGTMP(I,3)=SIGSAV
-      ENDIF
-C...Double diffractive scattering A + B -> X1 + X2.
-      YEFF=LOG(S*SMP/((PMA+PMTH)*(PMB+PMTH))**2)
-      DEFF=CEFFD(IDD,1)+CEFFD(IDD,2)/SLOG+CEFFD(IDD,3)/SLOG**2
-      SUM1=DEFF+YEFF*(LOG(MAX(1E-10,YEFF/DEFF))-1.)/(2.*ALP)
-      IF(YEFF.LE.0) SUM1=0.
-      SQMU=S*(CEFFD(IDD,4)+CEFFD(IDD,5)/SLOG+CEFFD(IDD,6)/SLOG**2)
-      SLUP=LOG(MAX(1.1,S/(ALP*(PMA+PMTH)**2*(PMB+PMTH)*(PMB+PMRC))))
-      SLDN=LOG(MAX(1.1,S/(ALP*SQMU*(PMB+PMTH)*(PMB+PMRC))))
-      SUM2=CRES*LOG(1.+((PMB+PMRC)/(PMB+PMTH))**2)*LOG(SLUP/SLDN)/
-     &(2.*ALP)
-      SLUP=LOG(MAX(1.1,S/(ALP*(PMB+PMTH)**2*(PMA+PMTH)*(PMA+PMRC))))
-      SLDN=LOG(MAX(1.1,S/(ALP*SQMU*(PMA+PMTH)*(PMA+PMRC))))
-      SUM3=CRES*LOG(1.+((PMA+PMRC)/(PMA+PMTH))**2)*LOG(SLUP/SLDN)/
-     &(2.*ALP)
-      BXX=CEFFD(IDD,7)+CEFFD(IDD,8)/SRT+CEFFD(IDD,9)/S
-      SLRR=LOG(S/(ALP*(PMA+PMTH)*(PMA+PMRC)*(PMB+PMTH)*(PMB*PMRC)))
-      SUM4=CRES**2*LOG(1.+((PMA+PMRC)/(PMA+PMTH))**2)*
-     &LOG(1.+((PMB+PMRC)/(PMB+PMTH))**2)/MAX(0.1,2.*ALP*SLRR+BXX)
-      SIGTMP(I,4)=FACDD*XPAR(IPR)*MAX(0.,SUM1+SUM2+SUM3+SUM4)
-C...Non-diffractive by unitarity.
-      SIGTMP(I,5)=SIGTMP(I,0)-SIGTMP(I,1)-SIGTMP(I,2)-SIGTMP(I,3)-
-     &SIGTMP(I,4)
-  110 CONTINUE
-C...Put temporary results in output array: only one process.
-      IF(MINT(101).EQ.1.AND.MINT(102).EQ.1) THEN
-        DO 120 J=0,5
-        SIGT(0,0,J)=SIGTMP(1,J)
-  120   CONTINUE
-C...Beam multiple processes.
-      ELSEIF(MINT(101).EQ.4.AND.MINT(102).EQ.1) THEN
-        DO 140 I=1,4
-        CONV=AEM/PARP(160+I)
-        I1=MAX(1,I-1)
-        DO 130 J=0,5
-        SIGT(I,0,J)=CONV*SIGTMP(I1,J)
-  130   CONTINUE
-  140   CONTINUE
-        DO 150 J=0,5
-        SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
-  150   CONTINUE
-C...Target multiple processes.
-      ELSEIF(MINT(101).EQ.1.AND.MINT(102).EQ.4) THEN
-        DO 170 I=1,4
-        CONV=AEM/PARP(160+I)
-        IV=MAX(1,I-1)
-        DO 160 J=0,5
-        SIGT(0,I,J)=CONV*SIGTMP(IV,J)
-  160   CONTINUE
-  170   CONTINUE
-        DO 180 J=0,5
-        SIGT(0,0,J)=SIGT(0,1,J)+SIGT(0,2,J)+SIGT(0,3,J)+SIGT(0,4,J)
-  180   CONTINUE
-C...Both beam and target multiple processes.
-      ELSE
-        DO 210 I1=1,4
-        DO 200 I2=1,4
-        CONV=AEM**2/(PARP(160+I1)*PARP(160+I2))
-        IF(I1.LE.2) THEN
-          IV=MAX(1,I2-1)
-        ELSEIF(I2.LE.2) THEN
-          IV=MAX(1,I1-1)
-        ELSEIF(I1.EQ.I2) THEN
-          IV=2*I1-2
-        ELSE
-          IV=5
-        ENDIF
-        DO 190 J=0,5
-        JV=J
-        IF(I2.GT.I1.AND.(J.EQ.2.OR.J.EQ.3)) JV=5-J
-        SIGT(I1,I2,J)=CONV*SIGTMP(IV,JV)
-  190   CONTINUE
-  200   CONTINUE
-  210   CONTINUE
-        DO 230 J=0,5
-        DO 220 I=1,4
-        SIGT(I,0,J)=SIGT(I,1,J)+SIGT(I,2,J)+SIGT(I,3,J)+SIGT(I,4,J)
-        SIGT(0,I,J)=SIGT(1,I,J)+SIGT(2,I,J)+SIGT(3,I,J)+SIGT(4,I,J)
-  220   CONTINUE
-        SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
-  230   CONTINUE
-      ENDIF
-C...Scale up uniformly for Donnachie-Landshoff parametrization.
-      IF(IPROC.EQ.21.OR.IPROC.EQ.23.OR.IPROC.EQ.25) THEN
-        RFAC=(XPAR(IPROC)*SEPS+YPAR(IPROC)*SETA)/SIGT(0,0,0)
-        DO 260 I1=0,N1
-        DO 250 I2=0,N2
-        DO 240 J=0,5
-        SIGT(I1,I2,J)=RFAC*SIGT(I1,I2,J)
-  240   CONTINUE
-  250   CONTINUE
-  260   CONTINUE
-      ENDIF
-      RETURN
-      END
diff --git a/PYTHIA/pythia/rkbbv.F b/PYTHIA/pythia/rkbbv.F
deleted file mode 100644 (file)
index 636d592..0000000
+++ /dev/null
@@ -1,572 +0,0 @@
-C*********************************************************************
-      SUBROUTINE RKBBV(AK1,AK2,AP1,AP2,ALEP1,ALEP2,IMC,RESULT)
-C...The following routines have been written by Ronald Kleiss,
-C...to evaluate the matrix element for g + g -> Z + q + qbar,
-C...with massive quarks (e.g. q = b).
-C...They have been modified, so that all routines and commonblocks
-C...have names beginning with RK, and so that some unnecessary
-C...initialization information is not printed. Further, COMPLEX*16
-C...has been changed to COMPLEX and REAL*8 to DOUBLE PRECISION
-C...(in a few cases to REAL), so as to make the program better
-C...transportable.
-* THE CROSS SECTION FOR
-* G(K1) + G(K2) ---> Z(QV) + B(P1) + B_BAR(P2)
-*                     |
-*                     +---> L(LEP1) + LEP_BAR(LEP2)
-* THE B QUARKS HAVE TO BE ON-SHELL, THE LEPTONS MASSLESS
-* THE OPTION IMC=0 PERFORMS THE STANDARD SPIN SUM
-* THE OPTION IMC=1 PERFORMS THE CALCULATION FOR 'NMC' RANDOMLY
-* CHOSEN HELICITY STATES WHICH IMPROVES THE
-* SPEED BY A FACTOR 32/NMC
-      SAVE
-      REAL AK1(0:3),AK2(0:3),AP1(0:3),AP2(0:3),ALEP1(0:3),ALEP2(0:3)
-      DOUBLE PRECISION K1(0:4),K2(0:4),P1(0:4),P2(0:4),LEP1(0:4),
-     &LEP2(0:4)
-      REAL RMQ,RMV,RGV,GSTR,VB,AB,VL,AL
-      INTEGER INIT
-      INTEGER J1,J2,J3,J4,J5
-      INTEGER K,IMC,KLOW,KUPP,NMC,OLDIMC
-      DOUBLE PRECISION RKRAND,RKDOT,MULT,RMB
-C      INTEGER CHKGL1,CHKGL2
-      DOUBLE PRECISION QV(0:4),R1(0:4),R2(0:4),Q1(0:4),Q2(0:4)
-      DOUBLE PRECISION PP2(0:4)
-      DOUBLE PRECISION CROSS
-      INTEGER LG1,LG2,LV,L1,L2,HELIX,HELI
-      COMPLEX ZFACV,ZFAC1,ZFAC2
-      DOUBLE PRECISION ZFACS,ZFACB,ZFACBB,ZFACL
-      COMPLEX RKZSF
-      COMPLEX ZFAC
-      DOUBLE PRECISION VPA,VMA
-      DOUBLE PRECISION RR1(0:4),RR2(0:4)
-      DOUBLE PRECISION ZD12V,ZD21V,ZD1V2,ZD2V1,ZDV12,ZDV21
-      COMPLEX RKZF,ZN12V,ZN21V,ZN1V2,ZN2V1,ZNV12,ZNV21
-      COMPLEX ZDIA1,ZDIA2,ZDIA3,ZDIA4,ZDIA5,ZDIA6,ZDIA7,ZDIA8
-      COMPLEX ZC12V,ZC21V,ZCV12,ZCV21
-      DOUBLE PRECISION S,ZD11,ZD22
-      COMPLEX ZABEL,ZNABEL,ZNABEM
-      REAL RESULT
-      DOUBLE PRECISION THIS1
-      COMPLEX ANSS(-1:1,1:4,-1:1,1:4)
-      INTEGER DONS(-1:1,1:4,-1:1,1:4)
-      COMPLEX ANSF(-1:1,1:4,1:8,-1:1,1:4)
-      INTEGER DONF(-1:1,1:4,1:8,-1:1,1:4)
-C      PARAMETER(CHKGL1=0,CHKGL2=0)
-      PARAMETER(NMC=1)
-      COMMON/RKZSCO/ANSS,DONS
-      COMMON/RKZFCO/ANSF,DONF
-      COMMON/RKBBVC/RMQ,RMV,RGV,VB,AB,VL,AL
-      DATA INIT/0/
-* CHECK ON EITHER FIRST CALL OR CHANGE IN IMC
-      IF(INIT.EQ.0.OR.IMC.NE.OLDIMC) THEN
-        OLDIMC=IMC
-        INIT=1
-* REPRODUCE INPUT DATA
-C       WRITE(6,*) ' ----------------------------------------'
-C       WRITE(6,*) ' BBV: G G ---> B B_BAR Z, Z ---> L L_BAR'
-C       WRITE(6,*) ' B QUARK MASS      = ',RMB,' GEV'
-C       WRITE(6,*) ' BOSON MASS        = ',RMV,' GEV'
-C       WRITE(6,*) ' BOSON WIDTH       = ',RGV,' GEV'
-C       WRITE(6,*) ' B VECTOR C.       = ',VB
-C       WRITE(6,*) ' B AXIAL C.        = ',AB
-C       WRITE(6,*) ' LEPTON VECTOR C.  = ',VL
-C       WRITE(6,*) ' LEPTON AXIAL C.   = ',AL
-        RMB=RMQ
-* ADJUST STRONG COUPLING SO AS TO GIVE EFFECTIVELY ALPHA_S=1
-        GSTR=4D0*DSQRT(DATAN(1D0))
-C       WRITE(6,*) ' QCD COUPLING      = ',GSTR
-* SEE WETHER GAUGE CHECKS ARE REQUIRED
-C        IF(CHKGL1.EQ.1) THEN
-C          WRITE(6,*) ' GAUGE CHECK ON GLUON 1'
-C        ENDIF
-C        IF(CHKGL2.EQ.1) THEN
-C          WRITE(6,*) ' GAUGE CHECK ON GLUON 2'
-C        ENDIF
-* SEE WETHER HELICITY MONTE CARLO IS REQUIRED
-        IF(IMC.EQ.0) THEN
-          KLOW=1
-          KUPP=32
-          MULT=1D0
-          WRITE(6,*) ' SUM OVER HELICITIES SELECTED'
-        ELSEIF(IMC.EQ.1) THEN
-          KLOW=1
-          KUPP=NMC
-          MULT=32D0/(1D0*NMC)
-C         WRITE(6,*) ' MONTE CARLO OVER HELICITES SELECTED'
-C         WRITE(6,*) ' WITH ',NMC,' HELICITY TRIALS'
-C         WRITE(6,*) ' RESULT THEN MULTIPLIED BY ',MULT
-        ELSE
-          WRITE(6,*) ' ERROR: WRONG OPTION IMC=',IMC
-        ENDIF
-C       WRITE(6,*) ' THE RESULT IS BASED ON ALPHA_S=1,',
-C    .  ' MUST BE MULTIPLIED BY ALPHA_S**2'
-C       WRITE(6,*) ' ----------------------------------------'
-C       WRITE(6,800)'NO.','LG1','LG2','LV','L1','L2','AMP**2'
-C 800   FORMAT(' ',6A4,A10)
-      ENDIF
-* INITIALIZE THE ARRAYS ANSS,DONS
-      DO 130 J1=-1,1,2
-        DO 120 J2=1,4
-          DO 110 J3=-1,1,2
-            DO 100 J4=1,4
-              ANSS(J1,J2,J3,J4)=(0.,0.)
-              DONS(J1,J2,J3,J4)=0
-  100       CONTINUE
-  110     CONTINUE
-  120   CONTINUE
-  130 CONTINUE
-* INITIALIZE THE ARRAYS ANSF,DONF
-      DO 180 J1=-1,1,2
-        DO 170 J2=1,4
-          DO 160 J3=1,8
-            DO 150 J4=-1,1,2
-              DO 140 J5=1,4
-                 ANSF(J1,J2,J3,J4,J5)=(0.,0.)
-                 DONF(J1,J2,J3,J4,J5)=0
-  140         CONTINUE
-  150       CONTINUE
-  160     CONTINUE
-  170   CONTINUE
-  180 CONTINUE
-* EQUATE THE (0:4) INTERNAL MOMENTA TO THE (0:3) ARGUMENTS MOMENTA
-      DO 190 K=0,3
-        K1(K)=AK1(K)
-        K2(K)=AK2(K)
-        P1(K)=AP1(K)
-        P2(K)=AP2(K)
-        LEP1(K)=ALEP1(K)
-        LEP2(K)=ALEP2(K)
-  190 CONTINUE
-* ASSIGN LABELS TO THE MOMENTA FOR RECOGNITION
-* THE MOMENTA K1,K2,LEP1,LEP2 (AND R1,R2) CAN OCCUR AS THE MASSLESS
-* MOMENTA IN ARGUMENTS NO.2 AND 6 IN ZF, AND NO.2 AND 4 IN RKZSF
-* R1,R2 AND Q1,Q2 ARE SOME OF THESE, AND CAN ALSO OCCUR
-* AS ARGUMENTS NO.2 AND 6 IN ZF AND NO.2 AND 4 IN RKZSF
-        K1(4)=1D0
-        K2(4)=2D0
-        LEP1(4)=3D0
-        LEP2(4)=4D0
-* THE OTHER MOMENTA P1,P2 AND THE VARIOUS RR1,RR2 CAN OCCUR ONLY
-* AS ARGUMENT NO.3 IN ZF
-        P1(4)=1D0
-        P2(4)=2D0
-* THE TOTAL BOSON MOMENTUM
-* NO NEED TO ASSIGN 4TH COMPONENT LABEL SINCE IT IS NOT USED
-      DO 200 K=0,3
-        QV(K)=LEP1(K)+LEP2(K)
-  200 CONTINUE
-* DEFINE THE AUXILIARY VECTORS: THE RESULT SHOULD BE THE SAME
-* FOR EVERY NON-SINGULAR CHOICE OF THE AUXILIARY VECTORS
-* SINGULAR CHOICES ARE R1=K1 OR R2=K2
-* THESE ARE OBTAINED BY PUTTING CHKGL1=1 OR CHKGL2=1
-* AUXILIARY VECTOR FOR GLUON 1
-* NEED TO ASSIGN ALSO 4TH COMPONENT LABELS HERE!
-C      IF(CHKGL1.EQ.1) THEN
-C        DO 210 K=0,4
-C          R1(K)=K1(K)
-C  210   CONTINUE
-C      ELSE
-        DO 210 K=0,4
-          R1(K)=K2(K)
-  210   CONTINUE
-C      ENDIF
-* AUXILIARY VECTOR FOR GLUON 2
-C      IF(CHKGL2.EQ.1) THEN
-C        DO 230 K=0,4
-C          R2(K)=K2(K)
-C  230   CONTINUE
-C      ELSE
-        DO 220 K=0,4
-          R2(K)=K1(K)
-  220   CONTINUE
-C      ENDIF
-* AUXILIARY VECTOR FOR THE B QUARK
-      DO 230 K=0,4
-        Q1(K)=LEP1(K)
-  230 CONTINUE
-* AUXILIARY VECTOR FOR THE B_BAR QUARK
-      DO 240 K=0,4
-        Q2(K)=LEP2(K)
-  240 CONTINUE
-* INITIALIZE THE CROSS SECTION TO ZERO
-      CROSS=0D0
-* SINCE P2 CORRESPONDS TO AN ANTIFERMION WE HAVE TO
-* CHANGE ITS SIGN MOMENTARILY: PUT THE OLD RESULT IN PP2(0:3)
-* BU MAKE SURE TO KEEP THE LABEL POSITIVE!
-      DO 250 K=0,3
-        PP2(K)=P2(K)
-        P2(K)=-P2(K)
-  250 CONTINUE
-* COMPUTE OVERALL FACTORS: FOR EVERY SLASHED POLARIZATION THERE
-* APPEARS A FACTOR OF 2 IN ADDITION TO THE NORMALIZATION
-* FOLLOWING FROM THE CHISHOLM IDENTITY
-* IN PRINCIPLE THE OVERALL FACTORS ARE DIFFERENT FOR EACH DIFFERENT
-* HELICITY COMPBINATION BUT IN THIS CASE WE ARE ONLY INTERESTED IN
-* THEIR ABSOLUTE VALUE (NO TRANSVERSE GLUON POLARIZATION ETC.)
-* SO WE CAN TAKE THIS OUT OF THE LOOP, EXCEPT FOR THE NONTRIVIAL
-* HELICITY DEPENDENCE IN 'ZFACV'
-* OVERALL FACTOR FOR THE BOSON CURRENT, WITH BREIT-WIGNER
-      ZFACV=2./CMPLX(SNGL(RKDOT(QV,QV))-RMV**2,RMV*RGV)
-* OVERALL FACTOR FOR GLUON 1
-C      IF(CHKGL1.EQ.1) THEN
-C        ZFAC1=(1.,0.)
-C      ELSE
-* ORIGINAL FORM: ZFAC1=2D0*LG1/(DSQRT(2D0)*RKZPR(-LG1,K1,R1))
-        ZFAC1=DSQRT(2D0)/RKZSF(1,K1,-1,R1)
-C      ENDIF
-* OVERALL FACTOR FOR GLUON 2
-C      IF(CHKGL2.EQ.1) THEN
-C        ZFAC2=1D0
-C      ELSE
-* ORIGINAL FORM: ZFAC2=2D0*LG2/(DSQRT(2D0)*RKZPR(-LG2,K2,R2))
-        ZFAC2=DSQRT(2D0)/RKZSF(1,K2,-1,R2)
-C      ENDIF
-* OVERALL FACTOR FOR QCD COUPLINGS
-      ZFACS=GSTR**2
-* OVERALL FACTOR FOR THE B QUARK
-      ZFACB=1/DSQRT(2D0*RKDOT(P1,Q1))
-* OVERALL FACTOR FOR THE B_BAR QUARK
-      ZFACBB=1D0/DSQRT(2D0*RKDOT(PP2,Q2))
-* FINAL OVERALL FACTOR
-      ZFAC=ZFACV*ZFAC1*ZFAC2*ZFACS*ZFACB*ZFACBB
-* DO A BIG LOOP OVER ALL HELICITIES OR A RANDOM CHOICE OF HELICITIES
-* NB: FUNNY INDENTATION HERE!
-* ALSO INITIALIZE COUNTERS FOR RKZSF AND ZF
-      DO 340 HELIX=KLOW,KUPP
-      IF(IMC.EQ.0) THEN
-        CALL RKHLPK(HELIX,LG1,LG2,LV,L1,L2)
-      ELSE
-        HELI=IDINT(32D0*RKRAND(HELIX))+1
-        CALL RKHLPK(HELI,LG1,LG2,LV,L1,L2)
-      ENDIF
-* DETERMINE THE 'LEFT-' AND 'RIGHT-'HANDED COUPLINGS OF THE B TO THE Z
-      VPA=VB+LV*AB
-      VMA=VB-LV*AB
-* AND THE LEPTON HELICITY FACTOR
-      ZFACL=(VL-LV*AL)
-* FIRST PART OF THE RESULT: THE ABELIAN TERMS
-* COMPUTE THE NUMERATORS (ZN...) USING THE ZF FUNCTION
-* AND THE DENOMINATORS (ZD...) THE STANDARD WAY
-* THE INTERNAL FERMION MOMENTA ARE DIFFERENT IN EACH DIAGRAM
-* AND ARE DENOTED BY RR1 AND RR2
-* THE 4TH COMPONENT LABELS ARE NONTRIVIAL HERE: HAVING ALREADY
-* P1(4)=1 AND P2(4)=2 WE ALSO DEFINE
-* (P1-K1)(4)=3,
-* (P1-K1-K2)(4)=(P1-K2-K1)(4)=4
-* (P1-K2)(4)=5
-* (P1-K1+QV)(4)=6
-* (P1-K2+QV)(5)=7
-* (P1+QV)(4)=8
-* SO THAT IN THE VARIOUS DIAGRAMS WE HAVE
-* IN ZN12V: RR1(4)=3, RR2(4)=4
-* IN ZN21V: RR1(4)=5, RR2(4)=4
-* IN ZN1V2: RR1(4)=3, RR2(4)=6
-* IN ZN2V1: RR1(4)=5, RR2(4)=7
-* IN ZNV12: RR1(4)=8, RR2(4)=6
-* IN ZNV21: RR1(4)=8, RR2(4)=7
-      DO 260 K=0,3
-        RR1(K)=P1(K)-K1(K)
-        RR2(K)=RR1(K)-K2(K)
-  260 CONTINUE
-      RR1(4)=3D0
-      RR2(4)=4D0
-      ZD12V=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
-      ZN12V =
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,LG2,R2)
-     .  *RKZF(LG2,K2,RR2,RMB,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,LG2,R2)
-     .  *RKZF(LG2,K2,RR2,RMB,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,-LG2,K2)
-     .  *RKZF(-LG2,R2,RR2,RMB,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,-LG2,K2)
-     .  *RKZF(-LG2,R2,RR2,RMB,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,LG2,R2)
-     .  *RKZF(LG2,K2,RR2,RMB,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,LG2,R2)
-     .  *RKZF(LG2,K2,RR2,RMB,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,-LG2,K2)
-     .  *RKZF(-LG2,R2,RR2,RMB,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,-LG2,K2)
-     .  *RKZF(-LG2,R2,RR2,RMB,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-      DO 270 K=0,3
-        RR1(K)=P1(K)-K2(K)
-        RR2(K)=RR1(K)-K1(K)
-  270 CONTINUE
-      RR1(4)=5D0
-      RR2(4)=4D0
-      ZD21V=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
-      ZN21V =
-     .   RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,LG1,R1)
-     .  *RKZF(LG1,K1,RR2,RMB,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,LG1,R1)
-     .  *RKZF(LG1,K1,RR2,RMB,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,-LG1,K1)
-     .  *RKZF(-LG1,R1,RR2,RMB,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,-LG1,K1)
-     .  *RKZF(-LG1,R1,RR2,RMB,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,LG1,R1)
-     .  *RKZF(LG1,K1,RR2,RMB,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,LG1,R1)
-     .  *RKZF(LG1,K1,RR2,RMB,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,-LG1,K1)
-     .  *RKZF(-LG1,R1,RR2,RMB,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,-LG1,K1)
-     .  *RKZF(-LG1,R1,RR2,RMB,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-      DO 280 K=0,3
-        RR1(K)=P1(K)-K1(K)
-        RR2(K)=RR1(K)+QV(K)
-  280 CONTINUE
-      RR1(4)=3D0
-      RR2(4)=6D0
-      ZD1V2=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
-      ZN1V2 =
-     .   RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,LV,LEP2)
-     .  *RKZF(LV,LEP1,RR2,RMB,LG2,R2)  *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,LV,LEP2)
-     .  *RKZF(LV,LEP1,RR2,RMB,-LG2,K2) *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,-LV,LEP1)
-     .  *RKZF(-LV,LEP2,RR2,RMB,LG2,R2) *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,-LV,LEP1)
-     .  *RKZF(-LV,LEP2,RR2,RMB,-LG2,K2)*RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,LV,LEP2)
-     .  *RKZF(LV,LEP1,RR2,RMB,LG2,R2)  *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,LV,LEP2)
-     .  *RKZF(LV,LEP1,RR2,RMB,-LG2,K2) *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,-LV,LEP1)
-     .  *RKZF(-LV,LEP2,RR2,RMB,LG2,R2) *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,-LV,LEP1)
-     .  *RKZF(-LV,LEP2,RR2,RMB,-LG2,K2)*RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
-      DO 290 K=0,3
-        RR1(K)=P1(K)-K2(K)
-        RR2(K)=RR1(K)+QV(K)
-  290 CONTINUE
-      RR1(4)=5D0
-      RR2(4)=7D0
-      ZD2V1=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
-      ZN2V1 =
-     .   RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,LV,LEP2)
-     .  *RKZF(LV,LEP1,RR2,RMB,LG1,R1)  *RKZF(LG1,K1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,LV,LEP2)
-     .  *RKZF(LV,LEP1,RR2,RMB,-LG1,K1) *RKZF(-LG1,R1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,-LV,LEP1)
-     .  *RKZF(-LV,LEP2,RR2,RMB,LG1,R1) *RKZF(LG1,K1,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,-LV,LEP1)
-     .  *RKZF(-LV,LEP2,RR2,RMB,-LG1,K1)*RKZF(-LG1,R1,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,LV,LEP2)
-     .  *RKZF(LV,LEP1,RR2,RMB,LG1,R1)  *RKZF(LG1,K1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,LV,LEP2)
-     .  *RKZF(LV,LEP1,RR2,RMB,-LG1,K1) *RKZF(-LG1,R1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,-LV,LEP1)
-     .  *RKZF(-LV,LEP2,RR2,RMB,LG1,R1) *RKZF(LG1,K1,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,-LV,LEP1)
-     .  *RKZF(-LV,LEP2,RR2,RMB,-LG1,K1)*RKZF(-LG1,R1,P2,RMB,L2,Q2)*VMA
-      DO 300 K=0,3
-        RR1(K)=P1(K)+QV(K)
-        RR2(K)=RR1(K)-K1(K)
-  300 CONTINUE
-      RR1(4)=8D0
-      RR2(4)=6D0
-      ZDV12=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
-      ZNV12 =
-     .   RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,LG1,R1)
-     .  *RKZF(LG1,K1,RR2,RMB,LG2,R2)  *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,LG1,R1)
-     .  *RKZF(LG1,K1,RR2,RMB,-LG2,K2) *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,-LG1,K1)
-     .  *RKZF(-LG1,R1,RR2,RMB,LG2,R2) *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,-LG1,K1)
-     .  *RKZF(-LG1,R1,RR2,RMB,-LG2,K2)*RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,LG1,R1)
-     .  *RKZF(LG1,K1,RR2,RMB,LG2,R2)  *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,LG1,R1)
-     .  *RKZF(LG1,K1,RR2,RMB,-LG2,K2) *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,-LG1,K1)
-     .  *RKZF(-LG1,R1,RR2,RMB,LG2,R2) *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,-LG1,K1)
-     .  *RKZF(-LG1,R1,RR2,RMB,-LG2,K2)*RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
-      DO 310 K=0,3
-        RR1(K)=P1(K)+QV(K)
-        RR2(K)=RR1(K)-K2(K)
-  310 CONTINUE
-      RR1(4)=8D0
-      RR2(4)=7D0
-      ZDV21=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
-      ZNV21 =
-     .   RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,LG2,R2)
-     .  *RKZF(LG2,K2,RR2,RMB,LG1,R1)  *RKZF(LG1,K1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,LG2,R2)
-     .  *RKZF(LG2,K2,RR2,RMB,-LG1,K1) *RKZF(-LG1,R1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,-LG2,K2)
-     .  *RKZF(-LG2,R2,RR2,RMB,LG1,R1) *RKZF(LG1,K1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,-LG2,K2)
-     .  *RKZF(-LG2,R2,RR2,RMB,-LG1,K1)*RKZF(-LG1,R1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,LG2,R2)
-     .  *RKZF(LG2,K2,RR2,RMB,LG1,R1)  *RKZF(LG1,K1,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,LG2,R2)
-     .  *RKZF(LG2,K2,RR2,RMB,-LG1,K1) *RKZF(-LG1,R1,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,-LG2,K2)
-     .  *RKZF(-LG2,R2,RR2,RMB,LG1,R1) *RKZF(LG1,K1,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,-LG2,K2)
-     .  *RKZF(-LG2,R2,RR2,RMB,-LG1,K1)*RKZF(-LG1,R1,P2,RMB,L2,Q2)*VMA
-* COMPUTE THE DIAGRAMS SO FAR
-      ZDIA1=ZN12V/ZD12V
-      ZDIA2=ZN21V/ZD21V
-      ZDIA3=ZN1V2/ZD1V2
-      ZDIA4=ZN2V1/ZD2V1
-      ZDIA5=ZNV12/ZDV12
-      ZDIA6=ZNV21/ZDV21
-* SECOND PART OF THE RESULT: THE NONABELIAN PART.
-* THIS IS MADE UP PARTLY FROM THE ABELIAN PART AND PARTLY FROM
-* NEW PIECES
-* THE ASSIGNMENT OF THE 4TH COMPONENT LABELS IS NOW UNNECESSARY
-* FOR RR1 SINCE IT DOES NOT OCCUR IN ANY ZF HERE
-      S=2D0*RKDOT(K1,K2)
-      DO 320 K=0,3
-        RR1(K)=PP2(K)+QV(K)
-  320 CONTINUE
-      ZD11=S*(RKDOT(RR1,RR1)-RMB**2)
-      ZC12V =
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1) *RKZSF(LG1,K1,LG2,R2)
-     .  *RKZSF(LG2,K2,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1) *RKZSF(LG1,K1,LG2,R2)
-     .  *RKZSF(LG2,K2,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1) *RKZSF(LG1,K1,-LG2,K2)
-     .  *RKZSF(-LG2,R2,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG1,R1) *RKZSF(LG1,K1,-LG2,K2)
-     .  *RKZSF(-LG2,R2,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)*RKZSF(-LG1,R1,LG2,R2)
-     .  *RKZSF(LG2,K2,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)*RKZSF(-LG1,R1,LG2,R2)
-     .  *RKZSF(LG2,K2,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)*RKZSF(-LG1,R1,-LG2,K2)
-     .  *RKZSF(-LG2,R2,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG1,K1)*RKZSF(-LG1,R1,-LG2,K2)
-     .  *RKZSF(-LG2,R2,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-      ZC21V =
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2) *RKZSF(LG2,K2,LG1,R1)
-     .  *RKZSF(LG1,K1,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2) *RKZSF(LG2,K2,LG1,R1)
-     .  *RKZSF(LG1,K1,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2) *RKZSF(LG2,K2,-LG1,K1)
-     .  *RKZSF(-LG1,R1,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LG2,R2) *RKZSF(LG2,K2,-LG1,K1)
-     .  *RKZSF(-LG1,R1,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)*RKZSF(-LG2,R2,LG1,R1)
-     .  *RKZSF(LG1,K1,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)*RKZSF(-LG2,R2,LG1,R1)
-     .  *RKZSF(LG1,K1,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)*RKZSF(-LG2,R2,-LG1,K1)
-     .  *RKZSF(-LG1,R1,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LG2,K2)*RKZSF(-LG2,R2,-LG1,K1)
-     .  *RKZSF(-LG1,R1,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
-      ZDIA7=(-ZN12V+ZN21V)/ZD11-(ZC12V-ZC21V)/(2D0*S)
-      DO 330 K=0,3
-        RR1(K)=P1(K)+QV(K)
-  330 CONTINUE
-      ZD22=S*(RKDOT(RR1,RR1)-RMB**2)
-      ZCV12 =
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2) *RKZSF(LV,LEP1,LG1,R1)
-     .  *RKZSF(LG1,K1,LG2,R2)    *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2) *RKZSF(LV,LEP1,LG1,R1)
-     .  *RKZSF(LG1,K1,-LG2,K2)   *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2) *RKZSF(LV,LEP1,-LG1,K1)
-     .  *RKZSF(-LG1,R1,LG2,R2)   *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,LV,LEP2) *RKZSF(LV,LEP1,-LG1,K1)
-     .  *RKZSF(-LG1,R1,-LG2,K2)  *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)*RKZSF(-LV,LEP2,LG1,R1)
-     .  *RKZSF(LG1,K1,LG2,R2)    *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)*RKZSF(-LV,LEP2,LG1,R1)
-     .  *RKZSF(LG1,K1,-LG2,K2)   *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)*RKZSF(-LV,LEP2,-LG1,K1)
-     .  *RKZSF(-LG1,R1,LG2,R2)   *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
-     . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)*RKZSF(-LV,LEP2,-LG1,K1)
-     .  *RKZSF(-LG1,R1,-LG2,K2)  *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
-* THE FOURTH COMBINATION CAN BE GOTTEN FROM
-* THE FIRST THREE USING DIRAC ALGEBRA:
-* EPS1*EPS2*EPVS+EPS2*EPS1*EPSV = 2(EPS1.EPS2)*EPSV ETC.
-      ZCV21=ZC12V+ZC21V-ZCV12
-      ZDIA8=(-ZNV12+ZNV21)/ZD22-(ZCV12-ZCV21)/(2D0*S)
-* CONSTRUCT THE ABELIAN AND NONABELIAN PART
-      ZABEL= ZDIA1+ZDIA2+ZDIA3+ZDIA4+ZDIA5+ZDIA6
-      ZNABEL=ZDIA1-ZDIA2+ZDIA3-ZDIA4+ZDIA5-ZDIA6
-      ZNABEM=2D0*ZDIA7+2D0*ZDIA8
-      ZNABEL=ZNABEL-ZNABEM
-      ZABEL=ZABEL*ZFAC*ZFACL
-      ZNABEL=ZNABEL*ZFAC*ZFACL
-* INCLUDE COLOUR FACTORS:
-* (N**2-1)*(N**2-2)/(8*N) = 7/3 FOR THE ABELIAN PART
-* N*(N**2-1)/8 = 3 FOR THE NONABELIAN PART
-* AND ADD THE RESULT TO THE CROSS SECTION
-      THIS1=7D0/3D0*ABS(ZABEL)**2+3D0*ABS(ZNABEL)**2
-CC    WRITE(6,801)HELIX,LG1,LG2,LV,L1,L2,THIS1
-CC801 FORMAT(' ',6I4,D30.20)
-      CROSS=CROSS+THIS1
-* END OF THE BIG LOOP OVER HELICITIES
-  340 CONTINUE
-* DO NOT FORGET TO PUT P2 BACK TO ITS ORIGINAL VALUE IN PP2!
-      DO 350 K=0,3
-        P2(K)=PP2(K)
-  350 CONTINUE
-* ADD AVERAGING FACTORS:
-* 1/2 FOR EACH GLUON SPIN, 1/8 FOR EACH GLUON COLOUR
-      CROSS=CROSS/256D0
-* TAKE INTO ACCOUNT A POSSIBLE FACTOR FOR THE HELICITY SUM OPTION
-* AND RETURN THE FINAL RESULT
-      IF(IMC.EQ.1) CROSS=CROSS*MULT
-      RESULT=CROSS
-      END
diff --git a/PYTHIA/pythia/rkdot.F b/PYTHIA/pythia/rkdot.F
deleted file mode 100644 (file)
index 67561f4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-*==================================================================
-      FUNCTION RKDOT(P,Q)
-      DOUBLE PRECISION P(0:4),Q(0:4),RKDOT
-      RKDOT=P(0)*Q(0)-P(1)*Q(1)-P(2)*Q(2)-P(3)*Q(3)
-      END
diff --git a/PYTHIA/pythia/rkhlpk.F b/PYTHIA/pythia/rkhlpk.F
deleted file mode 100644 (file)
index d4dc035..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-*==================================================================
-      SUBROUTINE RKHLPK(NUM,LGL1,LGL2,LLV,LL1,LL2)
-      IMPLICIT INTEGER(A-Z)
-      SAVE
-      DIMENSION CONFIG(32,6)
-      DATA INIT/0/
-      IF(INIT.EQ.0) THEN
-        INIT=1
-        MUM=0
-        DO 140 GL1=1,-1,-2
-          DO 130 GL2=1,-1,-2
-            DO 120 LV=1,-1,-2
-              DO 110 L1=1,-1,-2
-                DO 100 L2=1,-1,-2
-                  MUM=MUM+1
-                  CONFIG(MUM,1)=GL1
-                  CONFIG(MUM,2)=GL2
-                  CONFIG(MUM,3)=LV
-                  CONFIG(MUM,4)=L1
-                  CONFIG(MUM,5)=L2
-  100           CONTINUE
-  110         CONTINUE
-  120       CONTINUE
-  130     CONTINUE
-  140   CONTINUE
-      ENDIF
-      LGL1=CONFIG(NUM,1)
-      LGL2=CONFIG(NUM,2)
-      LLV =CONFIG(NUM,3)
-      LL1 =CONFIG(NUM,4)
-      LL2 =CONFIG(NUM,5)
-      END
diff --git a/PYTHIA/pythia/rkrand.F b/PYTHIA/pythia/rkrand.F
deleted file mode 100644 (file)
index 99009b9..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-*==================================================================
-      FUNCTION RKRAND(IDUMMY)
-      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
-      SAVE
-      DATA INIT/0/
-      IF(INIT.EQ.0) THEN
-        INIT=1
-        X=DMOD(DSQRT(2D0),1D0)
-        Y=DMOD(DSQRT(3D0),1D0)
-        Z=DMOD(DSQRT(5D0),1D0)
-      ELSE
-        X=DMOD(X+Y+Z,1D0)
-        Y=DMOD(X+Y+Z,1D0)
-        Z=DMOD(X+Y+Z,1D0)
-      ENDIF
-      RKRAND=X
-      END
diff --git a/PYTHIA/pythia/rkzf.F b/PYTHIA/pythia/rkzf.F
deleted file mode 100644 (file)
index 33defe3..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-*==================================================================
-      FUNCTION RKZF(L1,P1,Q,RMB,L2,P2)
-* COMPUTES THE SCALAR STRUCTURE
-* U_BAR(L1,P1)(SLASH(Q)+RMB)U(L2,P2)
-      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
-      COMPLEX RKZF,RKZPR,RKZSF
-      COMPLEX ANSF(-1:1,1:4,1:8,-1:1,1:4)
-      INTEGER DONF(-1:1,1:4,1:8,-1:1,1:4)
-      COMMON/RKZFCO/ANSF,DONF
-      DIMENSION P1(0:4),P2(0:4),Q(0:4),R(0:4)
-* CHECK ON CORRECT LABEL INPUT
-      IP1=IDINT(P1(4))
-      IQ=IDINT(Q(4))
-      IP2=IDINT(P2(4))
-      IF(IABS(L1).NE.1.OR.IABS(L2).NE.1.OR.
-     . IP1.LT.1.OR.IP1.GT.4            .OR.
-     . IQ.LT.1.OR.IQ.GT.8              .OR.
-     . IP2.LT.1.OR.IP2.GT.4) THEN
-        WRITE(6,*) ' RKZF LABEL ERROR'
-        WRITE(6,*) 'L1=',L1,' IP1=',IP1,' IQ=',IQ,
-     .             ' L2=',L2,' IP2=',IP2
-        STOP
-      ENDIF
-* CHECK WHETHER THIS ONE HAS BEEN CALCULATED ALREADY
-      IF(DONF(L1,IP1,IQ,L2,IP2).EQ.0) THEN
-* THIS ONE NOT DONE YET: DO IT AND STORE THE RESULT IN ARRAY 'ANSF'
-        IF(L1.EQ.L2) THEN
-          A=2D0*RKDOT(Q,P2)
-C         IF(DABS(A).LT.(1D-10*P2(0)*Q(0))) THEN
-C...The check above is extended to following.
-          IF(ABS(A).LT.MAX(1D-8,ABS(1D-10*P2(0)*Q(0)))) THEN
-            ANSF(L1,IP1,IQ,L2,IP2)=(0.,0.)
-          ELSE
-            A=RKDOT(Q,Q)/A
-            DO 100 K=0,3
-              R(K)=Q(K)-A*P2(K)
-  100       CONTINUE
-            IF(R(0).GT.0D0) THEN
-              C=1D0
-            ELSE
-              DO 110 K=0,3
-                R(K)=-R(K)
-  110         CONTINUE
-              C=-1D0
-            ENDIF
-            ANSF(L1,IP1,IQ,L2,IP2)=C*RKZPR(L1,P1,R)*RKZPR(-L1,R,P2)
-          ENDIF
-        ELSEIF(L1.EQ.-L2) THEN
-          ANSF(L1,IP1,IQ,L2,IP2)=RMB*RKZSF(L1,P1,L2,P2)
-        ELSE
-          WRITE(6,*) ' ERROR IN RKZF: L1=',L1,'  L2=',L2
-          STOP
-        ENDIF
-        RKZF=ANSF(L1,IP1,IQ,L2,IP2)
-        DONF(L1,IP1,IQ,L2,IP2)=1
-      ELSE
-        RKZF=ANSF(L1,IP1,IQ,L2,IP2)
-      ENDIF
-      END
diff --git a/PYTHIA/pythia/rkzpr.F b/PYTHIA/pythia/rkzpr.F
deleted file mode 100644 (file)
index f77ec32..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*==================================================================
-      FUNCTION RKZPR(L,Q1,Q2)
-      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
-      COMPLEX RKZPR
-      DIMENSION Q1(0:4),Q2(0:4)
-      IF(IABS(L).NE.1) THEN
-        WRITE(6,*) ' RKZPR: ERROR   L=',L
-        STOP
-      ENDIF
-C...Introduce cutoff to check that R1 and R2 not zero.
-      R1=DSQRT(MAX(1D-10,Q1(0)-Q1(1)))
-      R2=DSQRT(MAX(1D-10,Q2(0)-Q2(1)))
-      RKZPR=CMPLX(SNGL(Q1(2)),SNGL(Q1(3)))*R2/R1
-     .     -CMPLX(SNGL(Q2(2)),SNGL(Q2(3)))*R1/R2
-      IF(L.EQ.-1) RKZPR=-CONJG(RKZPR)
-      END
diff --git a/PYTHIA/pythia/rkzsf.F b/PYTHIA/pythia/rkzsf.F
deleted file mode 100644 (file)
index 4a68228..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-*==================================================================
-      FUNCTION RKZSF(L1,P1,L2,P2)
-      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
-      COMPLEX RKZSF,RKZPR
-      COMPLEX ANSS(-1:1,1:4,-1:1,1:4)
-      INTEGER DONS(-1:1,1:4,-1:1,1:4)
-      COMMON/RKZSCO/ANSS,DONS
-      DIMENSION P1(0:4),P2(0:4)
-* CHECK ON CORRECT LABEL INPUT
-      IP1=IDINT(P1(4))
-      IP2=IDINT(P2(4))
-      IF(IABS(L1).NE.1.OR.IABS(L2).NE.1.OR.
-     . IP1.LT.1.OR.IP2.GT.4.OR.IP2.LT.1.OR.IP2.GT.4) THEN
-       WRITE(6,*)
-     .  ' RKZSF: ERROR L1=',L1,' L2=',L2,' IP1=',IP1,' IP2=',IP2
-       STOP
-      ENDIF
-* CHECK WHETER THIS ONE WAS ALREADY COMPUTED
-* DONS(,,,)=0: NOT YET COMPUTED, DONS(,,,)=1: ALREADY COMPUTED
-* IF NOT YET COMPUTED: COMPUTE IT, AND STORE IN ARRAY 'ANSS'
-* IF ALREADY COMPUTED: GET THE RESULT FROM ARRAY 'ANSS'
-      IF(DONS(L1,IP1,L2,IP2).EQ.0) THEN
-        IF(L1.EQ.L2) THEN
-          ANSS(L1,IP1,L2,IP2)=(0.,0.)
-        ELSE
-          ANSS(L1,IP1,L2,IP2)=RKZPR(L1,P1,P2)
-        ENDIF
-        DONS(L1,IP1,L2,IP2)=1
-      ENDIF
-      RKZSF=ANSS(L1,IP1,L2,IP2)
-      END
diff --git a/PYTHIA/pythia/structm.F b/PYTHIA/pythia/structm.F
deleted file mode 100644 (file)
index 14bcc3f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-C*********************************************************************
-      SUBROUTINE STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
-C...Dummy routine, to be removed when PDFLIB is to be linked.
-      COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
-      SAVE /LUDAT1/
-      DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
-C...Stop program if this routine is ever called.
-      WRITE(MSTU(11),5000)
-      IF(RLU(0).LT.10.) STOP
-      UPV=XX+QQ
-      DNV=XX+2.*QQ
-      USEA=XX+3.*QQ
-      DSEA=XX+4.*QQ
-      STR=XX+5.*QQ
-      CHM=XX+6.*QQ
-      BOT=XX+7.*QQ
-      TOP=XX+8.*QQ
-      GLU=XX+9.*QQ
-C...Format for error printout.
- 5000 FORMAT(1X,'Error: you did not link PDFLIB correctly.'/
-     &1X,'Dummy routine STRUCTM in PYTHIA file called instead.'/
-     &1X,'Execution stopped!')
-      RETURN
-      END
diff --git a/PYTHIA/test/test.F b/PYTHIA/test/test.F
deleted file mode 100644 (file)
index 75dd738..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-      PROGRAM JETTST
-C
-      EXTERNAL LUDATA,PYDATA
-
-      MPAR = 1
-C
-      CALL LUTEST(MPAR)
-      CALL PYTEST(MPAR)
-C
-      END