jetset74.f

00001 C********************************************************************* 
00002 C********************************************************************* 
00003 C*                                                                  ** 
00004 C*                                                 December 1993    ** 
00005 C*                                                                  ** 
00006 C*   The Lund Monte Carlo for Jet Fragmentation and e+e- Physics    ** 
00007 C*                                                                  ** 
00008 C*                        JETSET version 7.4                        ** 
00009 C*                                                                  ** 
00010 C*                        Torbjorn Sjostrand                        ** 
00011 C*                    CERN/TH, CH-1211 Geneva 23                    ** 
00012 C*                BITNET/EARN address TORSJO@CERNVM                 ** 
00013 C*                    Tel. +41 - 22 - 767 28 20                     ** 
00014 C*                                                                  ** 
00015 C*          LUSHOW is written together with Mats Bengtsson          ** 
00016 C*                                                                  ** 
00017 C*        Copyright Torbjorn Sjostrand and CERN, Geneva 1993        ** 
00018 C*                                                                  ** 
00019 C********************************************************************* 
00020 C********************************************************************* 
00021 C                                                                    * 
00022 C  List of subprograms in order of appearance, with main purpose     * 
00023 C  (S = subroutine, F = function, B = block data)                    * 
00024 C                                                                    * 
00025 C  S   LU1ENT   to fill one entry (= parton or particle)             * 
00026 C  S   LU2ENT   to fill two entries                                  * 
00027 C  S   LU3ENT   to fill three entries                                * 
00028 C  S   LU4ENT   to fill four entries                                 * 
00029 C  S   LUJOIN   to connect entries with colour flow information      * 
00030 C  S   LUGIVE   to fill (or query) commonblock variables             * 
00031 C  S   LUEXEC   to administrate fragmentation and decay chain        * 
00032 C  S   LUPREP   to rearrange showered partons along strings          * 
00033 C  S   LUSTRF   to do string fragmentation of jet system             * 
00034 C  S   LUINDF   to do independent fragmentation of one or many jets  * 
00035 C  S   LUDECY   to do the decay of a particle                        * 
00036 C  S   LUKFDI   to select parton and hadron flavours in fragm        * 
00037 C  S   LUPTDI   to select transverse momenta in fragm                * 
00038 C  S   LUZDIS   to select longitudinal scaling variable in fragm     * 
00039 C  S   LUSHOW   to do timelike parton shower evolution               * 
00040 C  S   LUBOEI   to include Bose-Einstein effects (crudely)           * 
00041 C  F   ULMASS   to give the mass of a particle or parton             * 
00042 C  S   LUNAME   to give the name of a particle or parton             * 
00043 C  F   LUCHGE   to give three times the electric charge              * 
00044 C  F   LUCOMP   to compress standard KF flavour code to internal KC  * 
00045 C  S   LUERRM   to write error messages and abort faulty run         * 
00046 C  F   ULALEM   to give the alpha_electromagnetic value              * 
00047 C  F   ULALPS   to give the alpha_strong value                       * 
00048 C  F   ULANGL   to give the angle from known x and y components      * 
00049 C  F   RLU      to provide a random number generator                 * 
00050 C  S   RLUGET   to save the state of the random number generator     * 
00051 C  S   RLUSET   to set the state of the random number generator      * 
00052 C  S   LUROBO   to rotate and/or boost an event                      * 
00053 C  S   LUEDIT   to remove unwanted entries from record               * 
00054 C  S   LULIST   to list event record or particle data                * 
00055 C  S   LULOGO   to write a logo for JETSET and PYTHIA                * 
00056 C  S   LUUPDA   to update particle data                              * 
00057 C  F   KLU      to provide integer-valued event information          * 
00058 C  F   PLU      to provide real-valued event information             * 
00059 C  S   LUSPHE   to perform sphericity analysis                       * 
00060 C  S   LUTHRU   to perform thrust analysis                           * 
00061 C  S   LUCLUS   to perform three-dimensional cluster analysis        * 
00062 C  S   LUCELL   to perform cluster analysis in (eta, phi, E_T)       * 
00063 C  S   LUJMAS   to give high and low jet mass of event               * 
00064 C  S   LUFOWO   to give Fox-Wolfram moments                          * 
00065 C  S   LUTABU   to analyze events, with tabular output               * 
00066 C                                                                    * 
00067 C  S   LUEEVT   to administrate the generation of an e+e- event      * 
00068 C  S   LUXTOT   to give the total cross-section at given CM energy   * 
00069 C  S   LURADK   to generate initial state photon radiation           * 
00070 C  S   LUXKFL   to select flavour of primary qqbar pair              * 
00071 C  S   LUXJET   to select (matrix element) jet multiplicity          * 
00072 C  S   LUX3JT   to select kinematics of three-jet event              * 
00073 C  S   LUX4JT   to select kinematics of four-jet event               * 
00074 C  S   LUXDIF   to select angular orientation of event               * 
00075 C  S   LUONIA   to perform generation of onium decay to gluons       * 
00076 C                                                                    * 
00077 C  S   LUHEPC   to convert between /LUJETS/ and /HEPEVT/ records     * 
00078 C  S   LUTEST   to test the proper functioning of the package        * 
00079 C  B   LUDATA   to contain default values and particle data          * 
00080 C                                                                    * 
00081 C********************************************************************* 
00082  
00083       SUBROUTINE LU1ENT(IP,KF,PE,THE,PHI) 
00084  
00085 C...Purpose: to store one parton/particle in commonblock LUJETS. 
00086       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
00087       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
00088       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
00089       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
00090  
00091 C...Standard checks. 
00092       MSTU(28)=0 
00093       IF(MSTU(12).GE.1) CALL LULIST(0) 
00094       IPA=MAX(1,IABS(IP)) 
00095       IF(IPA.GT.MSTU(4)) CALL LUERRM(21, 
00096      &'(LU1ENT:) writing outside LUJETS memory') 
00097       KC=LUCOMP(KF) 
00098       IF(KC.EQ.0) CALL LUERRM(12,'(LU1ENT:) unknown flavour code') 
00099  
00100 C...Find mass. Reset K, P and V vectors. 
00101       PM=0. 
00102       IF(MSTU(10).EQ.1) PM=P(IPA,5) 
00103       IF(MSTU(10).GE.2) PM=ULMASS(KF) 
00104       DO 100 J=1,5 
00105       K(IPA,J)=0 
00106       P(IPA,J)=0. 
00107       V(IPA,J)=0. 
00108   100 CONTINUE 
00109  
00110 C...Store parton/particle in K and P vectors. 
00111       K(IPA,1)=1 
00112       IF(IP.LT.0) K(IPA,1)=2 
00113       K(IPA,2)=KF 
00114       P(IPA,5)=PM 
00115       P(IPA,4)=MAX(PE,PM) 
00116       PA=SQRT(P(IPA,4)**2-P(IPA,5)**2) 
00117       P(IPA,1)=PA*SIN(THE)*COS(PHI) 
00118       P(IPA,2)=PA*SIN(THE)*SIN(PHI) 
00119       P(IPA,3)=PA*COS(THE) 
00120  
00121 C...Set N. Optionally fragment/decay. 
00122       N=IPA 
00123       IF(IP.EQ.0) CALL LUEXEC 
00124  
00125       RETURN 
00126       END 
00127  
00128 C********************************************************************* 
00129  
00130       SUBROUTINE LU2ENT(IP,KF1,KF2,PECM) 
00131  
00132 C...Purpose: to store two partons/particles in their CM frame, 
00133 C...with the first along the +z axis. 
00134       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
00135       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
00136       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
00137       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
00138  
00139 C...Standard checks. 
00140       MSTU(28)=0 
00141       IF(MSTU(12).GE.1) CALL LULIST(0) 
00142       IPA=MAX(1,IABS(IP)) 
00143       IF(IPA.GT.MSTU(4)-1) CALL LUERRM(21, 
00144      &'(LU2ENT:) writing outside LUJETS memory') 
00145       KC1=LUCOMP(KF1) 
00146       KC2=LUCOMP(KF2) 
00147       IF(KC1.EQ.0.OR.KC2.EQ.0) CALL LUERRM(12, 
00148      &'(LU2ENT:) unknown flavour code') 
00149  
00150 C...Find masses. Reset K, P and V vectors. 
00151       PM1=0. 
00152       IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
00153       IF(MSTU(10).GE.2) PM1=ULMASS(KF1) 
00154       PM2=0. 
00155       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
00156       IF(MSTU(10).GE.2) PM2=ULMASS(KF2) 
00157       DO 110 I=IPA,IPA+1 
00158       DO 100 J=1,5 
00159       K(I,J)=0 
00160       P(I,J)=0. 
00161       V(I,J)=0. 
00162   100 CONTINUE 
00163   110 CONTINUE 
00164  
00165 C...Check flavours. 
00166       KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
00167       KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
00168       IF(MSTU(19).EQ.1) THEN 
00169         MSTU(19)=0 
00170       ELSE 
00171         IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL LUERRM(2, 
00172      &  '(LU2ENT:) unphysical flavour combination') 
00173       ENDIF 
00174       K(IPA,2)=KF1 
00175       K(IPA+1,2)=KF2 
00176  
00177 C...Store partons/particles in K vectors for normal case. 
00178       IF(IP.GE.0) THEN 
00179         K(IPA,1)=1 
00180         IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2 
00181         K(IPA+1,1)=1 
00182  
00183 C...Store partons in K vectors for parton shower evolution. 
00184       ELSE 
00185         K(IPA,1)=3 
00186         K(IPA+1,1)=3 
00187         K(IPA,4)=MSTU(5)*(IPA+1) 
00188         K(IPA,5)=K(IPA,4) 
00189         K(IPA+1,4)=MSTU(5)*IPA 
00190         K(IPA+1,5)=K(IPA+1,4) 
00191       ENDIF 
00192  
00193 C...Check kinematics and store partons/particles in P vectors. 
00194       IF(PECM.LE.PM1+PM2) CALL LUERRM(13, 
00195      &'(LU2ENT:) energy smaller than sum of masses') 
00196       PA=SQRT(MAX(0.,(PECM**2-PM1**2-PM2**2)**2-(2.*PM1*PM2)**2))/ 
00197      &(2.*PECM) 
00198       P(IPA,3)=PA 
00199       P(IPA,4)=SQRT(PM1**2+PA**2) 
00200       P(IPA,5)=PM1 
00201       P(IPA+1,3)=-PA 
00202       P(IPA+1,4)=SQRT(PM2**2+PA**2) 
00203       P(IPA+1,5)=PM2 
00204  
00205 C...Set N. Optionally fragment/decay. 
00206       N=IPA+1 
00207       IF(IP.EQ.0) CALL LUEXEC 
00208  
00209       RETURN 
00210       END 
00211  
00212 C********************************************************************* 
00213  
00214       SUBROUTINE LU3ENT(IP,KF1,KF2,KF3,PECM,X1,X3) 
00215  
00216 C...Purpose: to store three partons or particles in their CM frame, 
00217 C...with the first along the +z axis and the third in the (x,z) 
00218 C...plane with x > 0. 
00219       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
00220       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
00221       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
00222       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
00223  
00224 C...Standard checks. 
00225       MSTU(28)=0 
00226       IF(MSTU(12).GE.1) CALL LULIST(0) 
00227       IPA=MAX(1,IABS(IP)) 
00228       IF(IPA.GT.MSTU(4)-2) CALL LUERRM(21, 
00229      &'(LU3ENT:) writing outside LUJETS memory') 
00230       KC1=LUCOMP(KF1) 
00231       KC2=LUCOMP(KF2) 
00232       KC3=LUCOMP(KF3) 
00233       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL LUERRM(12, 
00234      &'(LU3ENT:) unknown flavour code') 
00235  
00236 C...Find masses. Reset K, P and V vectors. 
00237       PM1=0. 
00238       IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
00239       IF(MSTU(10).GE.2) PM1=ULMASS(KF1) 
00240       PM2=0. 
00241       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
00242       IF(MSTU(10).GE.2) PM2=ULMASS(KF2) 
00243       PM3=0. 
00244       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5) 
00245       IF(MSTU(10).GE.2) PM3=ULMASS(KF3) 
00246       DO 110 I=IPA,IPA+2 
00247       DO 100 J=1,5 
00248       K(I,J)=0 
00249       P(I,J)=0. 
00250       V(I,J)=0. 
00251   100 CONTINUE 
00252   110 CONTINUE 
00253  
00254 C...Check flavours. 
00255       KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
00256       KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
00257       KQ3=KCHG(KC3,2)*ISIGN(1,KF3) 
00258       IF(MSTU(19).EQ.1) THEN 
00259         MSTU(19)=0 
00260       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN 
00261       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR. 
00262      &KQ1+KQ3.EQ.4)) THEN 
00263       ELSE 
00264         CALL LUERRM(2,'(LU3ENT:) unphysical flavour combination') 
00265       ENDIF 
00266       K(IPA,2)=KF1 
00267       K(IPA+1,2)=KF2 
00268       K(IPA+2,2)=KF3 
00269  
00270 C...Store partons/particles in K vectors for normal case. 
00271       IF(IP.GE.0) THEN 
00272         K(IPA,1)=1 
00273         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2 
00274         K(IPA+1,1)=1 
00275         IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2 
00276         K(IPA+2,1)=1 
00277  
00278 C...Store partons in K vectors for parton shower evolution. 
00279       ELSE 
00280         K(IPA,1)=3 
00281         K(IPA+1,1)=3 
00282         K(IPA+2,1)=3 
00283         KCS=4 
00284         IF(KQ1.EQ.-1) KCS=5 
00285         K(IPA,KCS)=MSTU(5)*(IPA+1) 
00286         K(IPA,9-KCS)=MSTU(5)*(IPA+2) 
00287         K(IPA+1,KCS)=MSTU(5)*(IPA+2) 
00288         K(IPA+1,9-KCS)=MSTU(5)*IPA 
00289         K(IPA+2,KCS)=MSTU(5)*IPA 
00290         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1) 
00291       ENDIF 
00292  
00293 C...Check kinematics. 
00294       MKERR=0 
00295       IF(0.5*X1*PECM.LE.PM1.OR.0.5*(2.-X1-X3)*PECM.LE.PM2.OR. 
00296      &0.5*X3*PECM.LE.PM3) MKERR=1 
00297       PA1=SQRT(MAX(1E-10,(0.5*X1*PECM)**2-PM1**2)) 
00298       PA2=SQRT(MAX(1E-10,(0.5*(2.-X1-X3)*PECM)**2-PM2**2)) 
00299       PA3=SQRT(MAX(1E-10,(0.5*X3*PECM)**2-PM3**2)) 
00300       CTHE2=(PA3**2-PA1**2-PA2**2)/(2.*PA1*PA2) 
00301       CTHE3=(PA2**2-PA1**2-PA3**2)/(2.*PA1*PA3) 
00302       IF(ABS(CTHE2).GE.1.001.OR.ABS(CTHE3).GE.1.001) MKERR=1 
00303       CTHE3=MAX(-1.,MIN(1.,CTHE3)) 
00304       IF(MKERR.NE.0) CALL LUERRM(13, 
00305      &'(LU3ENT:) unphysical kinematical variable setup') 
00306  
00307 C...Store partons/particles in P vectors. 
00308       P(IPA,3)=PA1 
00309       P(IPA,4)=SQRT(PA1**2+PM1**2) 
00310       P(IPA,5)=PM1 
00311       P(IPA+2,1)=PA3*SQRT(1.-CTHE3**2) 
00312       P(IPA+2,3)=PA3*CTHE3 
00313       P(IPA+2,4)=SQRT(PA3**2+PM3**2) 
00314       P(IPA+2,5)=PM3 
00315       P(IPA+1,1)=-P(IPA+2,1) 
00316       P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3) 
00317       P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2) 
00318       P(IPA+1,5)=PM2 
00319  
00320 C...Set N. Optionally fragment/decay. 
00321       N=IPA+2 
00322       IF(IP.EQ.0) CALL LUEXEC 
00323  
00324       RETURN 
00325       END 
00326  
00327 C********************************************************************* 
00328  
00329       SUBROUTINE LU4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14) 
00330  
00331 C...Purpose: to store four partons or particles in their CM frame, with 
00332 C...the first along the +z axis, the last in the xz plane with x > 0 
00333 C...and the second having y < 0 and y > 0 with equal probability. 
00334       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
00335       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
00336       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
00337       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
00338  
00339 C...Standard checks. 
00340       MSTU(28)=0 
00341       IF(MSTU(12).GE.1) CALL LULIST(0) 
00342       IPA=MAX(1,IABS(IP)) 
00343       IF(IPA.GT.MSTU(4)-3) CALL LUERRM(21, 
00344      &'(LU4ENT:) writing outside LUJETS momory') 
00345       KC1=LUCOMP(KF1) 
00346       KC2=LUCOMP(KF2) 
00347       KC3=LUCOMP(KF3) 
00348       KC4=LUCOMP(KF4) 
00349       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL LUERRM(12, 
00350      &'(LU4ENT:) unknown flavour code') 
00351  
00352 C...Find masses. Reset K, P and V vectors. 
00353       PM1=0. 
00354       IF(MSTU(10).EQ.1) PM1=P(IPA,5) 
00355       IF(MSTU(10).GE.2) PM1=ULMASS(KF1) 
00356       PM2=0. 
00357       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5) 
00358       IF(MSTU(10).GE.2) PM2=ULMASS(KF2) 
00359       PM3=0. 
00360       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5) 
00361       IF(MSTU(10).GE.2) PM3=ULMASS(KF3) 
00362       PM4=0. 
00363       IF(MSTU(10).EQ.1) PM4=P(IPA+3,5) 
00364       IF(MSTU(10).GE.2) PM4=ULMASS(KF4) 
00365       DO 110 I=IPA,IPA+3 
00366       DO 100 J=1,5 
00367       K(I,J)=0 
00368       P(I,J)=0. 
00369       V(I,J)=0. 
00370   100 CONTINUE 
00371   110 CONTINUE 
00372  
00373 C...Check flavours. 
00374       KQ1=KCHG(KC1,2)*ISIGN(1,KF1) 
00375       KQ2=KCHG(KC2,2)*ISIGN(1,KF2) 
00376       KQ3=KCHG(KC3,2)*ISIGN(1,KF3) 
00377       KQ4=KCHG(KC4,2)*ISIGN(1,KF4) 
00378       IF(MSTU(19).EQ.1) THEN 
00379         MSTU(19)=0 
00380       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN 
00381       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR. 
00382      &KQ1+KQ4.EQ.4)) THEN 
00383       ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0.) 
00384      &THEN 
00385       ELSE 
00386         CALL LUERRM(2,'(LU4ENT:) unphysical flavour combination') 
00387       ENDIF 
00388       K(IPA,2)=KF1 
00389       K(IPA+1,2)=KF2 
00390       K(IPA+2,2)=KF3 
00391       K(IPA+3,2)=KF4 
00392  
00393 C...Store partons/particles in K vectors for normal case. 
00394       IF(IP.GE.0) THEN 
00395         K(IPA,1)=1 
00396         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2 
00397         K(IPA+1,1)=1 
00398         IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0)) 
00399      &  K(IPA+1,1)=2 
00400         K(IPA+2,1)=1 
00401         IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2 
00402         K(IPA+3,1)=1 
00403  
00404 C...Store partons for parton shower evolution from q-g-g-qbar or 
00405 C...g-g-g-g event. 
00406       ELSEIF(KQ1+KQ2.NE.0) THEN 
00407         K(IPA,1)=3 
00408         K(IPA+1,1)=3 
00409         K(IPA+2,1)=3 
00410         K(IPA+3,1)=3 
00411         KCS=4 
00412         IF(KQ1.EQ.-1) KCS=5 
00413         K(IPA,KCS)=MSTU(5)*(IPA+1) 
00414         K(IPA,9-KCS)=MSTU(5)*(IPA+3) 
00415         K(IPA+1,KCS)=MSTU(5)*(IPA+2) 
00416         K(IPA+1,9-KCS)=MSTU(5)*IPA 
00417         K(IPA+2,KCS)=MSTU(5)*(IPA+3) 
00418         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1) 
00419         K(IPA+3,KCS)=MSTU(5)*IPA 
00420         K(IPA+3,9-KCS)=MSTU(5)*(IPA+2) 
00421  
00422 C...Store partons for parton shower evolution from q-qbar-q-qbar event. 
00423       ELSE 
00424         K(IPA,1)=3 
00425         K(IPA+1,1)=3 
00426         K(IPA+2,1)=3 
00427         K(IPA+3,1)=3 
00428         K(IPA,4)=MSTU(5)*(IPA+1) 
00429         K(IPA,5)=K(IPA,4) 
00430         K(IPA+1,4)=MSTU(5)*IPA 
00431         K(IPA+1,5)=K(IPA+1,4) 
00432         K(IPA+2,4)=MSTU(5)*(IPA+3) 
00433         K(IPA+2,5)=K(IPA+2,4) 
00434         K(IPA+3,4)=MSTU(5)*(IPA+2) 
00435         K(IPA+3,5)=K(IPA+3,4) 
00436       ENDIF 
00437  
00438 C...Check kinematics. 
00439       MKERR=0 
00440       IF(0.5*X1*PECM.LE.PM1.OR.0.5*X2*PECM.LE.PM2.OR.0.5*(2.-X1-X2-X4)* 
00441      &PECM.LE.PM3.OR.0.5*X4*PECM.LE.PM4) MKERR=1 
00442       PA1=SQRT(MAX(1E-10,(0.5*X1*PECM)**2-PM1**2)) 
00443       PA2=SQRT(MAX(1E-10,(0.5*X2*PECM)**2-PM2**2)) 
00444       PA4=SQRT(MAX(1E-10,(0.5*X4*PECM)**2-PM4**2)) 
00445       X24=X1+X2+X4-1.-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2 
00446       CTHE4=(X1*X4-2.*X14)*PECM**2/(4.*PA1*PA4) 
00447       IF(ABS(CTHE4).GE.1.002) MKERR=1 
00448       CTHE4=MAX(-1.,MIN(1.,CTHE4)) 
00449       STHE4=SQRT(1.-CTHE4**2) 
00450       CTHE2=(X1*X2-2.*X12)*PECM**2/(4.*PA1*PA2) 
00451       IF(ABS(CTHE2).GE.1.002) MKERR=1 
00452       CTHE2=MAX(-1.,MIN(1.,CTHE2)) 
00453       STHE2=SQRT(1.-CTHE2**2) 
00454       CPHI2=((X2*X4-2.*X24)*PECM**2-4.*PA2*CTHE2*PA4*CTHE4)/ 
00455      &MAX(1E-8*PECM**2,4.*PA2*STHE2*PA4*STHE4) 
00456       IF(ABS(CPHI2).GE.1.05) MKERR=1 
00457       CPHI2=MAX(-1.,MIN(1.,CPHI2)) 
00458       IF(MKERR.EQ.1) CALL LUERRM(13, 
00459      &'(LU4ENT:) unphysical kinematical variable setup') 
00460  
00461 C...Store partons/particles in P vectors. 
00462       P(IPA,3)=PA1 
00463       P(IPA,4)=SQRT(PA1**2+PM1**2) 
00464       P(IPA,5)=PM1 
00465       P(IPA+3,1)=PA4*STHE4 
00466       P(IPA+3,3)=PA4*CTHE4 
00467       P(IPA+3,4)=SQRT(PA4**2+PM4**2) 
00468       P(IPA+3,5)=PM4 
00469       P(IPA+1,1)=PA2*STHE2*CPHI2 
00470       P(IPA+1,2)=PA2*STHE2*SQRT(1.-CPHI2**2)*(-1.)**INT(RLU(0)+0.5) 
00471       P(IPA+1,3)=PA2*CTHE2 
00472       P(IPA+1,4)=SQRT(PA2**2+PM2**2) 
00473       P(IPA+1,5)=PM2 
00474       P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1) 
00475       P(IPA+2,2)=-P(IPA+1,2) 
00476       P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3) 
00477       P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2) 
00478       P(IPA+2,5)=PM3 
00479  
00480 C...Set N. Optionally fragment/decay. 
00481       N=IPA+3 
00482       IF(IP.EQ.0) CALL LUEXEC 
00483  
00484       RETURN 
00485       END 
00486  
00487 C********************************************************************* 
00488  
00489       SUBROUTINE LUJOIN(NJOIN,IJOIN) 
00490  
00491 C...Purpose: to connect a sequence of partons with colour flow indices, 
00492 C...as required for subsequent shower evolution (or other operations). 
00493       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
00494       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
00495       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
00496       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
00497       DIMENSION IJOIN(*) 
00498  
00499 C...Check that partons are of right types to be connected. 
00500       IF(NJOIN.LT.2) GOTO 120 
00501       KQSUM=0 
00502       DO 100 IJN=1,NJOIN 
00503       I=IJOIN(IJN) 
00504       IF(I.LE.0.OR.I.GT.N) GOTO 120 
00505       IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120 
00506       KC=LUCOMP(K(I,2)) 
00507       IF(KC.EQ.0) GOTO 120 
00508       KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
00509       IF(KQ.EQ.0) GOTO 120 
00510       IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120 
00511       IF(KQ.NE.2) KQSUM=KQSUM+KQ 
00512       IF(IJN.EQ.1) KQS=KQ 
00513   100 CONTINUE 
00514       IF(KQSUM.NE.0) GOTO 120 
00515  
00516 C...Connect the partons sequentially (closing for gluon loop). 
00517       KCS=(9-KQS)/2 
00518       IF(KQS.EQ.2) KCS=INT(4.5+RLU(0)) 
00519       DO 110 IJN=1,NJOIN 
00520       I=IJOIN(IJN) 
00521       K(I,1)=3 
00522       IF(IJN.NE.1) IP=IJOIN(IJN-1) 
00523       IF(IJN.EQ.1) IP=IJOIN(NJOIN) 
00524       IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1) 
00525       IF(IJN.EQ.NJOIN) IN=IJOIN(1) 
00526       K(I,KCS)=MSTU(5)*IN 
00527       K(I,9-KCS)=MSTU(5)*IP 
00528       IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0 
00529       IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0 
00530   110 CONTINUE 
00531  
00532 C...Error exit: no action taken. 
00533       RETURN 
00534   120 CALL LUERRM(12, 
00535      &'(LUJOIN:) given entries can not be joined by one string') 
00536  
00537       RETURN 
00538       END 
00539  
00540 C********************************************************************* 
00541  
00542       SUBROUTINE LUGIVE(CHIN) 
00543  
00544 C...Purpose: to set values of commonblock variables (also in PYTHIA!). 
00545       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
00546       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
00547       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
00548       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
00549       COMMON/LUDAT4/CHAF(500) 
00550       CHARACTER CHAF*8 
00551       COMMON/LUDATR/MRLU(6),RRLU(100) 
00552       COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200) 
00553       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) 
00554       COMMON/PYINT1/MINT(400),VINT(400) 
00555       COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2) 
00556       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) 
00557       COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3) 
00558       COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3) 
00559       COMMON/PYINT6/PROC(0:200) 
00560       COMMON/PYINT7/SIGT(0:6,0:6,0:5) 
00561       CHARACTER PROC*28 
00562       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/,/LUDAT4/,/LUDATR/ 
00563       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/, 
00564      &/PYINT5/,/PYINT6/,/PYINT7/ 
00565       CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28, 
00566      &CHNEW2*28,CHNAM*4,CHVAR(43)*4,CHALP(2)*26,CHIND*8,CHINI*10, 
00567      &CHINR*16 
00568       DIMENSION MSVAR(43,8) 
00569  
00570 C...For each variable to be translated give: name, 
00571 C...integer/real/character, no. of indices, lower&upper index bounds. 
00572       DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG', 
00573      &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRLU', 
00574      &'RRLU','MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI', 
00575      &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH', 
00576      &'WIDP','WIDE','WIDS','NGEN','XSEC','PROC','SIGT'/ 
00577       DATA ((MSVAR(I,J),J=1,8),I=1,43)/ 1,7*0,  1,2,1,4000,1,5,2*0, 
00578      & 2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0, 
00579      & 2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0, 
00580      & 1,2,1,500,1,3,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0, 
00581      & 2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,2000,1,2,2*0, 
00582      & 2,1,1,2000,4*0,  1,2,1,2000,1,5,2*0,  3,1,1,500,4*0, 
00583      & 1,1,1,6,4*0,  2,1,1,100,4*0, 
00584      & 1,7*0,  1,1,1,200,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0, 
00585      & 1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0, 
00586      & 1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,200,4*0, 
00587      & 1,2,1,200,1,2,2*0,  2,2,1,200,1,20,2*0,  1,3,1,40,1,4,1,2, 
00588      & 2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0, 
00589      & 2,2,21,40,0,40,2*0,  2,2,21,40,0,40,2*0,  2,2,21,40,1,3,2*0, 
00590      & 1,2,0,200,1,3,2*0,  2,2,0,200,1,3,2*0,  4,1,0,200,4*0, 
00591      & 2,3,0,6,0,6,0,5/ 
00592       DATA CHALP/'abcdefghijklmnopqrstuvwxyz', 
00593      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ 
00594  
00595 C...Length of character variable. Subdivide it into instructions. 
00596       IF(MSTU(12).GE.1) CALL LULIST(0) 
00597       CHBIT=CHIN//' ' 
00598       LBIT=101 
00599   100 LBIT=LBIT-1 
00600       IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100 
00601       LTOT=0 
00602       DO 110 LCOM=1,LBIT 
00603       IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110 
00604       LTOT=LTOT+1 
00605       CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM) 
00606   110 CONTINUE 
00607       LLOW=0 
00608   120 LHIG=LLOW+1 
00609   130 LHIG=LHIG+1 
00610       IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130 
00611       LBIT=LHIG-LLOW-1 
00612       CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1) 
00613  
00614 C...Identify commonblock variable. 
00615       LNAM=1 
00616   140 LNAM=LNAM+1 
00617       IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND. 
00618      &LNAM.LE.4) GOTO 140 
00619       CHNAM=CHBIT(1:LNAM-1)//' ' 
00620       DO 160 LCOM=1,LNAM-1 
00621       DO 150 LALP=1,26 
00622       IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)= 
00623      &CHALP(2)(LALP:LALP) 
00624   150 CONTINUE 
00625   160 CONTINUE 
00626       IVAR=0 
00627       DO 170 IV=1,43 
00628       IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV 
00629   170 CONTINUE 
00630       IF(IVAR.EQ.0) THEN 
00631         CALL LUERRM(18,'(LUGIVE:) do not recognize variable '//CHNAM) 
00632         LLOW=LHIG 
00633         IF(LLOW.LT.LTOT) GOTO 120 
00634         RETURN 
00635       ENDIF 
00636  
00637 C...Identify any indices. 
00638       I1=0 
00639       I2=0 
00640       I3=0 
00641       NINDX=0 
00642       IF(CHBIT(LNAM:LNAM).EQ.'(') THEN 
00643         LIND=LNAM 
00644   180   LIND=LIND+1 
00645         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 180 
00646         CHIND=' ' 
00647         IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c'). 
00648      &  AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17)) THEN 
00649           CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1) 
00650           READ(CHIND,'(I8)') KF 
00651           I1=LUCOMP(KF) 
00652         ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ. 
00653      &  'c') THEN 
00654           CALL LUERRM(18,'(LUGIVE:) not allowed to use C index for '// 
00655      &    CHNAM) 
00656           LLOW=LHIG 
00657           IF(LLOW.LT.LTOT) GOTO 120 
00658           RETURN 
00659         ELSE 
00660           CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
00661           READ(CHIND,'(I8)') I1 
00662         ENDIF 
00663         LNAM=LIND 
00664         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1 
00665         NINDX=1 
00666       ENDIF 
00667       IF(CHBIT(LNAM:LNAM).EQ.',') THEN 
00668         LIND=LNAM 
00669   190   LIND=LIND+1 
00670         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190 
00671         CHIND=' ' 
00672         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
00673         READ(CHIND,'(I8)') I2 
00674         LNAM=LIND 
00675         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1 
00676         NINDX=2 
00677       ENDIF 
00678       IF(CHBIT(LNAM:LNAM).EQ.',') THEN 
00679         LIND=LNAM 
00680   200   LIND=LIND+1 
00681         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200 
00682         CHIND=' ' 
00683         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1) 
00684         READ(CHIND,'(I8)') I3 
00685         LNAM=LIND+1 
00686         NINDX=3 
00687       ENDIF 
00688  
00689 C...Check that indices allowed. 
00690       IERR=0 
00691       IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1 
00692       IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4))) 
00693      &IERR=2 
00694       IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6))) 
00695      &IERR=3 
00696       IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8))) 
00697      &IERR=4 
00698       IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5 
00699       IF(IERR.GE.1) THEN 
00700         CALL LUERRM(18,'(LUGIVE:) unallowed indices for '// 
00701      &  CHBIT(1:LNAM-1)) 
00702         LLOW=LHIG 
00703         IF(LLOW.LT.LTOT) GOTO 120 
00704         RETURN 
00705       ENDIF 
00706  
00707 C...Save old value of variable. 
00708       IF(IVAR.EQ.1) THEN 
00709         IOLD=N 
00710       ELSEIF(IVAR.EQ.2) THEN 
00711         IOLD=K(I1,I2) 
00712       ELSEIF(IVAR.EQ.3) THEN 
00713         ROLD=P(I1,I2) 
00714       ELSEIF(IVAR.EQ.4) THEN 
00715         ROLD=V(I1,I2) 
00716       ELSEIF(IVAR.EQ.5) THEN 
00717         IOLD=MSTU(I1) 
00718       ELSEIF(IVAR.EQ.6) THEN 
00719         ROLD=PARU(I1) 
00720       ELSEIF(IVAR.EQ.7) THEN 
00721         IOLD=MSTJ(I1) 
00722       ELSEIF(IVAR.EQ.8) THEN 
00723         ROLD=PARJ(I1) 
00724       ELSEIF(IVAR.EQ.9) THEN 
00725         IOLD=KCHG(I1,I2) 
00726       ELSEIF(IVAR.EQ.10) THEN 
00727         ROLD=PMAS(I1,I2) 
00728       ELSEIF(IVAR.EQ.11) THEN 
00729         ROLD=PARF(I1) 
00730       ELSEIF(IVAR.EQ.12) THEN 
00731         ROLD=VCKM(I1,I2) 
00732       ELSEIF(IVAR.EQ.13) THEN 
00733         IOLD=MDCY(I1,I2) 
00734       ELSEIF(IVAR.EQ.14) THEN 
00735         IOLD=MDME(I1,I2) 
00736       ELSEIF(IVAR.EQ.15) THEN 
00737         ROLD=BRAT(I1) 
00738       ELSEIF(IVAR.EQ.16) THEN 
00739         IOLD=KFDP(I1,I2) 
00740       ELSEIF(IVAR.EQ.17) THEN 
00741         CHOLD=CHAF(I1) 
00742       ELSEIF(IVAR.EQ.18) THEN 
00743         IOLD=MRLU(I1) 
00744       ELSEIF(IVAR.EQ.19) THEN 
00745         ROLD=RRLU(I1) 
00746       ELSEIF(IVAR.EQ.20) THEN 
00747         IOLD=MSEL 
00748       ELSEIF(IVAR.EQ.21) THEN 
00749         IOLD=MSUB(I1) 
00750       ELSEIF(IVAR.EQ.22) THEN 
00751         IOLD=KFIN(I1,I2) 
00752       ELSEIF(IVAR.EQ.23) THEN 
00753         ROLD=CKIN(I1) 
00754       ELSEIF(IVAR.EQ.24) THEN 
00755         IOLD=MSTP(I1) 
00756       ELSEIF(IVAR.EQ.25) THEN 
00757         ROLD=PARP(I1) 
00758       ELSEIF(IVAR.EQ.26) THEN 
00759         IOLD=MSTI(I1) 
00760       ELSEIF(IVAR.EQ.27) THEN 
00761         ROLD=PARI(I1) 
00762       ELSEIF(IVAR.EQ.28) THEN 
00763         IOLD=MINT(I1) 
00764       ELSEIF(IVAR.EQ.29) THEN 
00765         ROLD=VINT(I1) 
00766       ELSEIF(IVAR.EQ.30) THEN 
00767         IOLD=ISET(I1) 
00768       ELSEIF(IVAR.EQ.31) THEN 
00769         IOLD=KFPR(I1,I2) 
00770       ELSEIF(IVAR.EQ.32) THEN 
00771         ROLD=COEF(I1,I2) 
00772       ELSEIF(IVAR.EQ.33) THEN 
00773         IOLD=ICOL(I1,I2,I3) 
00774       ELSEIF(IVAR.EQ.34) THEN 
00775         ROLD=XSFX(I1,I2) 
00776       ELSEIF(IVAR.EQ.35) THEN 
00777         IOLD=ISIG(I1,I2) 
00778       ELSEIF(IVAR.EQ.36) THEN 
00779         ROLD=SIGH(I1) 
00780       ELSEIF(IVAR.EQ.37) THEN 
00781         ROLD=WIDP(I1,I2) 
00782       ELSEIF(IVAR.EQ.38) THEN 
00783         ROLD=WIDE(I1,I2) 
00784       ELSEIF(IVAR.EQ.39) THEN 
00785         ROLD=WIDS(I1,I2) 
00786       ELSEIF(IVAR.EQ.40) THEN 
00787         IOLD=NGEN(I1,I2) 
00788       ELSEIF(IVAR.EQ.41) THEN 
00789         ROLD=XSEC(I1,I2) 
00790       ELSEIF(IVAR.EQ.42) THEN 
00791         CHOLD2=PROC(I1) 
00792       ELSEIF(IVAR.EQ.43) THEN 
00793         ROLD=SIGT(I1,I2,I3) 
00794       ENDIF 
00795  
00796 C...Print current value of variable. Loop back. 
00797       IF(LNAM.GE.LBIT) THEN 
00798         CHBIT(LNAM:14)=' ' 
00799         CHBIT(15:60)=' has the value                                ' 
00800         IF(MSVAR(IVAR,1).EQ.1) THEN 
00801           WRITE(CHBIT(51:60),'(I10)') IOLD 
00802         ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
00803           WRITE(CHBIT(47:60),'(F14.5)') ROLD 
00804         ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
00805           CHBIT(53:60)=CHOLD 
00806         ELSE 
00807           CHBIT(33:60)=CHOLD 
00808         ENDIF 
00809         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
00810         LLOW=LHIG 
00811         IF(LLOW.LT.LTOT) GOTO 120 
00812         RETURN 
00813       ENDIF 
00814  
00815 C...Read in new variable value. 
00816       IF(MSVAR(IVAR,1).EQ.1) THEN 
00817         CHINI=' ' 
00818         CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT) 
00819         READ(CHINI,'(I10)') INEW 
00820       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
00821         CHINR=' ' 
00822         CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT) 
00823         READ(CHINR,'(F16.2)') RNEW 
00824       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
00825         CHNEW=CHBIT(LNAM+1:LBIT)//' ' 
00826       ELSE 
00827         CHNEW2=CHBIT(LNAM+1:LBIT)//' ' 
00828       ENDIF 
00829  
00830 C...Store new variable value. 
00831       IF(IVAR.EQ.1) THEN 
00832         N=INEW 
00833       ELSEIF(IVAR.EQ.2) THEN 
00834         K(I1,I2)=INEW 
00835       ELSEIF(IVAR.EQ.3) THEN 
00836         P(I1,I2)=RNEW 
00837       ELSEIF(IVAR.EQ.4) THEN 
00838         V(I1,I2)=RNEW 
00839       ELSEIF(IVAR.EQ.5) THEN 
00840         MSTU(I1)=INEW 
00841       ELSEIF(IVAR.EQ.6) THEN 
00842         PARU(I1)=RNEW 
00843       ELSEIF(IVAR.EQ.7) THEN 
00844         MSTJ(I1)=INEW 
00845       ELSEIF(IVAR.EQ.8) THEN 
00846         PARJ(I1)=RNEW 
00847       ELSEIF(IVAR.EQ.9) THEN 
00848         KCHG(I1,I2)=INEW 
00849       ELSEIF(IVAR.EQ.10) THEN 
00850         PMAS(I1,I2)=RNEW 
00851       ELSEIF(IVAR.EQ.11) THEN 
00852         PARF(I1)=RNEW 
00853       ELSEIF(IVAR.EQ.12) THEN 
00854         VCKM(I1,I2)=RNEW 
00855       ELSEIF(IVAR.EQ.13) THEN 
00856         MDCY(I1,I2)=INEW 
00857       ELSEIF(IVAR.EQ.14) THEN 
00858         MDME(I1,I2)=INEW 
00859       ELSEIF(IVAR.EQ.15) THEN 
00860         BRAT(I1)=RNEW 
00861       ELSEIF(IVAR.EQ.16) THEN 
00862         KFDP(I1,I2)=INEW 
00863       ELSEIF(IVAR.EQ.17) THEN 
00864         CHAF(I1)=CHNEW 
00865       ELSEIF(IVAR.EQ.18) THEN 
00866         MRLU(I1)=INEW 
00867       ELSEIF(IVAR.EQ.19) THEN 
00868         RRLU(I1)=RNEW 
00869       ELSEIF(IVAR.EQ.20) THEN 
00870         MSEL=INEW 
00871       ELSEIF(IVAR.EQ.21) THEN 
00872         MSUB(I1)=INEW 
00873       ELSEIF(IVAR.EQ.22) THEN 
00874         KFIN(I1,I2)=INEW 
00875       ELSEIF(IVAR.EQ.23) THEN 
00876         CKIN(I1)=RNEW 
00877       ELSEIF(IVAR.EQ.24) THEN 
00878         MSTP(I1)=INEW 
00879       ELSEIF(IVAR.EQ.25) THEN 
00880         PARP(I1)=RNEW 
00881       ELSEIF(IVAR.EQ.26) THEN 
00882         MSTI(I1)=INEW 
00883       ELSEIF(IVAR.EQ.27) THEN 
00884         PARI(I1)=RNEW 
00885       ELSEIF(IVAR.EQ.28) THEN 
00886         MINT(I1)=INEW 
00887       ELSEIF(IVAR.EQ.29) THEN 
00888         VINT(I1)=RNEW 
00889       ELSEIF(IVAR.EQ.30) THEN 
00890         ISET(I1)=INEW 
00891       ELSEIF(IVAR.EQ.31) THEN 
00892         KFPR(I1,I2)=INEW 
00893       ELSEIF(IVAR.EQ.32) THEN 
00894         COEF(I1,I2)=RNEW 
00895       ELSEIF(IVAR.EQ.33) THEN 
00896         ICOL(I1,I2,I3)=INEW 
00897       ELSEIF(IVAR.EQ.34) THEN 
00898         XSFX(I1,I2)=RNEW 
00899       ELSEIF(IVAR.EQ.35) THEN 
00900         ISIG(I1,I2)=INEW 
00901       ELSEIF(IVAR.EQ.36) THEN 
00902         SIGH(I1)=RNEW 
00903       ELSEIF(IVAR.EQ.37) THEN 
00904         WIDP(I1,I2)=RNEW 
00905       ELSEIF(IVAR.EQ.38) THEN 
00906         WIDE(I1,I2)=RNEW 
00907       ELSEIF(IVAR.EQ.39) THEN 
00908         WIDS(I1,I2)=RNEW 
00909       ELSEIF(IVAR.EQ.40) THEN 
00910         NGEN(I1,I2)=INEW 
00911       ELSEIF(IVAR.EQ.41) THEN 
00912         XSEC(I1,I2)=RNEW 
00913       ELSEIF(IVAR.EQ.42) THEN 
00914         PROC(I1)=CHNEW2 
00915       ELSEIF(IVAR.EQ.43) THEN 
00916         SIGT(I1,I2,I3)=RNEW 
00917       ENDIF 
00918  
00919 C...Write old and new value. Loop back. 
00920       CHBIT(LNAM:14)=' ' 
00921       CHBIT(15:60)=' changed from                to               ' 
00922       IF(MSVAR(IVAR,1).EQ.1) THEN 
00923         WRITE(CHBIT(33:42),'(I10)') IOLD 
00924         WRITE(CHBIT(51:60),'(I10)') INEW 
00925         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
00926       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN 
00927         WRITE(CHBIT(29:42),'(F14.5)') ROLD 
00928         WRITE(CHBIT(47:60),'(F14.5)') RNEW 
00929         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
00930       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN 
00931         CHBIT(35:42)=CHOLD 
00932         CHBIT(53:60)=CHNEW 
00933         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60) 
00934       ELSE 
00935         CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2 
00936         IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88) 
00937       ENDIF 
00938       LLOW=LHIG 
00939       IF(LLOW.LT.LTOT) GOTO 120 
00940  
00941 C...Format statement for output on unit MSTU(11) (by default 6). 
00942  5000 FORMAT(5X,A60) 
00943  5100 FORMAT(5X,A88) 
00944  
00945       RETURN 
00946       END 
00947  
00948 C********************************************************************* 
00949  
00950       SUBROUTINE LUEXEC 
00951  
00952 C...Purpose: to administrate the fragmentation and decay chain. 
00953       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
00954       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
00955       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
00956       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
00957       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
00958       DIMENSION PS(2,6) 
00959  
00960 C...Initialize and reset. 
00961       MSTU(24)=0 
00962       IF(MSTU(12).GE.1) CALL LULIST(0) 
00963       MSTU(31)=MSTU(31)+1 
00964       MSTU(1)=0 
00965       MSTU(2)=0 
00966       MSTU(3)=0 
00967       IF(MSTU(17).LE.0) MSTU(90)=0 
00968       MCONS=1 
00969  
00970 C...Sum up momentum, energy and charge for starting entries. 
00971       NSAV=N 
00972       DO 110 I=1,2 
00973       DO 100 J=1,6 
00974       PS(I,J)=0. 
00975   100 CONTINUE 
00976   110 CONTINUE 
00977       DO 130 I=1,N 
00978       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130 
00979       DO 120 J=1,4 
00980       PS(1,J)=PS(1,J)+P(I,J) 
00981   120 CONTINUE 
00982       PS(1,6)=PS(1,6)+LUCHGE(K(I,2)) 
00983   130 CONTINUE 
00984       PARU(21)=PS(1,4) 
00985  
00986 C...Prepare system for subsequent fragmentation/decay. 
00987       CALL LUPREP(0) 
00988  
00989 C...Loop through jet fragmentation and particle decays. 
00990       MBE=0 
00991   140 MBE=MBE+1 
00992       IP=0 
00993   150 IP=IP+1 
00994       KC=0 
00995       IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=LUCOMP(K(IP,2)) 
00996       IF(KC.EQ.0) THEN 
00997  
00998 C...Particle decay if unstable and allowed. Save long-lived particle 
00999 C...decays until second pass after Bose-Einstein effects. 
01000       ELSEIF(KCHG(KC,2).EQ.0) THEN 
01001         IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE. 
01002      &  EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311)) 
01003      &  CALL LUDECY(IP) 
01004  
01005 C...Decay products may develop a shower. 
01006         IF(MSTJ(92).GT.0) THEN 
01007           IP1=MSTJ(92) 
01008           QMAX=SQRT(MAX(0.,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1, 
01009      &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2)) 
01010           CALL LUSHOW(IP1,IP1+1,QMAX) 
01011           CALL LUPREP(IP1) 
01012           MSTJ(92)=0 
01013         ELSEIF(MSTJ(92).LT.0) THEN 
01014           IP1=-MSTJ(92) 
01015           CALL LUSHOW(IP1,-3,P(IP,5)) 
01016           CALL LUPREP(IP1) 
01017           MSTJ(92)=0 
01018         ENDIF 
01019  
01020 C...Jet fragmentation: string or independent fragmentation. 
01021       ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN 
01022         MFRAG=MSTJ(1) 
01023         IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2 
01024         IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN 
01025           IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND. 
01026      &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN 
01027             IF(KCHG(LUCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG) 
01028           ENDIF 
01029         ENDIF 
01030         IF(MFRAG.EQ.1) CALL LUSTRF(IP) 
01031         IF(MFRAG.EQ.2) CALL LUINDF(IP) 
01032         IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0 
01033         IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0 
01034       ENDIF 
01035  
01036 C...Loop back if enough space left in LUJETS and no error abort. 
01037       IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN 
01038       ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN 
01039         GOTO 150 
01040       ELSEIF(IP.LT.N) THEN 
01041         CALL LUERRM(11,'(LUEXEC:) no more memory left in LUJETS') 
01042       ENDIF 
01043  
01044 C...Include simple Bose-Einstein effect parametrization if desired. 
01045       IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN 
01046         CALL LUBOEI(NSAV) 
01047         GOTO 140 
01048       ENDIF 
01049  
01050 C...Check that momentum, energy and charge were conserved. 
01051       DO 170 I=1,N 
01052       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170 
01053       DO 160 J=1,4 
01054       PS(2,J)=PS(2,J)+P(I,J) 
01055   160 CONTINUE 
01056       PS(2,6)=PS(2,6)+LUCHGE(K(I,2)) 
01057   170 CONTINUE 
01058       PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)- 
01059      &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1.+ABS(PS(2,4))+ABS(PS(1,4))) 
01060       IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL LUERRM(15, 
01061      &'(LUEXEC:) four-momentum was not conserved') 
01062       IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1) CALL LUERRM(15, 
01063      &'(LUEXEC:) charge was not conserved') 
01064  
01065       RETURN 
01066       END 
01067  
01068 C********************************************************************* 
01069  
01070       SUBROUTINE LUPREP(IP) 
01071  
01072 C...Purpose: to rearrange partons along strings, to allow small systems 
01073 C...to collapse into one or two particles and to check flavours. 
01074       IMPLICIT DOUBLE PRECISION(D) 
01075       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
01076       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
01077       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
01078       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
01079       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
01080       DIMENSION DPS(5),DPC(5),UE(3) 
01081  
01082 C...Rearrange parton shower product listing along strings: begin loop. 
01083       I1=N 
01084       DO 130 MQGST=1,2 
01085       DO 120 I=MAX(1,IP),N 
01086       IF(K(I,1).NE.3) GOTO 120 
01087       KC=LUCOMP(K(I,2)) 
01088       IF(KC.EQ.0) GOTO 120 
01089       KQ=KCHG(KC,2) 
01090       IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 120 
01091  
01092 C...Pick up loose string end. 
01093       KCS=4 
01094       IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5 
01095       IA=I 
01096       NSTP=0 
01097   100 NSTP=NSTP+1 
01098       IF(NSTP.GT.4*N) THEN 
01099         CALL LUERRM(14,'(LUPREP:) caught in infinite loop') 
01100         RETURN 
01101       ENDIF 
01102  
01103 C...Copy undecayed parton. 
01104       IF(K(IA,1).EQ.3) THEN 
01105         IF(I1.GE.MSTU(4)-MSTU(32)-5) THEN 
01106           CALL LUERRM(11,'(LUPREP:) no more memory left in LUJETS') 
01107           RETURN 
01108         ENDIF 
01109         I1=I1+1 
01110         K(I1,1)=2 
01111         IF(NSTP.GE.2.AND.IABS(K(IA,2)).NE.21) K(I1,1)=1 
01112         K(I1,2)=K(IA,2) 
01113         K(I1,3)=IA 
01114         K(I1,4)=0 
01115         K(I1,5)=0 
01116         DO 110 J=1,5 
01117         P(I1,J)=P(IA,J) 
01118         V(I1,J)=V(IA,J) 
01119   110   CONTINUE 
01120         K(IA,1)=K(IA,1)+10 
01121         IF(K(I1,1).EQ.1) GOTO 120 
01122       ENDIF 
01123  
01124 C...Go to next parton in colour space. 
01125       IB=IA 
01126       IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5)). 
01127      &NE.0) THEN 
01128         IA=MOD(K(IB,KCS),MSTU(5)) 
01129         K(IB,KCS)=K(IB,KCS)+MSTU(5)**2 
01130         MREV=0 
01131       ELSE 
01132         IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),MSTU(5)). 
01133      &  EQ.0) KCS=9-KCS 
01134         IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5)) 
01135         K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2 
01136         MREV=1 
01137       ENDIF 
01138       IF(IA.LE.0.OR.IA.GT.N) THEN 
01139         CALL LUERRM(12,'(LUPREP:) colour rearrangement failed') 
01140         RETURN 
01141       ENDIF 
01142       IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5), 
01143      &MSTU(5)).EQ.IB) THEN 
01144         IF(MREV.EQ.1) KCS=9-KCS 
01145         IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS 
01146         K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2 
01147       ELSE 
01148         IF(MREV.EQ.0) KCS=9-KCS 
01149         IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS 
01150         K(IA,KCS)=K(IA,KCS)+MSTU(5)**2 
01151       ENDIF 
01152       IF(IA.NE.I) GOTO 100 
01153       K(I1,1)=1 
01154   120 CONTINUE 
01155   130 CONTINUE 
01156       N=I1 
01157       IF(MSTJ(14).LT.0) RETURN 
01158  
01159 C...Find lowest-mass colour singlet jet system, OK if above threshold. 
01160       IF(MSTJ(14).EQ.0) GOTO 320 
01161       NS=N 
01162   140 NSIN=N-NS 
01163       PDM=1.+PARJ(32) 
01164       IC=0 
01165       DO 190 I=MAX(1,IP),NS 
01166       IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN 
01167       ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN 
01168         NSIN=NSIN+1 
01169         IC=I 
01170         DO 150 J=1,4 
01171         DPS(J)=P(I,J) 
01172   150   CONTINUE 
01173         MSTJ(93)=1 
01174         DPS(5)=ULMASS(K(I,2)) 
01175       ELSEIF(K(I,1).EQ.2) THEN 
01176         DO 160 J=1,4 
01177         DPS(J)=DPS(J)+P(I,J) 
01178   160   CONTINUE 
01179       ELSEIF(IC.NE.0.AND.KCHG(LUCOMP(K(I,2)),2).NE.0) THEN 
01180         DO 170 J=1,4 
01181         DPS(J)=DPS(J)+P(I,J) 
01182   170   CONTINUE 
01183         MSTJ(93)=1 
01184         DPS(5)=DPS(5)+ULMASS(K(I,2)) 
01185         PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-DPS(5) 
01186         IF(PD.LT.PDM) THEN 
01187           PDM=PD 
01188           DO 180 J=1,5 
01189           DPC(J)=DPS(J) 
01190   180     CONTINUE 
01191           IC1=IC 
01192           IC2=I 
01193         ENDIF 
01194         IC=0 
01195       ELSE 
01196         NSIN=NSIN+1 
01197       ENDIF 
01198   190 CONTINUE 
01199       IF(PDM.GE.PARJ(32)) GOTO 320 
01200  
01201 C...Fill small-mass system as cluster. 
01202       NSAV=N 
01203       PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2)) 
01204       K(N+1,1)=11 
01205       K(N+1,2)=91 
01206       K(N+1,3)=IC1 
01207       K(N+1,4)=N+2 
01208       K(N+1,5)=N+3 
01209       P(N+1,1)=DPC(1) 
01210       P(N+1,2)=DPC(2) 
01211       P(N+1,3)=DPC(3) 
01212       P(N+1,4)=DPC(4) 
01213       P(N+1,5)=PECM 
01214  
01215 C...Form two particles from flavours of lowest-mass system, if feasible. 
01216       K(N+2,1)=1 
01217       K(N+3,1)=1 
01218       IF(MSTU(16).NE.2) THEN 
01219         K(N+2,3)=N+1 
01220         K(N+3,3)=N+1 
01221       ELSE 
01222         K(N+2,3)=IC1 
01223         K(N+3,3)=IC2 
01224       ENDIF 
01225       K(N+2,4)=0 
01226       K(N+3,4)=0 
01227       K(N+2,5)=0 
01228       K(N+3,5)=0 
01229       IF(IABS(K(IC1,2)).NE.21) THEN 
01230         KC1=LUCOMP(K(IC1,2)) 
01231         KC2=LUCOMP(K(IC2,2)) 
01232         IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 320 
01233         KQ1=KCHG(KC1,2)*ISIGN(1,K(IC1,2)) 
01234         KQ2=KCHG(KC2,2)*ISIGN(1,K(IC2,2)) 
01235         IF(KQ1+KQ2.NE.0) GOTO 320 
01236   200   CALL LUKFDI(K(IC1,2),0,KFLN,K(N+2,2)) 
01237         CALL LUKFDI(K(IC2,2),-KFLN,KFLDMP,K(N+3,2)) 
01238         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 200 
01239       ELSE 
01240         IF(IABS(K(IC2,2)).NE.21) GOTO 320 
01241   210   CALL LUKFDI(1+INT((2.+PARJ(2))*RLU(0)),0,KFLN,KFDMP) 
01242         CALL LUKFDI(KFLN,0,KFLM,K(N+2,2)) 
01243         CALL LUKFDI(-KFLN,-KFLM,KFLDMP,K(N+3,2)) 
01244         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 210 
01245       ENDIF 
01246       P(N+2,5)=ULMASS(K(N+2,2)) 
01247       P(N+3,5)=ULMASS(K(N+3,2)) 
01248       IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM.AND.NSIN.EQ.1) GOTO 320 
01249       IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) GOTO 260 
01250  
01251 C...Perform two-particle decay of jet system, if possible. 
01252       IF(PECM.GE.0.02*DPC(4)) THEN 
01253         PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2- 
01254      &  (P(N+2,5)-P(N+3,5))**2))/(2.*PECM) 
01255         UE(3)=2.*RLU(0)-1. 
01256         PHI=PARU(2)*RLU(0) 
01257         UE(1)=SQRT(1.-UE(3)**2)*COS(PHI) 
01258         UE(2)=SQRT(1.-UE(3)**2)*SIN(PHI) 
01259         DO 220 J=1,3 
01260         P(N+2,J)=PA*UE(J) 
01261         P(N+3,J)=-PA*UE(J) 
01262   220   CONTINUE 
01263         P(N+2,4)=SQRT(PA**2+P(N+2,5)**2) 
01264         P(N+3,4)=SQRT(PA**2+P(N+3,5)**2) 
01265         MSTU(33)=1 
01266         CALL LUDBRB(N+2,N+3,0.,0.,DPC(1)/DPC(4),DPC(2)/DPC(4), 
01267      &  DPC(3)/DPC(4)) 
01268       ELSE 
01269         NP=0 
01270         DO 230 I=IC1,IC2 
01271         IF(K(I,1).EQ.1.OR.K(I,1).EQ.2) NP=NP+1 
01272   230   CONTINUE 
01273         HA=P(IC1,4)*P(IC2,4)-P(IC1,1)*P(IC2,1)-P(IC1,2)*P(IC2,2)- 
01274      &  P(IC1,3)*P(IC2,3) 
01275         IF(NP.GE.3.OR.HA.LE.1.25*P(IC1,5)*P(IC2,5)) GOTO 260 
01276         HD1=0.5*(P(N+2,5)**2-P(IC1,5)**2) 
01277         HD2=0.5*(P(N+3,5)**2-P(IC2,5)**2) 
01278         HR=SQRT(MAX(0.,((HA-HD1-HD2)**2-(P(N+2,5)*P(N+3,5))**2)/ 
01279      &  (HA**2-(P(IC1,5)*P(IC2,5))**2)))-1. 
01280         HC=P(IC1,5)**2+2.*HA+P(IC2,5)**2 
01281         HK1=((P(IC2,5)**2+HA)*HR+HD1-HD2)/HC 
01282         HK2=((P(IC1,5)**2+HA)*HR+HD2-HD1)/HC 
01283         DO 240 J=1,4 
01284         P(N+2,J)=(1.+HK1)*P(IC1,J)-HK2*P(IC2,J) 
01285         P(N+3,J)=(1.+HK2)*P(IC2,J)-HK1*P(IC1,J) 
01286   240   CONTINUE 
01287       ENDIF 
01288       DO 250 J=1,4 
01289       V(N+1,J)=V(IC1,J) 
01290       V(N+2,J)=V(IC1,J) 
01291       V(N+3,J)=V(IC2,J) 
01292   250 CONTINUE 
01293       V(N+1,5)=0. 
01294       V(N+2,5)=0. 
01295       V(N+3,5)=0. 
01296       N=N+3 
01297       GOTO 300 
01298  
01299 C...Else form one particle from the flavours available, if possible. 
01300   260 K(N+1,5)=N+2 
01301       IF(IABS(K(IC1,2)).GT.100.AND.IABS(K(IC2,2)).GT.100) THEN 
01302         GOTO 320 
01303       ELSEIF(IABS(K(IC1,2)).NE.21) THEN 
01304         CALL LUKFDI(K(IC1,2),K(IC2,2),KFLDMP,K(N+2,2)) 
01305       ELSE 
01306         KFLN=1+INT((2.+PARJ(2))*RLU(0)) 
01307         CALL LUKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2)) 
01308       ENDIF 
01309       IF(K(N+2,2).EQ.0) GOTO 260 
01310       P(N+2,5)=ULMASS(K(N+2,2)) 
01311  
01312 C...Find parton/particle which combines to largest extra mass. 
01313       IR=0 
01314       HA=0. 
01315       HSM=0. 
01316       DO 280 MCOMB=1,3 
01317       IF(IR.NE.0) GOTO 280 
01318       DO 270 I=MAX(1,IP),N 
01319       IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2. 
01320      &AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 270 
01321       IF(MCOMB.EQ.1) KCI=LUCOMP(K(I,2)) 
01322       IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 270 
01323       IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 270 
01324       IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100) 
01325      &GOTO 270 
01326       HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3) 
01327       HSR=2.*HCR+PECM**2-P(N+2,5)**2-2.*P(N+2,5)*P(I,5) 
01328       IF(HSR.GT.HSM) THEN 
01329         IR=I 
01330         HA=HCR 
01331         HSM=HSR 
01332       ENDIF 
01333   270 CONTINUE 
01334   280 CONTINUE 
01335  
01336 C...Shuffle energy and momentum to put new particle on mass shell. 
01337       IF(IR.NE.0) THEN 
01338         HB=PECM**2+HA 
01339         HC=P(N+2,5)**2+HA 
01340         HD=P(IR,5)**2+HA 
01341         HK2=0.5*(HB*SQRT(MAX(0.,((HB+HC)**2-4.*(HB+HD)*P(N+2,5)**2)/ 
01342      &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD) 
01343         HK1=(0.5*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB 
01344         DO 290 J=1,4 
01345         P(N+2,J)=(1.+HK1)*DPC(J)-HK2*P(IR,J) 
01346         P(IR,J)=(1.+HK2)*P(IR,J)-HK1*DPC(J) 
01347         V(N+1,J)=V(IC1,J) 
01348         V(N+2,J)=V(IC1,J) 
01349   290   CONTINUE 
01350         V(N+1,5)=0. 
01351         V(N+2,5)=0. 
01352         N=N+2 
01353       ELSE 
01354         CALL LUERRM(3,'(LUPREP:) no match for collapsing cluster') 
01355         RETURN 
01356       ENDIF 
01357  
01358 C...Mark collapsed system and store daughter pointers. Iterate. 
01359   300 DO 310 I=IC1,IC2 
01360       IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.KCHG(LUCOMP(K(I,2)),2).NE.0) 
01361      &THEN 
01362         K(I,1)=K(I,1)+10 
01363         IF(MSTU(16).NE.2) THEN 
01364           K(I,4)=NSAV+1 
01365           K(I,5)=NSAV+1 
01366         ELSE 
01367           K(I,4)=NSAV+2 
01368           K(I,5)=N 
01369         ENDIF 
01370       ENDIF 
01371   310 CONTINUE 
01372       IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 140 
01373  
01374 C...Check flavours and invariant masses in parton systems. 
01375   320 NP=0 
01376       KFN=0 
01377       KQS=0 
01378       DO 330 J=1,5 
01379       DPS(J)=0. 
01380   330 CONTINUE 
01381       DO 360 I=MAX(1,IP),N 
01382       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 360 
01383       KC=LUCOMP(K(I,2)) 
01384       IF(KC.EQ.0) GOTO 360 
01385       KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
01386       IF(KQ.EQ.0) GOTO 360 
01387       NP=NP+1 
01388       IF(KQ.NE.2) THEN 
01389         KFN=KFN+1 
01390         KQS=KQS+KQ 
01391         MSTJ(93)=1 
01392         DPS(5)=DPS(5)+ULMASS(K(I,2)) 
01393       ENDIF 
01394       DO 340 J=1,4 
01395       DPS(J)=DPS(J)+P(I,J) 
01396   340 CONTINUE 
01397       IF(K(I,1).EQ.1) THEN 
01398         IF(NP.NE.1.AND.(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0)) CALL 
01399      &  LUERRM(2,'(LUPREP:) unphysical flavour combination') 
01400         IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT. 
01401      &  (0.9*PARJ(32)+DPS(5))**2) CALL LUERRM(3, 
01402      &  '(LUPREP:) too small mass in jet system') 
01403         NP=0 
01404         KFN=0 
01405         KQS=0 
01406         DO 350 J=1,5 
01407         DPS(J)=0. 
01408   350   CONTINUE 
01409       ENDIF 
01410   360 CONTINUE 
01411  
01412       RETURN 
01413       END 
01414  
01415 C********************************************************************* 
01416  
01417       SUBROUTINE LUSTRF(IP) 
01418 C...Purpose: to handle the fragmentation of an arbitrary colour singlet 
01419 C...jet system according to the Lund string fragmentation model. 
01420       IMPLICIT DOUBLE PRECISION(D) 
01421       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
01422       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
01423       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
01424       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
01425       DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2), 
01426      &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(3),PJU(5,5), 
01427      &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8) 
01428  
01429 C...Function: four-product of two vectors. 
01430       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) 
01431       DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)- 
01432      &DP(I,3)*DP(J,3) 
01433  
01434 C...Reset counters. Identify parton system. 
01435       MSTJ(91)=0 
01436       NSAV=N 
01437       MSTU90=MSTU(90) 
01438       NP=0 
01439       KQSUM=0 
01440       DO 100 J=1,5 
01441       DPS(J)=0D0 
01442   100 CONTINUE 
01443       MJU(1)=0 
01444       MJU(2)=0 
01445       I=IP-1 
01446   110 I=I+1 
01447       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN 
01448         CALL LUERRM(12,'(LUSTRF:) failed to reconstruct jet system') 
01449         IF(MSTU(21).GE.1) RETURN 
01450       ENDIF 
01451       IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110 
01452       KC=LUCOMP(K(I,2)) 
01453       IF(KC.EQ.0) GOTO 110 
01454       KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
01455       IF(KQ.EQ.0) GOTO 110 
01456       IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN 
01457         CALL LUERRM(11,'(LUSTRF:) no more memory left in LUJETS') 
01458         IF(MSTU(21).GE.1) RETURN 
01459       ENDIF 
01460  
01461 C...Take copy of partons to be considered. Check flavour sum. 
01462       NP=NP+1 
01463       DO 120 J=1,5 
01464       K(N+NP,J)=K(I,J) 
01465       P(N+NP,J)=P(I,J) 
01466       IF(J.NE.4) DPS(J)=DPS(J)+P(I,J) 
01467   120 CONTINUE 
01468       DPS(4)=DPS(4)+SQRT(DBLE(P(I,1))**2+DBLE(P(I,2))**2+ 
01469      &DBLE(P(I,3))**2+DBLE(P(I,5))**2) 
01470       K(N+NP,3)=I 
01471       IF(KQ.NE.2) KQSUM=KQSUM+KQ 
01472       IF(K(I,1).EQ.41) THEN 
01473         KQSUM=KQSUM+2*KQ 
01474         IF(KQSUM.EQ.KQ) MJU(1)=N+NP 
01475         IF(KQSUM.NE.KQ) MJU(2)=N+NP 
01476       ENDIF 
01477       IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110 
01478       IF(KQSUM.NE.0) THEN 
01479         CALL LUERRM(12,'(LUSTRF:) unphysical flavour combination') 
01480         IF(MSTU(21).GE.1) RETURN 
01481       ENDIF 
01482  
01483 C...Boost copied system to CM frame (for better numerical precision). 
01484       IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN 
01485         MBST=0 
01486         MSTU(33)=1 
01487         CALL LUDBRB(N+1,N+NP,0.,0.,-DPS(1)/DPS(4),-DPS(2)/DPS(4), 
01488      &  -DPS(3)/DPS(4)) 
01489       ELSE 
01490         MBST=1 
01491         HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3))) 
01492         DO 130 I=N+1,N+NP 
01493         HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2 
01494         IF(P(I,3).GT.0.) THEN 
01495           HHPEZ=(P(I,4)+P(I,3))/HHBZ 
01496           P(I,3)=0.5*(HHPEZ-HHPMT/HHPEZ) 
01497           P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
01498         ELSE 
01499           HHPEZ=(P(I,4)-P(I,3))*HHBZ 
01500           P(I,3)=-0.5*(HHPEZ-HHPMT/HHPEZ) 
01501           P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
01502         ENDIF 
01503   130   CONTINUE 
01504       ENDIF 
01505  
01506 C...Search for very nearby partons that may be recombined. 
01507       NTRYR=0 
01508       PARU12=PARU(12) 
01509       PARU13=PARU(13) 
01510       MJU(3)=MJU(1) 
01511       MJU(4)=MJU(2) 
01512       NR=NP 
01513   140 IF(NR.GE.3) THEN 
01514         PDRMIN=2.*PARU12 
01515         DO 150 I=N+1,N+NR 
01516         IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150 
01517         I1=I+1 
01518         IF(I.EQ.N+NR) I1=N+1 
01519         IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150 
01520         IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21) 
01521      &  GOTO 150 
01522         IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21) GOTO 150 
01523         PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+ 
01524      &  P(I1,2)**2+P(I1,3)**2)) 
01525         PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3) 
01526         PDR=4.*(PAP-PVP)**2/MAX(1E-6,PARU13**2*PAP+2.*(PAP-PVP)) 
01527         IF(PDR.LT.PDRMIN) THEN 
01528           IR=I 
01529           PDRMIN=PDR 
01530         ENDIF 
01531   150   CONTINUE 
01532  
01533 C...Recombine very nearby partons to avoid machine precision problems. 
01534         IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN 
01535           DO 160 J=1,4 
01536           P(N+1,J)=P(N+1,J)+P(N+NR,J) 
01537   160     CONTINUE 
01538           P(N+1,5)=SQRT(MAX(0.,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2- 
01539      &    P(N+1,3)**2)) 
01540           NR=NR-1 
01541           GOTO 140 
01542         ELSEIF(PDRMIN.LT.PARU12) THEN 
01543           DO 170 J=1,4 
01544           P(IR,J)=P(IR,J)+P(IR+1,J) 
01545   170     CONTINUE 
01546           P(IR,5)=SQRT(MAX(0.,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2- 
01547      &    P(IR,3)**2)) 
01548           DO 190 I=IR+1,N+NR-1 
01549           K(I,2)=K(I+1,2) 
01550           DO 180 J=1,5 
01551           P(I,J)=P(I+1,J) 
01552   180     CONTINUE 
01553   190     CONTINUE 
01554           IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2) 
01555           NR=NR-1 
01556           IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1 
01557           IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1 
01558           GOTO 140 
01559         ENDIF 
01560       ENDIF 
01561       NTRYR=NTRYR+1 
01562  
01563 C...Reset particle counter. Skip ahead if no junctions are present; 
01564 C...this is usually the case! 
01565       NRS=MAX(5*NR+11,NP) 
01566       NTRY=0 
01567   200 NTRY=NTRY+1 
01568       IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
01569         PARU12=4.*PARU12 
01570         PARU13=2.*PARU13 
01571         GOTO 140 
01572       ELSEIF(NTRY.GT.100) THEN 
01573         CALL LUERRM(14,'(LUSTRF:) caught in infinite loop') 
01574         IF(MSTU(21).GE.1) RETURN 
01575       ENDIF 
01576       I=N+NRS 
01577       MSTU(90)=MSTU90 
01578       IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 580 
01579       DO 570 JT=1,2 
01580       NJS(JT)=0 
01581       IF(MJU(JT).EQ.0) GOTO 570 
01582       JS=3-2*JT 
01583  
01584 C...Find and sum up momentum on three sides of junction. Check flavours. 
01585       DO 220 IU=1,3 
01586       IJU(IU)=0 
01587       DO 210 J=1,5 
01588       PJU(IU,J)=0. 
01589   210 CONTINUE 
01590   220 CONTINUE 
01591       IU=0 
01592       DO 240 I1=N+1+(JT-1)*(NR-1),N+NR+(JT-1)*(1-NR),JS 
01593       IF(K(I1,2).NE.21.AND.IU.LE.2) THEN 
01594         IU=IU+1 
01595         IJU(IU)=I1 
01596       ENDIF 
01597       DO 230 J=1,4 
01598       PJU(IU,J)=PJU(IU,J)+P(I1,J) 
01599   230 CONTINUE 
01600   240 CONTINUE 
01601       DO 250 IU=1,3 
01602       PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2) 
01603   250 CONTINUE 
01604       IF(K(IJU(3),2)/100.NE.10*K(IJU(1),2)+K(IJU(2),2).AND. 
01605      &K(IJU(3),2)/100.NE.10*K(IJU(2),2)+K(IJU(1),2)) THEN 
01606         CALL LUERRM(12,'(LUSTRF:) unphysical flavour combination') 
01607         IF(MSTU(21).GE.1) RETURN 
01608       ENDIF 
01609  
01610 C...Calculate (approximate) boost to rest frame of junction. 
01611       T12=(PJU(1,1)*PJU(2,1)+PJU(1,2)*PJU(2,2)+PJU(1,3)*PJU(2,3))/ 
01612      &(PJU(1,5)*PJU(2,5)) 
01613       T13=(PJU(1,1)*PJU(3,1)+PJU(1,2)*PJU(3,2)+PJU(1,3)*PJU(3,3))/ 
01614      &(PJU(1,5)*PJU(3,5)) 
01615       T23=(PJU(2,1)*PJU(3,1)+PJU(2,2)*PJU(3,2)+PJU(2,3)*PJU(3,3))/ 
01616      &(PJU(2,5)*PJU(3,5)) 
01617       T11=SQRT((2./3.)*(1.-T12)*(1.-T13)/(1.-T23)) 
01618       T22=SQRT((2./3.)*(1.-T12)*(1.-T23)/(1.-T13)) 
01619       TSQ=SQRT((2.*T11*T22+T12-1.)*(1.+T12)) 
01620       T1F=(TSQ-T22*(1.+T12))/(1.-T12**2) 
01621       T2F=(TSQ-T11*(1.+T12))/(1.-T12**2) 
01622       DO 260 J=1,3 
01623       TJU(J)=-(T1F*PJU(1,J)/PJU(1,5)+T2F*PJU(2,J)/PJU(2,5)) 
01624   260 CONTINUE 
01625       TJU(4)=SQRT(1.+TJU(1)**2+TJU(2)**2+TJU(3)**2) 
01626       DO 270 IU=1,3 
01627       PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)- 
01628      &TJU(3)*PJU(IU,3) 
01629   270 CONTINUE 
01630  
01631 C...Put junction at rest if motion could give inconsistencies. 
01632       IF(PJU(1,5)+PJU(2,5).GT.PJU(1,4)+PJU(2,4)) THEN 
01633         DO 280 J=1,3 
01634         TJU(J)=0. 
01635   280   CONTINUE 
01636         TJU(4)=1. 
01637         PJU(1,5)=PJU(1,4) 
01638         PJU(2,5)=PJU(2,4) 
01639         PJU(3,5)=PJU(3,4) 
01640       ENDIF 
01641  
01642 C...Start preparing for fragmentation of two strings from junction. 
01643       ISTA=I 
01644       DO 550 IU=1,2 
01645       NS=IJU(IU+1)-IJU(IU) 
01646  
01647 C...Junction strings: find longitudinal string directions. 
01648       DO 310 IS=1,NS 
01649       IS1=IJU(IU)+IS-1 
01650       IS2=IJU(IU)+IS 
01651       DO 290 J=1,5 
01652       DP(1,J)=0.5*P(IS1,J) 
01653       IF(IS.EQ.1) DP(1,J)=P(IS1,J) 
01654       DP(2,J)=0.5*P(IS2,J) 
01655       IF(IS.EQ.NS) DP(2,J)=-PJU(IU,J) 
01656   290 CONTINUE 
01657       IF(IS.EQ.NS) DP(2,4)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2) 
01658       IF(IS.EQ.NS) DP(2,5)=0. 
01659       DP(3,5)=DFOUR(1,1) 
01660       DP(4,5)=DFOUR(2,2) 
01661       DHKC=DFOUR(1,2) 
01662       IF(DP(3,5)+2.*DHKC+DP(4,5).LE.0.) THEN 
01663         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
01664         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
01665         DP(3,5)=0D0 
01666         DP(4,5)=0D0 
01667         DHKC=DFOUR(1,2) 
01668       ENDIF 
01669       DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5)) 
01670       DHK1=0.5*((DP(4,5)+DHKC)/DHKS-1.) 
01671       DHK2=0.5*((DP(3,5)+DHKC)/DHKS-1.) 
01672       IN1=N+NR+4*IS-3 
01673       P(IN1,5)=SQRT(DP(3,5)+2.*DHKC+DP(4,5)) 
01674       DO 300 J=1,4 
01675       P(IN1,J)=(1.+DHK1)*DP(1,J)-DHK2*DP(2,J) 
01676       P(IN1+1,J)=(1.+DHK2)*DP(2,J)-DHK1*DP(1,J) 
01677   300 CONTINUE 
01678   310 CONTINUE 
01679  
01680 C...Junction strings: initialize flavour, momentum and starting pos. 
01681       ISAV=I 
01682       MSTU91=MSTU(90) 
01683   320 NTRY=NTRY+1 
01684       IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
01685         PARU12=4.*PARU12 
01686         PARU13=2.*PARU13 
01687         GOTO 140 
01688       ELSEIF(NTRY.GT.100) THEN 
01689         CALL LUERRM(14,'(LUSTRF:) caught in infinite loop') 
01690         IF(MSTU(21).GE.1) RETURN 
01691       ENDIF 
01692       I=ISAV 
01693       MSTU(90)=MSTU91 
01694       IRANKJ=0 
01695       IE(1)=K(N+1+(JT/2)*(NP-1),3) 
01696       IN(4)=N+NR+1 
01697       IN(5)=IN(4)+1 
01698       IN(6)=N+NR+4*NS+1 
01699       DO 340 JQ=1,2 
01700       DO 330 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4 
01701       P(IN1,1)=2-JQ 
01702       P(IN1,2)=JQ-1 
01703       P(IN1,3)=1. 
01704   330 CONTINUE 
01705   340 CONTINUE 
01706       KFL(1)=K(IJU(IU),2) 
01707       PX(1)=0. 
01708       PY(1)=0. 
01709       GAM(1)=0. 
01710       DO 350 J=1,5 
01711       PJU(IU+3,J)=0. 
01712   350 CONTINUE 
01713  
01714 C...Junction strings: find initial transverse directions. 
01715       DO 360 J=1,4 
01716       DP(1,J)=P(IN(4),J) 
01717       DP(2,J)=P(IN(4)+1,J) 
01718       DP(3,J)=0. 
01719       DP(4,J)=0. 
01720   360 CONTINUE 
01721       DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
01722       DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
01723       DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
01724       DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
01725       DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
01726       IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
01727       IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
01728       IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
01729       IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
01730       DHC12=DFOUR(1,2) 
01731       DHCX1=DFOUR(3,1)/DHC12 
01732       DHCX2=DFOUR(3,2)/DHC12 
01733       DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
01734       DHCY1=DFOUR(4,1)/DHC12 
01735       DHCY2=DFOUR(4,2)/DHC12 
01736       DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
01737       DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
01738       DO 370 J=1,4 
01739       DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
01740       P(IN(6),J)=DP(3,J) 
01741       P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
01742      &DHCYX*DP(3,J)) 
01743   370 CONTINUE 
01744  
01745 C...Junction strings: produce new particle, origin. 
01746   380 I=I+1 
01747       IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN 
01748         CALL LUERRM(11,'(LUSTRF:) no more memory left in LUJETS') 
01749         IF(MSTU(21).GE.1) RETURN 
01750       ENDIF 
01751       IRANKJ=IRANKJ+1 
01752       K(I,1)=1 
01753       K(I,3)=IE(1) 
01754       K(I,4)=0 
01755       K(I,5)=0 
01756  
01757 C...Junction strings: generate flavour, hadron, pT, z and Gamma. 
01758   390 CALL LUKFDI(KFL(1),0,KFL(3),K(I,2)) 
01759       IF(K(I,2).EQ.0) GOTO 320 
01760       IF(MSTJ(12).GE.3.AND.IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND. 
01761      &IABS(KFL(3)).GT.10) THEN 
01762         IF(RLU(0).GT.PARJ(19)) GOTO 390 
01763       ENDIF 
01764       P(I,5)=ULMASS(K(I,2)) 
01765       CALL LUPTDI(KFL(1),PX(3),PY(3)) 
01766       PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2 
01767       CALL LUZDIS(KFL(1),KFL(3),PR(1),Z) 
01768       IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND. 
01769      &MSTU(90).LT.8) THEN 
01770         MSTU(90)=MSTU(90)+1 
01771         MSTU(90+MSTU(90))=I 
01772         PARU(90+MSTU(90))=Z 
01773       ENDIF 
01774       GAM(3)=(1.-Z)*(GAM(1)+PR(1)/Z) 
01775       DO 400 J=1,3 
01776       IN(J)=IN(3+J) 
01777   400 CONTINUE 
01778  
01779 C...Junction strings: stepping within or from 'low' string region easy. 
01780       IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)* 
01781      &P(IN(1),5)**2.GE.PR(1)) THEN 
01782         P(IN(1)+2,4)=Z*P(IN(1)+2,3) 
01783         P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2) 
01784         DO 410 J=1,4 
01785         P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J) 
01786   410   CONTINUE 
01787         GOTO 500 
01788       ELSEIF(IN(1)+1.EQ.IN(2)) THEN 
01789         P(IN(2)+2,4)=P(IN(2)+2,3) 
01790         P(IN(2)+2,1)=1. 
01791         IN(2)=IN(2)+4 
01792         IF(IN(2).GT.N+NR+4*NS) GOTO 320 
01793         IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
01794           P(IN(1)+2,4)=P(IN(1)+2,3) 
01795           P(IN(1)+2,1)=0. 
01796           IN(1)=IN(1)+4 
01797         ENDIF 
01798       ENDIF 
01799  
01800 C...Junction strings: find new transverse directions. 
01801   420 IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR. 
01802      &IN(1).GT.IN(2)) GOTO 320 
01803       IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN 
01804         DO 430 J=1,4 
01805         DP(1,J)=P(IN(1),J) 
01806         DP(2,J)=P(IN(2),J) 
01807         DP(3,J)=0. 
01808         DP(4,J)=0. 
01809   430   CONTINUE 
01810         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
01811         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
01812         DHC12=DFOUR(1,2) 
01813         IF(DHC12.LE.1E-2) THEN 
01814           P(IN(1)+2,4)=P(IN(1)+2,3) 
01815           P(IN(1)+2,1)=0. 
01816           IN(1)=IN(1)+4 
01817           GOTO 420 
01818         ENDIF 
01819         IN(3)=N+NR+4*NS+5 
01820         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
01821         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
01822         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
01823         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
01824         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
01825         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
01826         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
01827         DHCX1=DFOUR(3,1)/DHC12 
01828         DHCX2=DFOUR(3,2)/DHC12 
01829         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
01830         DHCY1=DFOUR(4,1)/DHC12 
01831         DHCY2=DFOUR(4,2)/DHC12 
01832         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
01833         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
01834         DO 440 J=1,4 
01835         DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
01836         P(IN(3),J)=DP(3,J) 
01837         P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
01838      &  DHCYX*DP(3,J)) 
01839   440   CONTINUE 
01840 C...Express pT with respect to new axes, if sensible. 
01841         PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3))) 
01842         PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1)) 
01843         IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01) THEN 
01844           PX(3)=PXP 
01845           PY(3)=PYP 
01846         ENDIF 
01847       ENDIF 
01848  
01849 C...Junction strings: sum up known four-momentum, coefficients for m2. 
01850       DO 470 J=1,4 
01851       DHG(J)=0. 
01852       P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+ 
01853      &PY(3)*P(IN(3)+1,J) 
01854       DO 450 IN1=IN(4),IN(1)-4,4 
01855       P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J) 
01856   450 CONTINUE 
01857       DO 460 IN2=IN(5),IN(2)-4,4 
01858       P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J) 
01859   460 CONTINUE 
01860   470 CONTINUE 
01861       DHM(1)=FOUR(I,I) 
01862       DHM(2)=2.*FOUR(I,IN(1)) 
01863       DHM(3)=2.*FOUR(I,IN(2)) 
01864       DHM(4)=2.*FOUR(IN(1),IN(2)) 
01865  
01866 C...Junction strings: find coefficients for Gamma expression. 
01867       DO 490 IN2=IN(1)+1,IN(2),4 
01868       DO 480 IN1=IN(1),IN2-1,4 
01869       DHC=2.*FOUR(IN1,IN2) 
01870       DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC 
01871       IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC 
01872       IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC 
01873       IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC 
01874   480 CONTINUE 
01875   490 CONTINUE 
01876  
01877 C...Junction strings: solve (m2, Gamma) equation system for energies. 
01878       DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3) 
01879       IF(ABS(DHS1).LT.1E-4) GOTO 320 
01880       DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)* 
01881      &(P(I,5)**2-DHM(1))+DHG(2)*DHM(3) 
01882       DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1)) 
01883       P(IN(2)+2,4)=0.5*(SQRT(MAX(0D0,DHS2**2-4.*DHS1*DHS3))/ABS(DHS1)- 
01884      &DHS2/DHS1) 
01885       IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0.) GOTO 320 
01886       P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/ 
01887      &(DHM(2)+DHM(4)*P(IN(2)+2,4)) 
01888  
01889 C...Junction strings: step to new region if necessary. 
01890       IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN 
01891         P(IN(2)+2,4)=P(IN(2)+2,3) 
01892         P(IN(2)+2,1)=1. 
01893         IN(2)=IN(2)+4 
01894         IF(IN(2).GT.N+NR+4*NS) GOTO 320 
01895         IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
01896           P(IN(1)+2,4)=P(IN(1)+2,3) 
01897           P(IN(1)+2,1)=0. 
01898           IN(1)=IN(1)+4 
01899         ENDIF 
01900         GOTO 420 
01901       ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN 
01902         P(IN(1)+2,4)=P(IN(1)+2,3) 
01903         P(IN(1)+2,1)=0. 
01904         IN(1)=IN(1)+JS 
01905         GOTO 820 
01906       ENDIF 
01907  
01908 C...Junction strings: particle four-momentum, remainder, loop back. 
01909   500 DO 510 J=1,4 
01910       P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J) 
01911       PJU(IU+3,J)=PJU(IU+3,J)+P(I,J) 
01912   510 CONTINUE 
01913       IF(P(I,4).LT.P(I,5)) GOTO 320 
01914       PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)- 
01915      &TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3) 
01916       IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN 
01917         KFL(1)=-KFL(3) 
01918         PX(1)=-PX(3) 
01919         PY(1)=-PY(3) 
01920         GAM(1)=GAM(3) 
01921         IF(IN(3).NE.IN(6)) THEN 
01922           DO 520 J=1,4 
01923           P(IN(6),J)=P(IN(3),J) 
01924           P(IN(6)+1,J)=P(IN(3)+1,J) 
01925   520     CONTINUE 
01926         ENDIF 
01927         DO 530 JQ=1,2 
01928         IN(3+JQ)=IN(JQ) 
01929         P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4) 
01930         P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4) 
01931   530   CONTINUE 
01932         GOTO 380 
01933       ENDIF 
01934  
01935 C...Junction strings: save quantities left after each string. 
01936       IF(IABS(KFL(1)).GT.10) GOTO 320 
01937       I=I-1 
01938       KFJH(IU)=KFL(1) 
01939       DO 540 J=1,4 
01940       PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J) 
01941   540 CONTINUE 
01942   550 CONTINUE 
01943  
01944 C...Junction strings: put together to new effective string endpoint. 
01945       NJS(JT)=I-ISTA 
01946       KFJS(JT)=K(K(MJU(JT+2),3),2) 
01947       KFLS=2*INT(RLU(0)+3.*PARJ(4)/(1.+3.*PARJ(4)))+1 
01948       IF(KFJH(1).EQ.KFJH(2)) KFLS=3 
01949       IF(ISTA.NE.I) KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)), 
01950      &IABS(KFJH(2)))+100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+ 
01951      &KFLS,KFJH(1)) 
01952       DO 560 J=1,4 
01953       PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J) 
01954       PJS(JT+2,J)=PJU(4,J)+PJU(5,J) 
01955   560 CONTINUE 
01956       PJS(JT,5)=SQRT(MAX(0.,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2- 
01957      &PJS(JT,3)**2)) 
01958   570 CONTINUE 
01959  
01960 C...Open versus closed strings. Choose breakup region for latter. 
01961   580 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN 
01962         NS=MJU(2)-MJU(1) 
01963         NB=MJU(1)-N 
01964       ELSEIF(MJU(1).NE.0) THEN 
01965         NS=N+NR-MJU(1) 
01966         NB=MJU(1)-N 
01967       ELSEIF(MJU(2).NE.0) THEN 
01968         NS=MJU(2)-N 
01969         NB=1 
01970       ELSEIF(IABS(K(N+1,2)).NE.21) THEN 
01971         NS=NR-1 
01972         NB=1 
01973       ELSE 
01974         NS=NR+1 
01975         W2SUM=0. 
01976         DO 590 IS=1,NR 
01977         P(N+NR+IS,1)=0.5*FOUR(N+IS,N+IS+1-NR*(IS/NR)) 
01978         W2SUM=W2SUM+P(N+NR+IS,1) 
01979   590   CONTINUE 
01980         W2RAN=RLU(0)*W2SUM 
01981         NB=0 
01982   600   NB=NB+1 
01983         W2SUM=W2SUM-P(N+NR+NB,1) 
01984         IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 600 
01985       ENDIF 
01986  
01987 C...Find longitudinal string directions (i.e. lightlike four-vectors). 
01988       DO 630 IS=1,NS 
01989       IS1=N+IS+NB-1-NR*((IS+NB-2)/NR) 
01990       IS2=N+IS+NB-NR*((IS+NB-1)/NR) 
01991       DO 610 J=1,5 
01992       DP(1,J)=P(IS1,J) 
01993       IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5*DP(1,J) 
01994       IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J) 
01995       DP(2,J)=P(IS2,J) 
01996       IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5*DP(2,J) 
01997       IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J) 
01998   610 CONTINUE 
01999       DP(3,5)=DFOUR(1,1) 
02000       DP(4,5)=DFOUR(2,2) 
02001       DHKC=DFOUR(1,2) 
02002       IF(DP(3,5)+2.*DHKC+DP(4,5).LE.0.) THEN 
02003         DP(3,5)=DP(1,5)**2 
02004         DP(4,5)=DP(2,5)**2 
02005         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2+DP(1,5)**2) 
02006         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2+DP(2,5)**2) 
02007         DHKC=DFOUR(1,2) 
02008       ENDIF 
02009       DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5)) 
02010       DHK1=0.5*((DP(4,5)+DHKC)/DHKS-1.) 
02011       DHK2=0.5*((DP(3,5)+DHKC)/DHKS-1.) 
02012       IN1=N+NR+4*IS-3 
02013       P(IN1,5)=SQRT(DP(3,5)+2.*DHKC+DP(4,5)) 
02014       DO 620 J=1,4 
02015       P(IN1,J)=(1.+DHK1)*DP(1,J)-DHK2*DP(2,J) 
02016       P(IN1+1,J)=(1.+DHK2)*DP(2,J)-DHK1*DP(1,J) 
02017   620 CONTINUE 
02018   630 CONTINUE 
02019  
02020 C...Begin initialization: sum up energy, set starting position. 
02021       ISAV=I 
02022       MSTU91=MSTU(90) 
02023   640 NTRY=NTRY+1 
02024       IF(NTRY.GT.100.AND.NTRYR.LE.4) THEN 
02025         PARU12=4.*PARU12 
02026         PARU13=2.*PARU13 
02027         GOTO 140 
02028       ELSEIF(NTRY.GT.100) THEN 
02029         CALL LUERRM(14,'(LUSTRF:) caught in infinite loop') 
02030         IF(MSTU(21).GE.1) RETURN 
02031       ENDIF 
02032       I=ISAV 
02033       MSTU(90)=MSTU91 
02034       DO 660 J=1,4 
02035       P(N+NRS,J)=0. 
02036       DO 650 IS=1,NR 
02037       P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J) 
02038   650 CONTINUE 
02039   660 CONTINUE 
02040       DO 680 JT=1,2 
02041       IRANK(JT)=0 
02042       IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT) 
02043       IF(NS.GT.NR) IRANK(JT)=1 
02044       IE(JT)=K(N+1+(JT/2)*(NP-1),3) 
02045       IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1) 
02046       IN(3*JT+2)=IN(3*JT+1)+1 
02047       IN(3*JT+3)=N+NR+4*NS+2*JT-1 
02048       DO 670 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4 
02049       P(IN1,1)=2-JT 
02050       P(IN1,2)=JT-1 
02051       P(IN1,3)=1. 
02052   670 CONTINUE 
02053   680 CONTINUE 
02054  
02055 C...Initialize flavour and pT variables for open string. 
02056       IF(NS.LT.NR) THEN 
02057         PX(1)=0. 
02058         PY(1)=0. 
02059         IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL LUPTDI(0,PX(1),PY(1)) 
02060         PX(2)=-PX(1) 
02061         PY(2)=-PY(1) 
02062         DO 690 JT=1,2 
02063         KFL(JT)=K(IE(JT),2) 
02064         IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT) 
02065         MSTJ(93)=1 
02066         PMQ(JT)=ULMASS(KFL(JT)) 
02067         GAM(JT)=0. 
02068   690   CONTINUE 
02069  
02070 C...Closed string: random initial breakup flavour, pT and vertex. 
02071       ELSE 
02072         KFL(3)=INT(1.+(2.+PARJ(2))*RLU(0))*(-1)**INT(RLU(0)+0.5) 
02073         CALL LUKFDI(KFL(3),0,KFL(1),KDUMP) 
02074         KFL(2)=-KFL(1) 
02075         IF(IABS(KFL(1)).GT.10.AND.RLU(0).GT.0.5) THEN 
02076           KFL(2)=-(KFL(1)+ISIGN(10000,KFL(1))) 
02077         ELSEIF(IABS(KFL(1)).GT.10) THEN 
02078           KFL(1)=-(KFL(2)+ISIGN(10000,KFL(2))) 
02079         ENDIF 
02080         CALL LUPTDI(KFL(1),PX(1),PY(1)) 
02081         PX(2)=-PX(1) 
02082         PY(2)=-PY(1) 
02083         PR3=MIN(25.,0.1*P(N+NR+1,5)**2) 
02084   700   CALL LUZDIS(KFL(1),KFL(2),PR3,Z) 
02085         ZR=PR3/(Z*P(N+NR+1,5)**2) 
02086         IF(ZR.GE.1.) GOTO 700 
02087         DO 710 JT=1,2 
02088         MSTJ(93)=1 
02089         PMQ(JT)=ULMASS(KFL(JT)) 
02090         GAM(JT)=PR3*(1.-Z)/Z 
02091         IN1=N+NR+3+4*(JT/2)*(NS-1) 
02092         P(IN1,JT)=1.-Z 
02093         P(IN1,3-JT)=JT-1 
02094         P(IN1,3)=(2-JT)*(1.-Z)+(JT-1)*Z 
02095         P(IN1+1,JT)=ZR 
02096         P(IN1+1,3-JT)=2-JT 
02097         P(IN1+1,3)=(2-JT)*(1.-ZR)+(JT-1)*ZR 
02098   710   CONTINUE 
02099       ENDIF 
02100  
02101 C...Find initial transverse directions (i.e. spacelike four-vectors). 
02102       DO 750 JT=1,2 
02103       IF(JT.EQ.1.OR.NS.EQ.NR-1) THEN 
02104         IN1=IN(3*JT+1) 
02105         IN3=IN(3*JT+3) 
02106         DO 720 J=1,4 
02107         DP(1,J)=P(IN1,J) 
02108         DP(2,J)=P(IN1+1,J) 
02109         DP(3,J)=0. 
02110         DP(4,J)=0. 
02111   720   CONTINUE 
02112         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
02113         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
02114         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
02115         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
02116         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
02117         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
02118         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
02119         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
02120         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
02121         DHC12=DFOUR(1,2) 
02122         DHCX1=DFOUR(3,1)/DHC12 
02123         DHCX2=DFOUR(3,2)/DHC12 
02124         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
02125         DHCY1=DFOUR(4,1)/DHC12 
02126         DHCY2=DFOUR(4,2)/DHC12 
02127         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
02128         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
02129         DO 730 J=1,4 
02130         DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
02131         P(IN3,J)=DP(3,J) 
02132         P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
02133      &  DHCYX*DP(3,J)) 
02134   730   CONTINUE 
02135       ELSE 
02136         DO 740 J=1,4 
02137         P(IN3+2,J)=P(IN3,J) 
02138         P(IN3+3,J)=P(IN3+1,J) 
02139   740   CONTINUE 
02140       ENDIF 
02141   750 CONTINUE 
02142  
02143 C...Remove energy used up in junction string fragmentation. 
02144       IF(MJU(1)+MJU(2).GT.0) THEN 
02145         DO 770 JT=1,2 
02146         IF(NJS(JT).EQ.0) GOTO 770 
02147         DO 760 J=1,4 
02148         P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J) 
02149   760   CONTINUE 
02150   770   CONTINUE 
02151       ENDIF 
02152  
02153 C...Produce new particle: side, origin. 
02154   780 I=I+1 
02155       IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN 
02156         CALL LUERRM(11,'(LUSTRF:) no more memory left in LUJETS') 
02157         IF(MSTU(21).GE.1) RETURN 
02158       ENDIF 
02159       JT=1.5+RLU(0) 
02160       IF(IABS(KFL(3-JT)).GT.10) JT=3-JT 
02161       IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT 
02162       JR=3-JT 
02163       JS=3-2*JT 
02164       IRANK(JT)=IRANK(JT)+1 
02165       K(I,1)=1 
02166       K(I,3)=IE(JT) 
02167       K(I,4)=0 
02168       K(I,5)=0 
02169  
02170 C...Generate flavour, hadron and pT. 
02171   790 CALL LUKFDI(KFL(JT),0,KFL(3),K(I,2)) 
02172       IF(K(I,2).EQ.0) GOTO 640 
02173       IF(MSTJ(12).GE.3.AND.IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND. 
02174      &IABS(KFL(3)).GT.10) THEN 
02175         IF(RLU(0).GT.PARJ(19)) GOTO 790 
02176       ENDIF 
02177       P(I,5)=ULMASS(K(I,2)) 
02178       CALL LUPTDI(KFL(JT),PX(3),PY(3)) 
02179       PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2 
02180  
02181 C...Final hadrons for small invariant mass. 
02182       MSTJ(93)=1 
02183       PMQ(3)=ULMASS(KFL(3)) 
02184       PARJST=PARJ(33) 
02185       IF(MSTJ(11).EQ.2) PARJST=PARJ(34) 
02186       WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3) 
02187       IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN= 
02188      &WMIN-0.5*PARJ(36)*PMQ(3) 
02189       WREM2=FOUR(N+NRS,N+NRS) 
02190       IF(WREM2.LT.0.10) GOTO 640 
02191       IF(WREM2.LT.MAX(WMIN*(1.+(2.*RLU(0)-1.)*PARJ(37)), 
02192      &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 940 
02193  
02194 C...Choose z, which gives Gamma. Shift z for heavy flavours. 
02195       CALL LUZDIS(KFL(JT),KFL(3),PR(JT),Z) 
02196       IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND. 
02197      &MSTU(90).LT.8) THEN 
02198         MSTU(90)=MSTU(90)+1 
02199         MSTU(90+MSTU(90))=I 
02200         PARU(90+MSTU(90))=Z 
02201       ENDIF 
02202       KFL1A=IABS(KFL(1)) 
02203       KFL2A=IABS(KFL(2)) 
02204       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10), 
02205      &MOD(KFL2A/1000,10)).GE.4) THEN 
02206         PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
02207         PW12=SQRT(MAX(0.,(WREM2-PR(1)-PR(2))**2-4.*PR(1)*PR(2))) 
02208         Z=(WREM2+PR(JT)-PR(JR)+PW12*(2.*Z-1.))/(2.*WREM2) 
02209         PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
02210         IF((1.-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 940 
02211       ENDIF 
02212       GAM(3)=(1.-Z)*(GAM(JT)+PR(JT)/Z) 
02213       DO 800 J=1,3 
02214       IN(J)=IN(3*JT+J) 
02215   800 CONTINUE 
02216  
02217 C...Stepping within or from 'low' string region easy. 
02218       IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)* 
02219      &P(IN(1),5)**2.GE.PR(JT)) THEN 
02220         P(IN(JT)+2,4)=Z*P(IN(JT)+2,3) 
02221         P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2) 
02222         DO 810 J=1,4 
02223         P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J) 
02224   810   CONTINUE 
02225         GOTO 900 
02226       ELSEIF(IN(1)+1.EQ.IN(2)) THEN 
02227         P(IN(JR)+2,4)=P(IN(JR)+2,3) 
02228         P(IN(JR)+2,JT)=1. 
02229         IN(JR)=IN(JR)+4*JS 
02230         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 640 
02231         IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
02232           P(IN(JT)+2,4)=P(IN(JT)+2,3) 
02233           P(IN(JT)+2,JT)=0. 
02234           IN(JT)=IN(JT)+4*JS 
02235         ENDIF 
02236       ENDIF 
02237  
02238 C...Find new transverse directions (i.e. spacelike string vectors). 
02239   820 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR. 
02240      &IN(1).GT.IN(2)) GOTO 640 
02241       IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN 
02242         DO 830 J=1,4 
02243         DP(1,J)=P(IN(1),J) 
02244         DP(2,J)=P(IN(2),J) 
02245         DP(3,J)=0. 
02246         DP(4,J)=0. 
02247   830   CONTINUE 
02248         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2) 
02249         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2) 
02250         DHC12=DFOUR(1,2) 
02251         IF(DHC12.LE.1E-2) THEN 
02252           P(IN(JT)+2,4)=P(IN(JT)+2,3) 
02253           P(IN(JT)+2,JT)=0. 
02254           IN(JT)=IN(JT)+4*JS 
02255           GOTO 820 
02256         ENDIF 
02257         IN(3)=N+NR+4*NS+5 
02258         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4) 
02259         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4) 
02260         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4) 
02261         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1. 
02262         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1. 
02263         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1. 
02264         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1. 
02265         DHCX1=DFOUR(3,1)/DHC12 
02266         DHCX2=DFOUR(3,2)/DHC12 
02267         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12) 
02268         DHCY1=DFOUR(4,1)/DHC12 
02269         DHCY2=DFOUR(4,2)/DHC12 
02270         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12 
02271         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2) 
02272         DO 840 J=1,4 
02273         DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J)) 
02274         P(IN(3),J)=DP(3,J) 
02275         P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)- 
02276      &  DHCYX*DP(3,J)) 
02277   840   CONTINUE 
02278 C...Express pT with respect to new axes, if sensible. 
02279         PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)* 
02280      &  FOUR(IN(3*JT+3)+1,IN(3))) 
02281         PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)* 
02282      &  FOUR(IN(3*JT+3)+1,IN(3)+1)) 
02283         IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01) THEN 
02284           PX(3)=PXP 
02285           PY(3)=PYP 
02286         ENDIF 
02287       ENDIF 
02288  
02289 C...Sum up known four-momentum. Gives coefficients for m2 expression. 
02290       DO 870 J=1,4 
02291       DHG(J)=0. 
02292       P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+ 
02293      &PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J) 
02294       DO 850 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS 
02295       P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J) 
02296   850 CONTINUE 
02297       DO 860 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS 
02298       P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J) 
02299   860 CONTINUE 
02300   870 CONTINUE 
02301       DHM(1)=FOUR(I,I) 
02302       DHM(2)=2.*FOUR(I,IN(1)) 
02303       DHM(3)=2.*FOUR(I,IN(2)) 
02304       DHM(4)=2.*FOUR(IN(1),IN(2)) 
02305  
02306 C...Find coefficients for Gamma expression. 
02307       DO 890 IN2=IN(1)+1,IN(2),4 
02308       DO 880 IN1=IN(1),IN2-1,4 
02309       DHC=2.*FOUR(IN1,IN2) 
02310       DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC 
02311       IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC 
02312       IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC 
02313       IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC 
02314   880 CONTINUE 
02315   890 CONTINUE 
02316  
02317 C...Solve (m2, Gamma) equation system for energies taken. 
02318       DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1) 
02319       IF(ABS(DHS1).LT.1E-4) GOTO 640 
02320       DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)* 
02321      &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1) 
02322       DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1)) 
02323       P(IN(JR)+2,4)=0.5*(SQRT(MAX(0D0,DHS2**2-4.*DHS1*DHS3))/ABS(DHS1)- 
02324      &DHS2/DHS1) 
02325       IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0.) GOTO 640 
02326       P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/ 
02327      &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4)) 
02328  
02329 C...Step to new region if necessary. 
02330       IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN 
02331         P(IN(JR)+2,4)=P(IN(JR)+2,3) 
02332         P(IN(JR)+2,JT)=1. 
02333         IN(JR)=IN(JR)+4*JS 
02334         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 640 
02335         IF(FOUR(IN(1),IN(2)).LE.1E-2) THEN 
02336           P(IN(JT)+2,4)=P(IN(JT)+2,3) 
02337           P(IN(JT)+2,JT)=0. 
02338           IN(JT)=IN(JT)+4*JS 
02339         ENDIF 
02340         GOTO 820 
02341       ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN 
02342         P(IN(JT)+2,4)=P(IN(JT)+2,3) 
02343         P(IN(JT)+2,JT)=0. 
02344         IN(JT)=IN(JT)+4*JS 
02345         GOTO 820 
02346       ENDIF 
02347  
02348 C...Four-momentum of particle. Remaining quantities. Loop back. 
02349   900 DO 910 J=1,4 
02350       P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J) 
02351       P(N+NRS,J)=P(N+NRS,J)-P(I,J) 
02352   910 CONTINUE 
02353       IF(P(I,4).LT.P(I,5)) GOTO 640 
02354       KFL(JT)=-KFL(3) 
02355       PMQ(JT)=PMQ(3) 
02356       PX(JT)=-PX(3) 
02357       PY(JT)=-PY(3) 
02358       GAM(JT)=GAM(3) 
02359       IF(IN(3).NE.IN(3*JT+3)) THEN 
02360         DO 920 J=1,4 
02361         P(IN(3*JT+3),J)=P(IN(3),J) 
02362         P(IN(3*JT+3)+1,J)=P(IN(3)+1,J) 
02363   920   CONTINUE 
02364       ENDIF 
02365       DO 930 JQ=1,2 
02366       IN(3*JT+JQ)=IN(JQ) 
02367       P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4) 
02368       P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4) 
02369   930 CONTINUE 
02370       GOTO 780 
02371  
02372 C...Final hadron: side, flavour, hadron, mass. 
02373   940 I=I+1 
02374       K(I,1)=1 
02375       K(I,3)=IE(JR) 
02376       K(I,4)=0 
02377       K(I,5)=0 
02378       CALL LUKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2)) 
02379       IF(K(I,2).EQ.0) GOTO 640 
02380       P(I,5)=ULMASS(K(I,2)) 
02381       PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2 
02382  
02383 C...Final two hadrons: find common setup of four-vectors. 
02384       JQ=1 
02385       IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.P(IN(7),3)* 
02386      &P(IN(8),3)*FOUR(IN(7),IN(8))) JQ=2 
02387       DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2)) 
02388       DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12 
02389       DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12 
02390       IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN 
02391         PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ) 
02392         PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ) 
02393         PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS* 
02394      &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2 
02395       ENDIF 
02396  
02397 C...Solve kinematics for final two hadrons, if possible. 
02398       WREM2=WREM2+(PX(1)+PX(2))**2+(PY(1)+PY(2))**2 
02399       FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2) 
02400       IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1.) GOTO 200 
02401       IF(FD.GE.1.) GOTO 640 
02402       FA=WREM2+PR(JT)-PR(JR) 
02403       IF(MSTJ(11).NE.2) PREV=0.5*EXP(MAX(-50.,LOG(FD)*PARJ(38)* 
02404      &(PR(1)+PR(2))**2)) 
02405       IF(MSTJ(11).EQ.2) PREV=0.5*FD**PARJ(39) 
02406       FB=SIGN(SQRT(MAX(0.,FA**2-4.*WREM2*PR(JT))),JS*(RLU(0)-PREV)) 
02407       KFL1A=IABS(KFL(1)) 
02408       KFL2A=IABS(KFL(2)) 
02409       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10), 
02410      &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0.,FA**2- 
02411      &4.*WREM2*PR(JT))),FLOAT(JS)) 
02412       DO 950 J=1,4 
02413       P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))* 
02414      &P(IN(3*JQ+3)+1,J)+0.5*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+ 
02415      &DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2 
02416       P(I,J)=P(N+NRS,J)-P(I-1,J) 
02417   950 CONTINUE 
02418       IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 640 
02419  
02420 C...Mark jets as fragmented and give daughter pointers. 
02421       N=I-NRS+1 
02422       DO 960 I=NSAV+1,NSAV+NP 
02423       IM=K(I,3) 
02424       K(IM,1)=K(IM,1)+10 
02425       IF(MSTU(16).NE.2) THEN 
02426         K(IM,4)=NSAV+1 
02427         K(IM,5)=NSAV+1 
02428       ELSE 
02429         K(IM,4)=NSAV+2 
02430         K(IM,5)=N 
02431       ENDIF 
02432   960 CONTINUE 
02433  
02434 C...Document string system. Move up particles. 
02435       NSAV=NSAV+1 
02436       K(NSAV,1)=11 
02437       K(NSAV,2)=92 
02438       K(NSAV,3)=IP 
02439       K(NSAV,4)=NSAV+1 
02440       K(NSAV,5)=N 
02441       DO 970 J=1,4 
02442       P(NSAV,J)=DPS(J) 
02443       V(NSAV,J)=V(IP,J) 
02444   970 CONTINUE 
02445       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2)) 
02446       V(NSAV,5)=0. 
02447       DO 990 I=NSAV+1,N 
02448       DO 980 J=1,5 
02449       K(I,J)=K(I+NRS-1,J) 
02450       P(I,J)=P(I+NRS-1,J) 
02451       V(I,J)=0. 
02452   980 CONTINUE 
02453   990 CONTINUE 
02454       MSTU91=MSTU(90) 
02455       DO 1000 IZ=MSTU90+1,MSTU91 
02456       MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N 
02457       PARU9T(IZ)=PARU(90+IZ) 
02458  1000 CONTINUE 
02459       MSTU(90)=MSTU90 
02460  
02461 C...Order particles in rank along the chain. Update mother pointer. 
02462       DO 1020 I=NSAV+1,N 
02463       DO 1010 J=1,5 
02464       K(I-NSAV+N,J)=K(I,J) 
02465       P(I-NSAV+N,J)=P(I,J) 
02466  1010 CONTINUE 
02467  1020 CONTINUE 
02468       I1=NSAV 
02469       DO 1050 I=N+1,2*N-NSAV 
02470       IF(K(I,3).NE.IE(1)) GOTO 1050 
02471       I1=I1+1 
02472       DO 1030 J=1,5 
02473       K(I1,J)=K(I,J) 
02474       P(I1,J)=P(I,J) 
02475  1030 CONTINUE 
02476       IF(MSTU(16).NE.2) K(I1,3)=NSAV 
02477       DO 1040 IZ=MSTU90+1,MSTU91 
02478       IF(MSTU9T(IZ).EQ.I) THEN 
02479         MSTU(90)=MSTU(90)+1 
02480         MSTU(90+MSTU(90))=I1 
02481         PARU(90+MSTU(90))=PARU9T(IZ) 
02482       ENDIF 
02483  1040 CONTINUE 
02484  1050 CONTINUE 
02485       DO 1080 I=2*N-NSAV,N+1,-1 
02486       IF(K(I,3).EQ.IE(1)) GOTO 1080 
02487       I1=I1+1 
02488       DO 1060 J=1,5 
02489       K(I1,J)=K(I,J) 
02490       P(I1,J)=P(I,J) 
02491  1060 CONTINUE 
02492       IF(MSTU(16).NE.2) K(I1,3)=NSAV 
02493       DO 1070 IZ=MSTU90+1,MSTU91 
02494       IF(MSTU9T(IZ).EQ.I) THEN 
02495         MSTU(90)=MSTU(90)+1 
02496         MSTU(90+MSTU(90))=I1 
02497         PARU(90+MSTU(90))=PARU9T(IZ) 
02498       ENDIF 
02499  1070 CONTINUE 
02500  1080 CONTINUE 
02501  
02502 C...Boost back particle system. Set production vertices. 
02503       IF(MBST.EQ.0) THEN 
02504         MSTU(33)=1 
02505         CALL LUDBRB(NSAV+1,N,0.,0.,DPS(1)/DPS(4),DPS(2)/DPS(4), 
02506      &  DPS(3)/DPS(4)) 
02507       ELSE 
02508         DO 1090 I=NSAV+1,N 
02509         HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2 
02510         IF(P(I,3).GT.0.) THEN 
02511           HHPEZ=(P(I,4)+P(I,3))*HHBZ 
02512           P(I,3)=0.5*(HHPEZ-HHPMT/HHPEZ) 
02513           P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
02514         ELSE 
02515           HHPEZ=(P(I,4)-P(I,3))/HHBZ 
02516           P(I,3)=-0.5*(HHPEZ-HHPMT/HHPEZ) 
02517           P(I,4)=0.5*(HHPEZ+HHPMT/HHPEZ) 
02518         ENDIF 
02519  1090   CONTINUE 
02520       ENDIF 
02521       DO 1110 I=NSAV+1,N 
02522       DO 1100 J=1,4 
02523       V(I,J)=V(IP,J) 
02524  1100 CONTINUE 
02525  1110 CONTINUE 
02526  
02527       RETURN 
02528       END 
02529  
02530 C********************************************************************* 
02531  
02532       SUBROUTINE LUINDF(IP) 
02533  
02534 C...Purpose: to handle the fragmentation of a jet system (or a single 
02535 C...jet) according to independent fragmentation models. 
02536       IMPLICIT DOUBLE PRECISION(D) 
02537       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
02538       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
02539       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
02540       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
02541       DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3), 
02542      &KFLO(2),PXO(2),PYO(2),WO(2) 
02543  
02544 C...Reset counters. Identify parton system and take copy. Check flavour. 
02545       NSAV=N 
02546       MSTU90=MSTU(90) 
02547       NJET=0 
02548       KQSUM=0 
02549       DO 100 J=1,5 
02550       DPS(J)=0. 
02551   100 CONTINUE 
02552       I=IP-1 
02553   110 I=I+1 
02554       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN 
02555         CALL LUERRM(12,'(LUINDF:) failed to reconstruct jet system') 
02556         IF(MSTU(21).GE.1) RETURN 
02557       ENDIF 
02558       IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110 
02559       KC=LUCOMP(K(I,2)) 
02560       IF(KC.EQ.0) GOTO 110 
02561       KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
02562       IF(KQ.EQ.0) GOTO 110 
02563       NJET=NJET+1 
02564       IF(KQ.NE.2) KQSUM=KQSUM+KQ 
02565       DO 120 J=1,5 
02566       K(NSAV+NJET,J)=K(I,J) 
02567       P(NSAV+NJET,J)=P(I,J) 
02568       DPS(J)=DPS(J)+P(I,J) 
02569   120 CONTINUE 
02570       K(NSAV+NJET,3)=I 
02571       IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND. 
02572      &K(I+1,1).EQ.2)) GOTO 110 
02573       IF(NJET.NE.1.AND.KQSUM.NE.0) THEN 
02574         CALL LUERRM(12,'(LUINDF:) unphysical flavour combination') 
02575         IF(MSTU(21).GE.1) RETURN 
02576       ENDIF 
02577  
02578 C...Boost copied system to CM frame. Find CM energy and sum flavours. 
02579       IF(NJET.NE.1) THEN 
02580         MSTU(33)=1 
02581         CALL LUDBRB(NSAV+1,NSAV+NJET,0.,0.,-DPS(1)/DPS(4), 
02582      &  -DPS(2)/DPS(4),-DPS(3)/DPS(4)) 
02583       ENDIF 
02584       PECM=0. 
02585       DO 130 J=1,3 
02586       NFI(J)=0 
02587   130 CONTINUE 
02588       DO 140 I=NSAV+1,NSAV+NJET 
02589       PECM=PECM+P(I,4) 
02590       KFA=IABS(K(I,2)) 
02591       IF(KFA.LE.3) THEN 
02592         NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2)) 
02593       ELSEIF(KFA.GT.1000) THEN 
02594         KFLA=MOD(KFA/1000,10) 
02595         KFLB=MOD(KFA/100,10) 
02596         IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2)) 
02597         IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2)) 
02598       ENDIF 
02599   140 CONTINUE 
02600  
02601 C...Loop over attempts made. Reset counters. 
02602       NTRY=0 
02603   150 NTRY=NTRY+1 
02604       IF(NTRY.GT.200) THEN 
02605         CALL LUERRM(14,'(LUINDF:) caught in infinite loop') 
02606         IF(MSTU(21).GE.1) RETURN 
02607       ENDIF 
02608       N=NSAV+NJET 
02609       MSTU(90)=MSTU90 
02610       DO 160 J=1,3 
02611       NFL(J)=NFI(J) 
02612       IFET(J)=0 
02613       KFLF(J)=0 
02614   160 CONTINUE 
02615  
02616 C...Loop over jets to be fragmented. 
02617       DO 230 IP1=NSAV+1,NSAV+NJET 
02618       MSTJ(91)=0 
02619       NSAV1=N 
02620       MSTU91=MSTU(90) 
02621  
02622 C...Initial flavour and momentum values. Jet along +z axis. 
02623       KFLH=IABS(K(IP1,2)) 
02624       IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10) 
02625       KFLO(2)=0 
02626       WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2) 
02627  
02628 C...Initial values for quark or diquark jet. 
02629   170 IF(IABS(K(IP1,2)).NE.21) THEN 
02630         NSTR=1 
02631         KFLO(1)=K(IP1,2) 
02632         CALL LUPTDI(0,PXO(1),PYO(1)) 
02633         WO(1)=WF 
02634  
02635 C...Initial values for gluon treated like random quark jet. 
02636       ELSEIF(MSTJ(2).LE.2) THEN 
02637         NSTR=1 
02638         IF(MSTJ(2).EQ.2) MSTJ(91)=1 
02639         KFLO(1)=INT(1.+(2.+PARJ(2))*RLU(0))*(-1)**INT(RLU(0)+0.5) 
02640         CALL LUPTDI(0,PXO(1),PYO(1)) 
02641         WO(1)=WF 
02642  
02643 C...Initial values for gluon treated like quark-antiquark jet pair, 
02644 C...sharing energy according to Altarelli-Parisi splitting function. 
02645       ELSE 
02646         NSTR=2 
02647         IF(MSTJ(2).EQ.4) MSTJ(91)=1 
02648         KFLO(1)=INT(1.+(2.+PARJ(2))*RLU(0))*(-1)**INT(RLU(0)+0.5) 
02649         KFLO(2)=-KFLO(1) 
02650         CALL LUPTDI(0,PXO(1),PYO(1)) 
02651         PXO(2)=-PXO(1) 
02652         PYO(2)=-PYO(1) 
02653         WO(1)=WF*RLU(0)**(1./3.) 
02654         WO(2)=WF-WO(1) 
02655       ENDIF 
02656  
02657 C...Initial values for rank, flavour, pT and W+. 
02658       DO 220 ISTR=1,NSTR 
02659   180 I=N 
02660       MSTU(90)=MSTU91 
02661       IRANK=0 
02662       KFL1=KFLO(ISTR) 
02663       PX1=PXO(ISTR) 
02664       PY1=PYO(ISTR) 
02665       W=WO(ISTR) 
02666  
02667 C...New hadron. Generate flavour and hadron species. 
02668   190 I=I+1 
02669       IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN 
02670         CALL LUERRM(11,'(LUINDF:) no more memory left in LUJETS') 
02671         IF(MSTU(21).GE.1) RETURN 
02672       ENDIF 
02673       IRANK=IRANK+1 
02674       K(I,1)=1 
02675       K(I,3)=IP1 
02676       K(I,4)=0 
02677       K(I,5)=0 
02678   200 CALL LUKFDI(KFL1,0,KFL2,K(I,2)) 
02679       IF(K(I,2).EQ.0) GOTO 180 
02680       IF(MSTJ(12).GE.3.AND.IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND. 
02681      &IABS(KFL2).GT.10) THEN 
02682         IF(RLU(0).GT.PARJ(19)) GOTO 200 
02683       ENDIF 
02684  
02685 C...Find hadron mass. Generate four-momentum. 
02686       P(I,5)=ULMASS(K(I,2)) 
02687       CALL LUPTDI(KFL1,PX2,PY2) 
02688       P(I,1)=PX1+PX2 
02689       P(I,2)=PY1+PY2 
02690       PR=P(I,5)**2+P(I,1)**2+P(I,2)**2 
02691       CALL LUZDIS(KFL1,KFL2,PR,Z) 
02692       MZSAV=0 
02693       IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN 
02694         MZSAV=1 
02695         MSTU(90)=MSTU(90)+1 
02696         MSTU(90+MSTU(90))=I 
02697         PARU(90+MSTU(90))=Z 
02698       ENDIF 
02699       P(I,3)=0.5*(Z*W-PR/(Z*W)) 
02700       P(I,4)=0.5*(Z*W+PR/(Z*W)) 
02701       IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND. 
02702      &P(I,3).LE.0.001) THEN 
02703         IF(W.GE.P(I,5)+0.5*PARJ(32)) GOTO 180 
02704         P(I,3)=0.0001 
02705         P(I,4)=SQRT(PR) 
02706         Z=P(I,4)/W 
02707       ENDIF 
02708  
02709 C...Remaining flavour and momentum. 
02710       KFL1=-KFL2 
02711       PX1=-PX2 
02712       PY1=-PY2 
02713       W=(1.-Z)*W 
02714       DO 210 J=1,5 
02715       V(I,J)=0. 
02716   210 CONTINUE 
02717  
02718 C...Check if pL acceptable. Go back for new hadron if enough energy. 
02719       IF(MSTJ(3).GE.0.AND.P(I,3).LT.0.) THEN 
02720         I=I-1 
02721         IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1 
02722       ENDIF 
02723       IF(W.GT.PARJ(31)) GOTO 190 
02724       N=I 
02725   220 CONTINUE 
02726       IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1*PARJ(32) 
02727       IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170 
02728  
02729 C...Rotate jet to new direction. 
02730       THE=ULANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2)) 
02731       PHI=ULANGL(P(IP1,1),P(IP1,2)) 
02732       MSTU(33)=1 
02733       CALL LUDBRB(NSAV1+1,N,THE,PHI,0D0,0D0,0D0) 
02734       K(K(IP1,3),4)=NSAV1+1 
02735       K(K(IP1,3),5)=N 
02736  
02737 C...End of jet generation loop. Skip conservation in some cases. 
02738   230 CONTINUE 
02739       IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490 
02740       IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150 
02741  
02742 C...Subtract off produced hadron flavours, finished if zero. 
02743       DO 240 I=NSAV+NJET+1,N 
02744       KFA=IABS(K(I,2)) 
02745       KFLA=MOD(KFA/1000,10) 
02746       KFLB=MOD(KFA/100,10) 
02747       KFLC=MOD(KFA/10,10) 
02748       IF(KFLA.EQ.0) THEN 
02749         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB 
02750         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB 
02751       ELSE 
02752         IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2)) 
02753         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2)) 
02754         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2)) 
02755       ENDIF 
02756   240 CONTINUE 
02757       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
02758      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
02759       IF(NREQ.EQ.0) GOTO 320 
02760  
02761 C...Take away flavour of low-momentum particles until enough freedom. 
02762       NREM=0 
02763   250 IREM=0 
02764       P2MIN=PECM**2 
02765       DO 260 I=NSAV+NJET+1,N 
02766       P2=P(I,1)**2+P(I,2)**2+P(I,3)**2 
02767       IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I 
02768       IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2 
02769   260 CONTINUE 
02770       IF(IREM.EQ.0) GOTO 150 
02771       K(IREM,1)=7 
02772       KFA=IABS(K(IREM,2)) 
02773       KFLA=MOD(KFA/1000,10) 
02774       KFLB=MOD(KFA/100,10) 
02775       KFLC=MOD(KFA/10,10) 
02776       IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8 
02777       IF(K(IREM,1).EQ.8) GOTO 250 
02778       IF(KFLA.EQ.0) THEN 
02779         ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB 
02780         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN 
02781         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN 
02782       ELSE 
02783         IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2)) 
02784         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2)) 
02785         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2)) 
02786       ENDIF 
02787       NREM=NREM+1 
02788       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
02789      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
02790       IF(NREQ.GT.NREM) GOTO 250 
02791       DO 270 I=NSAV+NJET+1,N 
02792       IF(K(I,1).EQ.8) K(I,1)=1 
02793   270 CONTINUE 
02794  
02795 C...Find combination of existing and new flavours for hadron. 
02796   280 NFET=2 
02797       IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3 
02798       IF(NREQ.LT.NREM) NFET=1 
02799       IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0 
02800       DO 290 J=1,NFET 
02801       IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*RLU(0) 
02802       KFLF(J)=ISIGN(1,NFL(1)) 
02803       IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2)) 
02804       IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3)) 
02805   290 CONTINUE 
02806       IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0)) 
02807      &GOTO 280 
02808       IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR. 
02809      &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3). 
02810      &LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280 
02811       IF(NFET.EQ.0) KFLF(1)=1+INT((2.+PARJ(2))*RLU(0)) 
02812       IF(NFET.EQ.0) KFLF(2)=-KFLF(1) 
02813       IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2.+PARJ(2))*RLU(0)),-KFLF(1)) 
02814       IF(NFET.LE.2) KFLF(3)=0 
02815       IF(KFLF(3).NE.0) THEN 
02816         KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+ 
02817      &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1)) 
02818         IF(KFLF(1).EQ.KFLF(3).OR.(1.+3.*PARJ(4))*RLU(0).GT.1.) 
02819      &  KFLFC=KFLFC+ISIGN(2,KFLFC) 
02820       ELSE 
02821         KFLFC=KFLF(1) 
02822       ENDIF 
02823       CALL LUKFDI(KFLFC,KFLF(2),KFLDMP,KF) 
02824       IF(KF.EQ.0) GOTO 280 
02825       DO 300 J=1,MAX(2,NFET) 
02826       NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J)) 
02827   300 CONTINUE 
02828  
02829 C...Store hadron at random among free positions. 
02830       NPOS=MIN(1+INT(RLU(0)*NREM),NREM) 
02831       DO 310 I=NSAV+NJET+1,N 
02832       IF(K(I,1).EQ.7) NPOS=NPOS-1 
02833       IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310 
02834       K(I,1)=1 
02835       K(I,2)=KF 
02836       P(I,5)=ULMASS(K(I,2)) 
02837       P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
02838   310 CONTINUE 
02839       NREM=NREM-1 
02840       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+ 
02841      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3 
02842       IF(NREM.GT.0) GOTO 280 
02843  
02844 C...Compensate for missing momentum in global scheme (3 options). 
02845   320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN 
02846         DO 340 J=1,3 
02847         PSI(J)=0. 
02848         DO 330 I=NSAV+NJET+1,N 
02849         PSI(J)=PSI(J)+P(I,J) 
02850   330   CONTINUE 
02851   340   CONTINUE 
02852         PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2 
02853         PWS=0. 
02854         DO 350 I=NSAV+NJET+1,N 
02855         IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4) 
02856         IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+ 
02857      &  PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4)) 
02858         IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1. 
02859   350   CONTINUE 
02860         DO 370 I=NSAV+NJET+1,N 
02861         IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4) 
02862         IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+ 
02863      &  PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4)) 
02864         IF(MOD(MSTJ(3),5).EQ.3) PW=1. 
02865         DO 360 J=1,3 
02866         P(I,J)=P(I,J)-PSI(J)*PW/PWS 
02867   360   CONTINUE 
02868         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
02869   370   CONTINUE 
02870  
02871 C...Compensate for missing momentum withing each jet separately. 
02872       ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN 
02873         DO 390 I=N+1,N+NJET 
02874         K(I,1)=0 
02875         DO 380 J=1,5 
02876         P(I,J)=0. 
02877   380   CONTINUE 
02878   390   CONTINUE 
02879         DO 410 I=NSAV+NJET+1,N 
02880         IR1=K(I,3) 
02881         IR2=N+IR1-NSAV 
02882         K(IR2,1)=K(IR2,1)+1 
02883         PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/ 
02884      &  (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2) 
02885         DO 400 J=1,3 
02886         P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J) 
02887   400   CONTINUE 
02888         P(IR2,4)=P(IR2,4)+P(I,4) 
02889         P(IR2,5)=P(IR2,5)+PLS 
02890   410   CONTINUE 
02891         PSS=0. 
02892         DO 420 I=N+1,N+NJET 
02893         IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8*P(I,5)+0.2)) 
02894   420   CONTINUE 
02895         DO 440 I=NSAV+NJET+1,N 
02896         IR1=K(I,3) 
02897         IR2=N+IR1-NSAV 
02898         PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/ 
02899      &  (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2) 
02900         DO 430 J=1,3 
02901         P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1./(P(IR2,5)*PSS)-1.)*PLS* 
02902      &  P(IR1,J) 
02903   430   CONTINUE 
02904         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
02905   440   CONTINUE 
02906       ENDIF 
02907  
02908 C...Scale momenta for energy conservation. 
02909       IF(MOD(MSTJ(3),5).NE.0) THEN 
02910         PMS=0. 
02911         PES=0. 
02912         PQS=0. 
02913         DO 450 I=NSAV+NJET+1,N 
02914         PMS=PMS+P(I,5) 
02915         PES=PES+P(I,4) 
02916         PQS=PQS+P(I,5)**2/P(I,4) 
02917   450   CONTINUE 
02918         IF(PMS.GE.PECM) GOTO 150 
02919         NECO=0 
02920   460   NECO=NECO+1 
02921         PFAC=(PECM-PQS)/(PES-PQS) 
02922         PES=0. 
02923         PQS=0. 
02924         DO 480 I=NSAV+NJET+1,N 
02925         DO 470 J=1,3 
02926         P(I,J)=PFAC*P(I,J) 
02927   470   CONTINUE 
02928         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2) 
02929         PES=PES+P(I,4) 
02930         PQS=PQS+P(I,5)**2/P(I,4) 
02931   480   CONTINUE 
02932         IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2E-6*PECM) GOTO 460 
02933       ENDIF 
02934  
02935 C...Origin of produced particles and parton daughter pointers. 
02936   490 DO 500 I=NSAV+NJET+1,N 
02937       IF(MSTU(16).NE.2) K(I,3)=NSAV+1 
02938       IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3) 
02939   500 CONTINUE 
02940       DO 510 I=NSAV+1,NSAV+NJET 
02941       I1=K(I,3) 
02942       K(I1,1)=K(I1,1)+10 
02943       IF(MSTU(16).NE.2) THEN 
02944         K(I1,4)=NSAV+1 
02945         K(I1,5)=NSAV+1 
02946       ELSE 
02947         K(I1,4)=K(I1,4)-NJET+1 
02948         K(I1,5)=K(I1,5)-NJET+1 
02949         IF(K(I1,5).LT.K(I1,4)) THEN 
02950           K(I1,4)=0 
02951           K(I1,5)=0 
02952         ENDIF 
02953       ENDIF 
02954   510 CONTINUE 
02955  
02956 C...Document independent fragmentation system. Remove copy of jets. 
02957       NSAV=NSAV+1 
02958       K(NSAV,1)=11 
02959       K(NSAV,2)=93 
02960       K(NSAV,3)=IP 
02961       K(NSAV,4)=NSAV+1 
02962       K(NSAV,5)=N-NJET+1 
02963       DO 520 J=1,4 
02964       P(NSAV,J)=DPS(J) 
02965       V(NSAV,J)=V(IP,J) 
02966   520 CONTINUE 
02967       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2)) 
02968       V(NSAV,5)=0. 
02969       DO 540 I=NSAV+NJET,N 
02970       DO 530 J=1,5 
02971       K(I-NJET+1,J)=K(I,J) 
02972       P(I-NJET+1,J)=P(I,J) 
02973       V(I-NJET+1,J)=V(I,J) 
02974   530 CONTINUE 
02975   540 CONTINUE 
02976       N=N-NJET+1 
02977       DO 550 IZ=MSTU90+1,MSTU(90) 
02978       MSTU(90+IZ)=MSTU(90+IZ)-NJET+1 
02979   550 CONTINUE 
02980  
02981 C...Boost back particle system. Set production vertices. 
02982       IF(NJET.NE.1) CALL LUDBRB(NSAV+1,N,0.,0.,DPS(1)/DPS(4), 
02983      &DPS(2)/DPS(4),DPS(3)/DPS(4)) 
02984       DO 570 I=NSAV+1,N 
02985       DO 560 J=1,4 
02986       V(I,J)=V(IP,J) 
02987   560 CONTINUE 
02988   570 CONTINUE 
02989  
02990       RETURN 
02991       END 
02992  
02993 C********************************************************************* 
02994  
02995       SUBROUTINE LUDECY(IP) 
02996  
02997 C...Purpose: to handle the decay of unstable particles. 
02998       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
02999       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
03000       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
03001       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
03002       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
03003       DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3), 
03004      &WTCOR(10) 
03005       DATA WTCOR/2.,5.,15.,60.,250.,1500.,1.2E4,1.2E5,150.,16./ 
03006  
03007 C...Functions: momentum in two-particle decays, four-product and 
03008 C...matrix element times phase space in weak decays. 
03009       PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2.*A) 
03010       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) 
03011       HMEPS(HA)=((1.-HRQ-HA)**2+3.*HA*(1.+HRQ-HA))* 
03012      &SQRT((1.-HRQ-HA)**2-4.*HRQ*HA) 
03013  
03014 C...Initial values. 
03015       NTRY=0 
03016       NSAV=N 
03017       KFA=IABS(K(IP,2)) 
03018       KFS=ISIGN(1,K(IP,2)) 
03019       KC=LUCOMP(KFA) 
03020       MSTJ(92)=0 
03021  
03022 C...Choose lifetime and determine decay vertex. 
03023       IF(K(IP,1).EQ.5) THEN 
03024         V(IP,5)=0. 
03025       ELSEIF(K(IP,1).NE.4) THEN 
03026         V(IP,5)=-PMAS(KC,4)*LOG(RLU(0)) 
03027       ENDIF 
03028       DO 100 J=1,4 
03029       VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5) 
03030   100 CONTINUE 
03031  
03032 C...Determine whether decay allowed or not. 
03033       MOUT=0 
03034       IF(MSTJ(22).EQ.2) THEN 
03035         IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1 
03036       ELSEIF(MSTJ(22).EQ.3) THEN 
03037         IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1 
03038       ELSEIF(MSTJ(22).EQ.4) THEN 
03039         IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1 
03040         IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1 
03041       ENDIF 
03042       IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN 
03043         K(IP,1)=4 
03044         RETURN 
03045       ENDIF 
03046  
03047 C...B-B~ mixing: flip sign of meson appropriately. 
03048       MMIX=0 
03049       IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN 
03050         XBBMIX=PARJ(76) 
03051         IF(KFA.EQ.531) XBBMIX=PARJ(77) 
03052         IF(SIN(0.5*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.RLU(0)) MMIX=1 
03053         IF(MMIX.EQ.1) KFS=-KFS 
03054       ENDIF 
03055  
03056 C...Check existence of decay channels. Particle/antiparticle rules. 
03057       KCA=KC 
03058       IF(MDCY(KC,2).GT.0) THEN 
03059         MDMDCY=MDME(MDCY(KC,2),2) 
03060         IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY 
03061       ENDIF 
03062       IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN 
03063         CALL LUERRM(9,'(LUDECY:) no decay channel defined') 
03064         RETURN 
03065       ENDIF 
03066       IF(MOD(KFA/1000,10).EQ.0.AND.(KCA.EQ.85.OR.KCA.EQ.87)) KFS=-KFS 
03067       IF(KCHG(KC,3).EQ.0) THEN 
03068         KFSP=1 
03069         KFSN=0 
03070         IF(RLU(0).GT.0.5) KFS=-KFS 
03071       ELSEIF(KFS.GT.0) THEN 
03072         KFSP=1 
03073         KFSN=0 
03074       ELSE 
03075         KFSP=0 
03076         KFSN=1 
03077       ENDIF 
03078  
03079 C...Sum branching ratios of allowed decay channels. 
03080   110 NOPE=0 
03081       BRSU=0. 
03082       DO 120 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1 
03083       IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND. 
03084      &KFSN*MDME(IDL,1).NE.3) GOTO 120 
03085       IF(MDME(IDL,2).GT.100) GOTO 120 
03086       NOPE=NOPE+1 
03087       BRSU=BRSU+BRAT(IDL) 
03088   120 CONTINUE 
03089       IF(NOPE.EQ.0) THEN 
03090         CALL LUERRM(2,'(LUDECY:) all decay channels closed by user') 
03091         RETURN 
03092       ENDIF 
03093  
03094 C...Select decay channel among allowed ones. 
03095   130 RBR=BRSU*RLU(0) 
03096       IDL=MDCY(KCA,2)-1 
03097   140 IDL=IDL+1 
03098       IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND. 
03099      &KFSN*MDME(IDL,1).NE.3) THEN 
03100         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 140 
03101       ELSEIF(MDME(IDL,2).GT.100) THEN 
03102         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 140 
03103       ELSE 
03104         IDC=IDL 
03105         RBR=RBR-BRAT(IDL) 
03106         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0.) GOTO 140 
03107       ENDIF 
03108  
03109 C...Start readout of decay channel: matrix element, reset counters. 
03110       MMAT=MDME(IDC,2) 
03111   150 NTRY=NTRY+1 
03112       IF(NTRY.GT.1000) THEN 
03113         CALL LUERRM(14,'(LUDECY:) caught in infinite loop') 
03114         IF(MSTU(21).GE.1) RETURN 
03115       ENDIF 
03116       I=N 
03117       NP=0 
03118       NQ=0 
03119       MBST=0 
03120       IF(MMAT.GE.11.AND.MMAT.NE.46.AND.P(IP,4).GT.20.*P(IP,5)) MBST=1 
03121       DO 160 J=1,4 
03122       PV(1,J)=0. 
03123       IF(MBST.EQ.0) PV(1,J)=P(IP,J) 
03124   160 CONTINUE 
03125       IF(MBST.EQ.1) PV(1,4)=P(IP,5) 
03126       PV(1,5)=P(IP,5) 
03127       PS=0. 
03128       PSQ=0. 
03129       MREM=0 
03130       MHADDY=0 
03131       IF(KFA.GT.80) MHADDY=1 
03132  
03133 C...Read out decay products. Convert to standard flavour code. 
03134       JTMAX=5 
03135       IF(MDME(IDC+1,2).EQ.101) JTMAX=10 
03136       DO 170 JT=1,JTMAX 
03137       IF(JT.LE.5) KP=KFDP(IDC,JT) 
03138       IF(JT.GE.6) KP=KFDP(IDC+1,JT-5) 
03139       IF(KP.EQ.0) GOTO 170 
03140       KPA=IABS(KP) 
03141       KCP=LUCOMP(KPA) 
03142       IF(KPA.GT.80) MHADDY=1 
03143       IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN 
03144         KFP=KP 
03145       ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN 
03146         KFP=KFS*KP 
03147       ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN 
03148         KFP=-KFS*MOD(KFA/10,10) 
03149       ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN 
03150         KFP=KFS*(100*MOD(KFA/10,100)+3) 
03151       ELSEIF(KPA.EQ.81) THEN 
03152         KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1) 
03153       ELSEIF(KP.EQ.82) THEN 
03154         CALL LUKFDI(-KFS*INT(1.+(2.+PARJ(2))*RLU(0)),0,KFP,KDUMP) 
03155         IF(KFP.EQ.0) GOTO 150 
03156         MSTJ(93)=1 
03157         IF(PV(1,5).LT.PARJ(32)+2.*ULMASS(KFP)) GOTO 150 
03158       ELSEIF(KP.EQ.-82) THEN 
03159         KFP=-KFP 
03160         IF(IABS(KFP).GT.10) KFP=KFP+ISIGN(10000,KFP) 
03161       ENDIF 
03162       IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=LUCOMP(KFP) 
03163  
03164 C...Add decay product to event record or to quark flavour list. 
03165       KFPA=IABS(KFP) 
03166       KQP=KCHG(KCP,2) 
03167       IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN 
03168         NQ=NQ+1 
03169         KFLO(NQ)=KFP 
03170         MSTJ(93)=2 
03171         PSQ=PSQ+ULMASS(KFLO(NQ)) 
03172       ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND. 
03173      &MOD(NQ,2).EQ.1) THEN 
03174         NQ=NQ-1 
03175         PS=PS-P(I,5) 
03176         K(I,1)=1 
03177         KFI=K(I,2) 
03178         CALL LUKFDI(KFP,KFI,KFLDMP,K(I,2)) 
03179         IF(K(I,2).EQ.0) GOTO 150 
03180         MSTJ(93)=1 
03181         P(I,5)=ULMASS(K(I,2)) 
03182         PS=PS+P(I,5) 
03183       ELSE 
03184         I=I+1 
03185         NP=NP+1 
03186         IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1 
03187         IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1 
03188         K(I,1)=1+MOD(NQ,2) 
03189         IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2 
03190         IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1 
03191         K(I,2)=KFP 
03192         K(I,3)=IP 
03193         K(I,4)=0 
03194         K(I,5)=0 
03195         P(I,5)=ULMASS(KFP) 
03196         IF(MMAT.EQ.45.AND.KFPA.EQ.89) P(I,5)=PARJ(32) 
03197         PS=PS+P(I,5) 
03198       ENDIF 
03199   170 CONTINUE 
03200  
03201 C...Check masses for resonance decays. 
03202       IF(MHADDY.EQ.0) THEN 
03203         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 130 
03204       ENDIF 
03205  
03206 C...Choose decay multiplicity in phase space model. 
03207   180 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN 
03208         PSP=PS 
03209         CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1)) 
03210         IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63) 
03211   190   NTRY=NTRY+1 
03212         IF(NTRY.GT.1000) THEN 
03213           CALL LUERRM(14,'(LUDECY:) caught in infinite loop') 
03214           IF(MSTU(21).GE.1) RETURN 
03215         ENDIF 
03216         IF(MMAT.LE.20) THEN 
03217           GAUSS=SQRT(-2.*CNDE*LOG(MAX(1E-10,RLU(0))))* 
03218      &    SIN(PARU(2)*RLU(0)) 
03219           ND=0.5+0.5*NP+0.25*NQ+CNDE+GAUSS 
03220           IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 190 
03221           IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 190 
03222           IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 190 
03223           IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 190 
03224         ELSE 
03225           ND=MMAT-20 
03226         ENDIF 
03227  
03228 C...Form hadrons from flavour content. 
03229         DO 200 JT=1,4 
03230         KFL1(JT)=KFLO(JT) 
03231   200   CONTINUE 
03232         IF(ND.EQ.NP+NQ/2) GOTO 220 
03233         DO 210 I=N+NP+1,N+ND-NQ/2 
03234         JT=1+INT((NQ-1)*RLU(0)) 
03235         CALL LUKFDI(KFL1(JT),0,KFL2,K(I,2)) 
03236         IF(K(I,2).EQ.0) GOTO 190 
03237         KFL1(JT)=-KFL2 
03238   210   CONTINUE 
03239   220   JT=2 
03240         JT2=3 
03241         JT3=4 
03242         IF(NQ.EQ.4.AND.RLU(0).LT.PARJ(66)) JT=4 
03243         IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))* 
03244      &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3 
03245         IF(JT.EQ.3) JT2=2 
03246         IF(JT.EQ.4) JT3=2 
03247         CALL LUKFDI(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2)) 
03248         IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 190 
03249         IF(NQ.EQ.4) CALL LUKFDI(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2)) 
03250         IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 190 
03251  
03252 C...Check that sum of decay product masses not too large. 
03253         PS=PSP 
03254         DO 230 I=N+NP+1,N+ND 
03255         K(I,1)=1 
03256         K(I,3)=IP 
03257         K(I,4)=0 
03258         K(I,5)=0 
03259         P(I,5)=ULMASS(K(I,2)) 
03260         PS=PS+P(I,5) 
03261   230   CONTINUE 
03262         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 190 
03263  
03264 C...Rescale energy to subtract off spectator quark mass. 
03265       ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44.OR.MMAT.EQ.45). 
03266      &AND.NP.GE.3) THEN 
03267         PS=PS-P(N+NP,5) 
03268         PQT=(P(N+NP,5)+PARJ(65))/PV(1,5) 
03269         DO 240 J=1,5 
03270         P(N+NP,J)=PQT*PV(1,J) 
03271         PV(1,J)=(1.-PQT)*PV(1,J) 
03272   240   CONTINUE 
03273         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 150 
03274         ND=NP-1 
03275         MREM=1 
03276  
03277 C...Phase space factors imposed in W decay. 
03278       ELSEIF(MMAT.EQ.46) THEN 
03279         MSTJ(93)=1 
03280         PSMC=ULMASS(K(N+1,2)) 
03281         MSTJ(93)=1 
03282         PSMC=PSMC+ULMASS(K(N+2,2)) 
03283         IF(MAX(PS,PSMC)+PARJ(32).GT.PV(1,5)) GOTO 130 
03284         HR1=(P(N+1,5)/PV(1,5))**2 
03285         HR2=(P(N+2,5)/PV(1,5))**2 
03286         IF((1.-HR1-HR2)*(2.+HR1+HR2)*SQRT((1.-HR1-HR2)**2-4.*HR1*HR2). 
03287      &  LT.2.*RLU(0)) GOTO 130 
03288         ND=NP 
03289  
03290 C...Fully specified final state: check mass broadening effects. 
03291       ELSE 
03292         IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 150 
03293         ND=NP 
03294       ENDIF 
03295  
03296 C...Select W mass in decay Q -> W + q, without W propagator. 
03297       IF(MMAT.EQ.45.AND.MSTJ(25).LE.0) THEN 
03298         HLQ=(PARJ(32)/PV(1,5))**2 
03299         HUQ=(1.-(P(N+2,5)+PARJ(64))/PV(1,5))**2 
03300         HRQ=(P(N+2,5)/PV(1,5))**2 
03301   250   HW=HLQ+RLU(0)*(HUQ-HLQ) 
03302         IF(HMEPS(HW).LT.RLU(0)) GOTO 250 
03303         P(N+1,5)=PV(1,5)*SQRT(HW) 
03304  
03305 C...Ditto, including W propagator. Divide mass range into three regions. 
03306       ELSEIF(MMAT.EQ.45) THEN 
03307         HQW=(PV(1,5)/PMAS(24,1))**2 
03308         HLW=(PARJ(32)/PMAS(24,1))**2 
03309         HUW=((PV(1,5)-P(N+2,5)-PARJ(64))/PMAS(24,1))**2 
03310         HRQ=(P(N+2,5)/PV(1,5))**2 
03311         HG=PMAS(24,2)/PMAS(24,1) 
03312         HATL=ATAN((HLW-1.)/HG) 
03313         HM=MIN(1.,HUW-0.001) 
03314         HMV1=HMEPS(HM/HQW)/((HM-1.)**2+HG**2) 
03315   260   HM=HM-HG 
03316         HMV2=HMEPS(HM/HQW)/((HM-1.)**2+HG**2) 
03317         IF(HMV2.GT.HMV1.AND.HM-HG.GT.HLW) THEN 
03318           HMV1=HMV2 
03319           GOTO 260 
03320         ENDIF 
03321         HMV=MIN(2.*HMV1,HMEPS(HM/HQW)/HG**2) 
03322         HM1=1.-SQRT(1./HMV-HG**2) 
03323         IF(HM1.GT.HLW.AND.HM1.LT.HM) THEN 
03324           HM=HM1 
03325         ELSEIF(HMV2.LE.HMV1) THEN 
03326           HM=MAX(HLW,HM-MIN(0.1,1.-HM)) 
03327         ENDIF 
03328         HATM=ATAN((HM-1.)/HG) 
03329         HWT1=(HATM-HATL)/HG 
03330         HWT2=HMV*(MIN(1.,HUW)-HM) 
03331         HWT3=0. 
03332         IF(HUW.GT.1.) THEN 
03333           HATU=ATAN((HUW-1.)/HG) 
03334           HMP1=HMEPS(1./HQW) 
03335           HWT3=HMP1*HATU/HG 
03336         ENDIF 
03337  
03338 C...Select mass region and W mass there. Accept according to weight. 
03339   270   HREG=RLU(0)*(HWT1+HWT2+HWT3) 
03340         IF(HREG.LE.HWT1) THEN 
03341           HW=1.+HG*TAN(HATL+RLU(0)*(HATM-HATL)) 
03342           HACC=HMEPS(HW/HQW) 
03343         ELSEIF(HREG.LE.HWT1+HWT2) THEN 
03344           HW=HM+RLU(0)*(MIN(1.,HUW)-HM) 
03345           HACC=HMEPS(HW/HQW)/((HW-1.)**2+HG**2)/HMV 
03346         ELSE 
03347           HW=1.+HG*TAN(RLU(0)*HATU) 
03348           HACC=HMEPS(HW/HQW)/HMP1 
03349         ENDIF 
03350         IF(HACC.LT.RLU(0)) GOTO 270 
03351         P(N+1,5)=PMAS(24,1)*SQRT(HW) 
03352       ENDIF 
03353  
03354 C...Determine position of grandmother, number of sisters, Q -> W sign. 
03355       NM=0 
03356       KFAS=0 
03357       MSGN=0 
03358       IF(MMAT.EQ.3.OR.MMAT.EQ.46) THEN 
03359         IM=K(IP,3) 
03360         IF(IM.LT.0.OR.IM.GE.IP) IM=0 
03361         IF(MMAT.EQ.46.AND.MSTJ(27).EQ.1) THEN 
03362           IM=0 
03363         ELSEIF(MMAT.EQ.46.AND.MSTJ(27).GE.2.AND.IM.NE.0) THEN 
03364           IF(K(IM,2).EQ.94) THEN 
03365             IM=K(K(IM,3),3) 
03366             IF(IM.LT.0.OR.IM.GE.IP) IM=0 
03367           ENDIF 
03368         ENDIF 
03369         IF(IM.NE.0) KFAM=IABS(K(IM,2)) 
03370         IF(IM.NE.0.AND.MMAT.EQ.3) THEN 
03371           DO 280 IL=MAX(IP-2,IM+1),MIN(IP+2,N) 
03372           IF(K(IL,3).EQ.IM) NM=NM+1 
03373           IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL 
03374   280     CONTINUE 
03375           IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR. 
03376      &    MOD(KFAM/1000,10).NE.0) NM=0 
03377           IF(NM.EQ.2) THEN 
03378             KFAS=IABS(K(ISIS,2)) 
03379             IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR. 
03380      &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0 
03381           ENDIF 
03382         ELSEIF(IM.NE.0.AND.MMAT.EQ.46) THEN 
03383           MSGN=ISIGN(1,K(IM,2)*K(IP,2)) 
03384           IF(KFAM.GT.100.AND.MOD(KFAM/1000,10).EQ.0) MSGN= 
03385      &    MSGN*(-1)**MOD(KFAM/100,10) 
03386         ENDIF 
03387       ENDIF 
03388  
03389 C...Kinematics of one-particle decays. 
03390       IF(ND.EQ.1) THEN 
03391         DO 290 J=1,4 
03392         P(N+1,J)=P(IP,J) 
03393   290   CONTINUE 
03394         GOTO 550 
03395       ENDIF 
03396  
03397 C...Calculate maximum weight ND-particle decay. 
03398       PV(ND,5)=P(N+ND,5) 
03399       IF(ND.GE.3) THEN 
03400         WTMAX=1./WTCOR(ND-2) 
03401         PMAX=PV(1,5)-PS+P(N+ND,5) 
03402         PMIN=0. 
03403         DO 300 IL=ND-1,1,-1 
03404         PMAX=PMAX+P(N+IL,5) 
03405         PMIN=PMIN+P(N+IL+1,5) 
03406         WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5)) 
03407   300   CONTINUE 
03408       ENDIF 
03409  
03410 C...Find virtual gamma mass in Dalitz decay. 
03411   310 IF(ND.EQ.2) THEN 
03412       ELSEIF(MMAT.EQ.2) THEN 
03413         PMES=4.*PMAS(11,1)**2 
03414         PMRHO2=PMAS(131,1)**2 
03415         PGRHO2=PMAS(131,2)**2 
03416   320   PMST=PMES*(P(IP,5)**2/PMES)**RLU(0) 
03417         WT=(1+0.5*PMES/PMST)*SQRT(MAX(0.,1.-PMES/PMST))* 
03418      &  (1.-PMST/P(IP,5)**2)**3*(1.+PGRHO2/PMRHO2)/ 
03419      &  ((1.-PMST/PMRHO2)**2+PGRHO2/PMRHO2) 
03420         IF(WT.LT.RLU(0)) GOTO 320 
03421         PV(2,5)=MAX(2.00001*PMAS(11,1),SQRT(PMST)) 
03422  
03423 C...M-generator gives weight. If rejected, try again. 
03424       ELSE 
03425   330   RORD(1)=1. 
03426         DO 360 IL1=2,ND-1 
03427         RSAV=RLU(0) 
03428         DO 340 IL2=IL1-1,1,-1 
03429         IF(RSAV.LE.RORD(IL2)) GOTO 350 
03430         RORD(IL2+1)=RORD(IL2) 
03431   340   CONTINUE 
03432   350   RORD(IL2+1)=RSAV 
03433   360   CONTINUE 
03434         RORD(ND)=0. 
03435         WT=1. 
03436         DO 370 IL=ND-1,1,-1 
03437         PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*(PV(1,5)-PS) 
03438         WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5)) 
03439   370   CONTINUE 
03440         IF(WT.LT.RLU(0)*WTMAX) GOTO 330 
03441       ENDIF 
03442  
03443 C...Perform two-particle decays in respective CM frame. 
03444   380 DO 400 IL=1,ND-1 
03445       PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5)) 
03446       UE(3)=2.*RLU(0)-1. 
03447       PHI=PARU(2)*RLU(0) 
03448       UE(1)=SQRT(1.-UE(3)**2)*COS(PHI) 
03449       UE(2)=SQRT(1.-UE(3)**2)*SIN(PHI) 
03450       DO 390 J=1,3 
03451       P(N+IL,J)=PA*UE(J) 
03452       PV(IL+1,J)=-PA*UE(J) 
03453   390 CONTINUE 
03454       P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2) 
03455       PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2) 
03456   400 CONTINUE 
03457  
03458 C...Lorentz transform decay products to lab frame. 
03459       DO 410 J=1,4 
03460       P(N+ND,J)=PV(ND,J) 
03461   410 CONTINUE 
03462       DO 450 IL=ND-1,1,-1 
03463       DO 420 J=1,3 
03464       BE(J)=PV(IL,J)/PV(IL,4) 
03465   420 CONTINUE 
03466       GA=PV(IL,4)/PV(IL,5) 
03467       DO 440 I=N+IL,N+ND 
03468       BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3) 
03469       DO 430 J=1,3 
03470       P(I,J)=P(I,J)+GA*(GA*BEP/(1.+GA)+P(I,4))*BE(J) 
03471   430 CONTINUE 
03472       P(I,4)=GA*(P(I,4)+BEP) 
03473   440 CONTINUE 
03474   450 CONTINUE 
03475  
03476 C...Check that no infinite loop in matrix element weight. 
03477       NTRY=NTRY+1 
03478       IF(NTRY.GT.800) GOTO 480 
03479  
03480 C...Matrix elements for omega and phi decays. 
03481       IF(MMAT.EQ.1) THEN 
03482         WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2 
03483      &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2 
03484      &  +2.*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3) 
03485         IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001).LT.RLU(0)) GOTO 310 
03486  
03487 C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-. 
03488       ELSEIF(MMAT.EQ.2) THEN 
03489         FOUR12=FOUR(N+1,N+2) 
03490         FOUR13=FOUR(N+1,N+3) 
03491         WT=(PMST-0.5*PMES)*(FOUR12**2+FOUR13**2)+ 
03492      &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2) 
03493         IF(WT.LT.RLU(0)*0.25*PMST*(P(IP,5)**2-PMST)**2) GOTO 380 
03494  
03495 C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar, 
03496 C...V vector), of form cos**2(theta02) in V1 rest frame, and for 
03497 C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02). 
03498       ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN 
03499         FOUR10=FOUR(IP,IM) 
03500         FOUR12=FOUR(IP,N+1) 
03501         FOUR02=FOUR(IM,N+1) 
03502         PMS1=P(IP,5)**2 
03503         PMS0=P(IM,5)**2 
03504         PMS2=P(N+1,5)**2 
03505         IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2 
03506         IF(KFAS.EQ.22) HNUM=PMS1*(2.*FOUR10*FOUR12*FOUR02- 
03507      &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2) 
03508         HNUM=MAX(1E-6*PMS1**2*PMS0*PMS2,HNUM) 
03509         HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2) 
03510         IF(HNUM.LT.RLU(0)*HDEN) GOTO 380 
03511  
03512 C...Matrix element for "onium" -> g + g + g or gamma + g + g. 
03513       ELSEIF(MMAT.EQ.4) THEN 
03514         HX1=2.*FOUR(IP,N+1)/P(IP,5)**2 
03515         HX2=2.*FOUR(IP,N+2)/P(IP,5)**2 
03516         HX3=2.*FOUR(IP,N+3)/P(IP,5)**2 
03517         WT=((1.-HX1)/(HX2*HX3))**2+((1.-HX2)/(HX1*HX3))**2+ 
03518      &  ((1.-HX3)/(HX1*HX2))**2 
03519         IF(WT.LT.2.*RLU(0)) GOTO 310 
03520         IF(K(IP+1,2).EQ.22.AND.(1.-HX1)*P(IP,5)**2.LT.4.*PARJ(32)**2) 
03521      &  GOTO 310 
03522  
03523 C...Effective matrix element for nu spectrum in tau -> nu + hadrons. 
03524       ELSEIF(MMAT.EQ.41) THEN 
03525         HX1=2.*FOUR(IP,N+1)/P(IP,5)**2 
03526         HXM=MIN(0.75,2.*(1.-PS/P(IP,5))) 
03527         IF(HX1*(3.-2.*HX1).LT.RLU(0)*HXM*(3.-2.*HXM)) GOTO 310 
03528  
03529 C...Matrix elements for weak decays (only semileptonic for c and b) 
03530       ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) 
03531      &.AND.ND.EQ.3) THEN 
03532         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3) 
03533         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3) 
03534         IF(WT.LT.RLU(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 310 
03535       ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN 
03536         DO 470 J=1,4 
03537         P(N+NP+1,J)=0. 
03538         DO 460 IS=N+3,N+NP 
03539         P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J) 
03540   460   CONTINUE 
03541   470   CONTINUE 
03542         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1) 
03543         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1) 
03544         IF(WT.LT.RLU(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 310 
03545  
03546 C...Angular distribution in W decay. 
03547       ELSEIF(MMAT.EQ.46.AND.MSGN.NE.0) THEN 
03548         IF(MSGN.GT.0) WT=FOUR(IM,N+1)*FOUR(N+2,IP+1) 
03549         IF(MSGN.LT.0) WT=FOUR(IM,N+2)*FOUR(N+1,IP+1) 
03550         IF(WT.LT.RLU(0)*P(IM,5)**4/WTCOR(10)) GOTO 380 
03551       ENDIF 
03552  
03553 C...Scale back energy and reattach spectator. 
03554   480 IF(MREM.EQ.1) THEN 
03555         DO 490 J=1,5 
03556         PV(1,J)=PV(1,J)/(1.-PQT) 
03557   490   CONTINUE 
03558         ND=ND+1 
03559         MREM=0 
03560       ENDIF 
03561  
03562 C...Low invariant mass for system with spectator quark gives particle, 
03563 C...not two jets. Readjust momenta accordingly. 
03564       IF((MMAT.EQ.31.OR.MMAT.EQ.45).AND.ND.EQ.3) THEN 
03565         MSTJ(93)=1 
03566         PM2=ULMASS(K(N+2,2)) 
03567         MSTJ(93)=1 
03568         PM3=ULMASS(K(N+3,2)) 
03569         IF(P(N+2,5)**2+P(N+3,5)**2+2.*FOUR(N+2,N+3).GE. 
03570      &  (PARJ(32)+PM2+PM3)**2) GOTO 550 
03571         K(N+2,1)=1 
03572         KFTEMP=K(N+2,2) 
03573         CALL LUKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2)) 
03574         IF(K(N+2,2).EQ.0) GOTO 150 
03575         P(N+2,5)=ULMASS(K(N+2,2)) 
03576         PS=P(N+1,5)+P(N+2,5) 
03577         PV(2,5)=P(N+2,5) 
03578         MMAT=0 
03579         ND=2 
03580         GOTO 380 
03581       ELSEIF(MMAT.EQ.44) THEN 
03582         MSTJ(93)=1 
03583         PM3=ULMASS(K(N+3,2)) 
03584         MSTJ(93)=1 
03585         PM4=ULMASS(K(N+4,2)) 
03586         IF(P(N+3,5)**2+P(N+4,5)**2+2.*FOUR(N+3,N+4).GE. 
03587      &  (PARJ(32)+PM3+PM4)**2) GOTO 520 
03588         K(N+3,1)=1 
03589         KFTEMP=K(N+3,2) 
03590         CALL LUKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2)) 
03591         IF(K(N+3,2).EQ.0) GOTO 150 
03592         P(N+3,5)=ULMASS(K(N+3,2)) 
03593         DO 500 J=1,3 
03594         P(N+3,J)=P(N+3,J)+P(N+4,J) 
03595   500   CONTINUE 
03596         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) 
03597         HA=P(N+1,4)**2-P(N+2,4)**2 
03598         HB=HA-(P(N+1,5)**2-P(N+2,5)**2) 
03599         HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+ 
03600      &  (P(N+1,3)-P(N+2,3))**2 
03601         HD=(PV(1,4)-P(N+3,4))**2 
03602         HE=HA**2-2.*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2 
03603         HF=HD*HC-HB**2 
03604         HG=HD*HC-HA*HB 
03605         HH=(SQRT(HG**2+HE*HF)-HG)/(2.*HF) 
03606         DO 510 J=1,3 
03607         PCOR=HH*(P(N+1,J)-P(N+2,J)) 
03608         P(N+1,J)=P(N+1,J)+PCOR 
03609         P(N+2,J)=P(N+2,J)-PCOR 
03610   510   CONTINUE 
03611         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) 
03612         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) 
03613         ND=ND-1 
03614       ENDIF 
03615  
03616 C...Check invariant mass of W jets. May give one particle or start over. 
03617   520 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) 
03618      &.AND.IABS(K(N+1,2)).LT.10) THEN 
03619         PMR=SQRT(MAX(0.,P(N+1,5)**2+P(N+2,5)**2+2.*FOUR(N+1,N+2))) 
03620         MSTJ(93)=1 
03621         PM1=ULMASS(K(N+1,2)) 
03622         MSTJ(93)=1 
03623         PM2=ULMASS(K(N+2,2)) 
03624         IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 530 
03625         KFLDUM=INT(1.5+RLU(0)) 
03626         CALL LUKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1) 
03627         CALL LUKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2) 
03628         IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 150 
03629         PSM=ULMASS(KF1)+ULMASS(KF2) 
03630         IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 530 
03631         IF(MMAT.GE.43.AND.PMR.GT.0.2*PARJ(32)+PSM) GOTO 530 
03632         IF(MMAT.EQ.48) GOTO 310 
03633         IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 150 
03634         K(N+1,1)=1 
03635         KFTEMP=K(N+1,2) 
03636         CALL LUKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2)) 
03637         IF(K(N+1,2).EQ.0) GOTO 150 
03638         P(N+1,5)=ULMASS(K(N+1,2)) 
03639         K(N+2,2)=K(N+3,2) 
03640         P(N+2,5)=P(N+3,5) 
03641         PS=P(N+1,5)+P(N+2,5) 
03642         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 150 
03643         PV(2,5)=P(N+3,5) 
03644         MMAT=0 
03645         ND=2 
03646         GOTO 380 
03647       ENDIF 
03648  
03649 C...Phase space decay of partons from W decay. 
03650   530 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN 
03651         KFLO(1)=K(N+1,2) 
03652         KFLO(2)=K(N+2,2) 
03653         K(N+1,1)=K(N+3,1) 
03654         K(N+1,2)=K(N+3,2) 
03655         DO 540 J=1,5 
03656         PV(1,J)=P(N+1,J)+P(N+2,J) 
03657         P(N+1,J)=P(N+3,J) 
03658   540   CONTINUE 
03659         PV(1,5)=PMR 
03660         N=N+1 
03661         NP=0 
03662         NQ=2 
03663         PS=0. 
03664         MSTJ(93)=2 
03665         PSQ=ULMASS(KFLO(1)) 
03666         MSTJ(93)=2 
03667         PSQ=PSQ+ULMASS(KFLO(2)) 
03668         MMAT=11 
03669         GOTO 180 
03670       ENDIF 
03671  
03672 C...Boost back for rapidly moving particle. 
03673   550 N=N+ND 
03674       IF(MBST.EQ.1) THEN 
03675         DO 560 J=1,3 
03676         BE(J)=P(IP,J)/P(IP,4) 
03677   560   CONTINUE 
03678         GA=P(IP,4)/P(IP,5) 
03679         DO 580 I=NSAV+1,N 
03680         BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3) 
03681         DO 570 J=1,3 
03682         P(I,J)=P(I,J)+GA*(GA*BEP/(1.+GA)+P(I,4))*BE(J) 
03683   570   CONTINUE 
03684         P(I,4)=GA*(P(I,4)+BEP) 
03685   580   CONTINUE 
03686       ENDIF 
03687  
03688 C...Fill in position of decay vertex. 
03689       DO 600 I=NSAV+1,N 
03690       DO 590 J=1,4 
03691       V(I,J)=VDCY(J) 
03692   590 CONTINUE 
03693       V(I,5)=0. 
03694   600 CONTINUE 
03695  
03696 C...Set up for parton shower evolution from jets. 
03697       IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN 
03698         K(NSAV+1,1)=3 
03699         K(NSAV+2,1)=3 
03700         K(NSAV+3,1)=3 
03701         K(NSAV+1,4)=MSTU(5)*(NSAV+2) 
03702         K(NSAV+1,5)=MSTU(5)*(NSAV+3) 
03703         K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
03704         K(NSAV+2,5)=MSTU(5)*(NSAV+1) 
03705         K(NSAV+3,4)=MSTU(5)*(NSAV+1) 
03706         K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
03707         MSTJ(92)=-(NSAV+1) 
03708       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN 
03709         K(NSAV+2,1)=3 
03710         K(NSAV+3,1)=3 
03711         K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
03712         K(NSAV+2,5)=MSTU(5)*(NSAV+3) 
03713         K(NSAV+3,4)=MSTU(5)*(NSAV+2) 
03714         K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
03715         MSTJ(92)=NSAV+2 
03716       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44.OR.MMAT.EQ.46). 
03717      &AND.IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN 
03718         K(NSAV+1,1)=3 
03719         K(NSAV+2,1)=3 
03720         K(NSAV+1,4)=MSTU(5)*(NSAV+2) 
03721         K(NSAV+1,5)=MSTU(5)*(NSAV+2) 
03722         K(NSAV+2,4)=MSTU(5)*(NSAV+1) 
03723         K(NSAV+2,5)=MSTU(5)*(NSAV+1) 
03724         MSTJ(92)=NSAV+1 
03725       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44.OR.MMAT.EQ.46). 
03726      &AND.IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN 
03727         MSTJ(92)=NSAV+1 
03728       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21) 
03729      &THEN 
03730         K(NSAV+1,1)=3 
03731         K(NSAV+2,1)=3 
03732         K(NSAV+3,1)=3 
03733         KCP=LUCOMP(K(NSAV+1,2)) 
03734         KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2)) 
03735         JCON=4 
03736         IF(KQP.LT.0) JCON=5 
03737         K(NSAV+1,JCON)=MSTU(5)*(NSAV+2) 
03738         K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1) 
03739         K(NSAV+2,JCON)=MSTU(5)*(NSAV+3) 
03740         K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2) 
03741         MSTJ(92)=NSAV+1 
03742       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN 
03743         K(NSAV+1,1)=3 
03744         K(NSAV+3,1)=3 
03745         K(NSAV+1,4)=MSTU(5)*(NSAV+3) 
03746         K(NSAV+1,5)=MSTU(5)*(NSAV+3) 
03747         K(NSAV+3,4)=MSTU(5)*(NSAV+1) 
03748         K(NSAV+3,5)=MSTU(5)*(NSAV+1) 
03749         MSTJ(92)=NSAV+1 
03750  
03751 C...Set up for parton shower evolution in t -> W + b. 
03752       ELSEIF(MSTJ(27).GE.1.AND.MMAT.EQ.45.AND.ND.EQ.3) THEN 
03753         K(NSAV+2,1)=3 
03754         K(NSAV+3,1)=3 
03755         K(NSAV+2,4)=MSTU(5)*(NSAV+3) 
03756         K(NSAV+2,5)=MSTU(5)*(NSAV+3) 
03757         K(NSAV+3,4)=MSTU(5)*(NSAV+2) 
03758         K(NSAV+3,5)=MSTU(5)*(NSAV+2) 
03759         MSTJ(92)=NSAV+1 
03760       ENDIF 
03761  
03762 C...Mark decayed particle; special option for B-B~ mixing. 
03763       IF(K(IP,1).EQ.5) K(IP,1)=15 
03764       IF(K(IP,1).LE.10) K(IP,1)=11 
03765       IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12 
03766       K(IP,4)=NSAV+1 
03767       K(IP,5)=N 
03768  
03769       RETURN 
03770       END 
03771  
03772 C********************************************************************* 
03773  
03774       SUBROUTINE LUKFDI(KFL1,KFL2,KFL3,KF) 
03775  
03776 C...Purpose: to generate a new flavour pair and combine off a hadron. 
03777       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
03778       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
03779       SAVE /LUDAT1/,/LUDAT2/ 
03780  
03781 C...Default flavour values. Input consistency checks. 
03782       KF1A=IABS(KFL1) 
03783       KF2A=IABS(KFL2) 
03784       KFL3=0 
03785       KF=0 
03786       IF(KF1A.EQ.0) RETURN 
03787       IF(KF2A.NE.0) THEN 
03788         IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN 
03789         IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN 
03790         IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN 
03791       ENDIF 
03792  
03793 C...Check if tabulated flavour probabilities are to be used. 
03794       IF(MSTJ(15).EQ.1) THEN 
03795         KTAB1=-1 
03796         IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A 
03797         KFL1A=MOD(KF1A/1000,10) 
03798         KFL1B=MOD(KF1A/100,10) 
03799         KFL1S=MOD(KF1A,10) 
03800         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4) 
03801      &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2 
03802         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1 
03803         IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A 
03804         KTAB2=0 
03805         IF(KF2A.NE.0) THEN 
03806           KTAB2=-1 
03807           IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A 
03808           KFL2A=MOD(KF2A/1000,10) 
03809           KFL2B=MOD(KF2A/100,10) 
03810           KFL2S=MOD(KF2A,10) 
03811           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4) 
03812      &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2 
03813           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1 
03814         ENDIF 
03815         IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 150 
03816       ENDIF 
03817  
03818 C...Parameters and breaking diquark parameter combinations. 
03819   100 PAR2=PARJ(2) 
03820       PAR3=PARJ(3) 
03821       PAR4=3.*PARJ(4) 
03822       IF(MSTJ(12).GE.2) THEN 
03823         PAR3M=SQRT(PARJ(3)) 
03824         PAR4M=1./(3.*SQRT(PARJ(4))) 
03825         PARDM=PARJ(7)/(PARJ(7)+PAR3M*PARJ(6)) 
03826         PARS0=PARJ(5)*(2.+(1.+PAR2*PAR3M*PARJ(7))*(1.+PAR4M)) 
03827         PARS1=PARJ(7)*PARS0/(2.*PAR3M)+PARJ(5)*(PARJ(6)*(1.+PAR4M)+ 
03828      &  PAR2*PAR3M*PARJ(6)*PARJ(7)) 
03829         PARS2=PARJ(5)*2.*PARJ(6)*PARJ(7)*(PAR2*PARJ(7)+(1.+PAR4M)/PAR3M) 
03830         PARSM=MAX(PARS0,PARS1,PARS2) 
03831         PAR4=PAR4*(1.+PARSM)/(1.+PARSM/(3.*PAR4M)) 
03832       ENDIF 
03833  
03834 C...Choice of whether to generate meson or baryon. 
03835   110 MBARY=0 
03836       KFDA=0 
03837       IF(KF1A.LE.10) THEN 
03838         IF(KF2A.EQ.0.AND.MSTJ(12).GE.1.AND.(1.+PARJ(1))*RLU(0).GT.1.) 
03839      &  MBARY=1 
03840         IF(KF2A.GT.10) MBARY=2 
03841         IF(KF2A.GT.10.AND.KF2A.LE.10000) KFDA=KF2A 
03842       ELSE 
03843         MBARY=2 
03844         IF(KF1A.LE.10000) KFDA=KF1A 
03845       ENDIF 
03846  
03847 C...Possibility of process diquark -> meson + new diquark. 
03848       IF(KFDA.NE.0.AND.MSTJ(12).GE.2) THEN 
03849         KFLDA=MOD(KFDA/1000,10) 
03850         KFLDB=MOD(KFDA/100,10) 
03851         KFLDS=MOD(KFDA,10) 
03852         WTDQ=PARS0 
03853         IF(MAX(KFLDA,KFLDB).EQ.3) WTDQ=PARS1 
03854         IF(MIN(KFLDA,KFLDB).EQ.3) WTDQ=PARS2 
03855         IF(KFLDS.EQ.1) WTDQ=WTDQ/(3.*PAR4M) 
03856         IF((1.+WTDQ)*RLU(0).GT.1.) MBARY=-1 
03857         IF(MBARY.EQ.-1.AND.KF2A.NE.0) RETURN 
03858       ENDIF 
03859  
03860 C...Flavour for meson, possibly with new flavour. 
03861       IF(MBARY.LE.0) THEN 
03862         KFS=ISIGN(1,KFL1) 
03863         IF(MBARY.EQ.0) THEN 
03864           IF(KF2A.EQ.0) KFL3=ISIGN(1+INT((2.+PAR2)*RLU(0)),-KFL1) 
03865           KFLA=MAX(KF1A,KF2A+IABS(KFL3)) 
03866           KFLB=MIN(KF1A,KF2A+IABS(KFL3)) 
03867           IF(KFLA.NE.KF1A) KFS=-KFS 
03868  
03869 C...Splitting of diquark into meson plus new diquark. 
03870         ELSE 
03871           KFL1A=MOD(KF1A/1000,10) 
03872           KFL1B=MOD(KF1A/100,10) 
03873   120     KFL1D=KFL1A+INT(RLU(0)+0.5)*(KFL1B-KFL1A) 
03874           KFL1E=KFL1A+KFL1B-KFL1D 
03875           IF((KFL1D.EQ.3.AND.RLU(0).GT.PARDM).OR.(KFL1E.EQ.3.AND. 
03876      &    RLU(0).LT.PARDM)) THEN 
03877             KFL1D=KFL1A+KFL1B-KFL1D 
03878             KFL1E=KFL1A+KFL1B-KFL1E 
03879           ENDIF 
03880           KFL3A=1+INT((2.+PAR2*PAR3M*PARJ(7))*RLU(0)) 
03881           IF((KFL1E.NE.KFL3A.AND.RLU(0).GT.(1.+PAR4M)/MAX(2.,1.+PAR4M)). 
03882      &    OR.(KFL1E.EQ.KFL3A.AND.RLU(0).GT.2./MAX(2.,1.+PAR4M))) 
03883      &    GOTO 120 
03884           KFLDS=3 
03885           IF(KFL1E.NE.KFL3A) KFLDS=2*INT(RLU(0)+1./(1.+PAR4M))+1 
03886           KFL3=ISIGN(10000+1000*MAX(KFL1E,KFL3A)+100*MIN(KFL1E,KFL3A)+ 
03887      &    KFLDS,-KFL1) 
03888           KFLA=MAX(KFL1D,KFL3A) 
03889           KFLB=MIN(KFL1D,KFL3A) 
03890           IF(KFLA.NE.KFL1D) KFS=-KFS 
03891         ENDIF 
03892  
03893 C...Form meson, with spin and flavour mixing for diagonal states. 
03894         IF(KFLA.LE.2) KMUL=INT(PARJ(11)+RLU(0)) 
03895         IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+RLU(0)) 
03896         IF(KFLA.GE.4) KMUL=INT(PARJ(13)+RLU(0)) 
03897         IF(KMUL.EQ.0.AND.PARJ(14).GT.0.) THEN 
03898           IF(RLU(0).LT.PARJ(14)) KMUL=2 
03899         ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0.) THEN 
03900           RMUL=RLU(0) 
03901           IF(RMUL.LT.PARJ(15)) KMUL=3 
03902           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4 
03903           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5 
03904         ENDIF 
03905         KFLS=3 
03906         IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1 
03907         IF(KMUL.EQ.5) KFLS=5 
03908         IF(KFLA.NE.KFLB) THEN 
03909           KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA 
03910         ELSE 
03911           RMIX=RLU(0) 
03912           IMIX=2*KFLA+10*KMUL 
03913           IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+ 
03914      &    INT(RMIX+PARF(IMIX)))+KFLS 
03915           IF(KFLA.GE.4) KF=110*KFLA+KFLS 
03916         ENDIF 
03917         IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF) 
03918         IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF) 
03919  
03920 C...Optional extra suppression of eta and eta'. 
03921         IF(KF.EQ.221) THEN 
03922           IF(RLU(0).GT.PARJ(25)) GOTO 110 
03923         ELSEIF(KF.EQ.331) THEN 
03924           IF(RLU(0).GT.PARJ(26)) GOTO 110 
03925         ENDIF 
03926  
03927 C...Generate diquark flavour. 
03928       ELSE 
03929   130   IF(KF1A.LE.10.AND.KF2A.EQ.0) THEN 
03930           KFLA=KF1A 
03931   140     KFLB=1+INT((2.+PAR2*PAR3)*RLU(0)) 
03932           KFLC=1+INT((2.+PAR2*PAR3)*RLU(0)) 
03933           KFLDS=1 
03934           IF(KFLB.GE.KFLC) KFLDS=3 
03935           IF(KFLDS.EQ.1.AND.PAR4*RLU(0).GT.1.) GOTO 140 
03936           IF(KFLDS.EQ.3.AND.PAR4.LT.RLU(0)) GOTO 140 
03937           KFL3=ISIGN(1000*MAX(KFLB,KFLC)+100*MIN(KFLB,KFLC)+KFLDS,KFL1) 
03938  
03939 C...Take diquark flavour from input. 
03940         ELSEIF(KF1A.LE.10) THEN 
03941           KFLA=KF1A 
03942           KFLB=MOD(KF2A/1000,10) 
03943           KFLC=MOD(KF2A/100,10) 
03944           KFLDS=MOD(KF2A,10) 
03945  
03946 C...Generate (or take from input) quark to go with diquark. 
03947         ELSE 
03948           IF(KF2A.EQ.0) KFL3=ISIGN(1+INT((2.+PAR2)*RLU(0)),KFL1) 
03949           KFLA=KF2A+IABS(KFL3) 
03950           KFLB=MOD(KF1A/1000,10) 
03951           KFLC=MOD(KF1A/100,10) 
03952           KFLDS=MOD(KF1A,10) 
03953         ENDIF 
03954  
03955 C...SU(6) factors for formation of baryon. Try again if fails. 
03956         KBARY=KFLDS 
03957         IF(KFLDS.EQ.3.AND.KFLB.NE.KFLC) KBARY=5 
03958         IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC) KBARY=KBARY+1 
03959         WT=PARF(60+KBARY)+PARJ(18)*PARF(70+KBARY) 
03960         IF(MBARY.EQ.1.AND.MSTJ(12).GE.2) THEN 
03961           WTDQ=PARS0 
03962           IF(MAX(KFLB,KFLC).EQ.3) WTDQ=PARS1 
03963           IF(MIN(KFLB,KFLC).EQ.3) WTDQ=PARS2 
03964           IF(KFLDS.EQ.1) WTDQ=WTDQ/(3.*PAR4M) 
03965           IF(KFLDS.EQ.1) WT=WT*(1.+WTDQ)/(1.+PARSM/(3.*PAR4M)) 
03966           IF(KFLDS.EQ.3) WT=WT*(1.+WTDQ)/(1.+PARSM) 
03967         ENDIF 
03968         IF(KF2A.EQ.0.AND.WT.LT.RLU(0)) GOTO 130 
03969  
03970 C...Form baryon. Distinguish Lambda- and Sigmalike baryons. 
03971         KFLD=MAX(KFLA,KFLB,KFLC) 
03972         KFLF=MIN(KFLA,KFLB,KFLC) 
03973         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF 
03974         KFLS=2 
03975         IF((PARF(60+KBARY)+PARJ(18)*PARF(70+KBARY))*RLU(0).GT. 
03976      &  PARF(60+KBARY)) KFLS=4 
03977         KFLL=0 
03978         IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF) THEN 
03979           IF(KFLDS.EQ.1.AND.KFLA.EQ.KFLD) KFLL=1 
03980           IF(KFLDS.EQ.1.AND.KFLA.NE.KFLD) KFLL=INT(0.25+RLU(0)) 
03981           IF(KFLDS.EQ.3.AND.KFLA.NE.KFLD) KFLL=INT(0.75+RLU(0)) 
03982         ENDIF 
03983         IF(KFLL.EQ.0) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1) 
03984         IF(KFLL.EQ.1) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1) 
03985       ENDIF 
03986       RETURN 
03987  
03988 C...Use tabulated probabilities to select new flavour and hadron. 
03989   150 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN 
03990         KT3L=1 
03991         KT3U=6 
03992       ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN 
03993         KT3L=1 
03994         KT3U=6 
03995       ELSEIF(KTAB2.EQ.0) THEN 
03996         KT3L=1 
03997         KT3U=22 
03998       ELSE 
03999         KT3L=KTAB2 
04000         KT3U=KTAB2 
04001       ENDIF 
04002       RFL=0. 
04003       DO 170 KTS=0,2 
04004       DO 160 KT3=KT3L,KT3U 
04005       RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3) 
04006   160 CONTINUE 
04007   170 CONTINUE 
04008       RFL=RLU(0)*RFL 
04009       DO 190 KTS=0,2 
04010       KTABS=KTS 
04011       DO 180 KT3=KT3L,KT3U 
04012       KTAB3=KT3 
04013       RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3) 
04014       IF(RFL.LE.0.) GOTO 200 
04015   180 CONTINUE 
04016   190 CONTINUE 
04017   200 CONTINUE 
04018  
04019 C...Reconstruct flavour of produced quark/diquark. 
04020       IF(KTAB3.LE.6) THEN 
04021         KFL3A=KTAB3 
04022         KFL3B=0 
04023         KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13)) 
04024       ELSE 
04025         KFL3A=1 
04026         IF(KTAB3.GE.8) KFL3A=2 
04027         IF(KTAB3.GE.11) KFL3A=3 
04028         IF(KTAB3.GE.16) KFL3A=4 
04029         KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2 
04030         KFL3=1000*KFL3A+100*KFL3B+1 
04031         IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3= 
04032      &  KFL3+2 
04033         KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1)) 
04034       ENDIF 
04035  
04036 C...Reconstruct meson code. 
04037       IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR. 
04038      &KFL3B.NE.0)) THEN 
04039         RFL=RLU(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+ 
04040      &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS)) 
04041         KF=110+2*KTABS+1 
04042         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1 
04043         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+ 
04044      &  25*KTABS)) KF=330+2*KTABS+1 
04045       ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN 
04046         KFLA=MAX(KTAB1,KTAB3) 
04047         KFLB=MIN(KTAB1,KTAB3) 
04048         KFS=ISIGN(1,KFL1) 
04049         IF(KFLA.NE.KF1A) KFS=-KFS 
04050         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA 
04051       ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN 
04052         KFS=ISIGN(1,KFL1) 
04053         IF(KFL1A.EQ.KFL3A) THEN 
04054           KFLA=MAX(KFL1B,KFL3B) 
04055           KFLB=MIN(KFL1B,KFL3B) 
04056           IF(KFLA.NE.KFL1B) KFS=-KFS 
04057         ELSEIF(KFL1A.EQ.KFL3B) THEN 
04058           KFLA=KFL3A 
04059           KFLB=KFL1B 
04060           KFS=-KFS 
04061         ELSEIF(KFL1B.EQ.KFL3A) THEN 
04062           KFLA=KFL1A 
04063           KFLB=KFL3B 
04064         ELSEIF(KFL1B.EQ.KFL3B) THEN 
04065           KFLA=MAX(KFL1A,KFL3A) 
04066           KFLB=MIN(KFL1A,KFL3A) 
04067           IF(KFLA.NE.KFL1A) KFS=-KFS 
04068         ELSE 
04069           CALL LUERRM(2,'(LUKFDI:) no matching flavours for qq -> qq') 
04070           GOTO 100 
04071         ENDIF 
04072         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA 
04073  
04074 C...Reconstruct baryon code. 
04075       ELSE 
04076         IF(KTAB1.GE.7) THEN 
04077           KFLA=KFL3A 
04078           KFLB=KFL1A 
04079           KFLC=KFL1B 
04080         ELSE 
04081           KFLA=KFL1A 
04082           KFLB=KFL3A 
04083           KFLC=KFL3B 
04084         ENDIF 
04085         KFLD=MAX(KFLA,KFLB,KFLC) 
04086         KFLF=MIN(KFLA,KFLB,KFLC) 
04087         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF 
04088         IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1) 
04089         IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1) 
04090       ENDIF 
04091  
04092 C...Check that constructed flavour code is an allowed one. 
04093       IF(KFL2.NE.0) KFL3=0 
04094       KC=LUCOMP(KF) 
04095       IF(KC.EQ.0) THEN 
04096         CALL LUERRM(2,'(LUKFDI:) user-defined flavour probabilities '// 
04097      &  'failed') 
04098         GOTO 100 
04099       ENDIF 
04100  
04101       RETURN 
04102       END 
04103  
04104 C********************************************************************* 
04105  
04106       SUBROUTINE LUPTDI(KFL,PX,PY) 
04107  
04108 C...Purpose: to generate transverse momentum according to a Gaussian. 
04109       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
04110       SAVE /LUDAT1/ 
04111  
04112 C...Generate p_T and azimuthal angle, gives p_x and p_y. 
04113       KFLA=IABS(KFL) 
04114       PT=PARJ(21)*SQRT(-LOG(MAX(1E-10,RLU(0)))) 
04115       IF(PARJ(23).GT.RLU(0)) PT=PARJ(24)*PT 
04116       IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT 
04117       IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0. 
04118       PHI=PARU(2)*RLU(0) 
04119       PX=PT*COS(PHI) 
04120       PY=PT*SIN(PHI) 
04121  
04122       RETURN 
04123       END 
04124  
04125 C********************************************************************* 
04126  
04127       SUBROUTINE LUZDIS(KFL1,KFL2,PR,Z) 
04128  
04129 C...Purpose: to generate the longitudinal splitting variable z. 
04130       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
04131       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
04132       SAVE /LUDAT1/,/LUDAT2/ 
04133  
04134 C...Check if heavy flavour fragmentation. 
04135       KFLA=IABS(KFL1) 
04136       KFLB=IABS(KFL2) 
04137       KFLH=KFLA 
04138       IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10) 
04139  
04140 C...Lund symmetric scaling function: determine parameters of shape. 
04141       IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR. 
04142      &MSTJ(11).GE.4) THEN 
04143         FA=PARJ(41) 
04144         IF(MSTJ(91).EQ.1) FA=PARJ(43) 
04145         IF(KFLB.GE.10) FA=FA+PARJ(45) 
04146         FBB=PARJ(42) 
04147         IF(MSTJ(91).EQ.1) FBB=PARJ(44) 
04148         FB=FBB*PR 
04149         FC=1. 
04150         IF(KFLA.GE.10) FC=FC-PARJ(45) 
04151         IF(KFLB.GE.10) FC=FC+PARJ(45) 
04152         IF(MSTJ(11).GE.4.AND.KFLH.GE.4.AND.KFLH.LE.5) THEN 
04153           FRED=PARJ(46) 
04154           IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47) 
04155           FC=FC+FRED*FBB*PARF(100+KFLH)**2 
04156         ELSEIF(MSTJ(11).GE.4.AND.KFLH.GE.6.AND.KFLH.LE.8) THEN 
04157           FRED=PARJ(46) 
04158           IF(MSTJ(11).EQ.5) FRED=PARJ(48) 
04159           FC=FC+FRED*FBB*PMAS(KFLH,1)**2 
04160         ENDIF 
04161         MC=1 
04162         IF(ABS(FC-1.).GT.0.01) MC=2 
04163  
04164 C...Determine position of maximum. Special cases for a = 0 or a = c. 
04165         IF(FA.LT.0.02) THEN 
04166           MA=1 
04167           ZMAX=1. 
04168           IF(FC.GT.FB) ZMAX=FB/FC 
04169         ELSEIF(ABS(FC-FA).LT.0.01) THEN 
04170           MA=2 
04171           ZMAX=FB/(FB+FC) 
04172         ELSE 
04173           MA=3 
04174           ZMAX=0.5*(FB+FC-SQRT((FB-FC)**2+4.*FA*FB))/(FC-FA) 
04175           IF(ZMAX.GT.0.9999.AND.FB.GT.100.) ZMAX=MIN(ZMAX,1.-FA/FB) 
04176         ENDIF 
04177  
04178 C...Subdivide z range if distribution very peaked near endpoint. 
04179         MMAX=2 
04180         IF(ZMAX.LT.0.1) THEN 
04181           MMAX=1 
04182           ZDIV=2.75*ZMAX 
04183           IF(MC.EQ.1) THEN 
04184             FINT=1.-LOG(ZDIV) 
04185           ELSE 
04186             ZDIVC=ZDIV**(1.-FC) 
04187             FINT=1.+(1.-1./ZDIVC)/(FC-1.) 
04188           ENDIF 
04189         ELSEIF(ZMAX.GT.0.85.AND.FB.GT.1.) THEN 
04190           MMAX=3 
04191           FSCB=SQRT(4.+(FC/FB)**2) 
04192           ZDIV=FSCB-1./ZMAX-(FC/FB)*LOG(ZMAX*0.5*(FSCB+FC/FB)) 
04193           IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1.-ZMAX) 
04194           ZDIV=MIN(ZMAX,MAX(0.,ZDIV)) 
04195           FINT=1.+FB*(1.-ZDIV) 
04196         ENDIF 
04197  
04198 C...Choice of z, preweighted for peaks at low or high z. 
04199   100   Z=RLU(0) 
04200         FPRE=1. 
04201         IF(MMAX.EQ.1) THEN 
04202           IF(FINT*RLU(0).LE.1.) THEN 
04203             Z=ZDIV*Z 
04204           ELSEIF(MC.EQ.1) THEN 
04205             Z=ZDIV**Z 
04206             FPRE=ZDIV/Z 
04207           ELSE 
04208             Z=1./(ZDIVC+Z*(1.-ZDIVC))**(1./(1.-FC)) 
04209             FPRE=(ZDIV/Z)**FC 
04210           ENDIF 
04211         ELSEIF(MMAX.EQ.3) THEN 
04212           IF(FINT*RLU(0).LE.1.) THEN 
04213             Z=ZDIV+LOG(Z)/FB 
04214             FPRE=EXP(FB*(Z-ZDIV)) 
04215           ELSE 
04216             Z=ZDIV+Z*(1.-ZDIV) 
04217           ENDIF 
04218         ENDIF 
04219  
04220 C...Weighting according to correct formula. 
04221         IF(Z.LE.0..OR.Z.GE.1.) GOTO 100 
04222         FEXP=FC*LOG(ZMAX/Z)+FB*(1./ZMAX-1./Z) 
04223         IF(MA.GE.2) FEXP=FEXP+FA*LOG((1.-Z)/(1.-ZMAX)) 
04224         FVAL=EXP(MAX(-50.,MIN(50.,FEXP))) 
04225         IF(FVAL.LT.RLU(0)*FPRE) GOTO 100 
04226  
04227 C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c. 
04228       ELSE 
04229         FC=PARJ(50+MAX(1,KFLH)) 
04230         IF(MSTJ(91).EQ.1) FC=PARJ(59) 
04231   110   Z=RLU(0) 
04232         IF(FC.GE.0..AND.FC.LE.1.) THEN 
04233           IF(FC.GT.RLU(0)) Z=1.-Z**(1./3.) 
04234         ELSEIF(FC.GT.-1.AND.FC.LT.0.) THEN 
04235           IF(-4.*FC*Z*(1.-Z)**2.LT.RLU(0)*((1.-Z)**2-FC*Z)**2) GOTO 110 
04236         ELSE 
04237           IF(FC.GT.0.) Z=1.-Z**(1./FC) 
04238           IF(FC.LT.0.) Z=Z**(-1./FC) 
04239         ENDIF 
04240       ENDIF 
04241  
04242       RETURN 
04243       END 
04244  
04245 C********************************************************************* 
04246  
04247       SUBROUTINE LUSHOW(IP1,IP2,QMAX) 
04248  
04249 C...Purpose: to generate timelike parton showers from given partons. 
04250       IMPLICIT DOUBLE PRECISION(D) 
04251       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
04252       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
04253       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
04254       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
04255       DIMENSION PMTH(5,40),PS(5),PMA(4),PMSD(4),IEP(4),IPA(4), 
04256      &KFLA(4),KFLD(4),KFL(4),ITRY(4),ISI(4),ISL(4),DP(4),DPT(5,4), 
04257      &KSH(0:40),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),PHIIIS(2,2), 
04258      &ISII(2) 
04259  
04260 C...Initialization of cutoff masses etc. 
04261       IF(MSTJ(41).LE.0.OR.(MSTJ(41).EQ.1.AND.QMAX.LE.PARJ(82)).OR. 
04262      &QMAX.LE.MIN(PARJ(82),PARJ(83))) RETURN 
04263       DO 100 IF=0,40 
04264       KSH(IF)=0 
04265   100 CONTINUE 
04266       KSH(21)=1 
04267       PMTH(1,21)=ULMASS(21) 
04268       PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25*PARJ(82)**2) 
04269       PMTH(3,21)=2.*PMTH(2,21) 
04270       PMTH(4,21)=PMTH(3,21) 
04271       PMTH(5,21)=PMTH(3,21) 
04272       PMTH(1,22)=ULMASS(22) 
04273       PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25*PARJ(83)**2) 
04274       PMTH(3,22)=2.*PMTH(2,22) 
04275       PMTH(4,22)=PMTH(3,22) 
04276       PMTH(5,22)=PMTH(3,22) 
04277       PMQTH1=PARJ(82) 
04278       IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83)) 
04279       PMQTH2=PMTH(2,21) 
04280       IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22)) 
04281       DO 110 IF=1,8 
04282       KSH(IF)=1 
04283       PMTH(1,IF)=ULMASS(IF) 
04284       PMTH(2,IF)=SQRT(PMTH(1,IF)**2+0.25*PMQTH1**2) 
04285       PMTH(3,IF)=PMTH(2,IF)+PMQTH2 
04286       PMTH(4,IF)=SQRT(PMTH(1,IF)**2+0.25*PARJ(82)**2)+PMTH(2,21) 
04287       PMTH(5,IF)=SQRT(PMTH(1,IF)**2+0.25*PARJ(83)**2)+PMTH(2,22) 
04288   110 CONTINUE 
04289       DO 120 IF=11,17,2 
04290       IF(MSTJ(41).GE.2) KSH(IF)=1 
04291       PMTH(1,IF)=ULMASS(IF) 
04292       PMTH(2,IF)=SQRT(PMTH(1,IF)**2+0.25*PARJ(83)**2) 
04293       PMTH(3,IF)=PMTH(2,IF)+PMTH(2,22) 
04294       PMTH(4,IF)=PMTH(3,IF) 
04295       PMTH(5,IF)=PMTH(3,IF) 
04296   120 CONTINUE 
04297       PT2MIN=MAX(0.5*PARJ(82),1.1*PARJ(81))**2 
04298       ALAMS=PARJ(81)**2 
04299       ALFM=LOG(PT2MIN/ALAMS) 
04300  
04301 C...Store positions of shower initiating partons. 
04302       IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN 
04303         NPA=1 
04304         IPA(1)=IP1 
04305       ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)- 
04306      &MSTU(32))) THEN 
04307         NPA=2 
04308         IPA(1)=IP1 
04309         IPA(2)=IP2 
04310       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0. 
04311      &AND.IP2.GE.-3) THEN 
04312         NPA=IABS(IP2) 
04313         DO 130 I=1,NPA 
04314         IPA(I)=IP1+I-1 
04315   130   CONTINUE 
04316       ELSE 
04317         CALL LUERRM(12, 
04318      &  '(LUSHOW:) failed to reconstruct showering system') 
04319         IF(MSTU(21).GE.1) RETURN 
04320       ENDIF 
04321  
04322 C...Check on phase space available for emission. 
04323       IREJ=0 
04324       DO 140 J=1,5 
04325       PS(J)=0. 
04326   140 CONTINUE 
04327       PM=0. 
04328       DO 160 I=1,NPA 
04329       KFLA(I)=IABS(K(IPA(I),2)) 
04330       PMA(I)=P(IPA(I),5) 
04331       IF(KFLA(I).LE.40) THEN 
04332         IF(KSH(KFLA(I)).EQ.1) PMA(I)=PMTH(3,KFLA(I)) 
04333       ENDIF 
04334       PM=PM+PMA(I) 
04335       IF(KFLA(I).GT.40) THEN 
04336         IREJ=IREJ+1 
04337       ELSE 
04338         IF(KSH(KFLA(I)).EQ.0.OR.PMA(I).GT.QMAX) IREJ=IREJ+1 
04339       ENDIF 
04340       DO 150 J=1,4 
04341       PS(J)=PS(J)+P(IPA(I),J) 
04342   150 CONTINUE 
04343   160 CONTINUE 
04344       IF(IREJ.EQ.NPA) RETURN 
04345       PS(5)=SQRT(MAX(0.,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2)) 
04346       IF(NPA.EQ.1) PS(5)=PS(4) 
04347       IF(PS(5).LE.PM+PMQTH1) RETURN 
04348  
04349 C...Check if 3-jet matrix elements to be used. 
04350       M3JC=0 
04351       IF(NPA.EQ.2.AND.MSTJ(47).GE.1) THEN 
04352         IF(KFLA(1).GE.1.AND.KFLA(1).LE.8.AND.KFLA(2).GE.1.AND. 
04353      &  KFLA(2).LE.8) M3JC=1 
04354         IF((KFLA(1).EQ.11.OR.KFLA(1).EQ.13.OR.KFLA(1).EQ.15.OR. 
04355      &  KFLA(1).EQ.17).AND.KFLA(2).EQ.KFLA(1)) M3JC=1 
04356         IF((KFLA(1).EQ.11.OR.KFLA(1).EQ.13.OR.KFLA(1).EQ.15.OR. 
04357      &  KFLA(1).EQ.17).AND.KFLA(2).EQ.KFLA(1)+1) M3JC=1 
04358         IF((KFLA(1).EQ.12.OR.KFLA(1).EQ.14.OR.KFLA(1).EQ.16.OR. 
04359      &  KFLA(1).EQ.18).AND.KFLA(2).EQ.KFLA(1)-1) M3JC=1 
04360         IF(MSTJ(47).EQ.2.OR.MSTJ(47).EQ.4) M3JC=1 
04361         M3JCM=0 
04362         IF(M3JC.EQ.1.AND.MSTJ(47).GE.3.AND.KFLA(1).EQ.KFLA(2)) THEN 
04363           M3JCM=1 
04364           QME=(2.*PMTH(KFLA(1),1)/PS(5))**2 
04365         ENDIF 
04366       ENDIF 
04367  
04368 C...Find if interference with initial state partons. 
04369       MIIS=0 
04370       IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2) MIIS=MSTJ(50) 
04371       IF(MIIS.NE.0) THEN 
04372         DO 180 I=1,2 
04373         KCII(I)=0 
04374         KCA=LUCOMP(KFLA(I)) 
04375         IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2)) 
04376         NIIS(I)=0 
04377         IF(KCII(I).NE.0) THEN 
04378           DO 170 J=1,2 
04379           ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5)) 
04380           IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND. 
04381      &    (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN 
04382             NIIS(I)=NIIS(I)+1 
04383             IIIS(I,NIIS(I))=ICSI 
04384           ENDIF 
04385   170     CONTINUE 
04386         ENDIF 
04387   180   CONTINUE 
04388         IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0 
04389       ENDIF 
04390  
04391 C...Boost interfering initial partons to rest frame 
04392 C...and reconstruct their polar and azimuthal angles. 
04393       IF(MIIS.NE.0) THEN 
04394         DO 200 I=1,2 
04395         DO 190 J=1,5 
04396         K(N+I,J)=K(IPA(I),J) 
04397         P(N+I,J)=P(IPA(I),J) 
04398         V(N+I,J)=0. 
04399   190   CONTINUE 
04400   200   CONTINUE 
04401         DO 220 I=3,2+NIIS(1) 
04402         DO 210 J=1,5 
04403         K(N+I,J)=K(IIIS(1,I-2),J) 
04404         P(N+I,J)=P(IIIS(1,I-2),J) 
04405         V(N+I,J)=0. 
04406   210   CONTINUE 
04407   220   CONTINUE 
04408         DO 240 I=3+NIIS(1),2+NIIS(1)+NIIS(2) 
04409         DO 230 J=1,5 
04410         K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J) 
04411         P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J) 
04412         V(N+I,J)=0. 
04413   230   CONTINUE 
04414   240   CONTINUE 
04415         CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),0.,0.,-DBLE(PS(1)/PS(4)), 
04416      &  -DBLE(PS(2)/PS(4)),-DBLE(PS(3)/PS(4))) 
04417         PHI=ULANGL(P(N+1,1),P(N+1,2)) 
04418         CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),0.,-PHI,0D0,0D0,0D0) 
04419         THE=ULANGL(P(N+1,3),P(N+1,1)) 
04420         CALL LUDBRB(N+1,N+2+NIIS(1)+NIIS(2),-THE,0.,0D0,0D0,0D0) 
04421         DO 250 I=3,2+NIIS(1) 
04422         THEIIS(1,I-2)=ULANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2)) 
04423         PHIIIS(1,I-2)=ULANGL(P(N+I,1),P(N+I,2)) 
04424   250   CONTINUE 
04425         DO 260 I=3+NIIS(1),2+NIIS(1)+NIIS(2) 
04426         THEIIS(2,I-2-NIIS(1))=PARU(1)-ULANGL(P(N+I,3), 
04427      &  SQRT(P(N+I,1)**2+P(N+I,2)**2)) 
04428         PHIIIS(2,I-2-NIIS(1))=ULANGL(P(N+I,1),P(N+I,2)) 
04429   260   CONTINUE 
04430       ENDIF 
04431  
04432 C...Define imagined single initiator of shower for parton system. 
04433       NS=N 
04434       IF(N.GT.MSTU(4)-MSTU(32)-5) THEN 
04435         CALL LUERRM(11,'(LUSHOW:) no more memory left in LUJETS') 
04436         IF(MSTU(21).GE.1) RETURN 
04437       ENDIF 
04438       IF(NPA.GE.2) THEN 
04439         K(N+1,1)=11 
04440         K(N+1,2)=21 
04441         K(N+1,3)=0 
04442         K(N+1,4)=0 
04443         K(N+1,5)=0 
04444         P(N+1,1)=0. 
04445         P(N+1,2)=0. 
04446         P(N+1,3)=0. 
04447         P(N+1,4)=PS(5) 
04448         P(N+1,5)=PS(5) 
04449         V(N+1,5)=PS(5)**2 
04450         N=N+1 
04451       ENDIF 
04452  
04453 C...Loop over partons that may branch. 
04454       NEP=NPA 
04455       IM=NS 
04456       IF(NPA.EQ.1) IM=NS-1 
04457   270 IM=IM+1 
04458       IF(N.GT.NS) THEN 
04459         IF(IM.GT.N) GOTO 510 
04460         KFLM=IABS(K(IM,2)) 
04461         IF(KFLM.GT.40) GOTO 270 
04462         IF(KSH(KFLM).EQ.0) GOTO 270 
04463         IF(P(IM,5).LT.PMTH(2,KFLM)) GOTO 270 
04464         IGM=K(IM,3) 
04465       ELSE 
04466         IGM=-1 
04467       ENDIF 
04468       IF(N+NEP.GT.MSTU(4)-MSTU(32)-5) THEN 
04469         CALL LUERRM(11,'(LUSHOW:) no more memory left in LUJETS') 
04470         IF(MSTU(21).GE.1) RETURN 
04471       ENDIF 
04472  
04473 C...Position of aunt (sister to branching parton). 
04474 C...Origin and flavour of daughters. 
04475       IAU=0 
04476       IF(IGM.GT.0) THEN 
04477         IF(K(IM-1,3).EQ.IGM) IAU=IM-1 
04478         IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1 
04479       ENDIF 
04480       IF(IGM.GE.0) THEN 
04481         K(IM,4)=N+1 
04482         DO 280 I=1,NEP 
04483         K(N+I,3)=IM 
04484   280   CONTINUE 
04485       ELSE 
04486         K(N+1,3)=IPA(1) 
04487       ENDIF 
04488       IF(IGM.LE.0) THEN 
04489         DO 290 I=1,NEP 
04490         K(N+I,2)=K(IPA(I),2) 
04491   290   CONTINUE 
04492       ELSEIF(KFLM.NE.21) THEN 
04493         K(N+1,2)=K(IM,2) 
04494         K(N+2,2)=K(IM,5) 
04495       ELSEIF(K(IM,5).EQ.21) THEN 
04496         K(N+1,2)=21 
04497         K(N+2,2)=21 
04498       ELSE 
04499         K(N+1,2)=K(IM,5) 
04500         K(N+2,2)=-K(IM,5) 
04501       ENDIF 
04502  
04503 C...Reset flags on daughers and tries made. 
04504       DO 300 IP=1,NEP 
04505       K(N+IP,1)=3 
04506       K(N+IP,4)=0 
04507       K(N+IP,5)=0 
04508       KFLD(IP)=IABS(K(N+IP,2)) 
04509       IF(KCHG(LUCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1 
04510       ITRY(IP)=0 
04511       ISL(IP)=0 
04512       ISI(IP)=0 
04513       IF(KFLD(IP).LE.40) THEN 
04514         IF(KSH(KFLD(IP)).EQ.1) ISI(IP)=1 
04515       ENDIF 
04516   300 CONTINUE 
04517       ISLM=0 
04518  
04519 C...Maximum virtuality of daughters. 
04520       IF(IGM.LE.0) THEN 
04521         DO 310 I=1,NPA 
04522         IF(NPA.GE.3) P(N+I,4)=(PS(4)*P(IPA(I),4)-PS(1)*P(IPA(I),1)- 
04523      &  PS(2)*P(IPA(I),2)-PS(3)*P(IPA(I),3))/PS(5) 
04524         P(N+I,5)=MIN(QMAX,PS(5)) 
04525         IF(NPA.GE.3) P(N+I,5)=MIN(P(N+I,5),P(N+I,4)) 
04526         IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5) 
04527   310   CONTINUE 
04528       ELSE 
04529         IF(MSTJ(43).LE.2) PEM=V(IM,2) 
04530         IF(MSTJ(43).GE.3) PEM=P(IM,4) 
04531         P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM) 
04532         P(N+2,5)=MIN(P(IM,5),(1.-V(IM,1))*PEM) 
04533         IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22) 
04534       ENDIF 
04535       DO 320 I=1,NEP 
04536       PMSD(I)=P(N+I,5) 
04537       IF(ISI(I).EQ.1) THEN 
04538         IF(P(N+I,5).LE.PMTH(3,KFLD(I))) P(N+I,5)=PMTH(1,KFLD(I)) 
04539       ENDIF 
04540       V(N+I,5)=P(N+I,5)**2 
04541   320 CONTINUE 
04542  
04543 C...Choose one of the daughters for evolution. 
04544   330 INUM=0 
04545       IF(NEP.EQ.1) INUM=1 
04546       DO 340 I=1,NEP 
04547       IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I 
04548   340 CONTINUE 
04549       DO 350 I=1,NEP 
04550       IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN 
04551         IF(P(N+I,5).GE.PMTH(2,KFLD(I))) INUM=I 
04552       ENDIF 
04553   350 CONTINUE 
04554       IF(INUM.EQ.0) THEN 
04555         RMAX=0. 
04556         DO 360 I=1,NEP 
04557         IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQTH2) THEN 
04558           RPM=P(N+I,5)/PMSD(I) 
04559           IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,KFLD(I))) THEN 
04560             RMAX=RPM 
04561             INUM=I 
04562           ENDIF 
04563         ENDIF 
04564   360   CONTINUE 
04565       ENDIF 
04566  
04567 C...Store information on choice of evolving daughter. 
04568       INUM=MAX(1,INUM) 
04569       IEP(1)=N+INUM 
04570       DO 370 I=2,NEP 
04571       IEP(I)=IEP(I-1)+1 
04572       IF(IEP(I).GT.N+NEP) IEP(I)=N+1 
04573   370 CONTINUE 
04574       DO 380 I=1,NEP 
04575       KFL(I)=IABS(K(IEP(I),2)) 
04576   380 CONTINUE 
04577       ITRY(INUM)=ITRY(INUM)+1 
04578       IF(ITRY(INUM).GT.200) THEN 
04579         CALL LUERRM(14,'(LUSHOW:) caught in infinite loop') 
04580         IF(MSTU(21).GE.1) RETURN 
04581       ENDIF 
04582       Z=0.5 
04583       IF(KFL(1).GT.40) GOTO 430 
04584       IF(KSH(KFL(1)).EQ.0) GOTO 430 
04585       IF(P(IEP(1),5).LT.PMTH(2,KFL(1))) GOTO 430 
04586  
04587 C...Select side for interference with initial state partons. 
04588       IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN 
04589         III=IEP(1)-NS-1 
04590         ISII(III)=0 
04591         IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN 
04592           ISII(III)=1 
04593         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN 
04594           IF(RLU(0).GT.0.5) ISII(III)=1 
04595         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN 
04596           ISII(III)=1 
04597           IF(RLU(0).GT.0.5) ISII(III)=2 
04598         ENDIF 
04599       ENDIF 
04600  
04601 C...Calculate allowed z range. 
04602       IF(NEP.EQ.1) THEN 
04603         PMED=PS(4) 
04604       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
04605         PMED=P(IM,5) 
04606       ELSE 
04607         IF(INUM.EQ.1) PMED=V(IM,1)*PEM 
04608         IF(INUM.EQ.2) PMED=(1.-V(IM,1))*PEM 
04609       ENDIF 
04610       IF(MOD(MSTJ(43),2).EQ.1) THEN 
04611         ZC=PMTH(2,21)/PMED 
04612         ZCE=PMTH(2,22)/PMED 
04613       ELSE 
04614         ZC=0.5*(1.-SQRT(MAX(0.,1.-(2.*PMTH(2,21)/PMED)**2))) 
04615         IF(ZC.LT.1E-4) ZC=(PMTH(2,21)/PMED)**2 
04616         ZCE=0.5*(1.-SQRT(MAX(0.,1.-(2.*PMTH(2,22)/PMED)**2))) 
04617         IF(ZCE.LT.1E-4) ZCE=(PMTH(2,22)/PMED)**2 
04618       ENDIF 
04619       ZC=MIN(ZC,0.491) 
04620       ZCE=MIN(ZCE,0.491) 
04621       IF((MSTJ(41).EQ.1.AND.ZC.GT.0.49).OR.(MSTJ(41).GE.2.AND. 
04622      &MIN(ZC,ZCE).GT.0.49)) THEN 
04623         P(IEP(1),5)=PMTH(1,KFL(1)) 
04624         V(IEP(1),5)=P(IEP(1),5)**2 
04625         GOTO 430 
04626       ENDIF 
04627  
04628 C...Integral of Altarelli-Parisi z kernel for QCD. 
04629       IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN 
04630         FBR=6.*LOG((1.-ZC)/ZC)+MSTJ(45)*(0.5-ZC) 
04631       ELSEIF(MSTJ(49).EQ.0) THEN 
04632         FBR=(8./3.)*LOG((1.-ZC)/ZC) 
04633  
04634 C...Integral of Altarelli-Parisi z kernel for scalar gluon. 
04635       ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN 
04636         FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1.-2.*ZC) 
04637       ELSEIF(MSTJ(49).EQ.1) THEN 
04638         FBR=(1.-2.*ZC)/3. 
04639         IF(IGM.EQ.0.AND.M3JC.EQ.1) FBR=4.*FBR 
04640  
04641 C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon. 
04642       ELSEIF(KFL(1).EQ.21) THEN 
04643         FBR=6.*MSTJ(45)*(0.5-ZC) 
04644       ELSE 
04645         FBR=2.*LOG((1.-ZC)/ZC) 
04646       ENDIF 
04647  
04648 C...Reset QCD probability for lepton. 
04649       IF(KFL(1).GE.11.AND.KFL(1).LE.18) FBR=0. 
04650  
04651 C...Integral of Altarelli-Parisi kernel for photon emission. 
04652       IF(MSTJ(41).GE.2.AND.KFL(1).GE.1.AND.KFL(1).LE.18) THEN 
04653         FBRE=(KCHG(KFL(1),1)/3.)**2*2.*LOG((1.-ZCE)/ZCE) 
04654         IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE 
04655       ENDIF 
04656  
04657 C...Inner veto algorithm starts. Find maximum mass for evolution. 
04658   390 PMS=V(IEP(1),5) 
04659       IF(IGM.GE.0) THEN 
04660         PM2=0. 
04661         DO 400 I=2,NEP 
04662         PM=P(IEP(I),5) 
04663         IF(KFL(I).LE.40) THEN 
04664           IF(KSH(KFL(I)).EQ.1) PM=PMTH(2,KFL(I)) 
04665         ENDIF 
04666         PM2=PM2+PM 
04667   400   CONTINUE 
04668         PMS=MIN(PMS,(P(IM,5)-PM2)**2) 
04669       ENDIF 
04670  
04671 C...Select mass for daughter in QCD evolution. 
04672       B0=27./6. 
04673       DO 410 IF=4,MSTJ(45) 
04674       IF(PMS.GT.4.*PMTH(2,IF)**2) B0=(33.-2.*IF)/6. 
04675   410 CONTINUE 
04676       IF(FBR.LT.1E-3) THEN 
04677         PMSQCD=0. 
04678       ELSEIF(MSTJ(44).LE.0) THEN 
04679         PMSQCD=PMS*EXP(MAX(-50.,LOG(RLU(0))*PARU(2)/(PARU(111)*FBR))) 
04680       ELSEIF(MSTJ(44).EQ.1) THEN 
04681         PMSQCD=4.*ALAMS*(0.25*PMS/ALAMS)**(RLU(0)**(B0/FBR)) 
04682       ELSE 
04683         PMSQCD=PMS*EXP(MAX(-50.,ALFM*B0*LOG(RLU(0))/FBR)) 
04684       ENDIF 
04685       IF(ZC.GT.0.49.OR.PMSQCD.LE.PMTH(4,KFL(1))**2) PMSQCD= 
04686      &PMTH(2,KFL(1))**2 
04687       V(IEP(1),5)=PMSQCD 
04688       MCE=1 
04689  
04690 C...Select mass for daughter in QED evolution. 
04691       IF(MSTJ(41).GE.2.AND.KFL(1).GE.1.AND.KFL(1).LE.18) THEN 
04692         PMSQED=PMS*EXP(MAX(-50.,LOG(RLU(0))*PARU(2)/(PARU(101)*FBRE))) 
04693         IF(ZCE.GT.0.49.OR.PMSQED.LE.PMTH(5,KFL(1))**2) PMSQED= 
04694      &  PMTH(2,KFL(1))**2 
04695         IF(PMSQED.GT.PMSQCD) THEN 
04696           V(IEP(1),5)=PMSQED 
04697           MCE=2 
04698         ENDIF 
04699       ENDIF 
04700  
04701 C...Check whether daughter mass below cutoff. 
04702       P(IEP(1),5)=SQRT(V(IEP(1),5)) 
04703       IF(P(IEP(1),5).LE.PMTH(3,KFL(1))) THEN 
04704         P(IEP(1),5)=PMTH(1,KFL(1)) 
04705         V(IEP(1),5)=P(IEP(1),5)**2 
04706         GOTO 430 
04707       ENDIF 
04708  
04709 C...Select z value of branching: q -> qgamma. 
04710       IF(MCE.EQ.2) THEN 
04711         Z=1.-(1.-ZCE)*(ZCE/(1.-ZCE))**RLU(0) 
04712         IF(1.+Z**2.LT.2.*RLU(0)) GOTO 390 
04713         K(IEP(1),5)=22 
04714  
04715 C...Select z value of branching: q -> qg, g -> gg, g -> qqbar. 
04716       ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN 
04717         Z=1.-(1.-ZC)*(ZC/(1.-ZC))**RLU(0) 
04718         IF(1.+Z**2.LT.2.*RLU(0)) GOTO 390 
04719         K(IEP(1),5)=21 
04720       ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*(0.5-ZC).LT.RLU(0)*FBR) THEN 
04721         Z=(1.-ZC)*(ZC/(1.-ZC))**RLU(0) 
04722         IF(RLU(0).GT.0.5) Z=1.-Z 
04723         IF((1.-Z*(1.-Z))**2.LT.RLU(0)) GOTO 390 
04724         K(IEP(1),5)=21 
04725       ELSEIF(MSTJ(49).NE.1) THEN 
04726         Z=ZC+(1.-2.*ZC)*RLU(0) 
04727         IF(Z**2+(1.-Z)**2.LT.RLU(0)) GOTO 390 
04728         KFLB=1+INT(MSTJ(45)*RLU(0)) 
04729         PMQ=4.*PMTH(2,KFLB)**2/V(IEP(1),5) 
04730         IF(PMQ.GE.1.) GOTO 390 
04731         PMQ0=4.*PMTH(2,21)**2/V(IEP(1),5) 
04732         IF(MOD(MSTJ(43),2).EQ.0.AND.(1.+0.5*PMQ)*SQRT(1.-PMQ).LT. 
04733      &  RLU(0)*(1.+0.5*PMQ0)*SQRT(1.-PMQ0)) GOTO 390 
04734         K(IEP(1),5)=KFLB 
04735  
04736 C...Ditto for scalar gluon model. 
04737       ELSEIF(KFL(1).NE.21) THEN 
04738         Z=1.-SQRT(ZC**2+RLU(0)*(1.-2.*ZC)) 
04739         K(IEP(1),5)=21 
04740       ELSEIF(RLU(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN 
04741         Z=ZC+(1.-2.*ZC)*RLU(0) 
04742         K(IEP(1),5)=21 
04743       ELSE 
04744         Z=ZC+(1.-2.*ZC)*RLU(0) 
04745         KFLB=1+INT(MSTJ(45)*RLU(0)) 
04746         PMQ=4.*PMTH(2,KFLB)**2/V(IEP(1),5) 
04747         IF(PMQ.GE.1.) GOTO 390 
04748         K(IEP(1),5)=KFLB 
04749       ENDIF 
04750       IF(MCE.EQ.1.AND.MSTJ(44).GE.2) THEN 
04751         IF(Z*(1.-Z)*V(IEP(1),5).LT.PT2MIN) GOTO 390 
04752         IF(ALFM/LOG(V(IEP(1),5)*Z*(1.-Z)/ALAMS).LT.RLU(0)) GOTO 390 
04753       ENDIF 
04754  
04755 C...Check if z consistent with chosen m. 
04756       IF(KFL(1).EQ.21) THEN 
04757         KFLGD1=IABS(K(IEP(1),5)) 
04758         KFLGD2=KFLGD1 
04759       ELSE 
04760         KFLGD1=KFL(1) 
04761         KFLGD2=IABS(K(IEP(1),5)) 
04762       ENDIF 
04763       IF(NEP.EQ.1) THEN 
04764         PED=PS(4) 
04765       ELSEIF(NEP.GE.3) THEN 
04766         PED=P(IEP(1),4) 
04767       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
04768         PED=0.5*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5) 
04769       ELSE 
04770         IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM 
04771         IF(IEP(1).EQ.N+2) PED=(1.-V(IM,1))*PEM 
04772       ENDIF 
04773       IF(MOD(MSTJ(43),2).EQ.1) THEN 
04774         PMQTH3=0.5*PARJ(82) 
04775         IF(KFLGD2.EQ.22) PMQTH3=0.5*PARJ(83) 
04776         PMQ1=(PMTH(1,KFLGD1)**2+PMQTH3**2)/V(IEP(1),5) 
04777         PMQ2=(PMTH(1,KFLGD2)**2+PMQTH3**2)/V(IEP(1),5) 
04778         ZD=SQRT(MAX(0.,(1.-V(IEP(1),5)/PED**2)*((1.-PMQ1-PMQ2)**2- 
04779      &  4.*PMQ1*PMQ2))) 
04780         ZH=1.+PMQ1-PMQ2 
04781       ELSE 
04782         ZD=SQRT(MAX(0.,1.-V(IEP(1),5)/PED**2)) 
04783         ZH=1. 
04784       ENDIF 
04785       ZL=0.5*(ZH-ZD) 
04786       ZU=0.5*(ZH+ZD) 
04787       IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 390 
04788       IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1.-ZL)/MAX(1E-20,ZL* 
04789      &(1.-ZU))) 
04790       IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1.-ZL)/MAX(1E-10,1.-ZU)) 
04791  
04792 C...Three-jet matrix element correction. 
04793       IF(IGM.EQ.0.AND.M3JC.EQ.1) THEN 
04794         X1=Z*(1.+V(IEP(1),5)/V(NS+1,5)) 
04795         X2=1.-V(IEP(1),5)/V(NS+1,5) 
04796         X3=(1.-X1)+(1.-X2) 
04797         IF(MCE.EQ.2) THEN 
04798           KI1=K(IPA(INUM),2) 
04799           KI2=K(IPA(3-INUM),2) 
04800           QF1=KCHG(IABS(KI1),1)*ISIGN(1,KI1)/3. 
04801           QF2=KCHG(IABS(KI2),1)*ISIGN(1,KI2)/3. 
04802           WSHOW=QF1**2*(1.-X1)/X3*(1.+(X1/(2.-X2))**2)+ 
04803      &    QF2**2*(1.-X2)/X3*(1.+(X2/(2.-X1))**2) 
04804           WME=(QF1*(1.-X1)/X3-QF2*(1.-X2)/X3)**2*(X1**2+X2**2) 
04805         ELSEIF(MSTJ(49).NE.1) THEN 
04806           WSHOW=1.+(1.-X1)/X3*(X1/(2.-X2))**2+ 
04807      &    (1.-X2)/X3*(X2/(2.-X1))**2 
04808           WME=X1**2+X2**2 
04809           IF(M3JCM.EQ.1) WME=WME-QME*X3-0.5*QME**2- 
04810      &    (0.5*QME+0.25*QME**2)*((1.-X2)/(1.-X1)+(1.-X1)/(1.-X2)) 
04811         ELSE 
04812           WSHOW=4.*X3*((1.-X1)/(2.-X2)**2+(1.-X2)/(2.-X1)**2) 
04813           WME=X3**2 
04814           IF(MSTJ(102).GE.2) WME=X3**2-2.*(1.+X3)*(1.-X1)*(1.-X2)* 
04815      &    PARJ(171) 
04816         ENDIF 
04817         IF(WME.LT.RLU(0)*WSHOW) GOTO 390 
04818  
04819 C...Impose angular ordering by rejection of nonordered emission. 
04820       ELSEIF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2) THEN 
04821         MAOM=1 
04822         ZM=V(IM,1) 
04823         IF(IEP(1).EQ.N+2) ZM=1.-V(IM,1) 
04824         THE2ID=Z*(1.-Z)*(ZM*P(IM,4))**2/V(IEP(1),5) 
04825         IAOM=IM 
04826   420   IF(K(IAOM,5).EQ.22) THEN 
04827           IAOM=K(IAOM,3) 
04828           IF(K(IAOM,3).LE.NS) MAOM=0 
04829           IF(MAOM.EQ.1) GOTO 420 
04830         ENDIF 
04831         IF(MAOM.EQ.1) THEN 
04832           THE2IM=V(IAOM,1)*(1.-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5) 
04833           IF(THE2ID.LT.THE2IM) GOTO 390 
04834         ENDIF 
04835       ENDIF 
04836  
04837 C...Impose user-defined maximum angle at first branching. 
04838       IF(MSTJ(48).EQ.1) THEN 
04839         IF(NEP.EQ.1.AND.IM.EQ.NS) THEN 
04840           THE2ID=Z*(1.-Z)*PS(4)**2/V(IEP(1),5) 
04841           IF(THE2ID.LT.1./PARJ(85)**2) GOTO 390 
04842         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN 
04843           THE2ID=Z*(1.-Z)*(0.5*P(IM,4))**2/V(IEP(1),5) 
04844           IF(THE2ID.LT.1./PARJ(85)**2) GOTO 390 
04845         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN 
04846           THE2ID=Z*(1.-Z)*(0.5*P(IM,4))**2/V(IEP(1),5) 
04847           IF(THE2ID.LT.1./PARJ(86)**2) GOTO 390 
04848         ENDIF 
04849       ENDIF 
04850  
04851 C...Impose angular constraint in first branching from interference 
04852 C...with initial state partons. 
04853       IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN 
04854         THE2D=MAX((1.-Z)/Z,Z/(1.-Z))*V(IEP(1),5)/(0.5*P(IM,4))**2 
04855         IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN 
04856           IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 390 
04857         ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN 
04858           IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 390 
04859         ENDIF 
04860       ENDIF 
04861  
04862 C...End of inner veto algorithm. Check if only one leg evolved so far. 
04863   430 V(IEP(1),1)=Z 
04864       ISL(1)=0 
04865       ISL(2)=0 
04866       IF(NEP.EQ.1) GOTO 460 
04867       IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 330 
04868       DO 440 I=1,NEP 
04869       IF(ITRY(I).EQ.0.AND.KFLD(I).LE.40) THEN 
04870         IF(KSH(KFLD(I)).EQ.1) THEN 
04871           IF(P(N+I,5).GE.PMTH(2,KFLD(I))) GOTO 330 
04872         ENDIF 
04873       ENDIF 
04874   440 CONTINUE 
04875  
04876 C...Check if chosen multiplet m1,m2,z1,z2 is physical. 
04877       IF(NEP.EQ.3) THEN 
04878         PA1S=(P(N+1,4)+P(N+1,5))*(P(N+1,4)-P(N+1,5)) 
04879         PA2S=(P(N+2,4)+P(N+2,5))*(P(N+2,4)-P(N+2,5)) 
04880         PA3S=(P(N+3,4)+P(N+3,5))*(P(N+3,4)-P(N+3,5)) 
04881         PTS=0.25*(2.*PA1S*PA2S+2.*PA1S*PA3S+2.*PA2S*PA3S- 
04882      &  PA1S**2-PA2S**2-PA3S**2)/PA1S 
04883         IF(PTS.LE.0.) GOTO 330 
04884       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN 
04885         DO 450 I1=N+1,N+2 
04886         KFLDA=IABS(K(I1,2)) 
04887         IF(KFLDA.GT.40) GOTO 450 
04888         IF(KSH(KFLDA).EQ.0) GOTO 450 
04889         IF(P(I1,5).LT.PMTH(2,KFLDA)) GOTO 450 
04890         IF(KFLDA.EQ.21) THEN 
04891           KFLGD1=IABS(K(I1,5)) 
04892           KFLGD2=KFLGD1 
04893         ELSE 
04894           KFLGD1=KFLDA 
04895           KFLGD2=IABS(K(I1,5)) 
04896         ENDIF 
04897         I2=2*N+3-I1 
04898         IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN 
04899           PED=0.5*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5) 
04900         ELSE 
04901           IF(I1.EQ.N+1) ZM=V(IM,1) 
04902           IF(I1.EQ.N+2) ZM=1.-V(IM,1) 
04903           PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2- 
04904      &    4.*V(N+1,5)*V(N+2,5)) 
04905           PED=PEM*(0.5*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/V(IM,5) 
04906         ENDIF 
04907         IF(MOD(MSTJ(43),2).EQ.1) THEN 
04908           PMQTH3=0.5*PARJ(82) 
04909           IF(KFLGD2.EQ.22) PMQTH3=0.5*PARJ(83) 
04910           PMQ1=(PMTH(1,KFLGD1)**2+PMQTH3**2)/V(I1,5) 
04911           PMQ2=(PMTH(1,KFLGD2)**2+PMQTH3**2)/V(I1,5) 
04912           ZD=SQRT(MAX(0.,(1.-V(I1,5)/PED**2)*((1.-PMQ1-PMQ2)**2- 
04913      &    4.*PMQ1*PMQ2))) 
04914           ZH=1.+PMQ1-PMQ2 
04915         ELSE 
04916           ZD=SQRT(MAX(0.,1.-V(I1,5)/PED**2)) 
04917           ZH=1. 
04918         ENDIF 
04919         ZL=0.5*(ZH-ZD) 
04920         ZU=0.5*(ZH+ZD) 
04921         IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU)) ISL(1)=1 
04922         IF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU)) ISL(2)=1 
04923         IF(KFLDA.EQ.21) V(I1,4)=LOG(ZU*(1.-ZL)/MAX(1E-20,ZL*(1.-ZU))) 
04924         IF(KFLDA.NE.21) V(I1,4)=LOG((1.-ZL)/MAX(1E-10,1.-ZU)) 
04925   450   CONTINUE 
04926         IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN 
04927           ISL(3-ISLM)=0 
04928           ISLM=3-ISLM 
04929         ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN 
04930           ZDR1=MAX(0.,V(N+1,3)/MAX(1E-6,V(N+1,4))-1.) 
04931           ZDR2=MAX(0.,V(N+2,3)/MAX(1E-6,V(N+2,4))-1.) 
04932           IF(ZDR2.GT.RLU(0)*(ZDR1+ZDR2)) ISL(1)=0 
04933           IF(ISL(1).EQ.1) ISL(2)=0 
04934           IF(ISL(1).EQ.0) ISLM=1 
04935           IF(ISL(2).EQ.0) ISLM=2 
04936         ENDIF 
04937         IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 330 
04938       ENDIF 
04939       IF(IGM.GT.0.AND.MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE. 
04940      &PMTH(2,KFLD(1)).OR.P(N+2,5).GE.PMTH(2,KFLD(2)))) THEN 
04941         PMQ1=V(N+1,5)/V(IM,5) 
04942         PMQ2=V(N+2,5)/V(IM,5) 
04943         ZD=SQRT(MAX(0.,(1.-V(IM,5)/PEM**2)*((1.-PMQ1-PMQ2)**2- 
04944      &  4.*PMQ1*PMQ2))) 
04945         ZH=1.+PMQ1-PMQ2 
04946         ZL=0.5*(ZH-ZD) 
04947         ZU=0.5*(ZH+ZD) 
04948         IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 330 
04949       ENDIF 
04950  
04951 C...Accepted branch. Construct four-momentum for initial partons. 
04952   460 MAZIP=0 
04953       MAZIC=0 
04954       IF(NEP.EQ.1) THEN 
04955         P(N+1,1)=0. 
04956         P(N+1,2)=0. 
04957         P(N+1,3)=SQRT(MAX(0.,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)- 
04958      &  P(N+1,5)))) 
04959         P(N+1,4)=P(IPA(1),4) 
04960         V(N+1,2)=P(N+1,4) 
04961       ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN 
04962         PED1=0.5*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5) 
04963         P(N+1,1)=0. 
04964         P(N+1,2)=0. 
04965         P(N+1,3)=SQRT(MAX(0.,(PED1+P(N+1,5))*(PED1-P(N+1,5)))) 
04966         P(N+1,4)=PED1 
04967         P(N+2,1)=0. 
04968         P(N+2,2)=0. 
04969         P(N+2,3)=-P(N+1,3) 
04970         P(N+2,4)=P(IM,5)-PED1 
04971         V(N+1,2)=P(N+1,4) 
04972         V(N+2,2)=P(N+2,4) 
04973       ELSEIF(NEP.EQ.3) THEN 
04974         P(N+1,1)=0. 
04975         P(N+1,2)=0. 
04976         P(N+1,3)=SQRT(MAX(0.,PA1S)) 
04977         P(N+2,1)=SQRT(PTS) 
04978         P(N+2,2)=0. 
04979         P(N+2,3)=0.5*(PA3S-PA2S-PA1S)/P(N+1,3) 
04980         P(N+3,1)=-P(N+2,1) 
04981         P(N+3,2)=0. 
04982         P(N+3,3)=-(P(N+1,3)+P(N+2,3)) 
04983         V(N+1,2)=P(N+1,4) 
04984         V(N+2,2)=P(N+2,4) 
04985         V(N+3,2)=P(N+3,4) 
04986  
04987 C...Construct transverse momentum for ordinary branching in shower. 
04988       ELSE 
04989         ZM=V(IM,1) 
04990         PZM=SQRT(MAX(0.,(PEM+P(IM,5))*(PEM-P(IM,5)))) 
04991         PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4.*V(N+1,5)*V(N+2,5) 
04992         IF(PZM.LE.0.) THEN 
04993           PTS=0. 
04994         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN 
04995           PTS=(PEM**2*(ZM*(1.-ZM)*V(IM,5)-(1.-ZM)*V(N+1,5)- 
04996      &    ZM*V(N+2,5))-0.25*PMLS)/PZM**2 
04997         ELSE 
04998           PTS=PMLS*(ZM*(1.-ZM)*PEM**2/V(IM,5)-0.25)/PZM**2 
04999         ENDIF 
05000         PT=SQRT(MAX(0.,PTS)) 
05001  
05002 C...Find coefficient of azimuthal asymmetry due to gluon polarization. 
05003         HAZIP=0. 
05004         IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21. 
05005      &  AND.IAU.NE.0) THEN 
05006           IF(K(IGM,3).NE.0) MAZIP=1 
05007           ZAU=V(IGM,1) 
05008           IF(IAU.EQ.IM+1) ZAU=1.-V(IGM,1) 
05009           IF(MAZIP.EQ.0) ZAU=0. 
05010           IF(K(IGM,2).NE.21) THEN 
05011             HAZIP=2.*ZAU/(1.+ZAU**2) 
05012           ELSE 
05013             HAZIP=(ZAU/(1.-ZAU*(1.-ZAU)))**2 
05014           ENDIF 
05015           IF(K(N+1,2).NE.21) THEN 
05016             HAZIP=HAZIP*(-2.*ZM*(1.-ZM))/(1.-2.*ZM*(1.-ZM)) 
05017           ELSE 
05018             HAZIP=HAZIP*(ZM*(1.-ZM)/(1.-ZM*(1.-ZM)))**2 
05019           ENDIF 
05020         ENDIF 
05021  
05022 C...Find coefficient of azimuthal asymmetry due to soft gluon 
05023 C...interference. 
05024         HAZIC=0. 
05025         IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR. 
05026      &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN 
05027           IF(K(IGM,3).NE.0) MAZIC=N+1 
05028           IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2 
05029           IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND. 
05030      &    ZM.GT.0.5) MAZIC=N+2 
05031           IF(K(IAU,2).EQ.22) MAZIC=0 
05032           ZS=ZM 
05033           IF(MAZIC.EQ.N+2) ZS=1.-ZM 
05034           ZGM=V(IGM,1) 
05035           IF(IAU.EQ.IM-1) ZGM=1.-V(IGM,1) 
05036           IF(MAZIC.EQ.0) ZGM=1. 
05037           HAZIC=(P(IM,5)/P(IGM,5))*SQRT((1.-ZS)*(1.-ZGM)/(ZS*ZGM)) 
05038           HAZIC=MIN(0.95,HAZIC) 
05039         ENDIF 
05040       ENDIF 
05041  
05042 C...Construct kinematics for ordinary branching in shower. 
05043   470 IF(NEP.EQ.2.AND.IGM.GT.0) THEN 
05044         IF(MOD(MSTJ(43),2).EQ.1) THEN 
05045           P(N+1,4)=PEM*V(IM,1) 
05046         ELSE 
05047           P(N+1,4)=PEM*(0.5*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+ 
05048      &    SQRT(PMLS)*ZM)/V(IM,5) 
05049         ENDIF 
05050         PHI=PARU(2)*RLU(0) 
05051         P(N+1,1)=PT*COS(PHI) 
05052         P(N+1,2)=PT*SIN(PHI) 
05053         IF(PZM.GT.0.) THEN 
05054           P(N+1,3)=0.5*(V(N+2,5)-V(N+1,5)-V(IM,5)+2.*PEM*P(N+1,4))/PZM 
05055         ELSE 
05056           P(N+1,3)=0. 
05057         ENDIF 
05058         P(N+2,1)=-P(N+1,1) 
05059         P(N+2,2)=-P(N+1,2) 
05060         P(N+2,3)=PZM-P(N+1,3) 
05061         P(N+2,4)=PEM-P(N+1,4) 
05062         IF(MSTJ(43).LE.2) THEN 
05063           V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5) 
05064           V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5) 
05065         ENDIF 
05066       ENDIF 
05067  
05068 C...Rotate and boost daughters. 
05069       IF(IGM.GT.0) THEN 
05070         IF(MSTJ(43).LE.2) THEN 
05071           BEX=P(IGM,1)/P(IGM,4) 
05072           BEY=P(IGM,2)/P(IGM,4) 
05073           BEZ=P(IGM,3)/P(IGM,4) 
05074           GA=P(IGM,4)/P(IGM,5) 
05075           GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1.+GA)- 
05076      &    P(IM,4)) 
05077         ELSE 
05078           BEX=0. 
05079           BEY=0. 
05080           BEZ=0. 
05081           GA=1. 
05082           GABEP=0. 
05083         ENDIF 
05084         THE=ULANGL(P(IM,3)+GABEP*BEZ,SQRT((P(IM,1)+GABEP*BEX)**2+ 
05085      &  (P(IM,2)+GABEP*BEY)**2)) 
05086         PHI=ULANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY) 
05087         DO 480 I=N+1,N+2 
05088         DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+ 
05089      &  SIN(THE)*COS(PHI)*P(I,3) 
05090         DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+ 
05091      &  SIN(THE)*SIN(PHI)*P(I,3) 
05092         DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3) 
05093         DP(4)=P(I,4) 
05094         DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3) 
05095         DGABP=GA*(GA*DBP/(1D0+GA)+DP(4)) 
05096         P(I,1)=DP(1)+DGABP*BEX 
05097         P(I,2)=DP(2)+DGABP*BEY 
05098         P(I,3)=DP(3)+DGABP*BEZ 
05099         P(I,4)=GA*(DP(4)+DBP) 
05100   480   CONTINUE 
05101       ENDIF 
05102  
05103 C...Weight with azimuthal distribution, if required. 
05104       IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN 
05105         DO 490 J=1,3 
05106         DPT(1,J)=P(IM,J) 
05107         DPT(2,J)=P(IAU,J) 
05108         DPT(3,J)=P(N+1,J) 
05109   490   CONTINUE 
05110         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3) 
05111         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3) 
05112         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2 
05113         DO 500 J=1,3 
05114         DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/DPMM 
05115         DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/DPMM 
05116   500   CONTINUE 
05117         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2) 
05118         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2) 
05119         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1*PARJ(82)) THEN 
05120           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+ 
05121      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4)) 
05122           IF(MAZIP.NE.0) THEN 
05123             IF(1.+HAZIP*(2.*CAD**2-1.).LT.RLU(0)*(1.+ABS(HAZIP))) 
05124      &      GOTO 470 
05125           ENDIF 
05126           IF(MAZIC.NE.0) THEN 
05127             IF(MAZIC.EQ.N+2) CAD=-CAD 
05128             IF((1.-HAZIC)*(1.-HAZIC*CAD)/(1.+HAZIC**2-2.*HAZIC*CAD). 
05129      &      LT.RLU(0)) GOTO 470 
05130           ENDIF 
05131         ENDIF 
05132       ENDIF 
05133  
05134 C...Azimuthal anisotropy due to interference with initial state partons. 
05135       IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR. 
05136      &K(N+2,2).EQ.21)) THEN 
05137         III=IM-NS-1 
05138         IF(ISII(III).GE.1) THEN 
05139           IAZIID=N+1 
05140           IF(K(N+1,2).NE.21) IAZIID=N+2 
05141           IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND. 
05142      &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2 
05143           THEIID=ULANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2)) 
05144           IF(III.EQ.2) THEIID=PARU(1)-THEIID 
05145           PHIIID=ULANGL(P(IAZIID,1),P(IAZIID,2)) 
05146           HAZII=MIN(0.95,THEIID/THEIIS(III,ISII(III))) 
05147           CAD=COS(PHIIID-PHIIIS(III,ISII(III))) 
05148           PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III))) 
05149           IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL 
05150           IF((1.-HAZII)*(1.-HAZII*CAD)/(1.+HAZII**2-2.*HAZII*CAD). 
05151      &    LT.RLU(0)) GOTO 470 
05152         ENDIF 
05153       ENDIF 
05154  
05155 C...Continue loop over partons that may branch, until none left. 
05156       IF(IGM.GE.0) K(IM,1)=14 
05157       N=N+NEP 
05158       NEP=2 
05159       IF(N.GT.MSTU(4)-MSTU(32)-5) THEN 
05160         CALL LUERRM(11,'(LUSHOW:) no more memory left in LUJETS') 
05161         IF(MSTU(21).GE.1) N=NS 
05162         IF(MSTU(21).GE.1) RETURN 
05163       ENDIF 
05164       GOTO 270 
05165  
05166 C...Set information on imagined shower initiator. 
05167   510 IF(NPA.GE.2) THEN 
05168         K(NS+1,1)=11 
05169         K(NS+1,2)=94 
05170         K(NS+1,3)=IP1 
05171         IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2 
05172         K(NS+1,4)=NS+2 
05173         K(NS+1,5)=NS+1+NPA 
05174         IIM=1 
05175       ELSE 
05176         IIM=0 
05177       ENDIF 
05178  
05179 C...Reconstruct string drawing information. 
05180       DO 520 I=NS+1+IIM,N 
05181       IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN 
05182         K(I,1)=1 
05183       ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND. 
05184      &IABS(K(I,2)).LE.18) THEN 
05185         K(I,1)=1 
05186       ELSEIF(K(I,1).LE.10) THEN 
05187         K(I,4)=MSTU(5)*(K(I,4)/MSTU(5)) 
05188         K(I,5)=MSTU(5)*(K(I,5)/MSTU(5)) 
05189       ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN 
05190         ID1=MOD(K(I,4),MSTU(5)) 
05191         IF(K(I,2).GE.1.AND.K(I,2).LE.8) ID1=MOD(K(I,4),MSTU(5))+1 
05192         ID2=2*MOD(K(I,4),MSTU(5))+1-ID1 
05193         K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1 
05194         K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2 
05195         K(ID1,4)=K(ID1,4)+MSTU(5)*I 
05196         K(ID1,5)=K(ID1,5)+MSTU(5)*ID2 
05197         K(ID2,4)=K(ID2,4)+MSTU(5)*ID1 
05198         K(ID2,5)=K(ID2,5)+MSTU(5)*I 
05199       ELSE 
05200         ID1=MOD(K(I,4),MSTU(5)) 
05201         ID2=ID1+1 
05202         K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1 
05203         K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1 
05204         IF(IABS(K(I,2)).LE.10.OR.K(ID1,1).GE.11) THEN 
05205           K(ID1,4)=K(ID1,4)+MSTU(5)*I 
05206           K(ID1,5)=K(ID1,5)+MSTU(5)*I 
05207         ELSE 
05208           K(ID1,4)=0 
05209           K(ID1,5)=0 
05210         ENDIF 
05211         K(ID2,4)=0 
05212         K(ID2,5)=0 
05213       ENDIF 
05214   520 CONTINUE 
05215  
05216 C...Transformation from CM frame. 
05217       IF(NPA.GE.2) THEN 
05218         BEX=PS(1)/PS(4) 
05219         BEY=PS(2)/PS(4) 
05220         BEZ=PS(3)/PS(4) 
05221         GA=PS(4)/PS(5) 
05222         GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3)) 
05223      &  /(1.+GA)-P(IPA(1),4)) 
05224       ELSE 
05225         BEX=0. 
05226         BEY=0. 
05227         BEZ=0. 
05228         GABEP=0. 
05229       ENDIF 
05230       THE=ULANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1) 
05231      &+GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2)) 
05232       PHI=ULANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY) 
05233       IF(NPA.EQ.3) THEN 
05234         CHI=ULANGL(COS(THE)*COS(PHI)*(P(IPA(2),1)+GABEP*BEX)+COS(THE)* 
05235      &  SIN(PHI)*(P(IPA(2),2)+GABEP*BEY)-SIN(THE)*(P(IPA(2),3)+GABEP* 
05236      &  BEZ),-SIN(PHI)*(P(IPA(2),1)+GABEP*BEX)+COS(PHI)*(P(IPA(2),2)+ 
05237      &  GABEP*BEY)) 
05238         MSTU(33)=1 
05239         CALL LUDBRB(NS+1,N,0.,CHI,0D0,0D0,0D0) 
05240       ENDIF 
05241       DBEX=DBLE(BEX) 
05242       DBEY=DBLE(BEY) 
05243       DBEZ=DBLE(BEZ) 
05244       MSTU(33)=1 
05245       CALL LUDBRB(NS+1,N,THE,PHI,DBEX,DBEY,DBEZ) 
05246  
05247 C...Decay vertex of shower. 
05248       DO 540 I=NS+1,N 
05249       DO 530 J=1,5 
05250       V(I,J)=V(IP1,J) 
05251   530 CONTINUE 
05252   540 CONTINUE 
05253  
05254 C...Delete trivial shower, else connect initiators. 
05255       IF(N.EQ.NS+NPA+IIM) THEN 
05256         N=NS 
05257       ELSE 
05258         DO 550 IP=1,NPA 
05259         K(IPA(IP),1)=14 
05260         K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP 
05261         K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP 
05262         K(NS+IIM+IP,3)=IPA(IP) 
05263         IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1 
05264         IF(K(NS+IIM+IP,1).NE.1) THEN 
05265           K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4) 
05266           K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5) 
05267         ENDIF 
05268   550   CONTINUE 
05269       ENDIF 
05270  
05271       RETURN 
05272       END 
05273  
05274 C********************************************************************* 
05275  
05276       SUBROUTINE LUBOEI(NSAV) 
05277  
05278 C...Purpose: to modify event so as to approximately take into account 
05279 C...Bose-Einstein effects according to a simple phenomenological 
05280 C...parametrization. 
05281       IMPLICIT DOUBLE PRECISION(D) 
05282       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
05283       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
05284       SAVE /LUJETS/,/LUDAT1/ 
05285       DIMENSION DPS(4),KFBE(9),NBE(0:9),BEI(100) 
05286       DATA KFBE/211,-211,111,321,-321,130,310,221,331/ 
05287  
05288 C...Boost event to overall CM frame. Calculate CM energy. 
05289       IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN 
05290       DO 100 J=1,4 
05291       DPS(J)=0. 
05292   100 CONTINUE 
05293       DO 120 I=1,N 
05294       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120 
05295       DO 110 J=1,4 
05296       DPS(J)=DPS(J)+P(I,J) 
05297   110 CONTINUE 
05298   120 CONTINUE 
05299       CALL LUDBRB(0,0,0.,0.,-DPS(1)/DPS(4),-DPS(2)/DPS(4), 
05300      &-DPS(3)/DPS(4)) 
05301       PECM=0. 
05302       DO 130 I=1,N 
05303       IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4) 
05304   130 CONTINUE 
05305  
05306 C...Reserve copy of particles by species at end of record. 
05307       NBE(0)=N+MSTU(3) 
05308       DO 160 IBE=1,MIN(9,MSTJ(52)) 
05309       NBE(IBE)=NBE(IBE-1) 
05310       DO 150 I=NSAV+1,N 
05311       IF(K(I,2).NE.KFBE(IBE)) GOTO 150 
05312       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150 
05313       IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN 
05314         CALL LUERRM(11,'(LUBOEI:) no more memory left in LUJETS') 
05315         RETURN 
05316       ENDIF 
05317       NBE(IBE)=NBE(IBE)+1 
05318       K(NBE(IBE),1)=I 
05319       DO 140 J=1,3 
05320       P(NBE(IBE),J)=0. 
05321   140 CONTINUE 
05322   150 CONTINUE 
05323   160 CONTINUE 
05324  
05325 C...Tabulate integral for subsequent momentum shift. 
05326       DO 220 IBE=1,MIN(9,MSTJ(52)) 
05327       IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 180 
05328       IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2)). 
05329      &LE.1) GOTO 180 
05330       IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5), 
05331      &NBE(7)-NBE(6)).LE.1) GOTO 180 
05332       IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 180 
05333       IF(IBE.EQ.1) PMHQ=2.*ULMASS(211) 
05334       IF(IBE.EQ.4) PMHQ=2.*ULMASS(321) 
05335       IF(IBE.EQ.8) PMHQ=2.*ULMASS(221) 
05336       IF(IBE.EQ.9) PMHQ=2.*ULMASS(331) 
05337       QDEL=0.1*MIN(PMHQ,PARJ(93)) 
05338       IF(MSTJ(51).EQ.1) THEN 
05339         NBIN=MIN(100,NINT(9.*PARJ(93)/QDEL)) 
05340         BEEX=EXP(0.5*QDEL/PARJ(93)) 
05341         BERT=EXP(-QDEL/PARJ(93)) 
05342       ELSE 
05343         NBIN=MIN(100,NINT(3.*PARJ(93)/QDEL)) 
05344       ENDIF 
05345       DO 170 IBIN=1,NBIN 
05346       QBIN=QDEL*(IBIN-0.5) 
05347       BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12.)/SQRT(QBIN**2+PMHQ**2) 
05348       IF(MSTJ(51).EQ.1) THEN 
05349         BEEX=BEEX*BERT 
05350         BEI(IBIN)=BEI(IBIN)*BEEX 
05351       ELSE 
05352         BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2) 
05353       ENDIF 
05354       IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1) 
05355   170 CONTINUE 
05356  
05357 C...Loop through particle pairs and find old relative momentum. 
05358   180 DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)-1 
05359       I1=K(I1M,1) 
05360       DO 200 I2M=I1M+1,NBE(IBE) 
05361       I2=K(I2M,1) 
05362       Q2OLD=MAX(0.,(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+ 
05363      &P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2) 
05364       QOLD=SQRT(Q2OLD) 
05365  
05366 C...Calculate new relative momentum. 
05367       IF(QOLD.LT.1E-3*QDEL) THEN 
05368         GOTO 200 
05369       ELSEIF(QOLD.LT.0.5*QDEL) THEN 
05370         QMOV=QOLD/3. 
05371       ELSEIF(QOLD.LT.(NBIN-0.1)*QDEL) THEN 
05372         RBIN=QOLD/QDEL 
05373         IBIN=RBIN 
05374         RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1) 
05375         QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))* 
05376      &  SQRT(Q2OLD+PMHQ**2)/Q2OLD 
05377       ELSE 
05378         QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD 
05379       ENDIF 
05380       Q2NEW=Q2OLD*(QOLD/(QOLD+3.*PARJ(92)*QMOV))**(2./3.) 
05381  
05382 C...Calculate and save shift to be performed on three-momenta. 
05383       HC1=(P(I1,4)+P(I2,4))**2-(Q2OLD-Q2NEW) 
05384       HC2=(Q2OLD-Q2NEW)*(P(I1,4)-P(I2,4))**2 
05385       HA=0.5*(1.-SQRT(HC1*Q2NEW/(HC1*Q2OLD-HC2))) 
05386       DO 190 J=1,3 
05387       PD=HA*(P(I2,J)-P(I1,J)) 
05388       P(I1M,J)=P(I1M,J)+PD 
05389       P(I2M,J)=P(I2M,J)-PD 
05390   190 CONTINUE 
05391   200 CONTINUE 
05392   210 CONTINUE 
05393   220 CONTINUE 
05394  
05395 C...Shift momenta and recalculate energies. 
05396       DO 240 IM=NBE(0)+1,NBE(MIN(9,MSTJ(52))) 
05397       I=K(IM,1) 
05398       DO 230 J=1,3 
05399       P(I,J)=P(I,J)+P(IM,J) 
05400   230 CONTINUE 
05401       P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
05402   240 CONTINUE 
05403  
05404 C...Rescale all momenta for energy conservation. 
05405       PES=0. 
05406       PQS=0. 
05407       DO 250 I=1,N 
05408       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 250 
05409       PES=PES+P(I,4) 
05410       PQS=PQS+P(I,5)**2/P(I,4) 
05411   250 CONTINUE 
05412       FAC=(PECM-PQS)/(PES-PQS) 
05413       DO 270 I=1,N 
05414       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 270 
05415       DO 260 J=1,3 
05416       P(I,J)=FAC*P(I,J) 
05417   260 CONTINUE 
05418       P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
05419   270 CONTINUE 
05420  
05421 C...Boost back to correct reference frame. 
05422       CALL LUDBRB(0,0,0.,0.,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4)) 
05423  
05424       RETURN 
05425       END 
05426  
05427 C********************************************************************* 
05428  
05429       FUNCTION ULMASS(KF) 
05430  
05431 C...Purpose: to give the mass of a particle/parton. 
05432       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
05433       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
05434       SAVE /LUDAT1/,/LUDAT2/ 
05435  
05436 C...Reset variables. Compressed code. 
05437       ULMASS=0. 
05438       KFA=IABS(KF) 
05439       KC=LUCOMP(KF) 
05440       IF(KC.EQ.0) RETURN 
05441       PARF(106)=PMAS(6,1) 
05442       PARF(107)=PMAS(7,1) 
05443       PARF(108)=PMAS(8,1) 
05444  
05445 C...Guarantee use of constituent masses for internal checks. 
05446       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.KFA.LE.10) THEN 
05447         ULMASS=PARF(100+KFA) 
05448         IF(MSTJ(93).EQ.2) ULMASS=MAX(0.,ULMASS-PARF(121)) 
05449  
05450 C...Masses that can be read directly off table. 
05451       ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN 
05452         ULMASS=PMAS(KC,1) 
05453  
05454 C...Find constituent partons and their masses. 
05455       ELSE 
05456         KFLA=MOD(KFA/1000,10) 
05457         KFLB=MOD(KFA/100,10) 
05458         KFLC=MOD(KFA/10,10) 
05459         KFLS=MOD(KFA,10) 
05460         KFLR=MOD(KFA/10000,10) 
05461         PMA=PARF(100+KFLA) 
05462         PMB=PARF(100+KFLB) 
05463         PMC=PARF(100+KFLC) 
05464  
05465 C...Construct masses for various meson, diquark and baryon cases. 
05466         IF(KFLA.EQ.0.AND.KFLR.EQ.0.AND.KFLS.LE.3) THEN 
05467           IF(KFLS.EQ.1) PMSPL=-3./(PMB*PMC) 
05468           IF(KFLS.GE.3) PMSPL=1./(PMB*PMC) 
05469           ULMASS=PARF(111)+PMB+PMC+PARF(113)*PARF(101)**2*PMSPL 
05470         ELSEIF(KFLA.EQ.0) THEN 
05471           KMUL=2 
05472           IF(KFLS.EQ.1) KMUL=3 
05473           IF(KFLR.EQ.2) KMUL=4 
05474           IF(KFLS.EQ.5) KMUL=5 
05475           ULMASS=PARF(113+KMUL)+PMB+PMC 
05476         ELSEIF(KFLC.EQ.0) THEN 
05477           IF(KFLS.EQ.1) PMSPL=-3./(PMA*PMB) 
05478           IF(KFLS.EQ.3) PMSPL=1./(PMA*PMB) 
05479           ULMASS=2.*PARF(112)/3.+PMA+PMB+PARF(114)*PARF(101)**2*PMSPL 
05480           IF(MSTJ(93).EQ.1) ULMASS=PMA+PMB 
05481           IF(MSTJ(93).EQ.2) ULMASS=MAX(0.,ULMASS-PARF(122)- 
05482      &    2.*PARF(112)/3.) 
05483         ELSE 
05484           IF(KFLS.EQ.2.AND.KFLA.EQ.KFLB) THEN 
05485             PMSPL=1./(PMA*PMB)-2./(PMA*PMC)-2./(PMB*PMC) 
05486           ELSEIF(KFLS.EQ.2.AND.KFLB.GE.KFLC) THEN 
05487             PMSPL=-2./(PMA*PMB)-2./(PMA*PMC)+1./(PMB*PMC) 
05488           ELSEIF(KFLS.EQ.2) THEN 
05489             PMSPL=-3./(PMB*PMC) 
05490           ELSE 
05491             PMSPL=1./(PMA*PMB)+1./(PMA*PMC)+1./(PMB*PMC) 
05492           ENDIF 
05493           ULMASS=PARF(112)+PMA+PMB+PMC+PARF(114)*PARF(101)**2*PMSPL 
05494         ENDIF 
05495       ENDIF 
05496  
05497 C...Optional mass broadening according to truncated Breit-Wigner 
05498 C...(either in m or in m^2). 
05499       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1E-4) THEN 
05500         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN 
05501           ULMASS=ULMASS+0.5*PMAS(KC,2)*TAN((2.*RLU(0)-1.)* 
05502      &    ATAN(2.*PMAS(KC,3)/PMAS(KC,2))) 
05503         ELSE 
05504           PM0=ULMASS 
05505           PMLOW=ATAN((MAX(0.,PM0-PMAS(KC,3))**2-PM0**2)/ 
05506      &    (PM0*PMAS(KC,2))) 
05507           PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2))) 
05508           ULMASS=SQRT(MAX(0.,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+ 
05509      &    (PMUPP-PMLOW)*RLU(0)))) 
05510         ENDIF 
05511       ENDIF 
05512       MSTJ(93)=0 
05513  
05514       RETURN 
05515       END 
05516  
05517 C********************************************************************* 
05518  
05519       SUBROUTINE LUNAME(KF,CHAU) 
05520  
05521 C...Purpose: to give the particle/parton name as a character string. 
05522       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
05523       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
05524       COMMON/LUDAT4/CHAF(500) 
05525       CHARACTER CHAF*8 
05526       SAVE /LUDAT1/,/LUDAT2/,/LUDAT4/ 
05527       CHARACTER CHAU*16 
05528  
05529 C...Initial values. Charge. Subdivide code. 
05530       CHAU=' ' 
05531       KFA=IABS(KF) 
05532       KC=LUCOMP(KF) 
05533       IF(KC.EQ.0) RETURN 
05534       KQ=LUCHGE(KF) 
05535       KFLA=MOD(KFA/1000,10) 
05536       KFLB=MOD(KFA/100,10) 
05537       KFLC=MOD(KFA/10,10) 
05538       KFLS=MOD(KFA,10) 
05539       KFLR=MOD(KFA/10000,10) 
05540  
05541 C...Read out root name and spin for simple particle. 
05542       IF(KFA.LE.100.OR.(KFA.GT.100.AND.KC.GT.100)) THEN 
05543         CHAU=CHAF(KC) 
05544         LEN=0 
05545         DO 100 LEM=1,8 
05546         IF(CHAU(LEM:LEM).NE.' ') LEN=LEM 
05547   100   CONTINUE 
05548  
05549 C...Construct root name for diquark. Add on spin. 
05550       ELSEIF(KFLC.EQ.0) THEN 
05551         CHAU(1:2)=CHAF(KFLA)(1:1)//CHAF(KFLB)(1:1) 
05552         IF(KFLS.EQ.1) CHAU(3:4)='_0' 
05553         IF(KFLS.EQ.3) CHAU(3:4)='_1' 
05554         LEN=4 
05555  
05556 C...Construct root name for heavy meson. Add on spin and heavy flavour. 
05557       ELSEIF(KFLA.EQ.0) THEN 
05558         IF(KFLB.EQ.5) CHAU(1:1)='B' 
05559         IF(KFLB.EQ.6) CHAU(1:1)='T' 
05560         IF(KFLB.EQ.7) CHAU(1:1)='L' 
05561         IF(KFLB.EQ.8) CHAU(1:1)='H' 
05562         LEN=1 
05563         IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
05564         ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
05565           CHAU(2:2)='*' 
05566           LEN=2 
05567         ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
05568           CHAU(2:3)='_1' 
05569           LEN=3 
05570         ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
05571           CHAU(2:4)='*_0' 
05572           LEN=4 
05573         ELSEIF(KFLR.EQ.2) THEN 
05574           CHAU(2:4)='*_1' 
05575           LEN=4 
05576         ELSEIF(KFLS.EQ.5) THEN 
05577           CHAU(2:4)='*_2' 
05578           LEN=4 
05579         ENDIF 
05580         IF(KFLC.GE.3.AND.KFLR.EQ.0.AND.KFLS.LE.3) THEN 
05581           CHAU(LEN+1:LEN+2)='_'//CHAF(KFLC)(1:1) 
05582           LEN=LEN+2 
05583         ELSEIF(KFLC.GE.3) THEN 
05584           CHAU(LEN+1:LEN+1)=CHAF(KFLC)(1:1) 
05585           LEN=LEN+1 
05586         ENDIF 
05587  
05588 C...Construct root name and spin for heavy baryon. 
05589       ELSE 
05590         IF(KFLB.LE.2.AND.KFLC.LE.2) THEN 
05591           CHAU='Sigma ' 
05592           IF(KFLC.GT.KFLB) CHAU='Lambda' 
05593           IF(KFLS.EQ.4) CHAU='Sigma*' 
05594           LEN=5 
05595           IF(CHAU(6:6).NE.' ') LEN=6 
05596         ELSEIF(KFLB.LE.2.OR.KFLC.LE.2) THEN 
05597           CHAU='Xi ' 
05598           IF(KFLA.GT.KFLB.AND.KFLB.GT.KFLC) CHAU='Xi''' 
05599           IF(KFLS.EQ.4) CHAU='Xi*' 
05600           LEN=2 
05601           IF(CHAU(3:3).NE.' ') LEN=3 
05602         ELSE 
05603           CHAU='Omega ' 
05604           IF(KFLA.GT.KFLB.AND.KFLB.GT.KFLC) CHAU='Omega''' 
05605           IF(KFLS.EQ.4) CHAU='Omega*' 
05606           LEN=5 
05607           IF(CHAU(6:6).NE.' ') LEN=6 
05608         ENDIF 
05609  
05610 C...Add on heavy flavour content for heavy baryon. 
05611         CHAU(LEN+1:LEN+2)='_'//CHAF(KFLA)(1:1) 
05612         LEN=LEN+2 
05613         IF(KFLB.GE.KFLC.AND.KFLC.GE.4) THEN 
05614           CHAU(LEN+1:LEN+2)=CHAF(KFLB)(1:1)//CHAF(KFLC)(1:1) 
05615           LEN=LEN+2 
05616         ELSEIF(KFLB.GE.KFLC.AND.KFLB.GE.4) THEN 
05617           CHAU(LEN+1:LEN+1)=CHAF(KFLB)(1:1) 
05618           LEN=LEN+1 
05619         ELSEIF(KFLC.GT.KFLB.AND.KFLB.GE.4) THEN 
05620           CHAU(LEN+1:LEN+2)=CHAF(KFLC)(1:1)//CHAF(KFLB)(1:1) 
05621           LEN=LEN+2 
05622         ELSEIF(KFLC.GT.KFLB.AND.KFLC.GE.4) THEN 
05623           CHAU(LEN+1:LEN+1)=CHAF(KFLC)(1:1) 
05624           LEN=LEN+1 
05625         ENDIF 
05626       ENDIF 
05627  
05628 C...Add on bar sign for antiparticle (where necessary). 
05629       IF(KF.GT.0.OR.LEN.EQ.0) THEN 
05630       ELSEIF(KFA.GT.10.AND.KFA.LE.40.AND.KQ.NE.0.AND.MOD(KQ,3).EQ.0) 
05631      &THEN 
05632       ELSEIF(KFA.EQ.89.OR.(KFA.GE.91.AND.KFA.LE.99)) THEN 
05633       ELSEIF(KFA.GT.100.AND.KFLA.EQ.0.AND.KQ.NE.0) THEN 
05634       ELSEIF(MSTU(15).LE.1) THEN 
05635         CHAU(LEN+1:LEN+1)='~' 
05636         LEN=LEN+1 
05637       ELSE 
05638         CHAU(LEN+1:LEN+3)='bar' 
05639         LEN=LEN+3 
05640       ENDIF 
05641  
05642 C...Add on charge where applicable (conventional cases skipped). 
05643       IF(KQ.EQ.6) CHAU(LEN+1:LEN+2)='++' 
05644       IF(KQ.EQ.-6) CHAU(LEN+1:LEN+2)='--' 
05645       IF(KQ.EQ.3) CHAU(LEN+1:LEN+1)='+' 
05646       IF(KQ.EQ.-3) CHAU(LEN+1:LEN+1)='-' 
05647       IF(KQ.EQ.0.AND.(KFA.LE.22.OR.LEN.EQ.0)) THEN 
05648       ELSEIF(KQ.EQ.0.AND.(KFA.GE.81.AND.KFA.LE.100)) THEN 
05649       ELSEIF(KFA.EQ.28.OR.KFA.EQ.29) THEN 
05650       ELSEIF(KFA.GT.100.AND.KFLA.EQ.0.AND.KFLB.EQ.KFLC.AND. 
05651      &KFLB.NE.1) THEN 
05652       ELSEIF(KQ.EQ.0) THEN 
05653         CHAU(LEN+1:LEN+1)='0' 
05654       ENDIF 
05655  
05656       RETURN 
05657       END 
05658  
05659 C********************************************************************* 
05660  
05661       FUNCTION LUCHGE(KF) 
05662  
05663 C...Purpose: to give three times the charge for a particle/parton. 
05664       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
05665       SAVE /LUDAT2/ 
05666  
05667 C...Initial values. Simple case of direct readout. 
05668       LUCHGE=0 
05669       KFA=IABS(KF) 
05670       KC=LUCOMP(KFA) 
05671       IF(KC.EQ.0) THEN 
05672       ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN 
05673         LUCHGE=KCHG(KC,1) 
05674  
05675 C...Construction from quark content for heavy meson, diquark, baryon. 
05676       ELSEIF(MOD(KFA/1000,10).EQ.0) THEN 
05677         LUCHGE=(KCHG(MOD(KFA/100,10),1)-KCHG(MOD(KFA/10,10),1))* 
05678      &  (-1)**MOD(KFA/100,10) 
05679       ELSEIF(MOD(KFA/10,10).EQ.0) THEN 
05680         LUCHGE=KCHG(MOD(KFA/1000,10),1)+KCHG(MOD(KFA/100,10),1) 
05681       ELSE 
05682         LUCHGE=KCHG(MOD(KFA/1000,10),1)+KCHG(MOD(KFA/100,10),1)+ 
05683      &  KCHG(MOD(KFA/10,10),1) 
05684       ENDIF 
05685  
05686 C...Add on correct sign. 
05687       LUCHGE=LUCHGE*ISIGN(1,KF) 
05688  
05689       RETURN 
05690       END 
05691  
05692 C********************************************************************* 
05693  
05694       FUNCTION LUCOMP(KF) 
05695  
05696 C...Purpose: to compress the standard KF codes for use in mass and decay 
05697 C...arrays; also to check whether a given code actually is defined. 
05698       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
05699       SAVE /LUDAT2/ 
05700       DIMENSION KFTAB(25),KCTAB(25) 
05701       DATA KFTAB/211,111,221,311,321,130,310,213,113,223, 
05702      &313,323,2112,2212,210,2110,2210,110,220,330,440,30443,30553,0,0/ 
05703       DATA KCTAB/101,111,112,102,103,221,222,121,131,132, 
05704      &122,123,332,333,281,282,283,284,285,286,287,231,235,0,0/ 
05705  
05706 C...Starting values. 
05707       LUCOMP=0 
05708       KFA=IABS(KF) 
05709  
05710 C...Simple cases: direct translation or table. 
05711       IF(KFA.EQ.0.OR.KFA.GE.100000) THEN 
05712         RETURN 
05713       ELSEIF(KFA.LE.100) THEN 
05714         LUCOMP=KFA 
05715         IF(KF.LT.0.AND.KCHG(KFA,3).EQ.0) LUCOMP=0 
05716         RETURN 
05717       ELSE 
05718         DO 100 IKF=1,23 
05719         IF(KFA.EQ.KFTAB(IKF)) THEN 
05720           LUCOMP=KCTAB(IKF) 
05721           IF(KF.LT.0.AND.KCHG(LUCOMP,3).EQ.0) LUCOMP=0 
05722           RETURN 
05723         ENDIF 
05724   100   CONTINUE 
05725       ENDIF 
05726  
05727 C...Subdivide KF code into constituent pieces. 
05728       KFLA=MOD(KFA/1000,10) 
05729       KFLB=MOD(KFA/100,10) 
05730       KFLC=MOD(KFA/10,10) 
05731       KFLS=MOD(KFA,10) 
05732       KFLR=MOD(KFA/10000,10) 
05733  
05734 C...Mesons. 
05735       IF(KFA-10000*KFLR.LT.1000) THEN 
05736         IF(KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.0.OR.KFLC.EQ.9) THEN 
05737         ELSEIF(KFLB.LT.KFLC) THEN 
05738         ELSEIF(KF.LT.0.AND.KFLB.EQ.KFLC) THEN 
05739         ELSEIF(KFLB.EQ.KFLC) THEN 
05740           IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
05741             LUCOMP=110+KFLB 
05742           ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
05743             LUCOMP=130+KFLB 
05744           ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
05745             LUCOMP=150+KFLB 
05746           ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
05747             LUCOMP=170+KFLB 
05748           ELSEIF(KFLR.EQ.2.AND.KFLS.EQ.3) THEN 
05749             LUCOMP=190+KFLB 
05750           ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.5) THEN 
05751             LUCOMP=210+KFLB 
05752           ENDIF 
05753         ELSEIF(KFLB.LE.5) THEN 
05754           IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
05755             LUCOMP=100+((KFLB-1)*(KFLB-2))/2+KFLC 
05756           ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
05757             LUCOMP=120+((KFLB-1)*(KFLB-2))/2+KFLC 
05758           ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
05759             LUCOMP=140+((KFLB-1)*(KFLB-2))/2+KFLC 
05760           ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
05761             LUCOMP=160+((KFLB-1)*(KFLB-2))/2+KFLC 
05762           ELSEIF(KFLR.EQ.2.AND.KFLS.EQ.3) THEN 
05763             LUCOMP=180+((KFLB-1)*(KFLB-2))/2+KFLC 
05764           ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.5) THEN 
05765             LUCOMP=200+((KFLB-1)*(KFLB-2))/2+KFLC 
05766           ENDIF 
05767         ELSEIF((KFLS.EQ.1.AND.KFLR.LE.1).OR.(KFLS.EQ.3.AND.KFLR.LE.2). 
05768      &  OR.(KFLS.EQ.5.AND.KFLR.EQ.0)) THEN 
05769           LUCOMP=80+KFLB 
05770         ENDIF 
05771  
05772 C...Diquarks. 
05773       ELSEIF((KFLR.EQ.0.OR.KFLR.EQ.1).AND.KFLC.EQ.0) THEN 
05774         IF(KFLS.NE.1.AND.KFLS.NE.3) THEN 
05775         ELSEIF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9) THEN 
05776         ELSEIF(KFLA.LT.KFLB) THEN 
05777         ELSEIF(KFLS.EQ.1.AND.KFLA.EQ.KFLB) THEN 
05778         ELSE 
05779           LUCOMP=90 
05780         ENDIF 
05781  
05782 C...Spin 1/2 baryons. 
05783       ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.2) THEN 
05784         IF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.9) THEN 
05785         ELSEIF(KFLA.LE.KFLC.OR.KFLA.LT.KFLB) THEN 
05786         ELSEIF(KFLA.GE.6.OR.KFLB.GE.4.OR.KFLC.GE.4) THEN 
05787           LUCOMP=80+KFLA 
05788         ELSEIF(KFLB.LT.KFLC) THEN 
05789           LUCOMP=300+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLC*(KFLC-1))/2+KFLB 
05790         ELSE 
05791           LUCOMP=330+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLB*(KFLB-1))/2+KFLC 
05792         ENDIF 
05793  
05794 C...Spin 3/2 baryons. 
05795       ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.4) THEN 
05796         IF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.9) THEN 
05797         ELSEIF(KFLA.LT.KFLB.OR.KFLB.LT.KFLC) THEN 
05798         ELSEIF(KFLA.GE.6.OR.KFLB.GE.4) THEN 
05799           LUCOMP=80+KFLA 
05800         ELSE 
05801           LUCOMP=360+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLB*(KFLB-1))/2+KFLC 
05802         ENDIF 
05803       ENDIF 
05804  
05805       RETURN 
05806       END 
05807  
05808 C********************************************************************* 
05809  
05810       SUBROUTINE LUERRM(MERR,CHMESS) 
05811  
05812 C...Purpose: to inform user of errors in program execution. 
05813       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
05814       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
05815       SAVE /LUJETS/,/LUDAT1/ 
05816       CHARACTER CHMESS*(*) 
05817  
05818 C...Write first few warnings, then be silent. 
05819       IF(MERR.LE.10) THEN 
05820         MSTU(27)=MSTU(27)+1 
05821         MSTU(28)=MERR 
05822         IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000) 
05823      &  MERR,MSTU(31),CHMESS 
05824  
05825 C...Write first few errors, then be silent or stop program. 
05826       ELSEIF(MERR.LE.20) THEN 
05827         MSTU(23)=MSTU(23)+1 
05828         MSTU(24)=MERR-10 
05829         IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100) 
05830      &  MERR-10,MSTU(31),CHMESS 
05831         IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN 
05832           WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS 
05833           WRITE(MSTU(11),5200) 
05834           IF(MERR.NE.17) CALL LULIST(2) 
05835           STOP 
05836         ENDIF 
05837  
05838 C...Stop program in case of irreparable error. 
05839       ELSE 
05840         WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS 
05841         STOP 
05842       ENDIF 
05843  
05844 C...Formats for output. 
05845  5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I6, 
05846      &' LUEXEC calls:'/5X,A) 
05847  5100 FORMAT(/5X,'Error type',I2,' has occured after',I6, 
05848      &' LUEXEC calls:'/5X,A) 
05849  5200 FORMAT(5X,'Execution will be stopped after listing of last ', 
05850      &'event!') 
05851  5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I6, 
05852      &' LUEXEC calls:'/5X,A/5X,'Execution will now be stopped!') 
05853  
05854       RETURN 
05855       END 
05856  
05857 C********************************************************************* 
05858  
05859       FUNCTION ULALEM(Q2) 
05860  
05861 C...Purpose: to calculate the running alpha_electromagnetic. 
05862       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
05863       SAVE /LUDAT1/ 
05864  
05865 C...Calculate real part of photon vacuum polarization. 
05866 C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions. 
05867 C...For hadrons use parametrization of H. Burkhardt et al. 
05868 C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131. 
05869       AEMPI=PARU(101)/(3.*PARU(1)) 
05870       IF(MSTU(101).LE.0.OR.Q2.LT.2E-6) THEN 
05871         RPIGG=0. 
05872       ELSEIF(Q2.LT.0.09) THEN 
05873         RPIGG=AEMPI*(13.4916+LOG(Q2))+0.00835*LOG(1.+Q2) 
05874       ELSEIF(Q2.LT.9.) THEN 
05875         RPIGG=AEMPI*(16.3200+2.*LOG(Q2))+0.00238*LOG(1.+3.927*Q2) 
05876       ELSEIF(Q2.LT.1E4) THEN 
05877         RPIGG=AEMPI*(13.4955+3.*LOG(Q2))+0.00165+0.00299*LOG(1.+Q2) 
05878       ELSE 
05879         RPIGG=AEMPI*(13.4955+3.*LOG(Q2))+0.00221+0.00293*LOG(1.+Q2) 
05880       ENDIF 
05881  
05882 C...Calculate running alpha_em. 
05883       ULALEM=PARU(101)/(1.-RPIGG) 
05884       PARU(108)=ULALEM 
05885  
05886       RETURN 
05887       END 
05888  
05889 C********************************************************************* 
05890  
05891       FUNCTION ULALPS(Q2) 
05892  
05893 C...Purpose: to give the value of alpha_strong. 
05894       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
05895       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
05896       SAVE /LUDAT1/,/LUDAT2/ 
05897  
05898 C...Constant alpha_strong trivial. 
05899       IF(MSTU(111).LE.0) THEN 
05900         ULALPS=PARU(111) 
05901         MSTU(118)=MSTU(112) 
05902         PARU(117)=0. 
05903         PARU(118)=PARU(111) 
05904         RETURN 
05905       ENDIF 
05906  
05907 C...Find effective Q2, number of flavours and Lambda. 
05908       Q2EFF=Q2 
05909       IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114)) 
05910       NF=MSTU(112) 
05911       ALAM2=PARU(112)**2 
05912   100 IF(NF.GT.MAX(2,MSTU(113))) THEN 
05913         Q2THR=PARU(113)*PMAS(NF,1)**2 
05914         IF(Q2EFF.LT.Q2THR) THEN 
05915           NF=NF-1 
05916           ALAM2=ALAM2*(Q2THR/ALAM2)**(2./(33.-2.*NF)) 
05917           GOTO 100 
05918         ENDIF 
05919       ENDIF 
05920   110 IF(NF.LT.MIN(8,MSTU(114))) THEN 
05921         Q2THR=PARU(113)*PMAS(NF+1,1)**2 
05922         IF(Q2EFF.GT.Q2THR) THEN 
05923           NF=NF+1 
05924           ALAM2=ALAM2*(ALAM2/Q2THR)**(2./(33.-2.*NF)) 
05925           GOTO 110 
05926         ENDIF 
05927       ENDIF 
05928       IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2 
05929       PARU(117)=SQRT(ALAM2) 
05930  
05931 C...Evaluate first or second order alpha_strong. 
05932       B0=(33.-2.*NF)/6. 
05933       ALGQ=LOG(MAX(1.0001,Q2EFF/ALAM2)) 
05934       IF(MSTU(111).EQ.1) THEN 
05935         ULALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)) 
05936       ELSE 
05937         B1=(153.-19.*NF)/6. 
05938         ULALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1.-B1*LOG(ALGQ)/ 
05939      &  (B0**2*ALGQ))) 
05940       ENDIF 
05941       MSTU(118)=NF 
05942       PARU(118)=ULALPS 
05943  
05944       RETURN 
05945       END 
05946  
05947 C********************************************************************* 
05948  
05949       FUNCTION ULANGL(X,Y) 
05950  
05951 C...Purpose: to reconstruct an angle from given x and y coordinates. 
05952       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
05953       SAVE /LUDAT1/ 
05954  
05955       ULANGL=0. 
05956       R=SQRT(X**2+Y**2) 
05957       IF(R.LT.1E-20) RETURN 
05958       IF(ABS(X)/R.LT.0.8) THEN 
05959         ULANGL=SIGN(ACOS(X/R),Y) 
05960       ELSE 
05961         ULANGL=ASIN(Y/R) 
05962         IF(X.LT.0..AND.ULANGL.GE.0.) THEN 
05963           ULANGL=PARU(1)-ULANGL 
05964         ELSEIF(X.LT.0.) THEN 
05965           ULANGL=-PARU(1)-ULANGL 
05966         ENDIF 
05967       ENDIF 
05968  
05969       RETURN 
05970       END 
05971  
05972 C********************************************************************* 
05973  
05974       FUNCTION RLU(IDUMMY) 
05975  
05976 C...Purpose: to generate random numbers uniformly distributed between 
05977 C...0 and 1, excluding the endpoints. 
05978       COMMON/LUDATR/MRLU(6),RRLU(100) 
05979       SAVE /LUDATR/ 
05980       EQUIVALENCE (MRLU1,MRLU(1)),(MRLU2,MRLU(2)),(MRLU3,MRLU(3)), 
05981      &(MRLU4,MRLU(4)),(MRLU5,MRLU(5)),(MRLU6,MRLU(6)), 
05982      &(RRLU98,RRLU(98)),(RRLU99,RRLU(99)),(RRLU00,RRLU(100)) 
05983  
05984 C...Initialize generation from given seed. 
05985       IF(MRLU2.EQ.0) THEN 
05986         IJ=MOD(MRLU1/30082,31329) 
05987         KL=MOD(MRLU1,30082) 
05988         I=MOD(IJ/177,177)+2 
05989         J=MOD(IJ,177)+2 
05990         K=MOD(KL/169,178)+1 
05991         L=MOD(KL,169) 
05992         DO 110 II=1,97 
05993         S=0. 
05994         T=0.5 
05995         DO 100 JJ=1,24 
05996         M=MOD(MOD(I*J,179)*K,179) 
05997         I=J 
05998         J=K 
05999         K=M 
06000         L=MOD(53*L+1,169) 
06001         IF(MOD(L*M,64).GE.32) S=S+T 
06002         T=0.5*T 
06003   100   CONTINUE 
06004         RRLU(II)=S 
06005   110   CONTINUE 
06006         TWOM24=1. 
06007         DO 120 I24=1,24 
06008         TWOM24=0.5*TWOM24 
06009   120   CONTINUE 
06010         RRLU98=362436.*TWOM24 
06011         RRLU99=7654321.*TWOM24 
06012         RRLU00=16777213.*TWOM24 
06013         MRLU2=1 
06014         MRLU3=0 
06015         MRLU4=97 
06016         MRLU5=33 
06017       ENDIF 
06018  
06019 C...Generate next random number. 
06020   130 RUNI=RRLU(MRLU4)-RRLU(MRLU5) 
06021       IF(RUNI.LT.0.) RUNI=RUNI+1. 
06022       RRLU(MRLU4)=RUNI 
06023       MRLU4=MRLU4-1 
06024       IF(MRLU4.EQ.0) MRLU4=97 
06025       MRLU5=MRLU5-1 
06026       IF(MRLU5.EQ.0) MRLU5=97 
06027       RRLU98=RRLU98-RRLU99 
06028       IF(RRLU98.LT.0.) RRLU98=RRLU98+RRLU00 
06029       RUNI=RUNI-RRLU98 
06030       IF(RUNI.LT.0.) RUNI=RUNI+1. 
06031       IF(RUNI.LE.0.OR.RUNI.GE.1.) GOTO 130 
06032  
06033 C...Update counters. Random number to output. 
06034       MRLU3=MRLU3+1 
06035       IF(MRLU3.EQ.1000000000) THEN 
06036         MRLU2=MRLU2+1 
06037         MRLU3=0 
06038       ENDIF 
06039       RLU=RUNI 
06040  
06041       RETURN 
06042       END 
06043  
06044 C********************************************************************* 
06045  
06046       SUBROUTINE RLUGET(LFN,MOVE) 
06047  
06048 C...Purpose: to dump the state of the random number generator on a file 
06049 C...for subsequent startup from this state onwards. 
06050       COMMON/LUDATR/MRLU(6),RRLU(100) 
06051       SAVE /LUDATR/ 
06052       CHARACTER CHERR*8 
06053  
06054 C...Backspace required number of records (or as many as there are). 
06055       IF(MOVE.LT.0) THEN 
06056         NBCK=MIN(MRLU(6),-MOVE) 
06057         DO 100 IBCK=1,NBCK 
06058         BACKSPACE(LFN,ERR=110,IOSTAT=IERR) 
06059   100   CONTINUE 
06060         MRLU(6)=MRLU(6)-NBCK 
06061       ENDIF 
06062  
06063 C...Unformatted write on unit LFN. 
06064       WRITE(LFN,ERR=110,IOSTAT=IERR) (MRLU(I1),I1=1,5), 
06065      &(RRLU(I2),I2=1,100) 
06066       MRLU(6)=MRLU(6)+1 
06067       RETURN 
06068  
06069 C...Write error. 
06070   110 WRITE(CHERR,'(I8)') IERR 
06071       CALL LUERRM(18,'(RLUGET:) error when accessing file, IOSTAT ='// 
06072      &CHERR) 
06073  
06074       RETURN 
06075       END 
06076  
06077 C********************************************************************* 
06078  
06079       SUBROUTINE RLUSET(LFN,MOVE) 
06080  
06081 C...Purpose: to read a state of the random number generator from a file 
06082 C...for subsequent generation from this state onwards. 
06083       COMMON/LUDATR/MRLU(6),RRLU(100) 
06084       SAVE /LUDATR/ 
06085       CHARACTER CHERR*8 
06086  
06087 C...Backspace required number of records (or as many as there are). 
06088       IF(MOVE.LT.0) THEN 
06089         NBCK=MIN(MRLU(6),-MOVE) 
06090         DO 100 IBCK=1,NBCK 
06091         BACKSPACE(LFN,ERR=120,IOSTAT=IERR) 
06092   100   CONTINUE 
06093         MRLU(6)=MRLU(6)-NBCK 
06094       ENDIF 
06095  
06096 C...Unformatted read from unit LFN. 
06097       NFOR=1+MAX(0,MOVE) 
06098       DO 110 IFOR=1,NFOR 
06099       READ(LFN,ERR=120,IOSTAT=IERR) (MRLU(I1),I1=1,5), 
06100      &(RRLU(I2),I2=1,100) 
06101   110 CONTINUE 
06102       MRLU(6)=MRLU(6)+NFOR 
06103       RETURN 
06104  
06105 C...Write error. 
06106   120 WRITE(CHERR,'(I8)') IERR 
06107       CALL LUERRM(18,'(RLUSET:) error when accessing file, IOSTAT ='// 
06108      &CHERR) 
06109  
06110       RETURN 
06111       END 
06112  
06113 C********************************************************************* 
06114  
06115       SUBROUTINE LUROBO(THE,PHI,BEX,BEY,BEZ) 
06116  
06117 C...Purpose: to perform rotations and boosts. 
06118       IMPLICIT DOUBLE PRECISION(D) 
06119       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
06120       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
06121       SAVE /LUJETS/,/LUDAT1/ 
06122       DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4) 
06123  
06124 C...Find range of rotation/boost. Convert boost to double precision. 
06125       IMIN=1 
06126       IF(MSTU(1).GT.0) IMIN=MSTU(1) 
06127       IMAX=N 
06128       IF(MSTU(2).GT.0) IMAX=MSTU(2) 
06129       DBX=BEX 
06130       DBY=BEY 
06131       DBZ=BEZ 
06132       GOTO 120 
06133  
06134 C...Entry for specific range and double precision boost. 
06135       ENTRY LUDBRB(IMI,IMA,THE,PHI,DBEX,DBEY,DBEZ) 
06136       IMIN=IMI 
06137       IF(IMIN.LE.0) IMIN=1 
06138       IMAX=IMA 
06139       IF(IMAX.LE.0) IMAX=N 
06140       DBX=DBEX 
06141       DBY=DBEY 
06142       DBZ=DBEZ 
06143  
06144 C...Optional resetting of V (when not set before.) 
06145       IF(MSTU(33).NE.0) THEN 
06146         DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4)) 
06147         DO 100 J=1,5 
06148         V(I,J)=0. 
06149   100   CONTINUE 
06150   110 CONTINUE 
06151         MSTU(33)=0 
06152       ENDIF 
06153  
06154 C...Check range of rotation/boost. 
06155   120 IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN 
06156         CALL LUERRM(11,'(LUROBO:) range outside LUJETS memory') 
06157         RETURN 
06158       ENDIF 
06159  
06160 C...Rotate, typically from z axis to direction (theta,phi). 
06161       IF(THE**2+PHI**2.GT.1E-20) THEN 
06162         ROT(1,1)=COS(THE)*COS(PHI) 
06163         ROT(1,2)=-SIN(PHI) 
06164         ROT(1,3)=SIN(THE)*COS(PHI) 
06165         ROT(2,1)=COS(THE)*SIN(PHI) 
06166         ROT(2,2)=COS(PHI) 
06167         ROT(2,3)=SIN(THE)*SIN(PHI) 
06168         ROT(3,1)=-SIN(THE) 
06169         ROT(3,2)=0. 
06170         ROT(3,3)=COS(THE) 
06171         DO 150 I=IMIN,IMAX 
06172         IF(K(I,1).LE.0) GOTO 150 
06173         DO 130 J=1,3 
06174         PR(J)=P(I,J) 
06175         VR(J)=V(I,J) 
06176   130   CONTINUE 
06177         DO 140 J=1,3 
06178         P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3) 
06179         V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3) 
06180   140   CONTINUE 
06181   150   CONTINUE 
06182       ENDIF 
06183  
06184 C...Boost, typically from rest to momentum/energy=beta. 
06185       IF(DBX**2+DBY**2+DBZ**2.GT.1E-20) THEN 
06186         DB=SQRT(DBX**2+DBY**2+DBZ**2) 
06187         IF(DB.GT.0.99999999D0) THEN 
06188 C...Rescale boost vector if too close to unity. 
06189           CALL LUERRM(3,'(LUROBO:) boost vector too large') 
06190           DBX=DBX*(0.99999999D0/DB) 
06191           DBY=DBY*(0.99999999D0/DB) 
06192           DBZ=DBZ*(0.99999999D0/DB) 
06193           DB=0.99999999D0 
06194         ENDIF 
06195         DGA=1D0/SQRT(1D0-DB**2) 
06196         DO 170 I=IMIN,IMAX 
06197         IF(K(I,1).LE.0) GOTO 170 
06198         DO 160 J=1,4 
06199         DP(J)=P(I,J) 
06200         DV(J)=V(I,J) 
06201   160   CONTINUE 
06202         DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3) 
06203         DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4)) 
06204         P(I,1)=DP(1)+DGABP*DBX 
06205         P(I,2)=DP(2)+DGABP*DBY 
06206         P(I,3)=DP(3)+DGABP*DBZ 
06207         P(I,4)=DGA*(DP(4)+DBP) 
06208         DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3) 
06209         DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4)) 
06210         V(I,1)=DV(1)+DGABV*DBX 
06211         V(I,2)=DV(2)+DGABV*DBY 
06212         V(I,3)=DV(3)+DGABV*DBZ 
06213         V(I,4)=DGA*(DV(4)+DBV) 
06214   170   CONTINUE 
06215       ENDIF 
06216  
06217       RETURN 
06218       END 
06219  
06220 C********************************************************************* 
06221  
06222       SUBROUTINE LUEDIT(MEDIT) 
06223  
06224 C...Purpose: to perform global manipulations on the event record, 
06225 C...in particular to exclude unstable or undetectable partons/particles. 
06226       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
06227       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
06228       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
06229       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
06230       DIMENSION NS(2),PTS(2),PLS(2) 
06231  
06232 C...Remove unwanted partons/particles. 
06233       IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN 
06234         IMAX=N 
06235         IF(MSTU(2).GT.0) IMAX=MSTU(2) 
06236         I1=MAX(1,MSTU(1))-1 
06237         DO 110 I=MAX(1,MSTU(1)),IMAX 
06238         IF(K(I,1).EQ.0.OR.K(I,1).GT.20) GOTO 110 
06239         IF(MEDIT.EQ.1) THEN 
06240           IF(K(I,1).GT.10) GOTO 110 
06241         ELSEIF(MEDIT.EQ.2) THEN 
06242           IF(K(I,1).GT.10) GOTO 110 
06243           KC=LUCOMP(K(I,2)) 
06244           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.KC.EQ.18) 
06245      &    GOTO 110 
06246         ELSEIF(MEDIT.EQ.3) THEN 
06247           IF(K(I,1).GT.10) GOTO 110 
06248           KC=LUCOMP(K(I,2)) 
06249           IF(KC.EQ.0) GOTO 110 
06250           IF(KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) GOTO 110 
06251         ELSEIF(MEDIT.EQ.5) THEN 
06252           IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) GOTO 110 
06253           KC=LUCOMP(K(I,2)) 
06254           IF(KC.EQ.0) GOTO 110 
06255           IF(K(I,1).GE.11.AND.KCHG(KC,2).EQ.0) GOTO 110 
06256         ENDIF 
06257  
06258 C...Pack remaining partons/particles. Origin no longer known. 
06259         I1=I1+1 
06260         DO 100 J=1,5 
06261         K(I1,J)=K(I,J) 
06262         P(I1,J)=P(I,J) 
06263         V(I1,J)=V(I,J) 
06264   100   CONTINUE 
06265         K(I1,3)=0 
06266   110   CONTINUE 
06267         IF(I1.LT.N) MSTU(3)=0 
06268         IF(I1.LT.N) MSTU(70)=0 
06269         N=I1 
06270  
06271 C...Selective removal of class of entries. New position of retained. 
06272       ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN 
06273         I1=0 
06274         DO 120 I=1,N 
06275         K(I,3)=MOD(K(I,3),MSTU(5)) 
06276         IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120 
06277         IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120 
06278         IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR. 
06279      &  K(I,1).EQ.15).AND.K(I,2).NE.94) GOTO 120 
06280         IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR. 
06281      &  K(I,2).EQ.94)) GOTO 120 
06282         IF(MEDIT.EQ.15.AND.K(I,1).GE.21) GOTO 120 
06283         I1=I1+1 
06284         K(I,3)=K(I,3)+MSTU(5)*I1 
06285   120   CONTINUE 
06286  
06287 C...Find new event history information and replace old. 
06288         DO 140 I=1,N 
06289         IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,3)/MSTU(5).EQ.0) GOTO 140 
06290         ID=I 
06291   130   IM=MOD(K(ID,3),MSTU(5)) 
06292         IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN 
06293           IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15).AND. 
06294      &    K(IM,2).NE.94) THEN 
06295             ID=IM 
06296             GOTO 130 
06297           ENDIF 
06298         ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN 
06299           IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,2).EQ.94) THEN 
06300             ID=IM 
06301             GOTO 130 
06302           ENDIF 
06303         ENDIF 
06304         K(I,3)=MSTU(5)*(K(I,3)/MSTU(5)) 
06305         IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5) 
06306         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN 
06307           IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)= 
06308      &    K(K(I,4),3)/MSTU(5) 
06309           IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)= 
06310      &    K(K(I,5),3)/MSTU(5) 
06311         ELSE 
06312           KCM=MOD(K(I,4)/MSTU(5),MSTU(5)) 
06313           IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5) 
06314           KCD=MOD(K(I,4),MSTU(5)) 
06315           IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5) 
06316           K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD 
06317           KCM=MOD(K(I,5)/MSTU(5),MSTU(5)) 
06318           IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5) 
06319           KCD=MOD(K(I,5),MSTU(5)) 
06320           IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5) 
06321           K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD 
06322         ENDIF 
06323   140   CONTINUE 
06324  
06325 C...Pack remaining entries. 
06326         I1=0 
06327         MSTU90=MSTU(90) 
06328         MSTU(90)=0 
06329         DO 170 I=1,N 
06330         IF(K(I,3)/MSTU(5).EQ.0) GOTO 170 
06331         I1=I1+1 
06332         DO 150 J=1,5 
06333         K(I1,J)=K(I,J) 
06334         P(I1,J)=P(I,J) 
06335         V(I1,J)=V(I,J) 
06336   150   CONTINUE 
06337         K(I1,3)=MOD(K(I1,3),MSTU(5)) 
06338         DO 160 IZ=1,MSTU90 
06339         IF(I.EQ.MSTU(90+IZ)) THEN 
06340           MSTU(90)=MSTU(90)+1 
06341           MSTU(90+MSTU(90))=I1 
06342           PARU(90+MSTU(90))=PARU(90+IZ) 
06343         ENDIF 
06344   160   CONTINUE 
06345   170   CONTINUE 
06346         IF(I1.LT.N) MSTU(3)=0 
06347         IF(I1.LT.N) MSTU(70)=0 
06348         N=I1 
06349  
06350 C...Fill in some missing daughter pointers (lost in colour flow). 
06351       ELSEIF(MEDIT.EQ.16) THEN 
06352         DO 190 I=1,N 
06353         IF(K(I,1).LE.10.OR.K(I,1).GT.20) GOTO 190 
06354         IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 190 
06355         DO 180 I1=I+1,N 
06356         IF(K(I1,3).NE.I) THEN 
06357         ELSEIF(K(I,4).EQ.0) THEN 
06358           K(I,4)=I1 
06359         ELSE 
06360           K(I,5)=I1 
06361         ENDIF 
06362   180   CONTINUE 
06363         IF(K(I,5).EQ.0) K(I,5)=K(I,4) 
06364   190   CONTINUE 
06365  
06366 C...Save top entries at bottom of LUJETS commonblock. 
06367       ELSEIF(MEDIT.EQ.21) THEN 
06368         IF(2*N.GE.MSTU(4)) THEN 
06369           CALL LUERRM(11,'(LUEDIT:) no more memory left in LUJETS') 
06370           RETURN 
06371         ENDIF 
06372         DO 210 I=1,N 
06373         DO 200 J=1,5 
06374         K(MSTU(4)-I,J)=K(I,J) 
06375         P(MSTU(4)-I,J)=P(I,J) 
06376         V(MSTU(4)-I,J)=V(I,J) 
06377   200   CONTINUE 
06378   210   CONTINUE 
06379         MSTU(32)=N 
06380  
06381 C...Restore bottom entries of commonblock LUJETS to top. 
06382       ELSEIF(MEDIT.EQ.22) THEN 
06383         DO 230 I=1,MSTU(32) 
06384         DO 220 J=1,5 
06385         K(I,J)=K(MSTU(4)-I,J) 
06386         P(I,J)=P(MSTU(4)-I,J) 
06387         V(I,J)=V(MSTU(4)-I,J) 
06388   220   CONTINUE 
06389   230   CONTINUE 
06390         N=MSTU(32) 
06391  
06392 C...Mark primary entries at top of commonblock LUJETS as untreated. 
06393       ELSEIF(MEDIT.EQ.23) THEN 
06394         I1=0 
06395         DO 240 I=1,N 
06396         KH=K(I,3) 
06397         IF(KH.GE.1) THEN 
06398           IF(K(KH,1).GT.20) KH=0 
06399         ENDIF 
06400         IF(KH.NE.0) GOTO 250 
06401         I1=I1+1 
06402         IF(K(I,1).GT.10.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10 
06403   240   CONTINUE 
06404   250   N=I1 
06405  
06406 C...Place largest axis along z axis and second largest in xy plane. 
06407       ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN 
06408         CALL LUDBRB(1,N+MSTU(3),0.,-ULANGL(P(MSTU(61),1), 
06409      &  P(MSTU(61),2)),0D0,0D0,0D0) 
06410         CALL LUDBRB(1,N+MSTU(3),-ULANGL(P(MSTU(61),3), 
06411      &  P(MSTU(61),1)),0.,0D0,0D0,0D0) 
06412         CALL LUDBRB(1,N+MSTU(3),0.,-ULANGL(P(MSTU(61)+1,1), 
06413      &  P(MSTU(61)+1,2)),0D0,0D0,0D0) 
06414         IF(MEDIT.EQ.31) RETURN 
06415  
06416 C...Rotate to put slim jet along +z axis. 
06417         DO 260 IS=1,2 
06418         NS(IS)=0 
06419         PTS(IS)=0. 
06420         PLS(IS)=0. 
06421   260   CONTINUE 
06422         DO 270 I=1,N 
06423         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 270 
06424         IF(MSTU(41).GE.2) THEN 
06425           KC=LUCOMP(K(I,2)) 
06426           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
06427      &    KC.EQ.18) GOTO 270 
06428           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
06429      &    GOTO 270 
06430         ENDIF 
06431         IS=2.-SIGN(0.5,P(I,3)) 
06432         NS(IS)=NS(IS)+1 
06433         PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2) 
06434   270   CONTINUE 
06435         IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2) 
06436      &  CALL LUDBRB(1,N+MSTU(3),PARU(1),0.,0D0,0D0,0D0) 
06437  
06438 C...Rotate to put second largest jet into -z,+x quadrant. 
06439         DO 280 I=1,N 
06440         IF(P(I,3).GE.0.) GOTO 280 
06441         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 280 
06442         IF(MSTU(41).GE.2) THEN 
06443           KC=LUCOMP(K(I,2)) 
06444           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
06445      &    KC.EQ.18) GOTO 280 
06446           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
06447      &    GOTO 280 
06448         ENDIF 
06449         IS=2.-SIGN(0.5,P(I,1)) 
06450         PLS(IS)=PLS(IS)-P(I,3) 
06451   280   CONTINUE 
06452         IF(PLS(2).GT.PLS(1)) CALL LUDBRB(1,N+MSTU(3),0.,PARU(1), 
06453      &  0D0,0D0,0D0) 
06454       ENDIF 
06455  
06456       RETURN 
06457       END 
06458  
06459 C********************************************************************* 
06460  
06461       SUBROUTINE LULIST(MLIST) 
06462  
06463 C...Purpose: to give program heading, or list an event, or particle 
06464 C...data, or current parameter values. 
06465       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
06466       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
06467       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
06468       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
06469       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
06470       CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4 
06471       DIMENSION PS(6) 
06472       DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/ 
06473  
06474 C...Initialization printout: version number and date of last change. 
06475       IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN 
06476         CALL LULOGO 
06477         MSTU(12)=0 
06478         IF(MLIST.EQ.0) RETURN 
06479       ENDIF 
06480  
06481 C...List event data, including additional lines after N. 
06482       IF(MLIST.GE.1.AND.MLIST.LE.3) THEN 
06483         IF(MLIST.EQ.1) WRITE(MSTU(11),5100) 
06484         IF(MLIST.EQ.2) WRITE(MSTU(11),5200) 
06485         IF(MLIST.EQ.3) WRITE(MSTU(11),5300) 
06486         LMX=12 
06487         IF(MLIST.GE.2) LMX=16 
06488         ISTR=0 
06489         IMAX=N 
06490         IF(MSTU(2).GT.0) IMAX=MSTU(2) 
06491         DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3))) 
06492         IF((I.GT.IMAX.AND.I.LE.N).OR.K(I,1).LT.0) GOTO 120 
06493  
06494 C...Get particle name, pad it and check it is not too long. 
06495         CALL LUNAME(K(I,2),CHAP) 
06496         LEN=0 
06497         DO 100 LEM=1,16 
06498         IF(CHAP(LEM:LEM).NE.' ') LEN=LEM 
06499   100   CONTINUE 
06500         MDL=(K(I,1)+19)/10 
06501         LDL=0 
06502         IF(MDL.EQ.2.OR.MDL.GE.8) THEN 
06503           CHAC=CHAP 
06504           IF(LEN.GT.LMX) CHAC(LMX:LMX)='?' 
06505         ELSE 
06506           LDL=1 
06507           IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2 
06508           IF(LEN.EQ.0) THEN 
06509             CHAC=CHDL(MDL)(1:2*LDL)//' ' 
06510           ELSE 
06511             CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))// 
06512      &      CHDL(MDL)(LDL+1:2*LDL)//' ' 
06513             IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?' 
06514           ENDIF 
06515         ENDIF 
06516  
06517 C...Add information on string connection. 
06518         IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12) 
06519      &  THEN 
06520           KC=LUCOMP(K(I,2)) 
06521           KCC=0 
06522           IF(KC.NE.0) KCC=KCHG(KC,2) 
06523           IF(IABS(K(I,2)).EQ.39) THEN 
06524             IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X' 
06525           ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN 
06526             ISTR=1 
06527             IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A' 
06528           ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN 
06529             IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I' 
06530           ELSEIF(KCC.NE.0) THEN 
06531             ISTR=0 
06532             IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V' 
06533           ENDIF 
06534         ENDIF 
06535  
06536 C...Write data for particle/jet. 
06537         IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999.) THEN 
06538           WRITE(MSTU(11),5400) I,CHAC(1:12),(K(I,J1),J1=1,3), 
06539      &    (P(I,J2),J2=1,5) 
06540         ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999.) THEN 
06541           WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3), 
06542      &    (P(I,J2),J2=1,5) 
06543         ELSEIF(MLIST.EQ.1) THEN 
06544           WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3), 
06545      &    (P(I,J2),J2=1,5) 
06546         ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR. 
06547      &  K(I,1).EQ.14)) THEN 
06548           WRITE(MSTU(11),5700) I,CHAC,(K(I,J1),J1=1,3), 
06549      &    K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000), 
06550      &    K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000), 
06551      &    (P(I,J2),J2=1,5) 
06552         ELSE 
06553           WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,5),(P(I,J2),J2=1,5) 
06554         ENDIF 
06555         IF(MLIST.EQ.3) WRITE(MSTU(11),5900) (V(I,J),J=1,5) 
06556  
06557 C...Insert extra separator lines specified by user. 
06558         IF(MSTU(70).GE.1) THEN 
06559           ISEP=0 
06560           DO 110 J=1,MIN(10,MSTU(70)) 
06561           IF(I.EQ.MSTU(70+J)) ISEP=1 
06562   110     CONTINUE 
06563           IF(ISEP.EQ.1.AND.MLIST.EQ.1) WRITE(MSTU(11),6000) 
06564           IF(ISEP.EQ.1.AND.MLIST.GE.2) WRITE(MSTU(11),6100) 
06565         ENDIF 
06566   120   CONTINUE 
06567  
06568 C...Sum of charges and momenta. 
06569         DO 130 J=1,6 
06570         PS(J)=PLU(0,J) 
06571   130   CONTINUE 
06572         IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999.) THEN 
06573           WRITE(MSTU(11),6200) PS(6),(PS(J),J=1,5) 
06574         ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999.) THEN 
06575           WRITE(MSTU(11),6300) PS(6),(PS(J),J=1,5) 
06576         ELSEIF(MLIST.EQ.1) THEN 
06577           WRITE(MSTU(11),6400) PS(6),(PS(J),J=1,5) 
06578         ELSE 
06579           WRITE(MSTU(11),6500) PS(6),(PS(J),J=1,5) 
06580         ENDIF 
06581  
06582 C...Give simple list of KF codes defined in program. 
06583       ELSEIF(MLIST.EQ.11) THEN 
06584         WRITE(MSTU(11),6600) 
06585         DO 140 KF=1,40 
06586         CALL LUNAME(KF,CHAP) 
06587         CALL LUNAME(-KF,CHAN) 
06588         IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),6700) KF,CHAP 
06589         IF(CHAN.NE.' ') WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
06590   140   CONTINUE 
06591         DO 170 KFLS=1,3,2 
06592         DO 160 KFLA=1,8 
06593         DO 150 KFLB=1,KFLA-(3-KFLS)/2 
06594         KF=1000*KFLA+100*KFLB+KFLS 
06595         CALL LUNAME(KF,CHAP) 
06596         CALL LUNAME(-KF,CHAN) 
06597         WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
06598   150   CONTINUE 
06599   160   CONTINUE 
06600   170   CONTINUE 
06601         KF=130 
06602         CALL LUNAME(KF,CHAP) 
06603         WRITE(MSTU(11),6700) KF,CHAP 
06604         KF=310 
06605         CALL LUNAME(KF,CHAP) 
06606         WRITE(MSTU(11),6700) KF,CHAP 
06607         DO 200 KMUL=0,5 
06608         KFLS=3 
06609         IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1 
06610         IF(KMUL.EQ.5) KFLS=5 
06611         KFLR=0 
06612         IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1 
06613         IF(KMUL.EQ.4) KFLR=2 
06614         DO 190 KFLB=1,8 
06615         DO 180 KFLC=1,KFLB-1 
06616         KF=10000*KFLR+100*KFLB+10*KFLC+KFLS 
06617         CALL LUNAME(KF,CHAP) 
06618         CALL LUNAME(-KF,CHAN) 
06619         WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
06620   180   CONTINUE 
06621         KF=10000*KFLR+110*KFLB+KFLS 
06622         CALL LUNAME(KF,CHAP) 
06623         WRITE(MSTU(11),6700) KF,CHAP 
06624   190   CONTINUE 
06625   200 CONTINUE 
06626         KF=30443 
06627         CALL LUNAME(KF,CHAP) 
06628         WRITE(MSTU(11),6700) KF,CHAP 
06629         KF=30553 
06630         CALL LUNAME(KF,CHAP) 
06631         WRITE(MSTU(11),6700) KF,CHAP 
06632         DO 240 KFLSP=1,3 
06633         KFLS=2+2*(KFLSP/3) 
06634         DO 230 KFLA=1,8 
06635         DO 220 KFLB=1,KFLA 
06636         DO 210 KFLC=1,KFLB 
06637         IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC)) GOTO 210 
06638         IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 210 
06639         IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS 
06640         IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS 
06641         CALL LUNAME(KF,CHAP) 
06642         CALL LUNAME(-KF,CHAN) 
06643         WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN 
06644   210   CONTINUE 
06645   220   CONTINUE 
06646   230   CONTINUE 
06647   240   CONTINUE 
06648  
06649 C...List parton/particle data table. Check whether to be listed. 
06650       ELSEIF(MLIST.EQ.12) THEN 
06651         WRITE(MSTU(11),6800) 
06652         MSTJ24=MSTJ(24) 
06653         MSTJ(24)=0 
06654         KFMAX=30553 
06655         IF(MSTU(2).NE.0) KFMAX=MSTU(2) 
06656         DO 270 KF=MAX(1,MSTU(1)),KFMAX 
06657         KC=LUCOMP(KF) 
06658         IF(KC.EQ.0) GOTO 270 
06659         IF(MSTU(14).EQ.0.AND.KF.GT.100.AND.KC.LE.100) GOTO 270 
06660         IF(MSTU(14).GT.0.AND.KF.GT.100.AND.MAX(MOD(KF/1000,10), 
06661      &  MOD(KF/100,10)).GT.MSTU(14)) GOTO 270 
06662         IF(MSTU(14).GT.0.AND.KF.GT.100.AND.KC.EQ.90) GOTO 270 
06663  
06664 C...Find particle name and mass. Print information. 
06665         CALL LUNAME(KF,CHAP) 
06666         IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 270 
06667         CALL LUNAME(-KF,CHAN) 
06668         PM=ULMASS(KF) 
06669         WRITE(MSTU(11),6900) KF,KC,CHAP,CHAN,KCHG(KC,1),KCHG(KC,2), 
06670      &  KCHG(KC,3),PM,PMAS(KC,2),PMAS(KC,3),PMAS(KC,4),MDCY(KC,1) 
06671  
06672 C...Particle decay: channel number, branching ration, matrix element, 
06673 C...decay products. 
06674         IF(KF.GT.100.AND.KC.LE.100) GOTO 270 
06675         DO 260 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
06676         DO 250 J=1,5 
06677         CALL LUNAME(KFDP(IDC,J),CHAD(J)) 
06678   250   CONTINUE 
06679         WRITE(MSTU(11),7000) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
06680      &  (CHAD(J),J=1,5) 
06681   260   CONTINUE 
06682   270   CONTINUE 
06683         MSTJ(24)=MSTJ24 
06684  
06685 C...List parameter value table. 
06686       ELSEIF(MLIST.EQ.13) THEN 
06687         WRITE(MSTU(11),7100) 
06688         DO 280 I=1,200 
06689         WRITE(MSTU(11),7200) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I) 
06690   280   CONTINUE 
06691       ENDIF 
06692  
06693 C...Format statements for output on unit MSTU(11) (by default 6). 
06694  5100 FORMAT(///28X,'Event listing (summary)'//4X,'I  particle/jet KS', 
06695      &5X,'KF orig    p_x      p_y      p_z       E        m'/) 
06696  5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet', 
06697      &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)', 
06698      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/) 
06699  5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j', 
06700      &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)', 
06701      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X, 
06702      &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/) 
06703  5400 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.3) 
06704  5500 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.2) 
06705  5600 FORMAT(1X,I4,2X,A12,1X,I2,1X,I6,1X,I4,5F9.1) 
06706  5700 FORMAT(1X,I4,2X,A16,1X,I3,1X,I8,2X,I4,2(3X,I1,2I4),5F13.5) 
06707  5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I8,2X,I4,2(3X,I9),5F13.5) 
06708  5900 FORMAT(66X,5(1X,F12.3)) 
06709  6000 FORMAT(1X,78('=')) 
06710  6100 FORMAT(1X,130('=')) 
06711  6200 FORMAT(19X,'sum:',F6.2,5X,5F9.3) 
06712  6300 FORMAT(19X,'sum:',F6.2,5X,5F9.2) 
06713  6400 FORMAT(19X,'sum:',F6.2,5X,5F9.1) 
06714  6500 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:', 
06715      &5F13.5) 
06716  6600 FORMAT(///20X,'List of KF codes in program'/) 
06717  6700 FORMAT(4X,I6,4X,A16,6X,I6,4X,A16) 
06718  6800 FORMAT(///30X,'Particle/parton data table'//5X,'KF',5X,'KC',4X, 
06719      &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X, 
06720      &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off', 
06721      &1X,'ME',3X,'Br.rat.',4X,'decay products') 
06722  6900 FORMAT(/1X,I6,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5), 
06723      &2X,F12.5,3X,I2) 
06724  7000 FORMAT(10X,I4,2X,I3,2X,I3,2X,F8.5,4X,5A16) 
06725  7100 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)', 
06726      &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)') 
06727  7200 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5) 
06728  
06729       RETURN 
06730       END 
06731  
06732 C********************************************************************* 
06733  
06734       SUBROUTINE LULOGO 
06735  
06736 C...Purpose: to write logo for JETSET and PYTHIA programs. 
06737       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
06738       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) 
06739       SAVE /LUDAT1/ 
06740       SAVE /PYPARS/ 
06741       CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(22)*36, LINE*79, 
06742      &VERS*1, SUBV*3, DATE*2, YEAR*4 
06743  
06744 C...Data on months, logo, titles, and references. 
06745       DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep', 
06746      &'Oct','Nov','Dec'/ 
06747       DATA (LOGO(J),J=1,10)/ 
06748      &'PPP  Y   Y TTTTT H   H III   A  ', 
06749      &'P  P  Y Y    T   H   H  I   A A ', 
06750      &'PPP    Y     T   HHHHH  I  AAAAA', 
06751      &'P      Y     T   H   H  I  A   A', 
06752      &'P      Y     T   H   H III A   A', 
06753      &'JJJJ EEEE TTTTT  SSS  EEEE TTTTT', 
06754      &'   J E      T   S     E      T  ', 
06755      &'   J EEE    T    SSS  EEE    T  ', 
06756      &'J  J E      T       S E      T  ', 
06757      &' JJ  EEEE   T    SSS  EEEE   T  '/ 
06758       DATA (LOGO(J),J=11,29)/ 
06759      &'            *......*            ', 
06760      &'       *:::!!:::::::::::*       ', 
06761      &'    *::::::!!::::::::::::::*    ', 
06762      &'  *::::::::!!::::::::::::::::*  ', 
06763      &' *:::::::::!!:::::::::::::::::* ', 
06764      &' *:::::::::!!:::::::::::::::::* ', 
06765      &'  *::::::::!!::::::::::::::::*! ', 
06766      &'    *::::::!!::::::::::::::* !! ', 
06767      &'    !! *:::!!:::::::::::*    !! ', 
06768      &'    !!     !* -><- *         !! ', 
06769      &'    !!     !!                !! ', 
06770      &'    !!     !!                !! ', 
06771      &'    !!                       !! ', 
06772      &'    !!        ep             !! ', 
06773      &'    !!                       !! ', 
06774      &'    !!                 pp    !! ', 
06775      &'    !!   e+e-                !! ', 
06776      &'    !!                       !! ', 
06777      &'    !!                          '/ 
06778       DATA (LOGO(J),J=30,48)/ 
06779      &'Welcome to the Lund Monte Carlo!', 
06780      &'                                ', 
06781      &'  This is PYTHIA version x.xxx  ', 
06782      &'Last date of change: xx xxx 199x', 
06783      &'                                ', 
06784      &'  This is JETSET version x.xxx  ', 
06785      &'Last date of change: xx xxx 199x', 
06786      &'                                ', 
06787      &'                                ', 
06788      &'          Main author:          ', 
06789      &'       Torbjorn Sjostrand       ', 
06790      &'     Theory Division, CERN,     ', 
06791      &'       CH-1211 Geneva 23,       ', 
06792      &'          Switzerland           ', 
06793      &'   phone +41 - 22 - 767 28 20   ', 
06794      &'  E-mail TORSJO@CERNVM.CERN.CH  ', 
06795      &'                                ', 
06796      &'  Copyright Torbjorn Sjostrand  ', 
06797      &'     and CERN, Geneva 1993      '/ 
06798       DATA (REFER(J),J=1,16)/ 
06799      &'When you cite these programs, priori', 
06800      &'ty should always be given to the    ', 
06801      &'latest published description.       ', 
06802      &'                                    ', 
06803      &'Currently this is, for JETSET       ', 
06804      &'                                    ', 
06805      &'T. Sjostrand and M. Bengtsson, Compu', 
06806      &'ter Physics Commun. 43 (1987) 367,  ', 
06807      &'and for PYTHIA                      ', 
06808      &'                                    ', 
06809      &'H.-U. Bengtsson and T. Sjostrand, Co', 
06810      &'mputer Physics Commun. 46 (1987) 43.', 
06811      &'The most recent long description (un', 
06812      &'published) is:                      ', 
06813      &'T. Sjostrand, CERN-TH.7112/93 (1993)', 
06814      &'.                                   '/ 
06815       DATA (REFER(J),J=17,22)/ 
06816      &'Also remember that the programs, to ', 
06817      &'a large extent, represent original  ', 
06818      &'physics research. Other publications', 
06819      &' of special relevance to your       ', 
06820      &'studies may therefore deserve separa', 
06821      &'te mention.                         '/ 
06822  
06823 C...Check if PYTHIA linked. 
06824       IF(MSTP(183)/10.NE.199) THEN 
06825         LOGO(32)=' Warning: PYTHIA is not loaded! ' 
06826         LOGO(33)='Did you remember to link PYDATA?' 
06827       ELSE 
06828         WRITE(VERS,'(I1)') MSTP(181) 
06829         LOGO(32)(26:26)=VERS 
06830         WRITE(SUBV,'(I3)') MSTP(182) 
06831         LOGO(32)(28:30)=SUBV 
06832         WRITE(DATE,'(I2)') MSTP(185) 
06833         LOGO(33)(22:23)=DATE 
06834         LOGO(33)(25:27)=MONTH(MSTP(184)) 
06835         WRITE(YEAR,'(I4)') MSTP(183) 
06836         LOGO(33)(29:32)=YEAR 
06837       ENDIF 
06838  
06839 C...Check if JETSET linked. 
06840       IF(MSTU(183)/10.NE.199) THEN 
06841         LOGO(35)='  Error: JETSET is not loaded!  ' 
06842         LOGO(36)='Did you remember to link LUDATA?' 
06843       ELSE 
06844         WRITE(VERS,'(I1)') MSTU(181) 
06845         LOGO(35)(26:26)=VERS 
06846         WRITE(SUBV,'(I3)') MSTU(182) 
06847         LOGO(35)(28:30)=SUBV 
06848         WRITE(DATE,'(I2)') MSTU(185) 
06849         LOGO(36)(22:23)=DATE 
06850         LOGO(36)(25:27)=MONTH(MSTU(184)) 
06851         WRITE(YEAR,'(I4)') MSTU(183) 
06852         LOGO(36)(29:32)=YEAR 
06853       ENDIF 
06854  
06855 C...Loop over lines in header. Define page feed and side borders. 
06856       DO 100 ILIN=1,48 
06857       LINE=' ' 
06858       IF(ILIN.EQ.1) THEN 
06859         LINE(1:1)='1' 
06860       ELSE 
06861         LINE(2:3)='**' 
06862         LINE(78:79)='**' 
06863       ENDIF 
06864  
06865 C...Separator lines and logos. 
06866       IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.EQ.47.OR.ILIN.EQ.48) THEN 
06867         LINE(4:77)='***********************************************'// 
06868      &  '***************************' 
06869       ELSEIF(ILIN.GE.6.AND.ILIN.LE.10) THEN 
06870         LINE(6:37)=LOGO(ILIN-5) 
06871         LINE(44:75)=LOGO(ILIN) 
06872       ELSEIF(ILIN.GE.13.AND.ILIN.LE.31) THEN 
06873         LINE(6:37)=LOGO(ILIN-2) 
06874         LINE(44:75)=LOGO(ILIN+17) 
06875       ELSEIF(ILIN.GE.34.AND.ILIN.LE.44) THEN 
06876         LINE(5:40)=REFER(2*ILIN-67) 
06877         LINE(41:76)=REFER(2*ILIN-66) 
06878       ENDIF 
06879  
06880 C...Write lines to appropriate unit. 
06881       IF(MSTU(183)/10.EQ.199) THEN 
06882         WRITE(MSTU(11),'(A79)') LINE 
06883       ELSE 
06884         WRITE(*,'(A79)') LINE 
06885       ENDIF 
06886   100 CONTINUE 
06887  
06888 C...Check that matching subversions are linked. 
06889       IF(MSTU(183)/10.EQ.199.AND.MSTP(183)/10.EQ.199) THEN 
06890         IF(MSTU(182).LT.MSTP(186)) WRITE(MSTU(11), 
06891      &  '(/'' Warning: JETSET subversion too old for PYTHIA''/)') 
06892         IF(MSTP(182).LT.MSTU(186)) WRITE(MSTU(11), 
06893      &  '(/'' Warning: PYTHIA subversion too old for JETSET''/)') 
06894       ENDIF 
06895  
06896       RETURN 
06897       END 
06898  
06899 C********************************************************************* 
06900  
06901       SUBROUTINE LUUPDA(MUPDA,LFN) 
06902  
06903 C...Purpose: to facilitate the updating of particle and decay data. 
06904       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
06905       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
06906       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
06907       COMMON/LUDAT4/CHAF(500) 
06908       CHARACTER CHAF*8 
06909       SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/,/LUDAT4/ 
06910       CHARACTER CHINL*80,CHKC*4,CHVAR(19)*9,CHLIN*72, 
06911      &CHBLK(20)*72,CHOLD*12,CHTMP*12,CHNEW*12,CHCOM*12 
06912       DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','PMAS(I,1)', 
06913      &'PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)','MDCY(I,2)', 
06914      &'MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ','KFDP(I,1)', 
06915      &'KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)','CHAF(I)  '/ 
06916  
06917 C...Write information on file for editing. 
06918       IF(MSTU(12).GE.1) CALL LULIST(0) 
06919       IF(MUPDA.EQ.1) THEN 
06920         DO 110 KC=1,MSTU(6) 
06921         WRITE(LFN,5000) KC,CHAF(KC),(KCHG(KC,J1),J1=1,3), 
06922      &  (PMAS(KC,J2),J2=1,4),MDCY(KC,1) 
06923         DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
06924         WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
06925      &  (KFDP(IDC,J),J=1,5) 
06926   100   CONTINUE 
06927   110   CONTINUE 
06928  
06929 C...Reset variables and read information from edited file. 
06930       ELSEIF(MUPDA.EQ.2) THEN 
06931         DO 130 I=1,MSTU(7) 
06932         MDME(I,1)=1 
06933         MDME(I,2)=0 
06934         BRAT(I)=0. 
06935         DO 120 J=1,5 
06936         KFDP(I,J)=0 
06937   120   CONTINUE 
06938   130   CONTINUE 
06939         KC=0 
06940         IDC=0 
06941         NDC=0 
06942   140   READ(LFN,5200,END=150) CHINL 
06943         IF(CHINL(2:5).NE.'    ') THEN 
06944           CHKC=CHINL(2:5) 
06945           IF(KC.NE.0) THEN 
06946             MDCY(KC,2)=0 
06947             IF(NDC.NE.0) MDCY(KC,2)=IDC+1-NDC 
06948             MDCY(KC,3)=NDC 
06949           ENDIF 
06950           READ(CHKC,5300) KC 
06951           IF(KC.LE.0.OR.KC.GT.MSTU(6)) CALL LUERRM(27, 
06952      &    '(LUUPDA:) Read KC code illegal, KC ='//CHKC) 
06953           READ(CHINL,5000) KCR,CHAF(KC),(KCHG(KC,J1),J1=1,3), 
06954      &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1) 
06955           NDC=0 
06956         ELSE 
06957           IDC=IDC+1 
06958           NDC=NDC+1 
06959           IF(IDC.GE.MSTU(7)) CALL LUERRM(27, 
06960      &    '(LUUPDA:) Decay data arrays full by KC ='//CHKC) 
06961           READ(CHINL,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC), 
06962      &    (KFDP(IDC,J),J=1,5) 
06963         ENDIF 
06964         GOTO 140 
06965   150   MDCY(KC,2)=0 
06966         IF(NDC.NE.0) MDCY(KC,2)=IDC+1-NDC 
06967         MDCY(KC,3)=NDC 
06968  
06969 C...Perform possible tests that new information is consistent. 
06970         MSTJ24=MSTJ(24) 
06971         MSTJ(24)=0 
06972         DO 180 KC=1,MSTU(6) 
06973         WRITE(CHKC,5300) KC 
06974         IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3), 
06975      &  PMAS(KC,4)).LT.0..OR.MDCY(KC,3).LT.0) CALL LUERRM(17, 
06976      &  '(LUUPDA:) Mass/width/life/(# channels) wrong for KC ='//CHKC) 
06977         BRSUM=0. 
06978         DO 170 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1 
06979         IF(MDME(IDC,2).GT.80) GOTO 170 
06980         KQ=KCHG(KC,1) 
06981         PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64) 
06982         MERR=0 
06983         DO 160 J=1,5 
06984         KP=KFDP(IDC,J) 
06985         IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN 
06986         ELSEIF(LUCOMP(KP).EQ.0) THEN 
06987           MERR=3 
06988         ELSE 
06989           KQ=KQ-LUCHGE(KP) 
06990           PMS=PMS-ULMASS(KP) 
06991         ENDIF 
06992   160   CONTINUE 
06993         IF(KQ.NE.0) MERR=MAX(2,MERR) 
06994         IF(KFDP(IDC,2).NE.0.AND.(KC.LE.20.OR.KC.GT.40).AND. 
06995      &  (KC.LE.80.OR.KC.GT.100).AND.MDME(IDC,2).NE.34.AND. 
06996      &  MDME(IDC,2).NE.61.AND.PMS.LT.0.) MERR=MAX(1,MERR) 
06997         IF(MERR.EQ.3) CALL LUERRM(17, 
06998      &  '(LUUPDA:) Unknown particle code in decay of KC ='//CHKC) 
06999         IF(MERR.EQ.2) CALL LUERRM(17, 
07000      &  '(LUUPDA:) Charge not conserved in decay of KC ='//CHKC) 
07001         IF(MERR.EQ.1) CALL LUERRM(7, 
07002      &  '(LUUPDA:) Kinematically unallowed decay of KC ='//CHKC) 
07003         BRSUM=BRSUM+BRAT(IDC) 
07004   170   CONTINUE 
07005         WRITE(CHTMP,5500) BRSUM 
07006         IF(ABS(BRSUM).GT.0.0005.AND.ABS(BRSUM-1.).GT.0.0005) CALL 
07007      &  LUERRM(7,'(LUUPDA:) Sum of branching ratios is '//CHTMP(5:12)// 
07008      &  ' for KC ='//CHKC) 
07009   180   CONTINUE 
07010         MSTJ(24)=MSTJ24 
07011  
07012 C...Initialize writing of DATA statements for inclusion in program. 
07013       ELSEIF(MUPDA.EQ.3) THEN 
07014         DO 250 IVAR=1,19 
07015         NDIM=MSTU(6) 
07016         IF(IVAR.GE.11.AND.IVAR.LE.18) NDIM=MSTU(7) 
07017         NLIN=1 
07018         CHLIN=' ' 
07019         CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/' 
07020         LLIN=35 
07021         CHOLD='START' 
07022  
07023 C...Loop through variables for conversion to characters. 
07024         DO 230 IDIM=1,NDIM 
07025         IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1) 
07026         IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2) 
07027         IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3) 
07028         IF(IVAR.EQ.4) WRITE(CHTMP,5500) PMAS(IDIM,1) 
07029         IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,2) 
07030         IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,3) 
07031         IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,4) 
07032         IF(IVAR.EQ.8) WRITE(CHTMP,5400) MDCY(IDIM,1) 
07033         IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,2) 
07034         IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,3) 
07035         IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDME(IDIM,1) 
07036         IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,2) 
07037         IF(IVAR.EQ.13) WRITE(CHTMP,5500) BRAT(IDIM) 
07038         IF(IVAR.EQ.14) WRITE(CHTMP,5400) KFDP(IDIM,1) 
07039         IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,2) 
07040         IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,3) 
07041         IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,4) 
07042         IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,5) 
07043         IF(IVAR.EQ.19) CHTMP=CHAF(IDIM) 
07044  
07045 C...Length of variable, trailing decimal zeros, quotation marks. 
07046         LLOW=1 
07047         LHIG=1 
07048         DO 190 LL=1,12 
07049         IF(CHTMP(13-LL:13-LL).NE.' ') LLOW=13-LL 
07050         IF(CHTMP(LL:LL).NE.' ') LHIG=LL 
07051   190   CONTINUE 
07052         CHNEW=CHTMP(LLOW:LHIG)//' ' 
07053         LNEW=1+LHIG-LLOW 
07054         IF((IVAR.GE.4.AND.IVAR.LE.7).OR.IVAR.EQ.13) THEN 
07055           LNEW=LNEW+1 
07056   200     LNEW=LNEW-1 
07057           IF(CHNEW(LNEW:LNEW).EQ.'0') GOTO 200 
07058           IF(LNEW.EQ.1) CHNEW(1:2)='0.' 
07059           IF(LNEW.EQ.1) LNEW=2 
07060         ELSEIF(IVAR.EQ.19) THEN 
07061           DO 210 LL=LNEW,1,-1 
07062           IF(CHNEW(LL:LL).EQ.'''') THEN 
07063             CHTMP=CHNEW 
07064             CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11) 
07065             LNEW=LNEW+1 
07066           ENDIF 
07067   210     CONTINUE 
07068           CHTMP=CHNEW 
07069           CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//'''' 
07070           LNEW=LNEW+2 
07071         ENDIF 
07072  
07073 C...Form composite character string, often including repetition counter. 
07074         IF(CHNEW.NE.CHOLD) THEN 
07075           NRPT=1 
07076           CHOLD=CHNEW 
07077           CHCOM=CHNEW 
07078           LCOM=LNEW 
07079         ELSE 
07080           LRPT=LNEW+1 
07081           IF(NRPT.GE.2) LRPT=LNEW+3 
07082           IF(NRPT.GE.10) LRPT=LNEW+4 
07083           IF(NRPT.GE.100) LRPT=LNEW+5 
07084           IF(NRPT.GE.1000) LRPT=LNEW+6 
07085           LLIN=LLIN-LRPT 
07086           NRPT=NRPT+1 
07087           WRITE(CHTMP,5400) NRPT 
07088           LRPT=1 
07089           IF(NRPT.GE.10) LRPT=2 
07090           IF(NRPT.GE.100) LRPT=3 
07091           IF(NRPT.GE.1000) LRPT=4 
07092           CHCOM(1:LRPT+1+LNEW)=CHTMP(13-LRPT:12)//'*'//CHNEW(1:LNEW) 
07093           LCOM=LRPT+1+LNEW 
07094         ENDIF 
07095  
07096 C...Add characters to end of line, to new line (after storing old line), 
07097 C...or to new block of lines (after writing old block). 
07098         IF(LLIN+LCOM.LE.70) THEN 
07099           CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//',' 
07100           LLIN=LLIN+LCOM+1 
07101         ELSEIF(NLIN.LE.19) THEN 
07102           CHLIN(LLIN+1:72)=' ' 
07103           CHBLK(NLIN)=CHLIN 
07104           NLIN=NLIN+1 
07105           CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//',' 
07106           LLIN=6+LCOM+1 
07107         ELSE 
07108           CHLIN(LLIN:72)='/'//' ' 
07109           CHBLK(NLIN)=CHLIN 
07110           WRITE(CHTMP,5400) IDIM-NRPT 
07111           CHBLK(1)(30:33)=CHTMP(9:12) 
07112           DO 220 ILIN=1,NLIN 
07113           WRITE(LFN,5600) CHBLK(ILIN) 
07114   220     CONTINUE 
07115           NLIN=1 
07116           CHLIN=' ' 
07117           CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//',I=    ,    )/'// 
07118      &    CHCOM(1:LCOM)//',' 
07119           WRITE(CHTMP,5400) IDIM-NRPT+1 
07120           CHLIN(25:28)=CHTMP(9:12) 
07121           LLIN=35+LCOM+1 
07122         ENDIF 
07123   230   CONTINUE 
07124  
07125 C...Write final block of lines. 
07126         CHLIN(LLIN:72)='/'//' ' 
07127         CHBLK(NLIN)=CHLIN 
07128         WRITE(CHTMP,5400) NDIM 
07129         CHBLK(1)(30:33)=CHTMP(9:12) 
07130         DO 240 ILIN=1,NLIN 
07131         WRITE(LFN,5600) CHBLK(ILIN) 
07132   240   CONTINUE 
07133   250   CONTINUE 
07134       ENDIF 
07135  
07136 C...Formats for reading and writing particle data. 
07137  5000 FORMAT(1X,I4,2X,A8,3I3,3F12.5,2X,F12.5,I3) 
07138  5100 FORMAT(5X,2I5,F12.5,5I8) 
07139  5200 FORMAT(A80) 
07140  5300 FORMAT(I4) 
07141  5400 FORMAT(I12) 
07142  5500 FORMAT(F12.5) 
07143  5600 FORMAT(A72) 
07144  
07145       RETURN 
07146       END 
07147  
07148 C********************************************************************* 
07149  
07150       FUNCTION KLU(I,J) 
07151  
07152 C...Purpose: to provide various integer-valued event related data. 
07153       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
07154       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
07155       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
07156       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
07157  
07158 C...Default value. For I=0 number of entries, number of stable entries 
07159 C...or 3 times total charge. 
07160       KLU=0 
07161       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN 
07162       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN 
07163         KLU=N 
07164       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN 
07165         DO 100 I1=1,N 
07166         IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+1 
07167         IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+ 
07168      &  LUCHGE(K(I1,2)) 
07169   100   CONTINUE 
07170       ELSEIF(I.EQ.0) THEN 
07171  
07172 C...For I > 0 direct readout of K matrix or charge. 
07173       ELSEIF(J.LE.5) THEN 
07174         KLU=K(I,J) 
07175       ELSEIF(J.EQ.6) THEN 
07176         KLU=LUCHGE(K(I,2)) 
07177  
07178 C...Status (existing/fragmented/decayed), parton/hadron separation. 
07179       ELSEIF(J.LE.8) THEN 
07180         IF(K(I,1).GE.1.AND.K(I,1).LE.10) KLU=1 
07181         IF(J.EQ.8) KLU=KLU*K(I,2) 
07182       ELSEIF(J.LE.12) THEN 
07183         KFA=IABS(K(I,2)) 
07184         KC=LUCOMP(KFA) 
07185         KQ=0 
07186         IF(KC.NE.0) KQ=KCHG(KC,2) 
07187         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) KLU=K(I,2) 
07188         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) KLU=K(I,2) 
07189         IF(J.EQ.11) KLU=KC 
07190         IF(J.EQ.12) KLU=KQ*ISIGN(1,K(I,2)) 
07191  
07192 C...Heaviest flavour in hadron/diquark. 
07193       ELSEIF(J.EQ.13) THEN 
07194         KFA=IABS(K(I,2)) 
07195         KLU=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10) 
07196         IF(KFA.LT.10) KLU=KFA 
07197         IF(MOD(KFA/1000,10).NE.0) KLU=MOD(KFA/1000,10) 
07198         KLU=KLU*ISIGN(1,K(I,2)) 
07199  
07200 C...Particle history: generation, ancestor, rank. 
07201       ELSEIF(J.LE.16) THEN 
07202         I2=I 
07203         I1=I 
07204   110   KLU=KLU+1 
07205         I3=I2 
07206         I2=I1 
07207         I1=K(I1,3) 
07208         IF(I1.GT.0.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110 
07209         IF(J.EQ.15) KLU=I2 
07210         IF(J.EQ.16) THEN 
07211           KLU=0 
07212           DO 120 I1=I2+1,I3 
07213           IF(K(I1,3).EQ.I2.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) KLU=KLU+1 
07214   120     CONTINUE 
07215         ENDIF 
07216  
07217 C...Particle coming from collapsing jet system or not. 
07218       ELSEIF(J.EQ.17) THEN 
07219         I1=I 
07220   130   KLU=KLU+1 
07221         I3=I1 
07222         I1=K(I1,3) 
07223         I0=MAX(1,I1) 
07224         KC=LUCOMP(K(I0,2)) 
07225         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN 
07226           IF(KLU.EQ.1) KLU=-1 
07227           IF(KLU.GT.1) KLU=0 
07228           RETURN 
07229         ENDIF 
07230         IF(KCHG(KC,2).EQ.0) GOTO 130 
07231         IF(K(I1,1).NE.12) KLU=0 
07232         IF(K(I1,1).NE.12) RETURN 
07233         I2=I1 
07234   140   I2=I2+1 
07235         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 140 
07236         K3M=K(I3-1,3) 
07237         IF(K3M.GE.I1.AND.K3M.LE.I2) KLU=0 
07238         K3P=K(I3+1,3) 
07239         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) KLU=0 
07240  
07241 C...Number of decay products. Colour flow. 
07242       ELSEIF(J.EQ.18) THEN 
07243         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) KLU=MAX(0,K(I,5)-K(I,4)+1) 
07244         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) KLU=0 
07245       ELSEIF(J.LE.22) THEN 
07246         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN 
07247         IF(J.EQ.19) KLU=MOD(K(I,4)/MSTU(5),MSTU(5)) 
07248         IF(J.EQ.20) KLU=MOD(K(I,5)/MSTU(5),MSTU(5)) 
07249         IF(J.EQ.21) KLU=MOD(K(I,4),MSTU(5)) 
07250         IF(J.EQ.22) KLU=MOD(K(I,5),MSTU(5)) 
07251       ELSE 
07252       ENDIF 
07253  
07254       RETURN 
07255       END 
07256  
07257 C********************************************************************* 
07258  
07259       FUNCTION PLU(I,J) 
07260  
07261 C...Purpose: to provide various real-valued event related data. 
07262       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
07263       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
07264       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
07265       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
07266       DIMENSION PSUM(4) 
07267  
07268 C...Set default value. For I = 0 sum of momenta or charges, 
07269 C...or invariant mass of system. 
07270       PLU=0. 
07271       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN 
07272       ELSEIF(I.EQ.0.AND.J.LE.4) THEN 
07273         DO 100 I1=1,N 
07274         IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PLU=PLU+P(I1,J) 
07275   100   CONTINUE 
07276       ELSEIF(I.EQ.0.AND.J.EQ.5) THEN 
07277         DO 120 J1=1,4 
07278         PSUM(J1)=0. 
07279         DO 110 I1=1,N 
07280         IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+P(I1,J1) 
07281   110   CONTINUE 
07282   120 CONTINUE 
07283         PLU=SQRT(MAX(0.,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2)) 
07284       ELSEIF(I.EQ.0.AND.J.EQ.6) THEN 
07285         DO 130 I1=1,N 
07286         IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PLU=PLU+LUCHGE(K(I1,2))/3. 
07287   130   CONTINUE 
07288       ELSEIF(I.EQ.0) THEN 
07289  
07290 C...Direct readout of P matrix. 
07291       ELSEIF(J.LE.5) THEN 
07292         PLU=P(I,J) 
07293  
07294 C...Charge, total momentum, transverse momentum, transverse mass. 
07295       ELSEIF(J.LE.12) THEN 
07296         IF(J.EQ.6) PLU=LUCHGE(K(I,2))/3. 
07297         IF(J.EQ.7.OR.J.EQ.8) PLU=P(I,1)**2+P(I,2)**2+P(I,3)**2 
07298         IF(J.EQ.9.OR.J.EQ.10) PLU=P(I,1)**2+P(I,2)**2 
07299         IF(J.EQ.11.OR.J.EQ.12) PLU=P(I,5)**2+P(I,1)**2+P(I,2)**2 
07300         IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PLU=SQRT(PLU) 
07301  
07302 C...Theta and phi angle in radians or degrees. 
07303       ELSEIF(J.LE.16) THEN 
07304         IF(J.LE.14) PLU=ULANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2)) 
07305         IF(J.GE.15) PLU=ULANGL(P(I,1),P(I,2)) 
07306         IF(J.EQ.14.OR.J.EQ.16) PLU=PLU*180./PARU(1) 
07307  
07308 C...True rapidity, rapidity with pion mass, pseudorapidity. 
07309       ELSEIF(J.LE.19) THEN 
07310         PMR=0. 
07311         IF(J.EQ.17) PMR=P(I,5) 
07312         IF(J.EQ.18) PMR=ULMASS(211) 
07313         PR=MAX(1E-20,PMR**2+P(I,1)**2+P(I,2)**2) 
07314         PLU=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR), 
07315      &  1E20)),P(I,3)) 
07316  
07317 C...Energy and momentum fractions (only to be used in CM frame). 
07318       ELSEIF(J.LE.25) THEN 
07319         IF(J.EQ.20) PLU=2.*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21) 
07320         IF(J.EQ.21) PLU=2.*P(I,3)/PARU(21) 
07321         IF(J.EQ.22) PLU=2.*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21) 
07322         IF(J.EQ.23) PLU=2.*P(I,4)/PARU(21) 
07323         IF(J.EQ.24) PLU=(P(I,4)+P(I,3))/PARU(21) 
07324         IF(J.EQ.25) PLU=(P(I,4)-P(I,3))/PARU(21) 
07325       ENDIF 
07326  
07327       RETURN 
07328       END 
07329  
07330 C********************************************************************* 
07331  
07332       SUBROUTINE LUSPHE(SPH,APL) 
07333  
07334 C...Purpose: to perform sphericity tensor analysis to give sphericity, 
07335 C...aplanarity and the related event axes. 
07336       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
07337       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
07338       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
07339       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
07340       DIMENSION SM(3,3),SV(3,3) 
07341  
07342 C...Calculate matrix to be diagonalized. 
07343       NP=0 
07344       DO 110 J1=1,3 
07345       DO 100 J2=J1,3 
07346       SM(J1,J2)=0. 
07347   100 CONTINUE 
07348   110 CONTINUE 
07349       PS=0. 
07350       DO 140 I=1,N 
07351       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140 
07352       IF(MSTU(41).GE.2) THEN 
07353         KC=LUCOMP(K(I,2)) 
07354         IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
07355      &  KC.EQ.18) GOTO 140 
07356         IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
07357      &  GOTO 140 
07358       ENDIF 
07359       NP=NP+1 
07360       PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
07361       PWT=1. 
07362       IF(ABS(PARU(41)-2.).GT.0.001) PWT=MAX(1E-10,PA)**(PARU(41)-2.) 
07363       DO 130 J1=1,3 
07364       DO 120 J2=J1,3 
07365       SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2) 
07366   120 CONTINUE 
07367   130 CONTINUE 
07368       PS=PS+PWT*PA**2 
07369   140 CONTINUE 
07370  
07371 C...Very low multiplicities (0 or 1) not considered. 
07372       IF(NP.LE.1) THEN 
07373         CALL LUERRM(8,'(LUSPHE:) too few particles for analysis') 
07374         SPH=-1. 
07375         APL=-1. 
07376         RETURN 
07377       ENDIF 
07378       DO 160 J1=1,3 
07379       DO 150 J2=J1,3 
07380       SM(J1,J2)=SM(J1,J2)/PS 
07381   150 CONTINUE 
07382   160 CONTINUE 
07383  
07384 C...Find eigenvalues to matrix (third degree equation). 
07385       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-SM(1,2)**2- 
07386      &SM(1,3)**2-SM(2,3)**2)/3.-1./9. 
07387       SR=-0.5*(SQ+1./9.+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+SM(3,3)* 
07388      &SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+SM(1,2)*SM(1,3)*SM(2,3)+1./27. 
07389       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1.),-1.))/3.) 
07390       P(N+1,4)=1./3.+SQRT(-SQ)*MAX(2.*SP,SQRT(3.*(1.-SP**2))-SP) 
07391       P(N+3,4)=1./3.+SQRT(-SQ)*MIN(2.*SP,-SQRT(3.*(1.-SP**2))-SP) 
07392       P(N+2,4)=1.-P(N+1,4)-P(N+3,4) 
07393       IF(P(N+2,4).LT.1E-5) THEN 
07394         CALL LUERRM(8,'(LUSPHE:) all particles back-to-back') 
07395         SPH=-1. 
07396         APL=-1. 
07397         RETURN 
07398       ENDIF 
07399  
07400 C...Find first and last eigenvector by solving equation system. 
07401       DO 240 I=1,3,2 
07402       DO 180 J1=1,3 
07403       SV(J1,J1)=SM(J1,J1)-P(N+I,4) 
07404       DO 170 J2=J1+1,3 
07405       SV(J1,J2)=SM(J1,J2) 
07406       SV(J2,J1)=SM(J1,J2) 
07407   170 CONTINUE 
07408   180 CONTINUE 
07409       SMAX=0. 
07410       DO 200 J1=1,3 
07411       DO 190 J2=1,3 
07412       IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190 
07413       JA=J1 
07414       JB=J2 
07415       SMAX=ABS(SV(J1,J2)) 
07416   190 CONTINUE 
07417   200 CONTINUE 
07418       SMAX=0. 
07419       DO 220 J3=JA+1,JA+2 
07420       J1=J3-3*((J3-1)/3) 
07421       RL=SV(J1,JB)/SV(JA,JB) 
07422       DO 210 J2=1,3 
07423       SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2) 
07424       IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210 
07425       JC=J1 
07426       SMAX=ABS(SV(J1,J2)) 
07427   210 CONTINUE 
07428   220 CONTINUE 
07429       JB1=JB+1-3*(JB/3) 
07430       JB2=JB+2-3*((JB+1)/3) 
07431       P(N+I,JB1)=-SV(JC,JB2) 
07432       P(N+I,JB2)=SV(JC,JB1) 
07433       P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/ 
07434      &SV(JA,JB) 
07435       PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2) 
07436       SGN=(-1.)**INT(RLU(0)+0.5) 
07437       DO 230 J=1,3 
07438       P(N+I,J)=SGN*P(N+I,J)/PA 
07439   230 CONTINUE 
07440   240 CONTINUE 
07441  
07442 C...Middle axis orthogonal to other two. Fill other codes. 
07443       SGN=(-1.)**INT(RLU(0)+0.5) 
07444       P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2)) 
07445       P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3)) 
07446       P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1)) 
07447       DO 260 I=1,3 
07448       K(N+I,1)=31 
07449       K(N+I,2)=95 
07450       K(N+I,3)=I 
07451       K(N+I,4)=0 
07452       K(N+I,5)=0 
07453       P(N+I,5)=0. 
07454       DO 250 J=1,5 
07455       V(I,J)=0. 
07456   250 CONTINUE 
07457   260 CONTINUE 
07458  
07459 C...Calculate sphericity and aplanarity. Select storing option. 
07460       SPH=1.5*(P(N+2,4)+P(N+3,4)) 
07461       APL=1.5*P(N+3,4) 
07462       MSTU(61)=N+1 
07463       MSTU(62)=NP 
07464       IF(MSTU(43).LE.1) MSTU(3)=3 
07465       IF(MSTU(43).GE.2) N=N+3 
07466  
07467       RETURN 
07468       END 
07469  
07470 C********************************************************************* 
07471  
07472       SUBROUTINE LUTHRU(THR,OBL) 
07473  
07474 C...Purpose: to perform thrust analysis to give thrust, oblateness 
07475 C...and the related event axes. 
07476       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
07477       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
07478       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
07479       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
07480       DIMENSION TDI(3),TPR(3) 
07481  
07482 C...Take copy of particles that are to be considered in thrust analysis. 
07483       NP=0 
07484       PS=0. 
07485       DO 100 I=1,N 
07486       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100 
07487       IF(MSTU(41).GE.2) THEN 
07488         KC=LUCOMP(K(I,2)) 
07489         IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
07490      &  KC.EQ.18) GOTO 100 
07491         IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
07492      &  GOTO 100 
07493       ENDIF 
07494       IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN 
07495         CALL LUERRM(11,'(LUTHRU:) no more memory left in LUJETS') 
07496         THR=-2. 
07497         OBL=-2. 
07498         RETURN 
07499       ENDIF 
07500       NP=NP+1 
07501       K(N+NP,1)=23 
07502       P(N+NP,1)=P(I,1) 
07503       P(N+NP,2)=P(I,2) 
07504       P(N+NP,3)=P(I,3) 
07505       P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
07506       P(N+NP,5)=1. 
07507       IF(ABS(PARU(42)-1.).GT.0.001) P(N+NP,5)=P(N+NP,4)**(PARU(42)-1.) 
07508       PS=PS+P(N+NP,4)*P(N+NP,5) 
07509   100 CONTINUE 
07510  
07511 C...Very low multiplicities (0 or 1) not considered. 
07512       IF(NP.LE.1) THEN 
07513         CALL LUERRM(8,'(LUTHRU:) too few particles for analysis') 
07514         THR=-1. 
07515         OBL=-1. 
07516         RETURN 
07517       ENDIF 
07518  
07519 C...Loop over thrust and major. T axis along z direction in latter case. 
07520       DO 320 ILD=1,2 
07521       IF(ILD.EQ.2) THEN 
07522         K(N+NP+1,1)=31 
07523         PHI=ULANGL(P(N+NP+1,1),P(N+NP+1,2)) 
07524         MSTU(33)=1 
07525         CALL LUDBRB(N+1,N+NP+1,0.,-PHI,0D0,0D0,0D0) 
07526         THE=ULANGL(P(N+NP+1,3),P(N+NP+1,1)) 
07527         CALL LUDBRB(N+1,N+NP+1,-THE,0.,0D0,0D0,0D0) 
07528       ENDIF 
07529  
07530 C...Find and order particles with highest p (pT for major). 
07531       DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4 
07532       P(ILF,4)=0. 
07533   110 CONTINUE 
07534       DO 160 I=N+1,N+NP 
07535       IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2) 
07536       DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1 
07537       IF(P(I,4).LE.P(ILF,4)) GOTO 140 
07538       DO 120 J=1,5 
07539       P(ILF+1,J)=P(ILF,J) 
07540   120 CONTINUE 
07541   130 CONTINUE 
07542       ILF=N+NP+3 
07543   140 DO 150 J=1,5 
07544       P(ILF+1,J)=P(I,J) 
07545   150 CONTINUE 
07546   160 CONTINUE 
07547  
07548 C...Find and order initial axes with highest thrust (major). 
07549       DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15 
07550       P(ILG,4)=0. 
07551   170 CONTINUE 
07552       NC=2**(MIN(MSTU(44),NP)-1) 
07553       DO 250 ILC=1,NC 
07554       DO 180 J=1,3 
07555       TDI(J)=0. 
07556   180 CONTINUE 
07557       DO 200 ILF=1,MIN(MSTU(44),NP) 
07558       SGN=P(N+NP+ILF+3,5) 
07559       IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN 
07560       DO 190 J=1,4-ILD 
07561       TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J) 
07562   190 CONTINUE 
07563   200 CONTINUE 
07564       TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2 
07565       DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1 
07566       IF(TDS.LE.P(ILG,4)) GOTO 230 
07567       DO 210 J=1,4 
07568       P(ILG+1,J)=P(ILG,J) 
07569   210 CONTINUE 
07570   220 CONTINUE 
07571       ILG=N+NP+MSTU(44)+4 
07572   230 DO 240 J=1,3 
07573       P(ILG+1,J)=TDI(J) 
07574   240 CONTINUE 
07575       P(ILG+1,4)=TDS 
07576   250 CONTINUE 
07577  
07578 C...Iterate direction of axis until stable maximum. 
07579       P(N+NP+ILD,4)=0. 
07580       ILG=0 
07581   260 ILG=ILG+1 
07582       THP=0. 
07583   270 THPS=THP 
07584       DO 280 J=1,3 
07585       IF(THP.LE.1E-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J) 
07586       IF(THP.GT.1E-10) TDI(J)=TPR(J) 
07587       TPR(J)=0. 
07588   280 CONTINUE 
07589       DO 300 I=N+1,N+NP 
07590       SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3)) 
07591       DO 290 J=1,4-ILD 
07592       TPR(J)=TPR(J)+SGN*P(I,J) 
07593   290 CONTINUE 
07594   300 CONTINUE 
07595       THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS 
07596       IF(THP.GE.THPS+PARU(48)) GOTO 270 
07597  
07598 C...Save good axis. Try new initial axis until a number of tries agree. 
07599       IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260 
07600       IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN 
07601         IAGR=0 
07602         SGN=(-1.)**INT(RLU(0)+0.5) 
07603         DO 310 J=1,3 
07604         P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP) 
07605   310   CONTINUE 
07606         P(N+NP+ILD,4)=THP 
07607         P(N+NP+ILD,5)=0. 
07608       ENDIF 
07609       IAGR=IAGR+1 
07610       IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260 
07611   320 CONTINUE 
07612  
07613 C...Find minor axis and value by orthogonality. 
07614       SGN=(-1.)**INT(RLU(0)+0.5) 
07615       P(N+NP+3,1)=-SGN*P(N+NP+2,2) 
07616       P(N+NP+3,2)=SGN*P(N+NP+2,1) 
07617       P(N+NP+3,3)=0. 
07618       THP=0. 
07619       DO 330 I=N+1,N+NP 
07620       THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2)) 
07621   330 CONTINUE 
07622       P(N+NP+3,4)=THP/PS 
07623       P(N+NP+3,5)=0. 
07624  
07625 C...Fill axis information. Rotate back to original coordinate system. 
07626       DO 350 ILD=1,3 
07627       K(N+ILD,1)=31 
07628       K(N+ILD,2)=96 
07629       K(N+ILD,3)=ILD 
07630       K(N+ILD,4)=0 
07631       K(N+ILD,5)=0 
07632       DO 340 J=1,5 
07633       P(N+ILD,J)=P(N+NP+ILD,J) 
07634       V(N+ILD,J)=0. 
07635   340 CONTINUE 
07636   350 CONTINUE 
07637       CALL LUDBRB(N+1,N+3,THE,PHI,0D0,0D0,0D0) 
07638  
07639 C...Calculate thrust and oblateness. Select storing option. 
07640       THR=P(N+1,4) 
07641       OBL=P(N+2,4)-P(N+3,4) 
07642       MSTU(61)=N+1 
07643       MSTU(62)=NP 
07644       IF(MSTU(43).LE.1) MSTU(3)=3 
07645       IF(MSTU(43).GE.2) N=N+3 
07646  
07647       RETURN 
07648       END 
07649  
07650 C********************************************************************* 
07651  
07652       SUBROUTINE LUCLUS(NJET) 
07653  
07654 C...Purpose: to subdivide the particle content of an event into 
07655 C...jets/clusters. 
07656       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
07657       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
07658       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
07659       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
07660       DIMENSION PS(5) 
07661       SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM 
07662  
07663 C...Functions: distance measure in pT or (pseudo)mass. 
07664       R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)- 
07665      &P(I1,3)*P(I2,3))*2.*P(I1,5)*P(I2,5)/(0.0001+P(I1,5)+P(I2,5))**2 
07666       R2M(I1,I2)=2.*P(I1,4)*P(I2,4)*(1.-(P(I1,1)*P(I2,1)+P(I1,2)* 
07667      &P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5))) 
07668  
07669 C...If first time, reset. If reentering, skip preliminaries. 
07670       IF(MSTU(48).LE.0) THEN 
07671         NP=0 
07672         DO 100 J=1,5 
07673         PS(J)=0. 
07674   100   CONTINUE 
07675         PSS=0. 
07676       ELSE 
07677         NJET=NSAV 
07678         IF(MSTU(43).GE.2) N=N-NJET 
07679         DO 110 I=N+1,N+NJET 
07680         P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
07681   110   CONTINUE 
07682         IF(MSTU(46).LE.3) R2ACC=PARU(44)**2 
07683         IF(MSTU(46).GE.4) R2ACC=PARU(45)*PS(5)**2 
07684         NLOOP=0 
07685         GOTO 300 
07686       ENDIF 
07687  
07688 C...Find which particles are to be considered in cluster search. 
07689       DO 140 I=1,N 
07690       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140 
07691       IF(MSTU(41).GE.2) THEN 
07692         KC=LUCOMP(K(I,2)) 
07693         IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
07694      &  KC.EQ.18) GOTO 140 
07695         IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
07696      &  GOTO 140 
07697       ENDIF 
07698       IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN 
07699         CALL LUERRM(11,'(LUCLUS:) no more memory left in LUJETS') 
07700         NJET=-1 
07701         RETURN 
07702       ENDIF 
07703  
07704 C...Take copy of these particles, with space left for jets later on. 
07705       NP=NP+1 
07706       K(N+NP,3)=I 
07707       DO 120 J=1,5 
07708       P(N+NP,J)=P(I,J) 
07709   120 CONTINUE 
07710       IF(MSTU(42).EQ.0) P(N+NP,5)=0. 
07711       IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PMAS(101,1) 
07712       P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
07713       P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
07714       DO 130 J=1,4 
07715       PS(J)=PS(J)+P(N+NP,J) 
07716   130 CONTINUE 
07717       PSS=PSS+P(N+NP,5) 
07718   140 CONTINUE 
07719       DO 160 I=N+1,N+NP 
07720       K(I+NP,3)=K(I,3) 
07721       DO 150 J=1,5 
07722       P(I+NP,J)=P(I,J) 
07723   150 CONTINUE 
07724   160 CONTINUE 
07725       PS(5)=SQRT(MAX(0.,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2)) 
07726  
07727 C...Very low multiplicities not considered. 
07728       IF(NP.LT.MSTU(47)) THEN 
07729         CALL LUERRM(8,'(LUCLUS:) too few particles for analysis') 
07730         NJET=-1 
07731         RETURN 
07732       ENDIF 
07733  
07734 C...Find precluster configuration. If too few jets, make harder cuts. 
07735       NLOOP=0 
07736       IF(MSTU(46).LE.3) R2ACC=PARU(44)**2 
07737       IF(MSTU(46).GE.4) R2ACC=PARU(45)*PS(5)**2 
07738       RINIT=1.25*PARU(43) 
07739       IF(NP.LE.MSTU(47)+2) RINIT=0. 
07740   170 RINIT=0.8*RINIT 
07741       NPRE=0 
07742       NREM=NP 
07743       DO 180 I=N+NP+1,N+2*NP 
07744       K(I,4)=0 
07745   180 CONTINUE 
07746  
07747 C...Sum up small momentum region. Jet if enough absolute momentum. 
07748       IF(MSTU(46).LE.2) THEN 
07749         DO 190 J=1,4 
07750         P(N+1,J)=0. 
07751   190   CONTINUE 
07752         DO 210 I=N+NP+1,N+2*NP 
07753         IF(P(I,5).GT.2.*RINIT) GOTO 210 
07754         NREM=NREM-1 
07755         K(I,4)=1 
07756         DO 200 J=1,4 
07757         P(N+1,J)=P(N+1,J)+P(I,J) 
07758   200   CONTINUE 
07759   210   CONTINUE 
07760         P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2) 
07761         IF(P(N+1,5).GT.2.*RINIT) NPRE=1 
07762         IF(RINIT.GE.0.2*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170 
07763         IF(NREM.EQ.0) GOTO 170 
07764       ENDIF 
07765  
07766 C...Find fastest remaining particle. 
07767   220 NPRE=NPRE+1 
07768       PMAX=0. 
07769       DO 230 I=N+NP+1,N+2*NP 
07770       IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230 
07771       IMAX=I 
07772       PMAX=P(I,5) 
07773   230 CONTINUE 
07774       DO 240 J=1,5 
07775       P(N+NPRE,J)=P(IMAX,J) 
07776   240 CONTINUE 
07777       NREM=NREM-1 
07778       K(IMAX,4)=NPRE 
07779  
07780 C...Sum up precluster around it according to pT separation. 
07781       IF(MSTU(46).LE.2) THEN 
07782         DO 260 I=N+NP+1,N+2*NP 
07783         IF(K(I,4).NE.0) GOTO 260 
07784         R2=R2T(I,IMAX) 
07785         IF(R2.GT.RINIT**2) GOTO 260 
07786         NREM=NREM-1 
07787         K(I,4)=NPRE 
07788         DO 250 J=1,4 
07789         P(N+NPRE,J)=P(N+NPRE,J)+P(I,J) 
07790   250   CONTINUE 
07791   260   CONTINUE 
07792         P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2) 
07793  
07794 C...Sum up precluster around it according to mass separation. 
07795       ELSE 
07796   270   IMIN=0 
07797         R2MIN=RINIT**2 
07798         DO 280 I=N+NP+1,N+2*NP 
07799         IF(K(I,4).NE.0) GOTO 280 
07800         R2=R2M(I,N+NPRE) 
07801         IF(R2.GE.R2MIN) GOTO 280 
07802         IMIN=I 
07803         R2MIN=R2 
07804   280   CONTINUE 
07805         IF(IMIN.NE.0) THEN 
07806           DO 290 J=1,4 
07807           P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J) 
07808   290     CONTINUE 
07809           P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2) 
07810           NREM=NREM-1 
07811           K(IMIN,4)=NPRE 
07812           GOTO 270 
07813         ENDIF 
07814       ENDIF 
07815  
07816 C...Check if more preclusters to be found. Start over if too few. 
07817       IF(RINIT.GE.0.2*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170 
07818       IF(NREM.GT.0) GOTO 220 
07819       NJET=NPRE 
07820  
07821 C...Reassign all particles to nearest jet. Sum up new jet momenta. 
07822   300 TSAV=0. 
07823       PSJT=0. 
07824   310 IF(MSTU(46).LE.1) THEN 
07825         DO 330 I=N+1,N+NJET 
07826         DO 320 J=1,4 
07827         V(I,J)=0. 
07828   320   CONTINUE 
07829   330 CONTINUE 
07830         DO 360 I=N+NP+1,N+2*NP 
07831         R2MIN=PSS**2 
07832         DO 340 IJET=N+1,N+NJET 
07833         IF(P(IJET,5).LT.RINIT) GOTO 340 
07834         R2=R2T(I,IJET) 
07835         IF(R2.GE.R2MIN) GOTO 340 
07836         IMIN=IJET 
07837         R2MIN=R2 
07838   340   CONTINUE 
07839         K(I,4)=IMIN-N 
07840         DO 350 J=1,4 
07841         V(IMIN,J)=V(IMIN,J)+P(I,J) 
07842   350   CONTINUE 
07843   360   CONTINUE 
07844         PSJT=0. 
07845         DO 380 I=N+1,N+NJET 
07846         DO 370 J=1,4 
07847         P(I,J)=V(I,J) 
07848   370   CONTINUE 
07849         P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
07850         PSJT=PSJT+P(I,5) 
07851   380   CONTINUE 
07852       ENDIF 
07853  
07854 C...Find two closest jets. 
07855       R2MIN=2.*MAX(R2ACC,PS(5)**2) 
07856       DO 400 ITRY1=N+1,N+NJET-1 
07857       DO 390 ITRY2=ITRY1+1,N+NJET 
07858       IF(MSTU(46).LE.2) R2=R2T(ITRY1,ITRY2) 
07859       IF(MSTU(46).GE.3) R2=R2M(ITRY1,ITRY2) 
07860       IF(R2.GE.R2MIN) GOTO 390 
07861       IMIN1=ITRY1 
07862       IMIN2=ITRY2 
07863       R2MIN=R2 
07864   390 CONTINUE 
07865   400 CONTINUE 
07866  
07867 C...If allowed, join two closest jets and start over. 
07868       IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN 
07869         IREC=MIN(IMIN1,IMIN2) 
07870         IDEL=MAX(IMIN1,IMIN2) 
07871         DO 410 J=1,4 
07872         P(IREC,J)=P(IMIN1,J)+P(IMIN2,J) 
07873   410   CONTINUE 
07874         P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2) 
07875         DO 430 I=IDEL+1,N+NJET 
07876         DO 420 J=1,5 
07877         P(I-1,J)=P(I,J) 
07878   420   CONTINUE 
07879   430 CONTINUE 
07880         IF(MSTU(46).GE.2) THEN 
07881           DO 440 I=N+NP+1,N+2*NP 
07882           IORI=N+K(I,4) 
07883           IF(IORI.EQ.IDEL) K(I,4)=IREC-N 
07884           IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1 
07885   440     CONTINUE 
07886         ENDIF 
07887         NJET=NJET-1 
07888         GOTO 300 
07889  
07890 C...Divide up broad jet if empty cluster in list of final ones. 
07891       ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN 
07892         DO 450 I=N+1,N+NJET 
07893         K(I,5)=0 
07894   450   CONTINUE 
07895         DO 460 I=N+NP+1,N+2*NP 
07896         K(N+K(I,4),5)=K(N+K(I,4),5)+1 
07897   460   CONTINUE 
07898         IEMP=0 
07899         DO 470 I=N+1,N+NJET 
07900         IF(K(I,5).EQ.0) IEMP=I 
07901   470   CONTINUE 
07902         IF(IEMP.NE.0) THEN 
07903           NLOOP=NLOOP+1 
07904           ISPL=0 
07905           R2MAX=0. 
07906           DO 480 I=N+NP+1,N+2*NP 
07907           IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480 
07908           IJET=N+K(I,4) 
07909           R2=R2T(I,IJET) 
07910           IF(R2.LE.R2MAX) GOTO 480 
07911           ISPL=I 
07912           R2MAX=R2 
07913   480     CONTINUE 
07914           IF(ISPL.NE.0) THEN 
07915             IJET=N+K(ISPL,4) 
07916             DO 490 J=1,4 
07917             P(IEMP,J)=P(ISPL,J) 
07918             P(IJET,J)=P(IJET,J)-P(ISPL,J) 
07919   490       CONTINUE 
07920             P(IEMP,5)=P(ISPL,5) 
07921             P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2) 
07922             IF(NLOOP.LE.2) GOTO 300 
07923           ENDIF 
07924         ENDIF 
07925       ENDIF 
07926  
07927 C...If generalized thrust has not yet converged, continue iteration. 
07928       IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48)) 
07929      &THEN 
07930         TSAV=PSJT/PSS 
07931         GOTO 310 
07932       ENDIF 
07933  
07934 C...Reorder jets according to energy. 
07935       DO 510 I=N+1,N+NJET 
07936       DO 500 J=1,5 
07937       V(I,J)=P(I,J) 
07938   500 CONTINUE 
07939   510 CONTINUE 
07940       DO 540 INEW=N+1,N+NJET 
07941       PEMAX=0. 
07942       DO 520 ITRY=N+1,N+NJET 
07943       IF(V(ITRY,4).LE.PEMAX) GOTO 520 
07944       IMAX=ITRY 
07945       PEMAX=V(ITRY,4) 
07946   520 CONTINUE 
07947       K(INEW,1)=31 
07948       K(INEW,2)=97 
07949       K(INEW,3)=INEW-N 
07950       K(INEW,4)=0 
07951       DO 530 J=1,5 
07952       P(INEW,J)=V(IMAX,J) 
07953   530 CONTINUE 
07954       V(IMAX,4)=-1. 
07955       K(IMAX,5)=INEW 
07956   540 CONTINUE 
07957  
07958 C...Clean up particle-jet assignments and jet information. 
07959       DO 550 I=N+NP+1,N+2*NP 
07960       IORI=K(N+K(I,4),5) 
07961       K(I,4)=IORI-N 
07962       IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N 
07963       K(IORI,4)=K(IORI,4)+1 
07964   550 CONTINUE 
07965       IEMP=0 
07966       PSJT=0. 
07967       DO 570 I=N+1,N+NJET 
07968       K(I,5)=0 
07969       PSJT=PSJT+P(I,5) 
07970       P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0.)) 
07971       DO 560 J=1,5 
07972       V(I,J)=0. 
07973   560 CONTINUE 
07974       IF(K(I,4).EQ.0) IEMP=I 
07975   570 CONTINUE 
07976  
07977 C...Select storing option. Output variables. Check for failure. 
07978       MSTU(61)=N+1 
07979       MSTU(62)=NP 
07980       MSTU(63)=NPRE 
07981       PARU(61)=PS(5) 
07982       PARU(62)=PSJT/PSS 
07983       PARU(63)=SQRT(R2MIN) 
07984       IF(NJET.LE.1) PARU(63)=0. 
07985       IF(IEMP.NE.0) THEN 
07986         CALL LUERRM(8,'(LUCLUS:) failed to reconstruct as requested') 
07987         NJET=-1 
07988       ENDIF 
07989       IF(MSTU(43).LE.1) MSTU(3)=NJET 
07990       IF(MSTU(43).GE.2) N=N+NJET 
07991       NSAV=NJET 
07992  
07993       RETURN 
07994       END 
07995  
07996 C********************************************************************* 
07997  
07998       SUBROUTINE LUCELL(NJET) 
07999  
08000 C...Purpose: to provide a simple way of jet finding in an eta-phi-ET 
08001 C...coordinate frame, as used for calorimeters at hadron colliders. 
08002       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
08003       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
08004       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
08005       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
08006  
08007 C...Loop over all particles. Find cell that was hit by given particle. 
08008       PTLRAT=1./SINH(PARU(51))**2 
08009       NP=0 
08010       NC=N 
08011       DO 110 I=1,N 
08012       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110 
08013       IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110 
08014       IF(MSTU(41).GE.2) THEN 
08015         KC=LUCOMP(K(I,2)) 
08016         IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
08017      &  KC.EQ.18) GOTO 110 
08018         IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
08019      &  GOTO 110 
08020       ENDIF 
08021       NP=NP+1 
08022       PT=SQRT(P(I,1)**2+P(I,2)**2) 
08023       ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3)) 
08024       IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5*(ETA/PARU(51)+1.)))) 
08025       PHI=ULANGL(P(I,1),P(I,2)) 
08026       IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5*(PHI/PARU(1)+1.)))) 
08027       IETPH=MSTU(52)*IETA+IPHI 
08028  
08029 C...Add to cell already hit, or book new cell. 
08030       DO 100 IC=N+1,NC 
08031       IF(IETPH.EQ.K(IC,3)) THEN 
08032         K(IC,4)=K(IC,4)+1 
08033         P(IC,5)=P(IC,5)+PT 
08034         GOTO 110 
08035       ENDIF 
08036   100 CONTINUE 
08037       IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN 
08038         CALL LUERRM(11,'(LUCELL:) no more memory left in LUJETS') 
08039         NJET=-2 
08040         RETURN 
08041       ENDIF 
08042       NC=NC+1 
08043       K(NC,3)=IETPH 
08044       K(NC,4)=1 
08045       K(NC,5)=2 
08046       P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51)) 
08047       P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52)) 
08048       P(NC,5)=PT 
08049   110 CONTINUE 
08050  
08051 C...Smear true bin content by calorimeter resolution. 
08052       IF(MSTU(53).GE.1) THEN 
08053         DO 130 IC=N+1,NC 
08054         PEI=P(IC,5) 
08055         IF(MSTU(53).EQ.2) PEI=P(IC,5)/COSH(P(IC,1)) 
08056   120   PEF=PEI+PARU(55)*SQRT(-2.*LOG(MAX(1E-10,RLU(0)))*PEI)* 
08057      &  COS(PARU(2)*RLU(0)) 
08058         IF(PEF.LT.0..OR.PEF.GT.PARU(56)*PEI) GOTO 120 
08059         P(IC,5)=PEF 
08060         IF(MSTU(53).EQ.2) P(IC,5)=PEF*COSH(P(IC,1)) 
08061   130   CONTINUE 
08062       ENDIF 
08063  
08064 C...Remove cells below threshold. 
08065       IF(PARU(58).GT.0.) THEN 
08066         NCC=NC 
08067         NC=N 
08068         DO 140 IC=N+1,NCC 
08069         IF(P(IC,5).GT.PARU(58)) THEN 
08070           NC=NC+1 
08071           K(NC,3)=K(IC,3) 
08072           K(NC,4)=K(IC,4) 
08073           K(NC,5)=K(IC,5) 
08074           P(NC,1)=P(IC,1) 
08075           P(NC,2)=P(IC,2) 
08076           P(NC,5)=P(IC,5) 
08077         ENDIF 
08078   140   CONTINUE 
08079       ENDIF 
08080  
08081 C...Find initiator cell: the one with highest pT of not yet used ones. 
08082       NJ=NC 
08083   150 ETMAX=0. 
08084       DO 160 IC=N+1,NC 
08085       IF(K(IC,5).NE.2) GOTO 160 
08086       IF(P(IC,5).LE.ETMAX) GOTO 160 
08087       ICMAX=IC 
08088       ETA=P(IC,1) 
08089       PHI=P(IC,2) 
08090       ETMAX=P(IC,5) 
08091   160 CONTINUE 
08092       IF(ETMAX.LT.PARU(52)) GOTO 220 
08093       IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN 
08094         CALL LUERRM(11,'(LUCELL:) no more memory left in LUJETS') 
08095         NJET=-2 
08096         RETURN 
08097       ENDIF 
08098       K(ICMAX,5)=1 
08099       NJ=NJ+1 
08100       K(NJ,4)=0 
08101       K(NJ,5)=1 
08102       P(NJ,1)=ETA 
08103       P(NJ,2)=PHI 
08104       P(NJ,3)=0. 
08105       P(NJ,4)=0. 
08106       P(NJ,5)=0. 
08107  
08108 C...Sum up unused cells within required distance of initiator. 
08109       DO 170 IC=N+1,NC 
08110       IF(K(IC,5).EQ.0) GOTO 170 
08111       IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170 
08112       DPHIA=ABS(P(IC,2)-PHI) 
08113       IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170 
08114       PHIC=P(IC,2) 
08115       IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI) 
08116       IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170 
08117       K(IC,5)=-K(IC,5) 
08118       K(NJ,4)=K(NJ,4)+K(IC,4) 
08119       P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1) 
08120       P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC 
08121       P(NJ,5)=P(NJ,5)+P(IC,5) 
08122   170 CONTINUE 
08123  
08124 C...Reject cluster below minimum ET, else accept. 
08125       IF(P(NJ,5).LT.PARU(53)) THEN 
08126         NJ=NJ-1 
08127         DO 180 IC=N+1,NC 
08128         IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5) 
08129   180   CONTINUE 
08130       ELSEIF(MSTU(54).LE.2) THEN 
08131         P(NJ,3)=P(NJ,3)/P(NJ,5) 
08132         P(NJ,4)=P(NJ,4)/P(NJ,5) 
08133         IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2), 
08134      &  P(NJ,4)) 
08135         DO 190 IC=N+1,NC 
08136         IF(K(IC,5).LT.0) K(IC,5)=0 
08137   190   CONTINUE 
08138       ELSE 
08139         DO 200 J=1,4 
08140         P(NJ,J)=0. 
08141   200   CONTINUE 
08142         DO 210 IC=N+1,NC 
08143         IF(K(IC,5).GE.0) GOTO 210 
08144         P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2)) 
08145         P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2)) 
08146         P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1)) 
08147         P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1)) 
08148         K(IC,5)=0 
08149   210   CONTINUE 
08150       ENDIF 
08151       GOTO 150 
08152  
08153 C...Arrange clusters in falling ET sequence. 
08154   220 DO 250 I=1,NJ-NC 
08155       ETMAX=0. 
08156       DO 230 IJ=NC+1,NJ 
08157       IF(K(IJ,5).EQ.0) GOTO 230 
08158       IF(P(IJ,5).LT.ETMAX) GOTO 230 
08159       IJMAX=IJ 
08160       ETMAX=P(IJ,5) 
08161   230 CONTINUE 
08162       K(IJMAX,5)=0 
08163       K(N+I,1)=31 
08164       K(N+I,2)=98 
08165       K(N+I,3)=I 
08166       K(N+I,4)=K(IJMAX,4) 
08167       K(N+I,5)=0 
08168       DO 240 J=1,5 
08169       P(N+I,J)=P(IJMAX,J) 
08170       V(N+I,J)=0. 
08171   240 CONTINUE 
08172   250 CONTINUE 
08173       NJET=NJ-NC 
08174  
08175 C...Convert to massless or massive four-vectors. 
08176       IF(MSTU(54).EQ.2) THEN 
08177         DO 260 I=N+1,N+NJET 
08178         ETA=P(I,3) 
08179         P(I,1)=P(I,5)*COS(P(I,4)) 
08180         P(I,2)=P(I,5)*SIN(P(I,4)) 
08181         P(I,3)=P(I,5)*SINH(ETA) 
08182         P(I,4)=P(I,5)*COSH(ETA) 
08183         P(I,5)=0. 
08184   260   CONTINUE 
08185       ELSEIF(MSTU(54).GE.3) THEN 
08186         DO 270 I=N+1,N+NJET 
08187         P(I,5)=SQRT(MAX(0.,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2)) 
08188   270   CONTINUE 
08189       ENDIF 
08190  
08191 C...Information about storage. 
08192       MSTU(61)=N+1 
08193       MSTU(62)=NP 
08194       MSTU(63)=NC-N 
08195       IF(MSTU(43).LE.1) MSTU(3)=NJET 
08196       IF(MSTU(43).GE.2) N=N+NJET 
08197  
08198       RETURN 
08199       END 
08200  
08201 C********************************************************************* 
08202  
08203       SUBROUTINE LUJMAS(PMH,PML) 
08204  
08205 C...Purpose: to determine, approximately, the two jet masses that 
08206 C...minimize the sum m_H^2 + m_L^2, a la Clavelli and Wyler. 
08207       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
08208       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
08209       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
08210       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
08211       DIMENSION SM(3,3),SAX(3),PS(3,5) 
08212  
08213 C...Reset. 
08214       NP=0 
08215       DO 120 J1=1,3 
08216       DO 100 J2=J1,3 
08217       SM(J1,J2)=0. 
08218   100 CONTINUE 
08219       DO 110 J2=1,4 
08220       PS(J1,J2)=0. 
08221   110 CONTINUE 
08222   120 CONTINUE 
08223       PSS=0. 
08224  
08225 C...Take copy of particles that are to be considered in mass analysis. 
08226       DO 170 I=1,N 
08227       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170 
08228       IF(MSTU(41).GE.2) THEN 
08229         KC=LUCOMP(K(I,2)) 
08230         IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
08231      &  KC.EQ.18) GOTO 170 
08232         IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
08233      &  GOTO 170 
08234       ENDIF 
08235       IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN 
08236         CALL LUERRM(11,'(LUJMAS:) no more memory left in LUJETS') 
08237         PMH=-2. 
08238         PML=-2. 
08239         RETURN 
08240       ENDIF 
08241       NP=NP+1 
08242       DO 130 J=1,5 
08243       P(N+NP,J)=P(I,J) 
08244   130 CONTINUE 
08245       IF(MSTU(42).EQ.0) P(N+NP,5)=0. 
08246       IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PMAS(101,1) 
08247       P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
08248  
08249 C...Fill information in sphericity tensor and total momentum vector. 
08250       DO 150 J1=1,3 
08251       DO 140 J2=J1,3 
08252       SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2) 
08253   140 CONTINUE 
08254   150 CONTINUE 
08255       PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
08256       DO 160 J=1,4 
08257       PS(3,J)=PS(3,J)+P(N+NP,J) 
08258   160 CONTINUE 
08259   170 CONTINUE 
08260  
08261 C...Very low multiplicities (0 or 1) not considered. 
08262       IF(NP.LE.1) THEN 
08263         CALL LUERRM(8,'(LUJMAS:) too few particles for analysis') 
08264         PMH=-1. 
08265         PML=-1. 
08266         RETURN 
08267       ENDIF 
08268       PARU(61)=SQRT(MAX(0.,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-PS(3,3)**2)) 
08269  
08270 C...Find largest eigenvalue to matrix (third degree equation). 
08271       DO 190 J1=1,3 
08272       DO 180 J2=J1,3 
08273       SM(J1,J2)=SM(J1,J2)/PSS 
08274   180 CONTINUE 
08275   190 CONTINUE 
08276       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-SM(1,2)**2- 
08277      &SM(1,3)**2-SM(2,3)**2)/3.-1./9. 
08278       SR=-0.5*(SQ+1./9.+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+SM(3,3)* 
08279      &SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+SM(1,2)*SM(1,3)*SM(2,3)+1./27. 
08280       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1.),-1.))/3.) 
08281       SMA=1./3.+SQRT(-SQ)*MAX(2.*SP,SQRT(3.*(1.-SP**2))-SP) 
08282  
08283 C...Find largest eigenvector by solving equation system. 
08284       DO 210 J1=1,3 
08285       SM(J1,J1)=SM(J1,J1)-SMA 
08286       DO 200 J2=J1+1,3 
08287       SM(J2,J1)=SM(J1,J2) 
08288   200 CONTINUE 
08289   210 CONTINUE 
08290       SMAX=0. 
08291       DO 230 J1=1,3 
08292       DO 220 J2=1,3 
08293       IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220 
08294       JA=J1 
08295       JB=J2 
08296       SMAX=ABS(SM(J1,J2)) 
08297   220 CONTINUE 
08298   230 CONTINUE 
08299       SMAX=0. 
08300       DO 250 J3=JA+1,JA+2 
08301       J1=J3-3*((J3-1)/3) 
08302       RL=SM(J1,JB)/SM(JA,JB) 
08303       DO 240 J2=1,3 
08304       SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2) 
08305       IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240 
08306       JC=J1 
08307       SMAX=ABS(SM(J1,J2)) 
08308   240 CONTINUE 
08309   250 CONTINUE 
08310       JB1=JB+1-3*(JB/3) 
08311       JB2=JB+2-3*((JB+1)/3) 
08312       SAX(JB1)=-SM(JC,JB2) 
08313       SAX(JB2)=SM(JC,JB1) 
08314       SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB) 
08315  
08316 C...Divide particles into two initial clusters by hemisphere. 
08317       DO 270 I=N+1,N+NP 
08318       PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3) 
08319       IS=1 
08320       IF(PSAX.LT.0.) IS=2 
08321       K(I,3)=IS 
08322       DO 260 J=1,4 
08323       PS(IS,J)=PS(IS,J)+P(I,J) 
08324   260 CONTINUE 
08325   270 CONTINUE 
08326       PMS=MAX(1E-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+ 
08327      &MAX(1E-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2) 
08328  
08329 C...Reassign one particle at a time; find maximum decrease of m^2 sum. 
08330   280 PMD=0. 
08331       IM=0 
08332       DO 290 J=1,4 
08333       PS(3,J)=PS(1,J)-PS(2,J) 
08334   290 CONTINUE 
08335       DO 300 I=N+1,N+NP 
08336       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) 
08337       IF(K(I,3).EQ.1) PMDI=2.*(P(I,5)**2-PPS) 
08338       IF(K(I,3).EQ.2) PMDI=2.*(P(I,5)**2+PPS) 
08339       IF(PMDI.LT.PMD) THEN 
08340         PMD=PMDI 
08341         IM=I 
08342       ENDIF 
08343   300 CONTINUE 
08344  
08345 C...Loop back if significant reduction in sum of m^2. 
08346       IF(PMD.LT.-PARU(48)*PMS) THEN 
08347         PMS=PMS+PMD 
08348         IS=K(IM,3) 
08349         DO 310 J=1,4 
08350         PS(IS,J)=PS(IS,J)-P(IM,J) 
08351         PS(3-IS,J)=PS(3-IS,J)+P(IM,J) 
08352   310   CONTINUE 
08353         K(IM,3)=3-IS 
08354         GOTO 280 
08355       ENDIF 
08356  
08357 C...Final masses and output. 
08358       MSTU(61)=N+1 
08359       MSTU(62)=NP 
08360       PS(1,5)=SQRT(MAX(0.,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)) 
08361       PS(2,5)=SQRT(MAX(0.,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)) 
08362       PMH=MAX(PS(1,5),PS(2,5)) 
08363       PML=MIN(PS(1,5),PS(2,5)) 
08364  
08365       RETURN 
08366       END 
08367  
08368 C********************************************************************* 
08369  
08370       SUBROUTINE LUFOWO(H10,H20,H30,H40) 
08371  
08372 C...Purpose: to calculate the first few Fox-Wolfram moments. 
08373       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
08374       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
08375       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
08376       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
08377  
08378 C...Copy momenta for particles and calculate H0. 
08379       NP=0 
08380       H0=0. 
08381       HD=0. 
08382       DO 110 I=1,N 
08383       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110 
08384       IF(MSTU(41).GE.2) THEN 
08385         KC=LUCOMP(K(I,2)) 
08386         IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
08387      &  KC.EQ.18) GOTO 110 
08388         IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
08389      &  GOTO 110 
08390       ENDIF 
08391       IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN 
08392         CALL LUERRM(11,'(LUFOWO:) no more memory left in LUJETS') 
08393         H10=-1. 
08394         H20=-1. 
08395         H30=-1. 
08396         H40=-1. 
08397         RETURN 
08398       ENDIF 
08399       NP=NP+1 
08400       DO 100 J=1,3 
08401       P(N+NP,J)=P(I,J) 
08402   100 CONTINUE 
08403       P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2) 
08404       H0=H0+P(N+NP,4) 
08405       HD=HD+P(N+NP,4)**2 
08406   110 CONTINUE 
08407       H0=H0**2 
08408  
08409 C...Very low multiplicities (0 or 1) not considered. 
08410       IF(NP.LE.1) THEN 
08411         CALL LUERRM(8,'(LUFOWO:) too few particles for analysis') 
08412         H10=-1. 
08413         H20=-1. 
08414         H30=-1. 
08415         H40=-1. 
08416         RETURN 
08417       ENDIF 
08418  
08419 C...Calculate H1 - H4. 
08420       H10=0. 
08421       H20=0. 
08422       H30=0. 
08423       H40=0. 
08424       DO 130 I1=N+1,N+NP 
08425       DO 120 I2=I1+1,N+NP 
08426       CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/ 
08427      &(P(I1,4)*P(I2,4)) 
08428       H10=H10+P(I1,4)*P(I2,4)*CTHE 
08429       H20=H20+P(I1,4)*P(I2,4)*(1.5*CTHE**2-0.5) 
08430       H30=H30+P(I1,4)*P(I2,4)*(2.5*CTHE**3-1.5*CTHE) 
08431       H40=H40+P(I1,4)*P(I2,4)*(4.375*CTHE**4-3.75*CTHE**2+0.375) 
08432   120 CONTINUE 
08433   130 CONTINUE 
08434  
08435 C...Calculate H1/H0 - H4/H0. Output. 
08436       MSTU(61)=N+1 
08437       MSTU(62)=NP 
08438       H10=(HD+2.*H10)/H0 
08439       H20=(HD+2.*H20)/H0 
08440       H30=(HD+2.*H30)/H0 
08441       H40=(HD+2.*H40)/H0 
08442  
08443       RETURN 
08444       END 
08445  
08446 C********************************************************************* 
08447  
08448       SUBROUTINE LUTABU(MTABU) 
08449  
08450 C...Purpose: to evaluate various properties of an event, with 
08451 C...statistics accumulated during the course of the run and 
08452 C...printed at the end. 
08453       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
08454       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
08455       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
08456       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
08457       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/ 
08458       DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4), 
08459      &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4), 
08460      &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25), 
08461      &KFDM(8),KFDC(200,0:8),NPDC(200) 
08462       SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS, 
08463      &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA, 
08464      &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC 
08465       CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12 
08466       DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/, 
08467      &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0./,FM2FM/120*0./, 
08468      &NEVEE/0/,FE1EC/50*0./,FE2EC/50*0./,FE1EA/25*0./,FE2EA/25*0./, 
08469      &NEVDC/0/,NKFDC/0/,NREDC/0/ 
08470  
08471 C...Reset statistics on initial parton state. 
08472       IF(MTABU.EQ.10) THEN 
08473         NEVIS=0 
08474         NKFIS=0 
08475  
08476 C...Identify and order flavour content of initial state. 
08477       ELSEIF(MTABU.EQ.11) THEN 
08478         NEVIS=NEVIS+1 
08479         KFM1=2*IABS(MSTU(161)) 
08480         IF(MSTU(161).GT.0) KFM1=KFM1-1 
08481         KFM2=2*IABS(MSTU(162)) 
08482         IF(MSTU(162).GT.0) KFM2=KFM2-1 
08483         KFMN=MIN(KFM1,KFM2) 
08484         KFMX=MAX(KFM1,KFM2) 
08485         DO 100 I=1,NKFIS 
08486         IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN 
08487           IKFIS=-I 
08488           GOTO 110 
08489         ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND. 
08490      &  KFMX.LT.KFIS(I,2))) THEN 
08491           IKFIS=I 
08492           GOTO 110 
08493         ENDIF 
08494   100   CONTINUE 
08495         IKFIS=NKFIS+1 
08496   110   IF(IKFIS.LT.0) THEN 
08497           IKFIS=-IKFIS 
08498         ELSE 
08499           IF(NKFIS.GE.100) RETURN 
08500           DO 130 I=NKFIS,IKFIS,-1 
08501           KFIS(I+1,1)=KFIS(I,1) 
08502           KFIS(I+1,2)=KFIS(I,2) 
08503           DO 120 J=0,10 
08504           NPIS(I+1,J)=NPIS(I,J) 
08505   120     CONTINUE 
08506   130   CONTINUE 
08507           NKFIS=NKFIS+1 
08508           KFIS(IKFIS,1)=KFMN 
08509           KFIS(IKFIS,2)=KFMX 
08510           DO 140 J=0,10 
08511           NPIS(IKFIS,J)=0 
08512   140     CONTINUE 
08513         ENDIF 
08514         NPIS(IKFIS,0)=NPIS(IKFIS,0)+1 
08515  
08516 C...Count number of partons in initial state. 
08517         NP=0 
08518         DO 160 I=1,N 
08519         IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN 
08520         ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN 
08521         ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0) 
08522      &  THEN 
08523         ELSE 
08524           IM=I 
08525   150     IM=K(IM,3) 
08526           IF(IM.LE.0.OR.IM.GT.N) THEN 
08527             NP=NP+1 
08528           ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN 
08529             NP=NP+1 
08530           ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN 
08531           ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10).NE.0) 
08532      &    THEN 
08533           ELSE 
08534             GOTO 150 
08535           ENDIF 
08536         ENDIF 
08537   160   CONTINUE 
08538         NPCO=MAX(NP,1) 
08539         IF(NP.GE.6) NPCO=6 
08540         IF(NP.GE.8) NPCO=7 
08541         IF(NP.GE.11) NPCO=8 
08542         IF(NP.GE.16) NPCO=9 
08543         IF(NP.GE.26) NPCO=10 
08544         NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1 
08545         MSTU(62)=NP 
08546  
08547 C...Write statistics on initial parton state. 
08548       ELSEIF(MTABU.EQ.12) THEN 
08549         FAC=1./MAX(1,NEVIS) 
08550         WRITE(MSTU(11),5000) NEVIS 
08551         DO 170 I=1,NKFIS 
08552         KFMN=KFIS(I,1) 
08553         IF(KFMN.EQ.0) KFMN=KFIS(I,2) 
08554         KFM1=(KFMN+1)/2 
08555         IF(2*KFM1.EQ.KFMN) KFM1=-KFM1 
08556         CALL LUNAME(KFM1,CHAU) 
08557         CHIS(1)=CHAU(1:12) 
08558         IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?' 
08559         KFMX=KFIS(I,2) 
08560         IF(KFIS(I,1).EQ.0) KFMX=0 
08561         KFM2=(KFMX+1)/2 
08562         IF(2*KFM2.EQ.KFMX) KFM2=-KFM2 
08563         CALL LUNAME(KFM2,CHAU) 
08564         CHIS(2)=CHAU(1:12) 
08565         IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?' 
08566         WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0), 
08567      &  (NPIS(I,J)/FLOAT(NPIS(I,0)),J=1,10) 
08568   170   CONTINUE 
08569  
08570 C...Copy statistics on initial parton state into /LUJETS/. 
08571       ELSEIF(MTABU.EQ.13) THEN 
08572         FAC=1./MAX(1,NEVIS) 
08573         DO 190 I=1,NKFIS 
08574         KFMN=KFIS(I,1) 
08575         IF(KFMN.EQ.0) KFMN=KFIS(I,2) 
08576         KFM1=(KFMN+1)/2 
08577         IF(2*KFM1.EQ.KFMN) KFM1=-KFM1 
08578         KFMX=KFIS(I,2) 
08579         IF(KFIS(I,1).EQ.0) KFMX=0 
08580         KFM2=(KFMX+1)/2 
08581         IF(2*KFM2.EQ.KFMX) KFM2=-KFM2 
08582         K(I,1)=32 
08583         K(I,2)=99 
08584         K(I,3)=KFM1 
08585         K(I,4)=KFM2 
08586         K(I,5)=NPIS(I,0) 
08587         DO 180 J=1,5 
08588         P(I,J)=FAC*NPIS(I,J) 
08589         V(I,J)=FAC*NPIS(I,J+5) 
08590   180   CONTINUE 
08591   190   CONTINUE 
08592         N=NKFIS 
08593         DO 200 J=1,5 
08594         K(N+1,J)=0 
08595         P(N+1,J)=0. 
08596         V(N+1,J)=0. 
08597   200   CONTINUE 
08598         K(N+1,1)=32 
08599         K(N+1,2)=99 
08600         K(N+1,5)=NEVIS 
08601         MSTU(3)=1 
08602  
08603 C...Reset statistics on number of particles/partons. 
08604       ELSEIF(MTABU.EQ.20) THEN 
08605         NEVFS=0 
08606         NPRFS=0 
08607         NFIFS=0 
08608         NCHFS=0 
08609         NKFFS=0 
08610  
08611 C...Identify whether particle/parton is primary or not. 
08612       ELSEIF(MTABU.EQ.21) THEN 
08613         NEVFS=NEVFS+1 
08614         MSTU(62)=0 
08615         DO 260 I=1,N 
08616         IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260 
08617         MSTU(62)=MSTU(62)+1 
08618         KC=LUCOMP(K(I,2)) 
08619         MPRI=0 
08620         IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN 
08621           MPRI=1 
08622         ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN 
08623           MPRI=1 
08624         ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN 
08625           MPRI=1 
08626         ELSEIF(KC.EQ.0) THEN 
08627         ELSEIF(K(K(I,3),1).EQ.13) THEN 
08628           IM=K(K(I,3),3) 
08629           IF(IM.LE.0.OR.IM.GT.N) THEN 
08630             MPRI=1 
08631           ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN 
08632             MPRI=1 
08633           ENDIF 
08634         ELSEIF(KCHG(KC,2).EQ.0) THEN 
08635           KCM=LUCOMP(K(K(I,3),2)) 
08636           IF(KCM.NE.0) THEN 
08637             IF(KCHG(KCM,2).NE.0) MPRI=1 
08638           ENDIF 
08639         ENDIF 
08640         IF(KC.NE.0.AND.MPRI.EQ.1) THEN 
08641           IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1 
08642         ENDIF 
08643         IF(K(I,1).LE.10) THEN 
08644           NFIFS=NFIFS+1 
08645           IF(LUCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1 
08646         ENDIF 
08647  
08648 C...Fill statistics on number of particles/partons in event. 
08649         KFA=IABS(K(I,2)) 
08650         KFS=3-ISIGN(1,K(I,2))-MPRI 
08651         DO 210 IP=1,NKFFS 
08652         IF(KFA.EQ.KFFS(IP)) THEN 
08653           IKFFS=-IP 
08654           GOTO 220 
08655         ELSEIF(KFA.LT.KFFS(IP)) THEN 
08656           IKFFS=IP 
08657           GOTO 220 
08658         ENDIF 
08659   210   CONTINUE 
08660         IKFFS=NKFFS+1 
08661   220   IF(IKFFS.LT.0) THEN 
08662           IKFFS=-IKFFS 
08663         ELSE 
08664           IF(NKFFS.GE.400) RETURN 
08665           DO 240 IP=NKFFS,IKFFS,-1 
08666           KFFS(IP+1)=KFFS(IP) 
08667           DO 230 J=1,4 
08668           NPFS(IP+1,J)=NPFS(IP,J) 
08669   230     CONTINUE 
08670   240   CONTINUE 
08671           NKFFS=NKFFS+1 
08672           KFFS(IKFFS)=KFA 
08673           DO 250 J=1,4 
08674           NPFS(IKFFS,J)=0 
08675   250     CONTINUE 
08676         ENDIF 
08677         NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1 
08678   260   CONTINUE 
08679  
08680 C...Write statistics on particle/parton composition of events. 
08681       ELSEIF(MTABU.EQ.22) THEN 
08682         FAC=1./MAX(1,NEVFS) 
08683         WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS 
08684         DO 270 I=1,NKFFS 
08685         CALL LUNAME(KFFS(I),CHAU) 
08686         KC=LUCOMP(KFFS(I)) 
08687         MDCYF=0 
08688         IF(KC.NE.0) MDCYF=MDCY(KC,1) 
08689         WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4), 
08690      &  FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)) 
08691   270   CONTINUE 
08692  
08693 C...Copy particle/parton composition information into /LUJETS/. 
08694       ELSEIF(MTABU.EQ.23) THEN 
08695         FAC=1./MAX(1,NEVFS) 
08696         DO 290 I=1,NKFFS 
08697         K(I,1)=32 
08698         K(I,2)=99 
08699         K(I,3)=KFFS(I) 
08700         K(I,4)=0 
08701         K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4) 
08702         DO 280 J=1,4 
08703         P(I,J)=FAC*NPFS(I,J) 
08704         V(I,J)=0. 
08705   280   CONTINUE 
08706         P(I,5)=FAC*K(I,5) 
08707         V(I,5)=0. 
08708   290   CONTINUE 
08709         N=NKFFS 
08710         DO 300 J=1,5 
08711         K(N+1,J)=0 
08712         P(N+1,J)=0. 
08713         V(N+1,J)=0. 
08714   300   CONTINUE 
08715         K(N+1,1)=32 
08716         K(N+1,2)=99 
08717         K(N+1,5)=NEVFS 
08718         P(N+1,1)=FAC*NPRFS 
08719         P(N+1,2)=FAC*NFIFS 
08720         P(N+1,3)=FAC*NCHFS 
08721         MSTU(3)=1 
08722  
08723 C...Reset factorial moments statistics. 
08724       ELSEIF(MTABU.EQ.30) THEN 
08725         NEVFM=0 
08726         NMUFM=0 
08727         DO 330 IM=1,3 
08728         DO 320 IB=1,10 
08729         DO 310 IP=1,4 
08730         FM1FM(IM,IB,IP)=0. 
08731         FM2FM(IM,IB,IP)=0. 
08732   310   CONTINUE 
08733   320   CONTINUE 
08734   330   CONTINUE 
08735  
08736 C...Find particles to include, with (pion,pseudo)rapidity and azimuth. 
08737       ELSEIF(MTABU.EQ.31) THEN 
08738         NEVFM=NEVFM+1 
08739         NLOW=N+MSTU(3) 
08740         NUPP=NLOW 
08741         DO 410 I=1,N 
08742         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410 
08743         IF(MSTU(41).GE.2) THEN 
08744           KC=LUCOMP(K(I,2)) 
08745           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
08746      &    KC.EQ.18) GOTO 410 
08747           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
08748      &    GOTO 410 
08749         ENDIF 
08750         PMR=0. 
08751         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=ULMASS(211) 
08752         IF(MSTU(42).GE.2) PMR=P(I,5) 
08753         PR=MAX(1E-20,PMR**2+P(I,1)**2+P(I,2)**2) 
08754         YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR), 
08755      &  1E20)),P(I,3)) 
08756         IF(ABS(YETA).GT.PARU(57)) GOTO 410 
08757         PHI=ULANGL(P(I,1),P(I,2)) 
08758         IYETA=512.*(YETA+PARU(57))/(2.*PARU(57)) 
08759         IYETA=MAX(0,MIN(511,IYETA)) 
08760         IPHI=512.*(PHI+PARU(1))/PARU(2) 
08761         IPHI=MAX(0,MIN(511,IPHI)) 
08762         IYEP=0 
08763         DO 340 IB=0,9 
08764         IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2)) 
08765   340   CONTINUE 
08766  
08767 C...Order particles in (pseudo)rapidity and/or azimuth. 
08768         IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN 
08769           CALL LUERRM(11,'(LUTABU:) no more memory left in LUJETS') 
08770           RETURN 
08771         ENDIF 
08772         NUPP=NUPP+1 
08773         IF(NUPP.EQ.NLOW+1) THEN 
08774           K(NUPP,1)=IYETA 
08775           K(NUPP,2)=IPHI 
08776           K(NUPP,3)=IYEP 
08777         ELSE 
08778           DO 350 I1=NUPP-1,NLOW+1,-1 
08779           IF(IYETA.GE.K(I1,1)) GOTO 360 
08780           K(I1+1,1)=K(I1,1) 
08781   350     CONTINUE 
08782   360     K(I1+1,1)=IYETA 
08783           DO 370 I1=NUPP-1,NLOW+1,-1 
08784           IF(IPHI.GE.K(I1,2)) GOTO 380 
08785           K(I1+1,2)=K(I1,2) 
08786   370     CONTINUE 
08787   380     K(I1+1,2)=IPHI 
08788           DO 390 I1=NUPP-1,NLOW+1,-1 
08789           IF(IYEP.GE.K(I1,3)) GOTO 400 
08790           K(I1+1,3)=K(I1,3) 
08791   390     CONTINUE 
08792   400     K(I1+1,3)=IYEP 
08793         ENDIF 
08794   410   CONTINUE 
08795         K(NUPP+1,1)=2**10 
08796         K(NUPP+1,2)=2**10 
08797         K(NUPP+1,3)=4**10 
08798  
08799 C...Calculate sum of factorial moments in event. 
08800         DO 480 IM=1,3 
08801         DO 430 IB=1,10 
08802         DO 420 IP=1,4 
08803         FEVFM(IB,IP)=0. 
08804   420   CONTINUE 
08805   430   CONTINUE 
08806         DO 450 IB=1,10 
08807         IF(IM.LE.2) IBIN=2**(10-IB) 
08808         IF(IM.EQ.3) IBIN=4**(10-IB) 
08809         IAGR=K(NLOW+1,IM)/IBIN 
08810         NAGR=1 
08811         DO 440 I=NLOW+2,NUPP+1 
08812         ICUT=K(I,IM)/IBIN 
08813         IF(ICUT.EQ.IAGR) THEN 
08814           NAGR=NAGR+1 
08815         ELSE 
08816           IF(NAGR.EQ.1) THEN 
08817           ELSEIF(NAGR.EQ.2) THEN 
08818             FEVFM(IB,1)=FEVFM(IB,1)+2. 
08819           ELSEIF(NAGR.EQ.3) THEN 
08820             FEVFM(IB,1)=FEVFM(IB,1)+6. 
08821             FEVFM(IB,2)=FEVFM(IB,2)+6. 
08822           ELSEIF(NAGR.EQ.4) THEN 
08823             FEVFM(IB,1)=FEVFM(IB,1)+12. 
08824             FEVFM(IB,2)=FEVFM(IB,2)+24. 
08825             FEVFM(IB,3)=FEVFM(IB,3)+24. 
08826           ELSE 
08827             FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1.) 
08828             FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1.)*(NAGR-2.) 
08829             FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1.)*(NAGR-2.)*(NAGR-3.) 
08830             FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1.)*(NAGR-2.)*(NAGR-3.)* 
08831      &      (NAGR-4.) 
08832           ENDIF 
08833           IAGR=ICUT 
08834           NAGR=1 
08835         ENDIF 
08836   440   CONTINUE 
08837   450   CONTINUE 
08838  
08839 C...Add results to total statistics. 
08840         DO 470 IB=10,1,-1 
08841         DO 460 IP=1,4 
08842         IF(FEVFM(1,IP).LT.0.5) THEN 
08843           FEVFM(IB,IP)=0. 
08844         ELSEIF(IM.LE.2) THEN 
08845           FEVFM(IB,IP)=2.**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP) 
08846         ELSE 
08847           FEVFM(IB,IP)=4.**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP) 
08848         ENDIF 
08849         FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP) 
08850         FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2 
08851   460   CONTINUE 
08852   470   CONTINUE 
08853   480   CONTINUE 
08854         NMUFM=NMUFM+(NUPP-NLOW) 
08855         MSTU(62)=NUPP-NLOW 
08856  
08857 C...Write accumulated statistics on factorial moments. 
08858       ELSEIF(MTABU.EQ.32) THEN 
08859         FAC=1./MAX(1,NEVFM) 
08860         IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta' 
08861         IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi' 
08862         IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  ' 
08863         DO 510 IM=1,3 
08864         WRITE(MSTU(11),5500) 
08865         DO 500 IB=1,10 
08866         BYETA=2.*PARU(57) 
08867         IF(IM.NE.2) BYETA=BYETA/2**(IB-1) 
08868         BPHI=PARU(2) 
08869         IF(IM.NE.1) BPHI=BPHI/2**(IB-1) 
08870         IF(IM.LE.2) BNAVE=FAC*NMUFM/FLOAT(2**(IB-1)) 
08871         IF(IM.EQ.3) BNAVE=FAC*NMUFM/FLOAT(4**(IB-1)) 
08872         DO 490 IP=1,4 
08873         FMOMA(IP)=FAC*FM1FM(IM,IB,IP) 
08874         FMOMS(IP)=SQRT(MAX(0.,FAC*(FAC*FM2FM(IM,IB,IP)-FMOMA(IP)**2))) 
08875   490   CONTINUE 
08876         WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP), 
08877      &  IP=1,4) 
08878   500   CONTINUE 
08879   510   CONTINUE 
08880  
08881 C...Copy statistics on factorial moments into /LUJETS/. 
08882       ELSEIF(MTABU.EQ.33) THEN 
08883         FAC=1./MAX(1,NEVFM) 
08884         DO 540 IM=1,3 
08885         DO 530 IB=1,10 
08886         I=10*(IM-1)+IB 
08887         K(I,1)=32 
08888         K(I,2)=99 
08889         K(I,3)=1 
08890         IF(IM.NE.2) K(I,3)=2**(IB-1) 
08891         K(I,4)=1 
08892         IF(IM.NE.1) K(I,4)=2**(IB-1) 
08893         K(I,5)=0 
08894         P(I,1)=2.*PARU(57)/K(I,3) 
08895         V(I,1)=PARU(2)/K(I,4) 
08896         DO 520 IP=1,4 
08897         P(I,IP+1)=FAC*FM1FM(IM,IB,IP) 
08898         V(I,IP+1)=SQRT(MAX(0.,FAC*(FAC*FM2FM(IM,IB,IP)-P(I,IP+1)**2))) 
08899   520   CONTINUE 
08900   530   CONTINUE 
08901   540   CONTINUE 
08902         N=30 
08903         DO 550 J=1,5 
08904         K(N+1,J)=0 
08905         P(N+1,J)=0. 
08906         V(N+1,J)=0. 
08907   550   CONTINUE 
08908         K(N+1,1)=32 
08909         K(N+1,2)=99 
08910         K(N+1,5)=NEVFM 
08911         MSTU(3)=1 
08912  
08913 C...Reset statistics on Energy-Energy Correlation. 
08914       ELSEIF(MTABU.EQ.40) THEN 
08915         NEVEE=0 
08916         DO 560 J=1,25 
08917         FE1EC(J)=0. 
08918         FE2EC(J)=0. 
08919         FE1EC(51-J)=0. 
08920         FE2EC(51-J)=0. 
08921         FE1EA(J)=0. 
08922         FE2EA(J)=0. 
08923   560   CONTINUE 
08924  
08925 C...Find particles to include, with proper assumed mass. 
08926       ELSEIF(MTABU.EQ.41) THEN 
08927         NEVEE=NEVEE+1 
08928         NLOW=N+MSTU(3) 
08929         NUPP=NLOW 
08930         ECM=0. 
08931         DO 570 I=1,N 
08932         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570 
08933         IF(MSTU(41).GE.2) THEN 
08934           KC=LUCOMP(K(I,2)) 
08935           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR. 
08936      &    KC.EQ.18) GOTO 570 
08937           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0) 
08938      &    GOTO 570 
08939         ENDIF 
08940         PMR=0. 
08941         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=ULMASS(211) 
08942         IF(MSTU(42).GE.2) PMR=P(I,5) 
08943         IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN 
08944           CALL LUERRM(11,'(LUTABU:) no more memory left in LUJETS') 
08945           RETURN 
08946         ENDIF 
08947         NUPP=NUPP+1 
08948         P(NUPP,1)=P(I,1) 
08949         P(NUPP,2)=P(I,2) 
08950         P(NUPP,3)=P(I,3) 
08951         P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2) 
08952         P(NUPP,5)=MAX(1E-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)) 
08953         ECM=ECM+P(NUPP,4) 
08954   570   CONTINUE 
08955         IF(NUPP.EQ.NLOW) RETURN 
08956  
08957 C...Analyze Energy-Energy Correlation in event. 
08958         FAC=(2./ECM**2)*50./PARU(1) 
08959         DO 580 J=1,50 
08960         FEVEE(J)=0. 
08961   580   CONTINUE 
08962         DO 600 I1=NLOW+2,NUPP 
08963         DO 590 I2=NLOW+1,I1-1 
08964         CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/ 
08965      &  (P(I1,5)*P(I2,5)) 
08966         THE=ACOS(MAX(-1.,MIN(1.,CTHE))) 
08967         ITHE=MAX(1,MIN(50,1+INT(50.*THE/PARU(1)))) 
08968         FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4) 
08969   590   CONTINUE 
08970   600   CONTINUE 
08971         DO 610 J=1,25 
08972         FE1EC(J)=FE1EC(J)+FEVEE(J) 
08973         FE2EC(J)=FE2EC(J)+FEVEE(J)**2 
08974         FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J) 
08975         FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2 
08976         FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J)) 
08977         FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2 
08978   610   CONTINUE 
08979         MSTU(62)=NUPP-NLOW 
08980  
08981 C...Write statistics on Energy-Energy Correlation. 
08982       ELSEIF(MTABU.EQ.42) THEN 
08983         FAC=1./MAX(1,NEVEE) 
08984         WRITE(MSTU(11),5700) NEVEE 
08985         DO 620 J=1,25 
08986         FEEC1=FAC*FE1EC(J) 
08987         FEES1=SQRT(MAX(0.,FAC*(FAC*FE2EC(J)-FEEC1**2))) 
08988         FEEC2=FAC*FE1EC(51-J) 
08989         FEES2=SQRT(MAX(0.,FAC*(FAC*FE2EC(51-J)-FEEC2**2))) 
08990         FEECA=FAC*FE1EA(J) 
08991         FEESA=SQRT(MAX(0.,FAC*(FAC*FE2EA(J)-FEECA**2))) 
08992         WRITE(MSTU(11),5800) 3.6*(J-1),3.6*J,FEEC1,FEES1,FEEC2,FEES2, 
08993      &  FEECA,FEESA 
08994   620   CONTINUE 
08995  
08996 C...Copy statistics on Energy-Energy Correlation into /LUJETS/. 
08997       ELSEIF(MTABU.EQ.43) THEN 
08998         FAC=1./MAX(1,NEVEE) 
08999         DO 630 I=1,25 
09000         K(I,1)=32 
09001         K(I,2)=99 
09002         K(I,3)=0 
09003         K(I,4)=0 
09004         K(I,5)=0 
09005         P(I,1)=FAC*FE1EC(I) 
09006         V(I,1)=SQRT(MAX(0.,FAC*(FAC*FE2EC(I)-P(I,1)**2))) 
09007         P(I,2)=FAC*FE1EC(51-I) 
09008         V(I,2)=SQRT(MAX(0.,FAC*(FAC*FE2EC(51-I)-P(I,2)**2))) 
09009         P(I,3)=FAC*FE1EA(I) 
09010         V(I,3)=SQRT(MAX(0.,FAC*(FAC*FE2EA(I)-P(I,3)**2))) 
09011         P(I,4)=PARU(1)*(I-1)/50. 
09012         P(I,5)=PARU(1)*I/50. 
09013         V(I,4)=3.6*(I-1) 
09014         V(I,5)=3.6*I 
09015   630   CONTINUE 
09016         N=25 
09017         DO 640 J=1,5 
09018         K(N+1,J)=0 
09019         P(N+1,J)=0. 
09020         V(N+1,J)=0. 
09021   640   CONTINUE 
09022         K(N+1,1)=32 
09023         K(N+1,2)=99 
09024         K(N+1,5)=NEVEE 
09025         MSTU(3)=1 
09026  
09027 C...Reset statistics on decay channels. 
09028       ELSEIF(MTABU.EQ.50) THEN 
09029         NEVDC=0 
09030         NKFDC=0 
09031         NREDC=0 
09032  
09033 C...Identify and order flavour content of final state. 
09034       ELSEIF(MTABU.EQ.51) THEN 
09035         NEVDC=NEVDC+1 
09036         NDS=0 
09037         DO 670 I=1,N 
09038         IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670 
09039         NDS=NDS+1 
09040         IF(NDS.GT.8) THEN 
09041           NREDC=NREDC+1 
09042           RETURN 
09043         ENDIF 
09044         KFM=2*IABS(K(I,2)) 
09045         IF(K(I,2).LT.0) KFM=KFM-1 
09046         DO 650 IDS=NDS-1,1,-1 
09047         IIN=IDS+1 
09048         IF(KFM.LT.KFDM(IDS)) GOTO 660 
09049         KFDM(IDS+1)=KFDM(IDS) 
09050   650   CONTINUE 
09051         IIN=1 
09052   660   KFDM(IIN)=KFM 
09053   670   CONTINUE 
09054  
09055 C...Find whether old or new final state. 
09056         DO 690 IDC=1,NKFDC 
09057         IF(NDS.LT.KFDC(IDC,0)) THEN 
09058           IKFDC=IDC 
09059           GOTO 700 
09060         ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN 
09061           DO 680 I=1,NDS 
09062           IF(KFDM(I).LT.KFDC(IDC,I)) THEN 
09063             IKFDC=IDC 
09064             GOTO 700 
09065           ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN 
09066             GOTO 690 
09067           ENDIF 
09068   680     CONTINUE 
09069           IKFDC=-IDC 
09070           GOTO 700 
09071         ENDIF 
09072   690   CONTINUE 
09073         IKFDC=NKFDC+1 
09074   700   IF(IKFDC.LT.0) THEN 
09075           IKFDC=-IKFDC 
09076         ELSEIF(NKFDC.GE.200) THEN 
09077           NREDC=NREDC+1 
09078           RETURN 
09079         ELSE 
09080           DO 720 IDC=NKFDC,IKFDC,-1 
09081           NPDC(IDC+1)=NPDC(IDC) 
09082           DO 710 I=0,8 
09083           KFDC(IDC+1,I)=KFDC(IDC,I) 
09084   710     CONTINUE 
09085   720     CONTINUE 
09086           NKFDC=NKFDC+1 
09087           KFDC(IKFDC,0)=NDS 
09088           DO 730 I=1,NDS 
09089           KFDC(IKFDC,I)=KFDM(I) 
09090   730     CONTINUE 
09091           NPDC(IKFDC)=0 
09092         ENDIF 
09093         NPDC(IKFDC)=NPDC(IKFDC)+1 
09094  
09095 C...Write statistics on decay channels. 
09096       ELSEIF(MTABU.EQ.52) THEN 
09097         FAC=1./MAX(1,NEVDC) 
09098         WRITE(MSTU(11),5900) NEVDC 
09099         DO 750 IDC=1,NKFDC 
09100         DO 740 I=1,KFDC(IDC,0) 
09101         KFM=KFDC(IDC,I) 
09102         KF=(KFM+1)/2 
09103         IF(2*KF.NE.KFM) KF=-KF 
09104         CALL LUNAME(KF,CHAU) 
09105         CHDC(I)=CHAU(1:12) 
09106         IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?' 
09107   740   CONTINUE 
09108         WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0)) 
09109   750   CONTINUE 
09110         IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC 
09111  
09112 C...Copy statistics on decay channels into /LUJETS/. 
09113       ELSEIF(MTABU.EQ.53) THEN 
09114         FAC=1./MAX(1,NEVDC) 
09115         DO 780 IDC=1,NKFDC 
09116         K(IDC,1)=32 
09117         K(IDC,2)=99 
09118         K(IDC,3)=0 
09119         K(IDC,4)=0 
09120         K(IDC,5)=KFDC(IDC,0) 
09121         DO 760 J=1,5 
09122         P(IDC,J)=0. 
09123         V(IDC,J)=0. 
09124   760   CONTINUE 
09125         DO 770 I=1,KFDC(IDC,0) 
09126         KFM=KFDC(IDC,I) 
09127         KF=(KFM+1)/2 
09128         IF(2*KF.NE.KFM) KF=-KF 
09129         IF(I.LE.5) P(IDC,I)=KF 
09130         IF(I.GE.6) V(IDC,I-5)=KF 
09131   770   CONTINUE 
09132         V(IDC,5)=FAC*NPDC(IDC) 
09133   780   CONTINUE 
09134         N=NKFDC 
09135         DO 790 J=1,5 
09136         K(N+1,J)=0 
09137         P(N+1,J)=0. 
09138         V(N+1,J)=0. 
09139   790   CONTINUE 
09140         K(N+1,1)=32 
09141         K(N+1,2)=99 
09142         K(N+1,5)=NEVDC 
09143         V(N+1,5)=FAC*NREDC 
09144         MSTU(3)=1 
09145       ENDIF 
09146  
09147 C...Format statements for output on unit MSTU(11) (default 6). 
09148  5000 FORMAT(///20X,'Event statistics - initial state'/ 
09149      &20X,'based on an analysis of ',I6,' events'// 
09150      &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ', 
09151      &'according to fragmenting system multiplicity'/ 
09152      &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5', 
09153      &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/) 
09154  5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4) 
09155  5200 FORMAT(///20X,'Event statistics - final state'/ 
09156      &20X,'based on an analysis of ',I7,' events'// 
09157      &5X,'Mean primary multiplicity =',F10.4/ 
09158      &5X,'Mean final   multiplicity =',F10.4/ 
09159      &5X,'Mean charged multiplicity =',F10.4// 
09160      &5X,'Number of particles produced per event (directly and via ', 
09161      &'decays/branchings)'/ 
09162      &5X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles', 
09163      &8X,'Total'/35X,'prim        seco        prim        seco'/) 
09164  5300 FORMAT(1X,I6,4X,A16,I2,5(1X,F11.6)) 
09165  5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/ 
09166      &20X,'based on an analysis of ',I6,' events'// 
09167      &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>', 
09168      &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  ')) 
09169  5500 FORMAT(10X) 
09170  5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4)) 
09171  5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/ 
09172      &20X,'based on an analysis of ',I6,' events'// 
09173      &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X, 
09174      &'EECA(theta)'/2X,'in degrees ',3('      value    error')/) 
09175  5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4)) 
09176  5900 FORMAT(///20X,'Decay channel analysis - final state'/ 
09177      &20X,'based on an analysis of ',I6,' events'// 
09178      &2X,'Probability',10X,'Complete final state'/) 
09179  6000 FORMAT(2X,F9.5,5X,8(A12,1X)) 
09180  6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ', 
09181      &'or table overflow)') 
09182  
09183       RETURN 
09184       END 
09185  
09186 C********************************************************************* 
09187  
09188       SUBROUTINE LUEEVT(KFL,ECM) 
09189  
09190 C...Purpose: to handle the generation of an e+e- annihilation jet event. 
09191       IMPLICIT DOUBLE PRECISION(D) 
09192       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
09193       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
09194       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
09195       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
09196  
09197 C...Check input parameters. 
09198       IF(MSTU(12).GE.1) CALL LULIST(0) 
09199       IF(KFL.LT.0.OR.KFL.GT.8) THEN 
09200         CALL LUERRM(16,'(LUEEVT:) called with unknown flavour code') 
09201         IF(MSTU(21).GE.1) RETURN 
09202       ENDIF 
09203       IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02*PARF(100+MAX(1,KFL)) 
09204       IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02*PMAS(KFL,1) 
09205       IF(ECM.LT.ECMMIN) THEN 
09206         CALL LUERRM(16,'(LUEEVT:) called with too small CM energy') 
09207         IF(MSTU(21).GE.1) RETURN 
09208       ENDIF 
09209  
09210 C...Check consistency of MSTJ options set. 
09211       IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN 
09212         CALL LUERRM(6, 
09213      &  '(LUEEVT:) MSTJ(109) value requires MSTJ(110) = 1') 
09214         MSTJ(110)=1 
09215       ENDIF 
09216       IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN 
09217         CALL LUERRM(6, 
09218      &  '(LUEEVT:) MSTJ(109) value requires MSTJ(111) = 0') 
09219         MSTJ(111)=0 
09220       ENDIF 
09221  
09222 C...Initialize alpha_strong and total cross-section. 
09223       MSTU(111)=MSTJ(108) 
09224       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1)) 
09225      &MSTU(111)=1 
09226       PARU(112)=PARJ(121) 
09227       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122) 
09228       IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE. 
09229      &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL LUXTOT(KFL,ECM, 
09230      &XTOT) 
09231       IF(MSTJ(116).GE.3) MSTJ(116)=1 
09232       PARJ(171)=0. 
09233  
09234 C...Add initial e+e- to event record (documentation only). 
09235       NTRY=0 
09236   100 NTRY=NTRY+1 
09237       IF(NTRY.GT.100) THEN 
09238         CALL LUERRM(14,'(LUEEVT:) caught in an infinite loop') 
09239         RETURN 
09240       ENDIF 
09241       MSTU(24)=0 
09242       NC=0 
09243       IF(MSTJ(115).GE.2) THEN 
09244         NC=NC+2 
09245         CALL LU1ENT(NC-1,11,0.5*ECM,0.,0.) 
09246         K(NC-1,1)=21 
09247         CALL LU1ENT(NC,-11,0.5*ECM,PARU(1),0.) 
09248         K(NC,1)=21 
09249       ENDIF 
09250  
09251 C...Radiative photon (in initial state). 
09252       MK=0 
09253       ECMC=ECM 
09254       IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL LURADK(ECM,MK,PAK, 
09255      &THEK,PHIK,ALPK) 
09256       IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2.*PAK)) 
09257       IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN 
09258         NC=NC+1 
09259         CALL LU1ENT(NC,22,PAK,THEK,PHIK) 
09260         K(NC,3)=MIN(MSTJ(115)/2,1) 
09261       ENDIF 
09262  
09263 C...Virtual exchange boson (gamma or Z0). 
09264       IF(MSTJ(115).GE.3) THEN 
09265         NC=NC+1 
09266         KF=22 
09267         IF(MSTJ(102).EQ.2) KF=23 
09268         MSTU10=MSTU(10) 
09269         MSTU(10)=1 
09270         P(NC,5)=ECMC 
09271         CALL LU1ENT(NC,KF,ECMC,0.,0.) 
09272         K(NC,1)=21 
09273         K(NC,3)=1 
09274         MSTU(10)=MSTU10 
09275       ENDIF 
09276  
09277 C...Choice of flavour and jet configuration. 
09278       CALL LUXKFL(KFL,ECM,ECMC,KFLC) 
09279       IF(KFLC.EQ.0) GOTO 100 
09280       CALL LUXJET(ECMC,NJET,CUT) 
09281       KFLN=21 
09282       IF(NJET.EQ.4) CALL LUX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4, 
09283      &X12,X14) 
09284       IF(NJET.EQ.3) CALL LUX3JT(NJET,CUT,KFLC,ECMC,X1,X3) 
09285       IF(NJET.EQ.2) MSTJ(120)=1 
09286  
09287 C...Fill jet configuration and origin. 
09288       IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL LU2ENT(NC+1,KFLC,-KFLC,ECMC) 
09289       IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL LU2ENT(-(NC+1),KFLC,-KFLC, 
09290      &ECMC) 
09291       IF(NJET.EQ.3) CALL LU3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3) 
09292       IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL LU4ENT(NC+1,KFLC,KFLN,KFLN, 
09293      &-KFLC,ECMC,X1,X2,X4,X12,X14) 
09294       IF(NJET.EQ.4.AND.KFLN.NE.21) CALL LU4ENT(NC+1,KFLC,-KFLN,KFLN, 
09295      &-KFLC,ECMC,X1,X2,X4,X12,X14) 
09296       IF(MSTU(24).NE.0) GOTO 100 
09297       DO 110 IP=NC+1,N 
09298       K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1) 
09299   110 CONTINUE 
09300  
09301 C...Angular orientation according to matrix element. 
09302       IF(MSTJ(106).EQ.1) THEN 
09303         CALL LUXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI) 
09304         CALL LUDBRB(NC+1,N,0.,CHI,0D0,0D0,0D0) 
09305         CALL LUDBRB(NC+1,N,THE,PHI,0D0,0D0,0D0) 
09306       ENDIF 
09307  
09308 C...Rotation and boost from radiative photon. 
09309       IF(MK.EQ.1) THEN 
09310         DBEK=-PAK/(ECM-PAK) 
09311         NMIN=NC+1-MSTJ(115)/3 
09312         CALL LUDBRB(NMIN,N,0.,-PHIK,0D0,0D0,0D0) 
09313         CALL LUDBRB(NMIN,N,ALPK,0.,DBEK*SIN(THEK),0D0,DBEK*COS(THEK)) 
09314         CALL LUDBRB(NMIN,N,0.,PHIK,0D0,0D0,0D0) 
09315       ENDIF 
09316  
09317 C...Generate parton shower. Rearrange along strings and check. 
09318       IF(MSTJ(101).EQ.5) THEN 
09319         CALL LUSHOW(N-1,N,ECMC) 
09320         MSTJ14=MSTJ(14) 
09321         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1 
09322         IF(MSTJ(105).GE.0) MSTU(28)=0 
09323         CALL LUPREP(0) 
09324         MSTJ(14)=MSTJ14 
09325         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100 
09326       ENDIF 
09327  
09328 C...Fragmentation/decay generation. Information for LUTABU. 
09329       IF(MSTJ(105).EQ.1) CALL LUEXEC 
09330       MSTU(161)=KFLC 
09331       MSTU(162)=-KFLC 
09332  
09333       RETURN 
09334       END 
09335  
09336 C********************************************************************* 
09337  
09338       SUBROUTINE LUXTOT(KFL,ECM,XTOT) 
09339  
09340 C...Purpose: to calculate total cross-section, including initial 
09341 C...state radiation effects. 
09342       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
09343       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
09344       SAVE /LUDAT1/,/LUDAT2/ 
09345  
09346 C...Status, (optimized) Q^2 scale, alpha_strong. 
09347       PARJ(151)=ECM 
09348       MSTJ(119)=10*MSTJ(102)+KFL 
09349       IF(MSTJ(111).EQ.0) THEN 
09350         Q2R=ECM**2 
09351       ELSEIF(MSTU(111).EQ.0) THEN 
09352         PARJ(168)=MIN(1.,MAX(PARJ(128),EXP(-12.*PARU(1)/ 
09353      &  ((33.-2.*MSTU(112))*PARU(111))))) 
09354         Q2R=PARJ(168)*ECM**2 
09355       ELSE 
09356         PARJ(168)=MIN(1.,MAX(PARJ(128),PARU(112)/ECM, 
09357      &  (2.*PARU(112)/ECM)**2)) 
09358         Q2R=PARJ(168)*ECM**2 
09359       ENDIF 
09360       ALSPI=ULALPS(Q2R)/PARU(1) 
09361  
09362 C...QCD corrections factor in R. 
09363       IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN 
09364         RQCD=1. 
09365       ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN 
09366         RQCD=1.+ALSPI 
09367       ELSEIF(MSTJ(109).EQ.0) THEN 
09368         RQCD=1.+ALSPI+(1.986-0.115*MSTU(118))*ALSPI**2 
09369         IF(MSTJ(111).EQ.1) RQCD=MAX(1.,RQCD+(33.-2.*MSTU(112))/12.* 
09370      &  LOG(PARJ(168))*ALSPI**2) 
09371       ELSEIF(IABS(MSTJ(101)).EQ.1) THEN 
09372         RQCD=1.+(3./4.)*ALSPI 
09373       ELSE 
09374         RQCD=1.+(3./4.)*ALSPI-(3./32.+0.519*MSTU(118))*ALSPI**2 
09375       ENDIF 
09376  
09377 C...Calculate Z0 width if default value not acceptable. 
09378       IF(MSTJ(102).GE.3) THEN 
09379         RVA=3.*(3.+(4.*PARU(102)-1.)**2)+6.*RQCD*(2.+(1.-8.*PARU(102)/ 
09380      &  3.)**2+(4.*PARU(102)/3.-1.)**2) 
09381         DO 100 KFLC=5,6 
09382         VQ=1. 
09383         IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0.,1.-(2.*ULMASS(KFLC)/ 
09384      &  ECM)**2)) 
09385         IF(KFLC.EQ.5) VF=4.*PARU(102)/3.-1. 
09386         IF(KFLC.EQ.6) VF=1.-8.*PARU(102)/3. 
09387         RVA=RVA+3.*RQCD*(0.5*VQ*(3.-VQ**2)*VF**2+VQ**3) 
09388   100   CONTINUE 
09389         PARJ(124)=PARU(101)*PARJ(123)*RVA/(48.*PARU(102)*(1.-PARU(102))) 
09390       ENDIF 
09391  
09392 C...Calculate propagator and related constants for QFD case. 
09393       POLL=1.-PARJ(131)*PARJ(132) 
09394       IF(MSTJ(102).GE.2) THEN 
09395         SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
09396         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
09397         SFI=SFW*(1.-(PARJ(123)/ECM)**2) 
09398         VE=4.*PARU(102)-1. 
09399         SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131)) 
09400         SF1W=SFF**2*((VE**2+1.)*POLL+2.*VE*(PARJ(132)-PARJ(131))) 
09401         HF1I=SFI*SF1I 
09402         HF1W=SFW*SF1W 
09403       ENDIF 
09404  
09405 C...Loop over different flavours: charge, velocity. 
09406       RTOT=0. 
09407       RQQ=0. 
09408       RQV=0. 
09409       RVA=0. 
09410       DO 110 KFLC=1,MAX(MSTJ(104),KFL) 
09411       IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110 
09412       MSTJ(93)=1 
09413       PMQ=ULMASS(KFLC) 
09414       IF(ECM.LT.2.*PMQ+PARJ(127)) GOTO 110 
09415       QF=KCHG(KFLC,1)/3. 
09416       VQ=1. 
09417       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1.-(2.*PMQ/ECM)**2) 
09418  
09419 C...Calculate R and sum of charges for QED or QFD case. 
09420       RQQ=RQQ+3.*QF**2*POLL 
09421       IF(MSTJ(102).LE.1) THEN 
09422         RTOT=RTOT+3.*0.5*VQ*(3.-VQ**2)*QF**2*POLL 
09423       ELSE 
09424         VF=SIGN(1.,QF)-4.*QF*PARU(102) 
09425         RQV=RQV-6.*QF*VF*SF1I 
09426         RVA=RVA+3.*(VF**2+1.)*SF1W 
09427         RTOT=RTOT+3.*(0.5*VQ*(3.-VQ**2)*(QF**2*POLL-2.*QF*VF*HF1I+ 
09428      &  VF**2*HF1W)+VQ**3*HF1W) 
09429       ENDIF 
09430   110 CONTINUE 
09431       RSUM=RQQ 
09432       IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA 
09433  
09434 C...Calculate cross-section, including QCD corrections. 
09435       PARJ(141)=RQQ 
09436       PARJ(142)=RTOT 
09437       PARJ(143)=RTOT*RQCD 
09438       PARJ(144)=PARJ(143) 
09439       PARJ(145)=PARJ(141)*86.8/ECM**2 
09440       PARJ(146)=PARJ(142)*86.8/ECM**2 
09441       PARJ(147)=PARJ(143)*86.8/ECM**2 
09442       PARJ(148)=PARJ(147) 
09443       PARJ(157)=RSUM*RQCD 
09444       PARJ(158)=0. 
09445       PARJ(159)=0. 
09446       XTOT=PARJ(147) 
09447       IF(MSTJ(107).LE.0) RETURN 
09448  
09449 C...Virtual cross-section. 
09450       XKL=PARJ(135) 
09451       XKU=MIN(PARJ(136),1.-(2.*PARJ(127)/ECM)**2) 
09452       ALE=2.*LOG(ECM/ULMASS(11))-1. 
09453       SIGV=ALE/3.+2.*LOG(ECM**2/(ULMASS(13)*ULMASS(15)))/3.-4./3.+ 
09454      &1.526*LOG(ECM**2/0.932) 
09455  
09456 C...Soft and hard radiative cross-section in QED case. 
09457       IF(MSTJ(102).LE.1) THEN 
09458         SIGV=1.5*ALE-0.5+PARU(1)**2/3.+2.*SIGV 
09459         SIGS=ALE*(2.*LOG(XKL)-LOG(1.-XKL)-XKL) 
09460         SIGH=ALE*(2.*LOG(XKU/XKL)-LOG((1.-XKU)/(1.-XKL))-(XKU-XKL)) 
09461  
09462 C...Soft and hard radiative cross-section in QFD case. 
09463       ELSE 
09464         SZM=1.-(PARJ(123)/ECM)**2 
09465         SZW=PARJ(123)*PARJ(124)/ECM**2 
09466         PARJ(161)=-RQQ/RSUM 
09467         PARJ(162)=-(RQQ+RQV+RVA)/RSUM 
09468         PARJ(163)=(RQV*(1.-0.5*SZM-SFI)+RVA*(1.5-SZM-SFW))/RSUM 
09469         PARJ(164)=(RQV*SZW**2*(1.-2.*SFW)+RVA*(2.*SFI+SZW**2-4.+3.*SZM- 
09470      &  SZM**2))/(SZW*RSUM) 
09471         SIGV=1.5*ALE-0.5+PARU(1)**2/3.+((2.*RQQ+SFI*RQV)/RSUM)*SIGV+ 
09472      &  (SZW*SFW*RQV/RSUM)*PARU(1)*20./9. 
09473         SIGS=ALE*(2.*LOG(XKL)+PARJ(161)*LOG(1.-XKL)+PARJ(162)*XKL+ 
09474      &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+ 
09475      &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW))) 
09476         SIGH=ALE*(2.*LOG(XKU/XKL)+PARJ(161)*LOG((1.-XKU)/(1.-XKL))+ 
09477      &  PARJ(162)*(XKU-XKL)+PARJ(163)*LOG(((XKU-SZM)**2+SZW**2)/ 
09478      &  ((XKL-SZM)**2+SZW**2))+PARJ(164)*(ATAN((XKU-SZM)/SZW)- 
09479      &  ATAN((XKL-SZM)/SZW))) 
09480       ENDIF 
09481  
09482 C...Total cross-section and fraction of hard photon events. 
09483       PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH) 
09484       PARJ(157)=RSUM*(1.+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD 
09485       PARJ(144)=PARJ(157) 
09486       PARJ(148)=PARJ(144)*86.8/ECM**2 
09487       XTOT=PARJ(148) 
09488  
09489       RETURN 
09490       END 
09491  
09492 C********************************************************************* 
09493  
09494       SUBROUTINE LURADK(ECM,MK,PAK,THEK,PHIK,ALPK) 
09495  
09496 C...Purpose: to generate initial state photon radiation. 
09497       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
09498       SAVE /LUDAT1/ 
09499  
09500 C...Function: cumulative hard photon spectrum in QFD case. 
09501       FXK(XX)=2.*LOG(XX)+PARJ(161)*LOG(1.-XX)+PARJ(162)*XX+ 
09502      &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW) 
09503  
09504 C...Determine whether radiative photon or not. 
09505       MK=0 
09506       PAK=0. 
09507       IF(PARJ(160).LT.RLU(0)) RETURN 
09508       MK=1 
09509  
09510 C...Photon energy range. Find photon momentum in QED case. 
09511       XKL=PARJ(135) 
09512       XKU=MIN(PARJ(136),1.-(2.*PARJ(127)/ECM)**2) 
09513       IF(MSTJ(102).LE.1) THEN 
09514   100   XK=1./(1.+(1./XKL-1.)*((1./XKU-1.)/(1./XKL-1.))**RLU(0)) 
09515         IF(1.+(1.-XK)**2.LT.2.*RLU(0)) GOTO 100 
09516  
09517 C...Ditto in QFD case, by numerical inversion of integrated spectrum. 
09518       ELSE 
09519         SZM=1.-(PARJ(123)/ECM)**2 
09520         SZW=PARJ(123)*PARJ(124)/ECM**2 
09521         FXKL=FXK(XKL) 
09522         FXKU=FXK(XKU) 
09523         FXKD=1E-4*(FXKU-FXKL) 
09524         FXKR=FXKL+RLU(0)*(FXKU-FXKL) 
09525         NXK=0 
09526   110   NXK=NXK+1 
09527         XK=0.5*(XKL+XKU) 
09528         FXKV=FXK(XK) 
09529         IF(FXKV.GT.FXKR) THEN 
09530           XKU=XK 
09531           FXKU=FXKV 
09532         ELSE 
09533           XKL=XK 
09534           FXKL=FXKV 
09535         ENDIF 
09536         IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110 
09537         XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL) 
09538       ENDIF 
09539       PAK=0.5*ECM*XK 
09540  
09541 C...Photon polar and azimuthal angle. 
09542       PME=2.*(ULMASS(11)/ECM)**2 
09543   120 CTHM=PME*(2./PME)**RLU(0) 
09544       IF(1.-(XK**2*CTHM*(1.-0.5*CTHM)+2.*(1.-XK)*PME/MAX(PME, 
09545      &CTHM*(1.-0.5*CTHM)))/(1.+(1.-XK)**2).LT.RLU(0)) GOTO 120 
09546       CTHE=1.-CTHM 
09547       IF(RLU(0).GT.0.5) CTHE=-CTHE 
09548       STHE=SQRT(MAX(0.,(CTHM-PME)*(2.-CTHM))) 
09549       THEK=ULANGL(CTHE,STHE) 
09550       PHIK=PARU(2)*RLU(0) 
09551  
09552 C...Rotation angle for hadronic system. 
09553       SGN=1. 
09554       IF(0.5*(2.-XK*(1.-CTHE))**2/((2.-XK)**2+(XK*CTHE)**2).GT. 
09555      &RLU(0)) SGN=-1. 
09556       ALPK=ASIN(SGN*STHE*(XK-SGN*(2.*SQRT(1.-XK)-2.+XK)*CTHE)/ 
09557      &(2.-XK*(1.-SGN*CTHE))) 
09558  
09559       RETURN 
09560       END 
09561  
09562 C********************************************************************* 
09563  
09564       SUBROUTINE LUXKFL(KFL,ECM,ECMC,KFLC) 
09565  
09566 C...Purpose: to select flavour for produced qqbar pair. 
09567       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
09568       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
09569       SAVE /LUDAT1/,/LUDAT2/ 
09570  
09571 C...Calculate maximum weight in QED or QFD case. 
09572       IF(MSTJ(102).LE.1) THEN 
09573         RFMAX=4./9. 
09574       ELSE 
09575         POLL=1.-PARJ(131)*PARJ(132) 
09576         SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
09577         SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
09578         SFI=SFW*(1.-(PARJ(123)/ECMC)**2) 
09579         VE=4.*PARU(102)-1. 
09580         HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131)) 
09581         HF1W=SFW*SFF**2*((VE**2+1.)*POLL+2.*VE*(PARJ(132)-PARJ(131))) 
09582         RFMAX=MAX(4./9.*POLL-4./3.*(1.-8.*PARU(102)/3.)*HF1I+ 
09583      &  ((1.-8.*PARU(102)/3.)**2+1.)*HF1W,1./9.*POLL+2./3.* 
09584      &  (-1.+4.*PARU(102)/3.)*HF1I+((-1.+4.*PARU(102)/3.)**2+1.)*HF1W) 
09585       ENDIF 
09586  
09587 C...Choose flavour. Gives charge and velocity. 
09588       NTRY=0 
09589   100 NTRY=NTRY+1 
09590       IF(NTRY.GT.100) THEN 
09591         CALL LUERRM(14,'(LUXKFL:) caught in an infinite loop') 
09592         KFLC=0 
09593         RETURN 
09594       ENDIF 
09595       KFLC=KFL 
09596       IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*RLU(0)) 
09597       MSTJ(93)=1 
09598       PMQ=ULMASS(KFLC) 
09599       IF(ECM.LT.2.*PMQ+PARJ(127)) GOTO 100 
09600       QF=KCHG(KFLC,1)/3. 
09601       VQ=1. 
09602       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0.,1.-(2.*PMQ/ECMC)**2)) 
09603  
09604 C...Calculate weight in QED or QFD case. 
09605       IF(MSTJ(102).LE.1) THEN 
09606         RF=QF**2 
09607         RFV=0.5*VQ*(3.-VQ**2)*QF**2 
09608       ELSE 
09609         VF=SIGN(1.,QF)-4.*QF*PARU(102) 
09610         RF=QF**2*POLL-2.*QF*VF*HF1I+(VF**2+1.)*HF1W 
09611         RFV=0.5*VQ*(3.-VQ**2)*(QF**2*POLL-2.*QF*VF*HF1I+VF**2*HF1W)+ 
09612      &  VQ**3*HF1W 
09613         IF(RFV.GT.0.) PARJ(171)=MIN(1.,VQ**3*HF1W/RFV) 
09614       ENDIF 
09615  
09616 C...Weighting or new event (radiative photon). Cross-section update. 
09617       IF(KFL.LE.0.AND.RF.LT.RLU(0)*RFMAX) GOTO 100 
09618       PARJ(158)=PARJ(158)+1. 
09619       IF(ECMC.LT.2.*PMQ+PARJ(127).OR.RFV.LT.RLU(0)*RF) KFLC=0 
09620       IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100 
09621       IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1. 
09622       PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158) 
09623       PARJ(148)=PARJ(144)*86.8/ECM**2 
09624  
09625       RETURN 
09626       END 
09627  
09628 C********************************************************************* 
09629  
09630       SUBROUTINE LUXJET(ECM,NJET,CUT) 
09631  
09632 C...Purpose: to select number of jets in matrix element approach. 
09633       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
09634       SAVE /LUDAT1/ 
09635       DIMENSION ZHUT(5) 
09636  
09637 C...Relative three-jet rate in Zhu second order parametrization. 
09638       DATA ZHUT/3.0922, 6.2291, 7.4782, 7.8440, 8.2560/ 
09639  
09640 C...Trivial result for two-jets only, including parton shower. 
09641       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN 
09642         CUT=0. 
09643  
09644 C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R. 
09645       ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN 
09646         CF=4./3. 
09647         IF(MSTJ(109).EQ.2) CF=1. 
09648         IF(MSTJ(111).EQ.0) THEN 
09649           Q2=ECM**2 
09650           Q2R=ECM**2 
09651         ELSEIF(MSTU(111).EQ.0) THEN 
09652           PARJ(169)=MIN(1.,PARJ(129)) 
09653           Q2=PARJ(169)*ECM**2 
09654           PARJ(168)=MIN(1.,MAX(PARJ(128),EXP(-12.*PARU(1)/ 
09655      &    ((33.-2.*MSTU(112))*PARU(111))))) 
09656           Q2R=PARJ(168)*ECM**2 
09657         ELSE 
09658           PARJ(169)=MIN(1.,MAX(PARJ(129),(2.*PARU(112)/ECM)**2)) 
09659           Q2=PARJ(169)*ECM**2 
09660           PARJ(168)=MIN(1.,MAX(PARJ(128),PARU(112)/ECM, 
09661      &    (2.*PARU(112)/ECM)**2)) 
09662           Q2R=PARJ(168)*ECM**2 
09663         ENDIF 
09664  
09665 C...alpha_strong for R and R itself. 
09666         ALSPI=(3./4.)*CF*ULALPS(Q2R)/PARU(1) 
09667         IF(IABS(MSTJ(101)).EQ.1) THEN 
09668           RQCD=1.+ALSPI 
09669         ELSEIF(MSTJ(109).EQ.0) THEN 
09670           RQCD=1.+ALSPI+(1.986-0.115*MSTU(118))*ALSPI**2 
09671           IF(MSTJ(111).EQ.1) RQCD=MAX(1.,RQCD+(33.-2.*MSTU(112))/12.* 
09672      &    LOG(PARJ(168))*ALSPI**2) 
09673         ELSE 
09674           RQCD=1.+ALSPI-(3./32.+0.519*MSTU(118))*(4.*ALSPI/3.)**2 
09675         ENDIF 
09676  
09677 C...alpha_strong for jet rate. Initial value for y cut. 
09678         ALSPI=(3./4.)*CF*ULALPS(Q2)/PARU(1) 
09679         CUT=MAX(0.001,PARJ(125),(PARJ(126)/ECM)**2) 
09680         IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0)) 
09681      &  CUT=MAX(CUT,EXP(-SQRT(0.75/ALSPI))/2.) 
09682         IF(MSTJ(110).EQ.2) CUT=MAX(0.01,MIN(0.05,CUT)) 
09683  
09684 C...Parametrization of first order three-jet cross-section. 
09685   100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25) THEN 
09686           PARJ(152)=0. 
09687         ELSE 
09688           PARJ(152)=(2.*ALSPI/3.)*((3.-6.*CUT+2.*LOG(CUT))* 
09689      &    LOG(CUT/(1.-2.*CUT))+(2.5+1.5*CUT-6.571)*(1.-3.*CUT)+ 
09690      &    5.833*(1.-3.*CUT)**2-3.894*(1.-3.*CUT)**3+ 
09691      &    1.342*(1.-3.*CUT)**4)/RQCD 
09692           IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2)) 
09693      &    PARJ(152)=0. 
09694         ENDIF 
09695  
09696 C...Parametrization of second order three-jet cross-section. 
09697         IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR. 
09698      &  CUT.GE.0.25) THEN 
09699           PARJ(153)=0. 
09700         ELSEIF(MSTJ(110).LE.1) THEN 
09701           CT=LOG(1./CUT-2.) 
09702           PARJ(153)=ALSPI**2*CT**2*(2.419+0.5989*CT+0.6782*CT**2- 
09703      &    0.2661*CT**3+0.01159*CT**4)/RQCD 
09704  
09705 C...Interpolation in second/first order ratio for Zhu parametrization. 
09706         ELSEIF(MSTJ(110).EQ.2) THEN 
09707           IZA=0 
09708           DO 110 IY=1,5 
09709           IF(ABS(CUT-0.01*IY).LT.0.0001) IZA=IY 
09710   110     CONTINUE 
09711           IF(IZA.NE.0) THEN 
09712             ZHURAT=ZHUT(IZA) 
09713           ELSE 
09714             IZ=100.*CUT 
09715             ZHURAT=ZHUT(IZ)+(100.*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ)) 
09716           ENDIF 
09717           PARJ(153)=ALSPI*PARJ(152)*ZHURAT 
09718         ENDIF 
09719  
09720 C...Shift in second order three-jet cross-section with optimized Q^2. 
09721         IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3. 
09722      &  AND.CUT.LT.0.25) PARJ(153)=PARJ(153)+(33.-2.*MSTU(112))/12.* 
09723      &  LOG(PARJ(169))*ALSPI*PARJ(152) 
09724  
09725 C...Parametrization of second order four-jet cross-section. 
09726         IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125) THEN 
09727           PARJ(154)=0. 
09728         ELSE 
09729           CT=LOG(1./CUT-5.) 
09730           IF(CUT.LE.0.018) THEN 
09731             XQQGG=6.349-4.330*CT+0.8304*CT**2 
09732             IF(MSTJ(109).EQ.2) XQQGG=(4./3.)**2*(3.035-2.091*CT+ 
09733      &      0.4059*CT**2) 
09734             XQQQQ=1.25*(-0.1080+0.01486*CT+0.009364*CT**2) 
09735             IF(MSTJ(109).EQ.2) XQQQQ=8.*XQQQQ 
09736           ELSE 
09737             XQQGG=-0.09773+0.2959*CT-0.2764*CT**2+0.08832*CT**3 
09738             IF(MSTJ(109).EQ.2) XQQGG=(4./3.)**2*(-0.04079+0.1340*CT- 
09739      &      0.1326*CT**2+0.04365*CT**3) 
09740             XQQQQ=1.25*(0.003661-0.004888*CT-0.001081*CT**2+0.002093* 
09741      &      CT**3) 
09742             IF(MSTJ(109).EQ.2) XQQQQ=8.*XQQQQ 
09743           ENDIF 
09744           PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD 
09745           PARJ(155)=XQQQQ/(XQQGG+XQQQQ) 
09746         ENDIF 
09747  
09748 C...If negative three-jet rate, change y' optimization parameter. 
09749         IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0..AND. 
09750      &  PARJ(169).LT.0.99) THEN 
09751           PARJ(169)=MIN(1.,1.2*PARJ(169)) 
09752           Q2=PARJ(169)*ECM**2 
09753           ALSPI=(3./4.)*CF*ULALPS(Q2)/PARU(1) 
09754           GOTO 100 
09755         ENDIF 
09756  
09757 C...If too high cross-section, use harder cuts, or fail. 
09758         IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN 
09759           IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499.AND.MSTJ(111).EQ.1.AND. 
09760      &    PARJ(169).LT.0.99) THEN 
09761             PARJ(169)=MIN(1.,1.2*PARJ(169)) 
09762             Q2=PARJ(169)*ECM**2 
09763             ALSPI=(3./4.)*CF*ULALPS(Q2)/PARU(1) 
09764             GOTO 100 
09765           ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499) THEN 
09766             CALL LUERRM(26, 
09767      &      '(LUXJET:) no allowed y cut value for Zhu parametrization') 
09768           ENDIF 
09769           CUT=0.26*(4.*CUT)**(PARJ(152)+PARJ(153)+PARJ(154))**(-1./3.) 
09770           IF(MSTJ(110).EQ.2) CUT=MAX(0.01,MIN(0.05,CUT)) 
09771           GOTO 100 
09772         ENDIF 
09773  
09774 C...Scalar gluon (first order only). 
09775       ELSE 
09776         ALSPI=ULALPS(ECM**2)/PARU(1) 
09777         CUT=MAX(0.001,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3./ALSPI)) 
09778         PARJ(152)=0. 
09779         IF(CUT.LT.0.25) PARJ(152)=(ALSPI/3.)*((1.-2.*CUT)* 
09780      &  LOG((1.-2.*CUT)/CUT)+0.5*(9.*CUT**2-1.)) 
09781         PARJ(153)=0. 
09782         PARJ(154)=0. 
09783       ENDIF 
09784  
09785 C...Select number of jets. 
09786       PARJ(150)=CUT 
09787       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN 
09788         NJET=2 
09789       ELSEIF(MSTJ(101).LE.0) THEN 
09790         NJET=MIN(4,2-MSTJ(101)) 
09791       ELSE 
09792         RNJ=RLU(0) 
09793         NJET=2 
09794         IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3 
09795         IF(PARJ(154).GT.RNJ) NJET=4 
09796       ENDIF 
09797  
09798       RETURN 
09799       END 
09800  
09801 C********************************************************************* 
09802  
09803       SUBROUTINE LUX3JT(NJET,CUT,KFL,ECM,X1,X2) 
09804  
09805 C...Purpose: to select the kinematical variables of three-jet events. 
09806       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
09807       SAVE /LUDAT1/ 
09808       DIMENSION ZHUP(5,12) 
09809  
09810 C...Coefficients of Zhu second order parametrization. 
09811       DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/ 
09812      &    18.29,    89.56,    4.541,   -52.09,   -109.8,    24.90, 
09813      &    11.63,    3.683,    17.50, 0.002440,   -1.362,  -0.3537, 
09814      &    11.42,    6.299,   -22.55,   -8.915,    59.25,   -5.855, 
09815      &   -32.85,   -1.054,   -16.90, 0.006489,  -0.8156,  0.01095, 
09816      &    7.847,   -3.964,   -35.83,    1.178,    29.39,   0.2806, 
09817      &    47.82,   -12.36,   -56.72,  0.04054,  -0.4365,   0.6062, 
09818      &    5.441,   -56.89,   -50.27,    15.13,    114.3,   -18.19, 
09819      &    97.05,   -1.890,   -139.9,  0.08153,  -0.4984,   0.9439, 
09820      &   -17.65,    51.44,   -58.32,    70.95,   -255.7,   -78.99, 
09821      &    476.9,    29.65,   -239.3,   0.4745,   -1.174,    6.081/ 
09822  
09823 C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick). 
09824       DILOG(X)=X+X**2/4.+X**3/9.+X**4/16.+X**5/25.+X**6/36.+X**7/49. 
09825  
09826 C...Event type. Mass effect factors and other common constants. 
09827       MSTJ(120)=2 
09828       MSTJ(121)=0 
09829       PMQ=ULMASS(KFL) 
09830       QME=(2.*PMQ/ECM)**2 
09831       IF(MSTJ(109).NE.1) THEN 
09832         CUTL=LOG(CUT) 
09833         CUTD=LOG(1./CUT-2.) 
09834         IF(MSTJ(109).EQ.0) THEN 
09835           CF=4./3. 
09836           CN=3. 
09837           TR=2. 
09838           WTMX=MIN(20.,37.-6.*CUTD) 
09839           IF(MSTJ(110).EQ.2) WTMX=2.*(7.5+80.*CUT) 
09840         ELSE 
09841           CF=1. 
09842           CN=0. 
09843           TR=12. 
09844           WTMX=0. 
09845         ENDIF 
09846  
09847 C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight. 
09848         ALS2PI=PARU(118)/PARU(2) 
09849         WTOPT=0. 
09850         IF(MSTJ(111).EQ.1) WTOPT=(33.-2.*MSTU(112))/6.*LOG(PARJ(169))* 
09851      &  ALS2PI 
09852         WTMAX=MAX(0.,1.+WTOPT+ALS2PI*WTMX) 
09853  
09854 C...Choose three-jet events in allowed region. 
09855   100   NJET=3 
09856   110   Y13L=CUTL+CUTD*RLU(0) 
09857         Y23L=CUTL+CUTD*RLU(0) 
09858         Y13=EXP(Y13L) 
09859         Y23=EXP(Y23L) 
09860         Y12=1.-Y13-Y23 
09861         IF(Y12.LE.CUT) GOTO 110 
09862         IF(Y13**2+Y23**2+2.*Y12.LE.2.*RLU(0)) GOTO 110 
09863  
09864 C...Second order corrections. 
09865         IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN 
09866           Y12L=LOG(Y12) 
09867           Y13M=LOG(1.-Y13) 
09868           Y23M=LOG(1.-Y23) 
09869           Y12M=LOG(1.-Y12) 
09870           IF(Y13.LE.0.5) Y13I=DILOG(Y13) 
09871           IF(Y13.GE.0.5) Y13I=1.644934-Y13L*Y13M-DILOG(1.-Y13) 
09872           IF(Y23.LE.0.5) Y23I=DILOG(Y23) 
09873           IF(Y23.GE.0.5) Y23I=1.644934-Y23L*Y23M-DILOG(1.-Y23) 
09874           IF(Y12.LE.0.5) Y12I=DILOG(Y12) 
09875           IF(Y12.GE.0.5) Y12I=1.644934-Y12L*Y12M-DILOG(1.-Y12) 
09876           WT1=(Y13**2+Y23**2+2.*Y12)/(Y13*Y23) 
09877           WT2=CF*(-2.*(CUTL-Y12L)**2-3.*CUTL-1.+3.289868+ 
09878      &    2.*(2.*CUTL-Y12L)*CUT/Y12)+ 
09879      &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-11.*CUTL/6.+ 
09880      &    67./18.+1.644934-(2.*CUTL-Y12L)*CUT/Y12+(2.*CUTL-Y13L)* 
09881      &    CUT/Y13+(2.*CUTL-Y23L)*CUT/Y23)+ 
09882      &    TR*(2.*CUTL/3.-10./9.)+ 
09883      &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+ 
09884      &    Y13L*(4.*Y12**2+2.*Y12*Y13+4.*Y12*Y23+Y13*Y23)/(Y12+Y23)**2+ 
09885      &    Y23L*(4.*Y12**2+2.*Y12*Y23+4.*Y12*Y13+Y13*Y23)/(Y12+Y13)**2)/ 
09886      &    WT1+ 
09887      &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+ 
09888      &    (CN-2.*CF)*((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L* 
09889      &    Y23M+1.644934-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)* 
09890      &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934-Y12I-Y13I)/ 
09891      &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))- 
09892      &    2.*Y12L*Y12**2/(Y13+Y23)**2-4.*Y12L*Y12/(Y13+Y23))/WT1- 
09893      &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934-Y13I-Y23I) 
09894           IF(1.+WTOPT+ALS2PI*WT2.LE.0.) MSTJ(121)=1 
09895           IF(1.+WTOPT+ALS2PI*WT2.LE.WTMAX*RLU(0)) GOTO 110 
09896           PARJ(156)=(WTOPT+ALS2PI*WT2)/(1.+WTOPT+ALS2PI*WT2) 
09897  
09898         ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN 
09899 C...Second order corrections; Zhu parametrization of ERT. 
09900           ZX=(Y23-Y13)**2 
09901           ZY=1.-Y12 
09902           IZA=0 
09903           DO 120 IY=1,5 
09904           IF(ABS(CUT-0.01*IY).LT.0.0001) IZA=IY 
09905   120     CONTINUE 
09906           IF(IZA.NE.0) THEN 
09907             IZ=IZA 
09908             WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
09909      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
09910      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
09911      &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
09912           ELSE 
09913             IZ=100.*CUT 
09914             WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
09915      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
09916      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
09917      &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
09918             IZ=IZ+1 
09919             WTU=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+ 
09920      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+ 
09921      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+ 
09922      &      ZHUP(IZ,11)/(1.-ZY)+ZHUP(IZ,12)/ZY 
09923             WT2=WTL+(WTU-WTL)*(100.*CUT+1.-IZ) 
09924           ENDIF 
09925           IF(1.+WTOPT+2.*ALS2PI*WT2.LE.0.) MSTJ(121)=1 
09926           IF(1.+WTOPT+2.*ALS2PI*WT2.LE.WTMAX*RLU(0)) GOTO 110 
09927           PARJ(156)=(WTOPT+2.*ALS2PI*WT2)/(1.+WTOPT+2.*ALS2PI*WT2) 
09928         ENDIF 
09929  
09930 C...Impose mass cuts (gives two jets). For fixed jet number new try. 
09931         X1=1.-Y23 
09932         X2=1.-Y13 
09933         X3=1.-Y12 
09934         IF(4.*Y23*Y13*Y12/X3**2.LE.QME) NJET=2 
09935         IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+ 
09936      &  0.5*QME**2+(0.5*QME+0.25*QME**2)*((1.-X2)/(1.-X1)+ 
09937      &  (1.-X1)/(1.-X2)).GT.(X1**2+X2**2)*RLU(0)) NJET=2 
09938         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100 
09939  
09940 C...Scalar gluon model (first order only, no mass effects). 
09941       ELSE 
09942   130   NJET=3 
09943   140   X3=SQRT(4.*CUT**2+RLU(0)*((1.-CUT)**2-4.*CUT**2)) 
09944         IF(LOG((X3-CUT)/CUT).LE.RLU(0)*LOG((1.-2.*CUT)/CUT)) GOTO 140 
09945         YD=SIGN(2.*CUT*((X3-CUT)/CUT)**RLU(0)-X3,RLU(0)-0.5) 
09946         X1=1.-0.5*(X3+YD) 
09947         X2=1.-0.5*(X3-YD) 
09948         IF(4.*(1.-X1)*(1.-X2)*(1.-X3)/X3**2.LE.QME) NJET=2 
09949         IF(MSTJ(102).GE.2) THEN 
09950           IF(X3**2-2.*(1.+X3)*(1.-X1)*(1.-X2)*PARJ(171).LT. 
09951      &    X3**2*RLU(0)) NJET=2 
09952         ENDIF 
09953         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130 
09954       ENDIF 
09955  
09956       RETURN 
09957       END 
09958  
09959 C********************************************************************* 
09960  
09961       SUBROUTINE LUX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14) 
09962  
09963 C...Purpose: to select the kinematical variables of four-jet events. 
09964       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
09965       SAVE /LUDAT1/ 
09966       DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4) 
09967  
09968 C...Common constants. Colour factors for QCD and Abelian gluon theory. 
09969       PMQ=ULMASS(KFL) 
09970       QME=(2.*PMQ/ECM)**2 
09971       CT=LOG(1./CUT-5.) 
09972       IF(MSTJ(109).EQ.0) THEN 
09973         CF=4./3. 
09974         CN=3. 
09975         TR=2.5 
09976       ELSE 
09977         CF=1. 
09978         CN=0. 
09979         TR=15. 
09980       ENDIF 
09981  
09982 C...Choice of process (qqbargg or qqbarqqbar). 
09983   100 NJET=4 
09984       IT=1 
09985       IF(PARJ(155).GT.RLU(0)) IT=2 
09986       IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2 
09987       IF(IT.EQ.1) WTMX=0.7/CUT**2 
09988       IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6/CUT**2 
09989       IF(IT.EQ.2) WTMX=0.1125*CF*TR/CUT**2 
09990       ID=1 
09991  
09992 C...Sample the five kinematical variables (for qqgg preweighted in y34). 
09993   110 Y134=3.*CUT+(1.-6.*CUT)*RLU(0) 
09994       Y234=3.*CUT+(1.-6.*CUT)*RLU(0) 
09995       IF(IT.EQ.1) Y34=(1.-5.*CUT)*EXP(-CT*RLU(0)) 
09996       IF(IT.EQ.2) Y34=CUT+(1.-6.*CUT)*RLU(0) 
09997       IF(Y34.LE.Y134+Y234-1..OR.Y34.GE.Y134*Y234) GOTO 110 
09998       VT=RLU(0) 
09999       CP=COS(PARU(1)*RLU(0)) 
10000       Y14=(Y134-Y34)*VT 
10001       Y13=Y134-Y14-Y34 
10002       VB=Y34*(1.-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34)) 
10003       Y24=0.5*(Y234-Y34)*(1.-4.*SQRT(MAX(0.,VT*(1.-VT)*VB*(1.-VB)))* 
10004      &CP-(1.-2.*VT)*(1.-2.*VB)) 
10005       Y23=Y234-Y34-Y24 
10006       Y12=1.-Y134-Y23-Y24 
10007       IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110 
10008       Y123=Y12+Y13+Y23 
10009       Y124=Y12+Y14+Y24 
10010  
10011 C...Calculate matrix elements for qqgg or qqqq process. 
10012       IC=0 
10013       WTTOT=0. 
10014   120 IC=IC+1 
10015       IF(IT.EQ.1) THEN 
10016         WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3.*Y12*Y23*Y34+ 
10017      &  3.*Y12*Y14*Y34+4.*Y12**2*Y34-Y13*Y23*Y24+2.*Y12*Y23*Y24- 
10018      &  Y13*Y14*Y24-2.*Y12*Y13*Y24+2.*Y12**2*Y24+Y14*Y23**2+2.*Y12* 
10019      &  Y23**2+Y14**2*Y23+4.*Y12*Y14*Y23+4.*Y12**2*Y23+2.*Y12*Y14**2+ 
10020      &  2.*Y12*Y13*Y14+4.*Y12**2*Y14+2.*Y12**2*Y13+2.*Y12**3)/(2.*Y13* 
10021      &  Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-Y14*Y23+Y12*Y13)/(Y13* 
10022      &  Y134**2)+2.*Y23*(1.-Y13)/(Y13*Y134*Y24)+Y34/(2.*Y13*Y24) 
10023         WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2.*Y12* 
10024      &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1.+Y34)*Y124/(Y134*Y234*Y14* 
10025      &  Y24)-(2.*Y13*Y24+Y14**2+Y13*Y23+2.*Y12*Y13)/(Y13*Y134*Y14)+ 
10026      &  Y12*Y123*Y124/(2.*Y13*Y14*Y23*Y24) 
10027         WTC(IC)=-(5.*Y12*Y34**2+2.*Y12*Y24*Y34+2.*Y12*Y23*Y34+2.*Y12* 
10028      &  Y14*Y34+2.*Y12*Y13*Y34+4.*Y12**2*Y34-Y13*Y24**2+Y14*Y23*Y24+ 
10029      &  Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-3.*Y12*Y13*Y24- 
10030      &  Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-3.*Y12*Y14*Y23-Y12*Y13*Y23)/ 
10031      &  (4.*Y134*Y234*Y34**2)+(3.*Y12*Y34**2-3.*Y13*Y24*Y34+3.*Y12*Y24* 
10032      &  Y34+3.*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6.*Y12*Y14*Y34+2.*Y12* 
10033      &  Y13*Y34-2.*Y12**2*Y34+Y14*Y23*Y24-3.*Y13*Y23*Y24-2.*Y13*Y14* 
10034      &  Y24+4.*Y12*Y14*Y24+2.*Y12*Y13*Y24+3.*Y14*Y23**2+2.*Y14**2*Y23+ 
10035      &  2.*Y14**2*Y12+2.*Y12**2*Y14+6.*Y12*Y14*Y23-2.*Y12*Y13**2- 
10036      &  2.*Y12**2*Y13)/(4.*Y13*Y134*Y234*Y34) 
10037         WTC(IC)=WTC(IC)+(2.*Y12*Y34**2-2.*Y13*Y24*Y34+Y12*Y24*Y34+ 
10038      &  4.*Y13*Y23*Y34+4.*Y12*Y14*Y34+2.*Y12*Y13*Y34+2.*Y12**2*Y34- 
10039      &  Y13*Y24**2+3.*Y14*Y23*Y24+4.*Y13*Y23*Y24-2.*Y13*Y14*Y24+ 
10040      &  4.*Y12*Y14*Y24+2.*Y12*Y13*Y24+2.*Y14*Y23**2+4.*Y13*Y23**2+ 
10041      &  2.*Y13*Y14*Y23+2.*Y12*Y14*Y23+4.*Y12*Y13*Y23+2.*Y12*Y14**2+4.* 
10042      &  Y12**2*Y13+4.*Y12*Y13*Y14+2.*Y12**2*Y14)/(4.*Y13*Y134*Y24*Y34)- 
10043      &  (Y12*Y34**2-2.*Y14*Y24*Y34-2.*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23* 
10044      &  Y34+Y12*Y14*Y34+2.*Y12*Y13*Y34-2.*Y14**2*Y24-4.*Y13*Y14*Y24- 
10045      &  4.*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-Y12*Y13**2)/ 
10046      &  (2.*Y13*Y34*Y134**2)+(Y12*Y34**2-4.*Y14*Y24*Y34-2.*Y13*Y24*Y34- 
10047      &  2.*Y14*Y23*Y34-4.*Y13*Y23*Y34-4.*Y12*Y14*Y34-4.*Y12*Y13*Y34- 
10048      &  2.*Y13*Y14*Y24+2.*Y13**2*Y24+2.*Y14**2*Y23-2.*Y13*Y14*Y23- 
10049      &  Y12*Y14**2-6.*Y12*Y13*Y14-Y12*Y13**2)/(4.*Y34**2*Y134**2) 
10050         WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5*CN)*WTB(IC)+CN*WTC(IC))/ 
10051      &  8. 
10052       ELSE 
10053         WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2.*Y12* 
10054      &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2* 
10055      &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12* 
10056      &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14* 
10057      &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+ 
10058      &  Y13*Y14*Y24+2.*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+ 
10059      &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24* 
10060      &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24- 
10061      &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123) 
10062         WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13* 
10063      &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23* 
10064      &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13* 
10065      &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+ 
10066      &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+ 
10067      &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134* 
10068      &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14* 
10069      &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124) 
10070         WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5*CN)*WTE(IC))/16. 
10071       ENDIF 
10072  
10073 C...Permutations of momenta in matrix element. Weighting. 
10074   130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN 
10075         YSAV=Y13 
10076         Y13=Y14 
10077         Y14=YSAV 
10078         YSAV=Y23 
10079         Y23=Y24 
10080         Y24=YSAV 
10081         YSAV=Y123 
10082         Y123=Y124 
10083         Y124=YSAV 
10084       ENDIF 
10085       IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN 
10086         YSAV=Y13 
10087         Y13=Y23 
10088         Y23=YSAV 
10089         YSAV=Y14 
10090         Y14=Y24 
10091         Y24=YSAV 
10092         YSAV=Y134 
10093         Y134=Y234 
10094         Y234=YSAV 
10095       ENDIF 
10096       IF(IC.LE.3) GOTO 120 
10097       IF(ID.EQ.1.AND.WTTOT.LT.RLU(0)*WTMX) GOTO 110 
10098       IC=5 
10099  
10100 C...qqgg events: string configuration and event type. 
10101       IF(IT.EQ.1) THEN 
10102         IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN 
10103           PARJ(156)=Y34*(2.*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4.*(WTC(1)+ 
10104      &    WTC(2)+WTC(3)+WTC(4)))/(9.*WTTOT) 
10105           IF(WTA(2)+WTA(4)+2.*(WTC(2)+WTC(4)).GT.RLU(0)*(WTA(1)+WTA(2)+ 
10106      &    WTA(3)+WTA(4)+2.*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2 
10107           IF(ID.EQ.2) GOTO 130 
10108         ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN 
10109           PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8.*WTTOT) 
10110           IF(WTA(2)+WTA(4).GT.RLU(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2 
10111           IF(ID.EQ.2) GOTO 130 
10112         ENDIF 
10113         MSTJ(120)=3 
10114         IF(MSTJ(109).EQ.0.AND.0.5*Y34*(WTC(1)+WTC(2)+WTC(3)+WTC(4)).GT. 
10115      &  RLU(0)*WTTOT) MSTJ(120)=4 
10116         KFLN=21 
10117  
10118 C...Mass cuts. Kinematical variables out. 
10119         IF(Y12.LE.CUT+QME) NJET=2 
10120         IF(NJET.EQ.2) GOTO 150 
10121         Q12=0.5*(1.-SQRT(1.-QME/Y12)) 
10122         X1=1.-(1.-Q12)*Y234-Q12*Y134 
10123         X4=1.-(1.-Q12)*Y134-Q12*Y234 
10124         X2=1.-Y124 
10125         X12=(1.-Q12)*Y13+Q12*Y23 
10126         X14=Y12-0.5*QME 
10127         IF(Y134*Y234/((1.-X1)*(1.-X4)).LE.RLU(0)) NJET=2 
10128  
10129 C...qqbarqqbar events: string configuration, choose new flavour. 
10130       ELSE 
10131         IF(ID.EQ.1) THEN 
10132           WTR=RLU(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4)) 
10133           IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2 
10134           IF(WTR.LT.WTD(3)+WTD(4)) ID=3 
10135           IF(WTR.LT.WTD(4)) ID=4 
10136           IF(ID.GE.2) GOTO 130 
10137         ENDIF 
10138         MSTJ(120)=5 
10139         PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16.*WTTOT) 
10140   140   KFLN=1+INT(5.*RLU(0)) 
10141         IF(KFLN.NE.KFL.AND.0.2*PARJ(156).LE.RLU(0)) GOTO 140 
10142         IF(KFLN.EQ.KFL.AND.1.-0.8*PARJ(156).LE.RLU(0)) GOTO 140 
10143         IF(KFLN.GT.MSTJ(104)) NJET=2 
10144         PMQN=ULMASS(KFLN) 
10145         QMEN=(2.*PMQN/ECM)**2 
10146  
10147 C...Mass cuts. Kinematical variables out. 
10148         IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1*QMEN) NJET=2 
10149         IF(NJET.EQ.2) GOTO 150 
10150         Q24=0.5*(1.-SQRT(1.-QME/Y24)) 
10151         Q13=0.5*(1.-SQRT(1.-QMEN/Y13)) 
10152         X1=1.-(1.-Q24)*Y123-Q24*Y134 
10153         X4=1.-(1.-Q24)*Y134-Q24*Y123 
10154         X2=1.-(1.-Q13)*Y234-Q13*Y124 
10155         X12=(1.-Q24)*((1.-Q13)*Y14+Q13*Y34)+Q24*((1.-Q13)*Y12+Q13*Y23) 
10156         X14=Y24-0.5*QME 
10157         X34=(1.-Q24)*((1.-Q13)*Y23+Q13*Y12)+Q24*((1.-Q13)*Y34+Q13*Y14) 
10158         IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE. 
10159      &  (PARJ(127)+PMQ+PMQN)**2) NJET=2 
10160         IF(Y123*Y134/((1.-X1)*(1.-X4)).LE.RLU(0)) NJET=2 
10161       ENDIF 
10162   150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100 
10163  
10164       RETURN 
10165       END 
10166  
10167 C********************************************************************* 
10168  
10169       SUBROUTINE LUXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI) 
10170  
10171 C...Purpose: to give the angular orientation of events. 
10172       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
10173       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
10174       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
10175       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
10176  
10177 C...Charge. Factors depending on polarization for QED case. 
10178       QF=KCHG(KFL,1)/3. 
10179       POLL=1.-PARJ(131)*PARJ(132) 
10180       POLD=PARJ(132)-PARJ(131) 
10181       IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN 
10182         HF1=POLL 
10183         HF2=0. 
10184         HF3=PARJ(133)**2 
10185         HF4=0. 
10186  
10187 C...Factors depending on flavour, energy and polarization for QFD case. 
10188       ELSE 
10189         SFF=1./(16.*PARU(102)*(1.-PARU(102))) 
10190         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2) 
10191         SFI=SFW*(1.-(PARJ(123)/ECM)**2) 
10192         AE=-1. 
10193         VE=4.*PARU(102)-1. 
10194         AF=SIGN(1.,QF) 
10195         VF=AF-4.*QF*PARU(102) 
10196         HF1=QF**2*POLL-2.*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+ 
10197      &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2.*VE*AE*POLD) 
10198         HF2=-2.*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2.*VF*AF*SFW*SFF**2* 
10199      &  (2.*VE*AE*POLL-(VE**2+AE**2)*POLD) 
10200         HF3=PARJ(133)**2*(QF**2-2.*QF*VF*SFI*SFF*VE+(VF**2+AF**2)* 
10201      &  SFW*SFF**2*(VE**2-AE**2)) 
10202         HF4=-PARJ(133)**2*2.*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)* 
10203      &  SFF*AE 
10204       ENDIF 
10205  
10206 C...Mass factor. Differential cross-sections for two-jet events. 
10207       SQ2=SQRT(2.) 
10208       QME=0. 
10209       IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND. 
10210      &MSTJ(109).NE.1) QME=(2.*ULMASS(KFL)/ECM)**2 
10211       IF(NJET.EQ.2) THEN 
10212         SIGU=4.*SQRT(1.-QME) 
10213         SIGL=2.*QME*SQRT(1.-QME) 
10214         SIGT=0. 
10215         SIGI=0. 
10216         SIGA=0. 
10217         SIGP=4. 
10218  
10219 C...Kinematical variables. Reduce four-jet event to three-jet one. 
10220       ELSE 
10221         IF(NJET.EQ.3) THEN 
10222           X1=2.*P(NC+1,4)/ECM 
10223           X2=2.*P(NC+3,4)/ECM 
10224         ELSE 
10225           ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+ 
10226      &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2) 
10227           X1=2.*P(NC+1,4)/ECMR 
10228           X2=2.*P(NC+4,4)/ECMR 
10229         ENDIF 
10230  
10231 C...Differential cross-sections for three-jet (or reduced four-jet). 
10232         XQ=(1.-X1)/(1.-X2) 
10233         CT12=(X1*X2-2.*X1-2.*X2+2.+QME)/SQRT((X1**2-QME)*(X2**2-QME)) 
10234         ST12=SQRT(1.-CT12**2) 
10235         IF(MSTJ(109).NE.1) THEN 
10236           SIGU=2.*X1**2+X2**2*(1.+CT12**2)-QME*(3.+CT12**2-X1-X2)- 
10237      &    QME*X1/XQ+0.5*QME*((X2**2-QME)*ST12**2-2.*X2)*XQ 
10238           SIGL=(X2*ST12)**2-QME*(3.-CT12**2-2.5*(X1+X2)+X1*X2+QME)+ 
10239      &    0.5*QME*(X1**2-X1-QME)/XQ+0.5*QME*((X2**2-QME)*CT12**2-X2)*XQ 
10240           SIGT=0.5*(X2**2-QME-0.5*QME*(X2**2-QME)/XQ)*ST12**2 
10241           SIGI=((1.-0.5*QME*XQ)*(X2**2-QME)*ST12*CT12+QME*(1.-X1-X2+ 
10242      &    0.5*X1*X2+0.5*QME)*ST12/CT12)/SQ2 
10243           SIGA=X2**2*ST12/SQ2 
10244           SIGP=2.*(X1**2-X2**2*CT12) 
10245  
10246 C...Differential cross-sect for scalar gluons (no mass effects). 
10247         ELSE 
10248           X3=2.-X1-X2 
10249           XT=X2*ST12 
10250           CT13=SQRT(MAX(0.,1.-(XT/X3)**2)) 
10251           SIGU=(1.-PARJ(171))*(X3**2-0.5*XT**2)+ 
10252      &    PARJ(171)*(X3**2-0.5*XT**2-4.*(1.-X1)*(1.-X2)**2/X1) 
10253           SIGL=(1.-PARJ(171))*0.5*XT**2+ 
10254      &    PARJ(171)*0.5*(1.-X1)**2*XT**2 
10255           SIGT=(1.-PARJ(171))*0.25*XT**2+ 
10256      &    PARJ(171)*0.25*XT**2*(1.-2.*X1) 
10257           SIGI=-(0.5/SQ2)*((1.-PARJ(171))*XT*X3*CT13+ 
10258      &    PARJ(171)*XT*((1.-2.*X1)*X3*CT13-X1*(X1-X2))) 
10259           SIGA=(0.25/SQ2)*XT*(2.*(1.-X1)-X1*X3) 
10260           SIGP=X3**2-2.*(1.-X1)*(1.-X2)/X1 
10261         ENDIF 
10262       ENDIF 
10263  
10264 C...Upper bounds for differential cross-section. 
10265       HF1A=ABS(HF1) 
10266       HF2A=ABS(HF2) 
10267       HF3A=ABS(HF3) 
10268       HF4A=ABS(HF4) 
10269       SIGMAX=(2.*HF1A+HF3A+HF4A)*ABS(SIGU)+2.*(HF1A+HF3A+HF4A)* 
10270      &ABS(SIGL)+2.*(HF1A+2.*HF3A+2.*HF4A)*ABS(SIGT)+2.*SQ2* 
10271      &(HF1A+2.*HF3A+2.*HF4A)*ABS(SIGI)+4.*SQ2*HF2A*ABS(SIGA)+ 
10272      &2.*HF2A*ABS(SIGP) 
10273  
10274 C...Generate angular orientation according to differential cross-sect. 
10275   100 CHI=PARU(2)*RLU(0) 
10276       CTHE=2.*RLU(0)-1. 
10277       PHI=PARU(2)*RLU(0) 
10278       CCHI=COS(CHI) 
10279       SCHI=SIN(CHI) 
10280       C2CHI=COS(2.*CHI) 
10281       S2CHI=SIN(2.*CHI) 
10282       THE=ACOS(CTHE) 
10283       STHE=SIN(THE) 
10284       C2PHI=COS(2.*(PHI-PARJ(134))) 
10285       S2PHI=SIN(2.*(PHI-PARJ(134))) 
10286       SIG=((1.+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+ 
10287      &2.*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+ 
10288      &2.*(STHE**2*C2CHI*HF1+((1.+CTHE**2)*C2CHI*C2PHI-2.*CTHE*S2CHI* 
10289      &S2PHI)*HF3-((1.+CTHE**2)*C2CHI*S2PHI+2.*CTHE*S2CHI*C2PHI)*HF4)* 
10290      &SIGT-2.*SQ2*(2.*STHE*CTHE*CCHI*HF1-2.*STHE*(CTHE*CCHI*C2PHI- 
10291      &SCHI*S2PHI)*HF3+2.*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+ 
10292      &4.*SQ2*STHE*CCHI*HF2*SIGA+2.*CTHE*HF2*SIGP 
10293       IF(SIG.LT.SIGMAX*RLU(0)) GOTO 100 
10294  
10295       RETURN 
10296       END 
10297  
10298 C********************************************************************* 
10299  
10300       SUBROUTINE LUONIA(KFL,ECM) 
10301  
10302 C...Purpose: to generate Upsilon and toponium decays into three 
10303 C...gluons or two gluons and a photon. 
10304       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
10305       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
10306       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
10307       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
10308  
10309 C...Printout. Check input parameters. 
10310       IF(MSTU(12).GE.1) CALL LULIST(0) 
10311       IF(KFL.LT.0.OR.KFL.GT.8) THEN 
10312         CALL LUERRM(16,'(LUONIA:) called with unknown flavour code') 
10313         IF(MSTU(21).GE.1) RETURN 
10314       ENDIF 
10315       IF(ECM.LT.PARJ(127)+2.02*PARF(101)) THEN 
10316         CALL LUERRM(16,'(LUONIA:) called with too small CM energy') 
10317         IF(MSTU(21).GE.1) RETURN 
10318       ENDIF 
10319  
10320 C...Initial e+e- and onium state (optional). 
10321       NC=0 
10322       IF(MSTJ(115).GE.2) THEN 
10323         NC=NC+2 
10324         CALL LU1ENT(NC-1,11,0.5*ECM,0.,0.) 
10325         K(NC-1,1)=21 
10326         CALL LU1ENT(NC,-11,0.5*ECM,PARU(1),0.) 
10327         K(NC,1)=21 
10328       ENDIF 
10329       KFLC=IABS(KFL) 
10330       IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN 
10331         NC=NC+1 
10332         KF=110*KFLC+3 
10333         MSTU10=MSTU(10) 
10334         MSTU(10)=1 
10335         P(NC,5)=ECM 
10336         CALL LU1ENT(NC,KF,ECM,0.,0.) 
10337         K(NC,1)=21 
10338         K(NC,3)=1 
10339         MSTU(10)=MSTU10 
10340       ENDIF 
10341  
10342 C...Choose x1 and x2 according to matrix element. 
10343       NTRY=0 
10344   100 X1=RLU(0) 
10345       X2=RLU(0) 
10346       X3=2.-X1-X2 
10347       IF(X3.GE.1..OR.((1.-X1)/(X2*X3))**2+((1.-X2)/(X1*X3))**2+ 
10348      &((1.-X3)/(X1*X2))**2.LE.2.*RLU(0)) GOTO 100 
10349       NTRY=NTRY+1 
10350       NJET=3 
10351       IF(MSTJ(101).LE.4) CALL LU3ENT(NC+1,21,21,21,ECM,X1,X3) 
10352       IF(MSTJ(101).GE.5) CALL LU3ENT(-(NC+1),21,21,21,ECM,X1,X3) 
10353  
10354 C...Photon-gluon-gluon events. Small system modifications. Jet origin. 
10355       MSTU(111)=MSTJ(108) 
10356       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1)) 
10357      &MSTU(111)=1 
10358       PARU(112)=PARJ(121) 
10359       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122) 
10360       QF=0. 
10361       IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3. 
10362       RGAM=7.2*QF**2*PARU(101)/ULALPS(ECM**2) 
10363       MK=0 
10364       ECMC=ECM 
10365       IF(RLU(0).GT.RGAM/(1.+RGAM)) THEN 
10366         IF(1.-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125))) 
10367      &  NJET=2 
10368         IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL LU2ENT(NC+1,21,21,ECM) 
10369         IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL LU2ENT(-(NC+1),21,21,ECM) 
10370       ELSE 
10371         MK=1 
10372         ECMC=SQRT(1.-X1)*ECM 
10373         IF(ECMC.LT.2.*PARJ(127)) GOTO 100 
10374         K(NC+1,1)=1 
10375         K(NC+1,2)=22 
10376         K(NC+1,4)=0 
10377         K(NC+1,5)=0 
10378         IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3) 
10379         IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3) 
10380         IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2) 
10381         IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2) 
10382         NJET=2 
10383         IF(ECMC.LT.4.*PARJ(127)) THEN 
10384           MSTU10=MSTU(10) 
10385           MSTU(10)=1 
10386           P(NC+2,5)=ECMC 
10387           CALL LU1ENT(NC+2,83,0.5*(X2+X3)*ECM,PARU(1),0.) 
10388           MSTU(10)=MSTU10 
10389           NJET=0 
10390         ENDIF 
10391       ENDIF 
10392       DO 110 IP=NC+1,N 
10393       K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1) 
10394   110 CONTINUE 
10395  
10396 C...Differential cross-sections. Upper limit for cross-section. 
10397       IF(MSTJ(106).EQ.1) THEN 
10398         SQ2=SQRT(2.) 
10399         HF1=1.-PARJ(131)*PARJ(132) 
10400         HF3=PARJ(133)**2 
10401         CT13=(X1*X3-2.*X1-2.*X3+2.)/(X1*X3) 
10402         ST13=SQRT(1.-CT13**2) 
10403         SIGL=0.5*X3**2*((1.-X2)**2+(1.-X3)**2)*ST13**2 
10404         SIGU=(X1*(1.-X1))**2+(X2*(1.-X2))**2+(X3*(1.-X3))**2-SIGL 
10405         SIGT=0.5*SIGL 
10406         SIGI=(SIGL*CT13/ST13+0.5*X1*X3*(1.-X2)**2*ST13)/SQ2 
10407         SIGMAX=(2.*HF1+HF3)*ABS(SIGU)+2.*(HF1+HF3)*ABS(SIGL)+2.*(HF1+ 
10408      &  2.*HF3)*ABS(SIGT)+2.*SQ2*(HF1+2.*HF3)*ABS(SIGI) 
10409  
10410 C...Angular orientation of event. 
10411   120   CHI=PARU(2)*RLU(0) 
10412         CTHE=2.*RLU(0)-1. 
10413         PHI=PARU(2)*RLU(0) 
10414         CCHI=COS(CHI) 
10415         SCHI=SIN(CHI) 
10416         C2CHI=COS(2.*CHI) 
10417         S2CHI=SIN(2.*CHI) 
10418         THE=ACOS(CTHE) 
10419         STHE=SIN(THE) 
10420         C2PHI=COS(2.*(PHI-PARJ(134))) 
10421         S2PHI=SIN(2.*(PHI-PARJ(134))) 
10422         SIG=((1.+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2.*(STHE**2*HF1- 
10423      &  STHE**2*C2PHI*HF3)*SIGL+2.*(STHE**2*C2CHI*HF1+((1.+CTHE**2)* 
10424      &  C2CHI*C2PHI-2.*CTHE*S2CHI*S2PHI)*HF3)*SIGT-2.*SQ2*(2.*STHE*CTHE* 
10425      &  CCHI*HF1-2.*STHE*(CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI 
10426         IF(SIG.LT.SIGMAX*RLU(0)) GOTO 120 
10427         CALL LUDBRB(NC+1,N,0.,CHI,0D0,0D0,0D0) 
10428         CALL LUDBRB(NC+1,N,THE,PHI,0D0,0D0,0D0) 
10429       ENDIF 
10430  
10431 C...Generate parton shower. Rearrange along strings and check. 
10432       IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN 
10433         CALL LUSHOW(NC+MK+1,-NJET,ECMC) 
10434         MSTJ14=MSTJ(14) 
10435         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1 
10436         IF(MSTJ(105).GE.0) MSTU(28)=0 
10437         CALL LUPREP(0) 
10438         MSTJ(14)=MSTJ14 
10439         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100 
10440       ENDIF 
10441  
10442 C...Generate fragmentation. Information for LUTABU: 
10443       IF(MSTJ(105).EQ.1) CALL LUEXEC 
10444       MSTU(161)=110*KFLC+3 
10445       MSTU(162)=0 
10446  
10447       RETURN 
10448       END 
10449  
10450 C********************************************************************* 
10451  
10452       SUBROUTINE LUHEPC(MCONV) 
10453  
10454 C...Purpose: to convert JETSET event record contents to or from 
10455 C...the standard event record commonblock. 
10456       INCLUDE '../include/HEPEVT.h'
10457 C      PARAMETER (NMXHEP=2000) 
10458 C      COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), 
10459 C     &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) 
10460       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
10461       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
10462       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
10463       SAVE /HEPEVT/ 
10464       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
10465  
10466 C...Conversion from JETSET to standard, the easy part. 
10467       IF(MCONV.EQ.1) THEN 
10468         NEVHEP=0 
10469         IF(N.GT.NMXHEP) CALL LUERRM(8, 
10470      &  '(LUHEPC:) no more space in /HEPEVT/') 
10471         NHEP=MIN(N,NMXHEP) 
10472         DO 140 I=1,NHEP 
10473         ISTHEP(I)=0 
10474         IF(K(I,1).GE.1.AND.K(I,1).LE.10) ISTHEP(I)=1 
10475         IF(K(I,1).GE.11.AND.K(I,1).LE.20) ISTHEP(I)=2 
10476         IF(K(I,1).GE.21.AND.K(I,1).LE.30) ISTHEP(I)=3 
10477         IF(K(I,1).GE.31.AND.K(I,1).LE.100) ISTHEP(I)=K(I,1) 
10478         IDHEP(I)=K(I,2) 
10479         JMOHEP(1,I)=K(I,3) 
10480         JMOHEP(2,I)=0 
10481         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN 
10482           JDAHEP(1,I)=K(I,4) 
10483           JDAHEP(2,I)=K(I,5) 
10484         ELSE 
10485           JDAHEP(1,I)=0 
10486           JDAHEP(2,I)=0 
10487         ENDIF 
10488         DO 100 J=1,5 
10489         PHEP(J,I)=P(I,J) 
10490   100   CONTINUE 
10491         DO 110 J=1,4 
10492         VHEP(J,I)=V(I,J) 
10493   110   CONTINUE 
10494  
10495 C...Check if new event (from pileup). 
10496         IF(I.EQ.1) THEN 
10497           INEW=1 
10498         ELSE 
10499           IF(K(I,1).EQ.21.AND.K(I-1,1).NE.21) INEW=I 
10500         ENDIF 
10501  
10502 C...Fill in missing mother information. 
10503         IF(I.GE.INEW+2.AND.K(I,1).EQ.21.AND.K(I,3).EQ.0) THEN 
10504           IMO1=I-2 
10505           IF(I.GE.INEW+3.AND.K(I-1,1).EQ.21.AND.K(I-1,3).EQ.0) 
10506      &    IMO1=IMO1-1 
10507           JMOHEP(1,I)=IMO1 
10508           JMOHEP(2,I)=IMO1+1 
10509         ELSEIF(K(I,2).GE.91.AND.K(I,2).LE.93) THEN 
10510           I1=K(I,3)-1 
10511   120     I1=I1+1 
10512           IF(I1.GE.I) CALL LUERRM(8, 
10513      &    '(LUHEPC:) translation of inconsistent event history') 
10514           IF(I1.LT.I.AND.K(I1,1).NE.1.AND.K(I1,1).NE.11) GOTO 120 
10515           KC=LUCOMP(K(I1,2)) 
10516           IF(I1.LT.I.AND.KC.EQ.0) GOTO 120 
10517           IF(I1.LT.I.AND.KCHG(KC,2).EQ.0) GOTO 120 
10518           JMOHEP(2,I)=I1 
10519         ELSEIF(K(I,2).EQ.94) THEN 
10520           NJET=2 
10521           IF(NHEP.GE.I+3.AND.K(I+3,3).LE.I) NJET=3 
10522           IF(NHEP.GE.I+4.AND.K(I+4,3).LE.I) NJET=4 
10523           JMOHEP(2,I)=MOD(K(I+NJET,4)/MSTU(5),MSTU(5)) 
10524           IF(JMOHEP(2,I).EQ.JMOHEP(1,I)) JMOHEP(2,I)= 
10525      &    MOD(K(I+1,4)/MSTU(5),MSTU(5)) 
10526         ENDIF 
10527  
10528 C...Fill in missing daughter information. 
10529         IF(K(I,2).EQ.94.AND.MSTU(16).NE.2) THEN 
10530           DO 130 I1=JDAHEP(1,I),JDAHEP(2,I) 
10531           I2=MOD(K(I1,4)/MSTU(5),MSTU(5)) 
10532           JDAHEP(1,I2)=I 
10533   130     CONTINUE 
10534         ENDIF 
10535         IF(K(I,2).GE.91.AND.K(I,2).LE.94) GOTO 140 
10536         I1=JMOHEP(1,I) 
10537         IF(I1.LE.0.OR.I1.GT.NHEP) GOTO 140 
10538         IF(K(I1,1).NE.13.AND.K(I1,1).NE.14) GOTO 140 
10539         IF(JDAHEP(1,I1).EQ.0) THEN 
10540           JDAHEP(1,I1)=I 
10541         ELSE 
10542           JDAHEP(2,I1)=I 
10543         ENDIF 
10544   140   CONTINUE 
10545         DO 150 I=1,NHEP 
10546         IF(K(I,1).NE.13.AND.K(I,1).NE.14) GOTO 150 
10547         IF(JDAHEP(2,I).EQ.0) JDAHEP(2,I)=JDAHEP(1,I) 
10548   150   CONTINUE 
10549  
10550 C...Conversion from standard to JETSET, the easy part. 
10551       ELSE 
10552         IF(NHEP.GT.MSTU(4)) CALL LUERRM(8, 
10553      &  '(LUHEPC:) no more space in /LUJETS/') 
10554         N=MIN(NHEP,MSTU(4)) 
10555         NKQ=0 
10556         KQSUM=0 
10557         DO 180 I=1,N 
10558         K(I,1)=0 
10559         IF(ISTHEP(I).EQ.1) K(I,1)=1 
10560         IF(ISTHEP(I).EQ.2) K(I,1)=11 
10561         IF(ISTHEP(I).EQ.3) K(I,1)=21 
10562         K(I,2)=IDHEP(I) 
10563         K(I,3)=JMOHEP(1,I) 
10564         K(I,4)=JDAHEP(1,I) 
10565         K(I,5)=JDAHEP(2,I) 
10566         DO 160 J=1,5 
10567         P(I,J)=PHEP(J,I) 
10568   160   CONTINUE 
10569         DO 170 J=1,4 
10570         V(I,J)=VHEP(J,I) 
10571   170   CONTINUE 
10572         V(I,5)=0. 
10573         IF(ISTHEP(I).EQ.2.AND.PHEP(4,I).GT.PHEP(5,I)) THEN 
10574           I1=JDAHEP(1,I) 
10575           IF(I1.GT.0.AND.I1.LE.NHEP) V(I,5)=(VHEP(4,I1)-VHEP(4,I))* 
10576      &    PHEP(5,I)/PHEP(4,I) 
10577         ENDIF 
10578  
10579 C...Fill in missing information on colour connection in jet systems. 
10580         IF(ISTHEP(I).EQ.1) THEN 
10581           KC=LUCOMP(K(I,2)) 
10582           KQ=0 
10583           IF(KC.NE.0) KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) 
10584           IF(KQ.NE.0) NKQ=NKQ+1 
10585           IF(KQ.NE.2) KQSUM=KQSUM+KQ 
10586           IF(KQ.NE.0.AND.KQSUM.NE.0) THEN 
10587             K(I,1)=2 
10588           ELSEIF(KQ.EQ.2.AND.I.LT.N) THEN 
10589             IF(K(I+1,2).EQ.21) K(I,1)=2 
10590           ENDIF 
10591         ENDIF 
10592   180   CONTINUE 
10593         IF(NKQ.EQ.1.OR.KQSUM.NE.0) CALL LUERRM(8, 
10594      &  '(LUHEPC:) input parton configuration not colour singlet') 
10595       ENDIF 
10596  
10597       END 
10598  
10599 C********************************************************************* 
10600  
10601       SUBROUTINE LUTEST(MTEST) 
10602  
10603 C...Purpose: to provide a simple program (disguised as subroutine) to 
10604 C...run at installation as a check that the program works as intended. 
10605       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
10606       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
10607       SAVE /LUJETS/,/LUDAT1/ 
10608       DIMENSION PSUM(5),PINI(6),PFIN(6) 
10609  
10610 C...Loop over events to be generated. 
10611       IF(MTEST.GE.1) CALL LUTABU(20) 
10612       NERR=0 
10613       DO 180 IEV=1,600 
10614  
10615 C...Reset parameter values. Switch on some nonstandard features. 
10616       MSTJ(1)=1 
10617       MSTJ(3)=0 
10618       MSTJ(11)=1 
10619       MSTJ(42)=2 
10620       MSTJ(43)=4 
10621       MSTJ(44)=2 
10622       PARJ(17)=0.1 
10623       PARJ(22)=1.5 
10624       PARJ(43)=1. 
10625       PARJ(54)=-0.05 
10626       MSTJ(101)=5 
10627       MSTJ(104)=5 
10628       MSTJ(105)=0 
10629       MSTJ(107)=1 
10630       IF(IEV.EQ.301.OR.IEV.EQ.351.OR.IEV.EQ.401) MSTJ(116)=3 
10631  
10632 C...Ten events each for some single jets configurations. 
10633       IF(IEV.LE.50) THEN 
10634         ITY=(IEV+9)/10 
10635         MSTJ(3)=-1 
10636         IF(ITY.EQ.3.OR.ITY.EQ.4) MSTJ(11)=2 
10637         IF(ITY.EQ.1) CALL LU1ENT(1,1,15.,0.,0.) 
10638         IF(ITY.EQ.2) CALL LU1ENT(1,3101,15.,0.,0.) 
10639         IF(ITY.EQ.3) CALL LU1ENT(1,-2203,15.,0.,0.) 
10640         IF(ITY.EQ.4) CALL LU1ENT(1,-4,30.,0.,0.) 
10641         IF(ITY.EQ.5) CALL LU1ENT(1,21,15.,0.,0.) 
10642  
10643 C...Ten events each for some simple jet systems; string fragmentation. 
10644       ELSEIF(IEV.LE.130) THEN 
10645         ITY=(IEV-41)/10 
10646         IF(ITY.EQ.1) CALL LU2ENT(1,1,-1,40.) 
10647         IF(ITY.EQ.2) CALL LU2ENT(1,4,-4,30.) 
10648         IF(ITY.EQ.3) CALL LU2ENT(1,2,2103,100.) 
10649         IF(ITY.EQ.4) CALL LU2ENT(1,21,21,40.) 
10650         IF(ITY.EQ.5) CALL LU3ENT(1,2101,21,-3203,30.,0.6,0.8) 
10651         IF(ITY.EQ.6) CALL LU3ENT(1,5,21,-5,40.,0.9,0.8) 
10652         IF(ITY.EQ.7) CALL LU3ENT(1,21,21,21,60.,0.7,0.5) 
10653         IF(ITY.EQ.8) CALL LU4ENT(1,2,21,21,-2,40.,0.4,0.64,0.6,0.12,0.2) 
10654  
10655 C...Seventy events with independent fragmentation and momentum cons. 
10656       ELSEIF(IEV.LE.200) THEN 
10657         ITY=1+(IEV-131)/16 
10658         MSTJ(2)=1+MOD(IEV-131,4) 
10659         MSTJ(3)=1+MOD((IEV-131)/4,4) 
10660         IF(ITY.EQ.1) CALL LU2ENT(1,4,-5,40.) 
10661         IF(ITY.EQ.2) CALL LU3ENT(1,3,21,-3,40.,0.9,0.4) 
10662         IF(ITY.EQ.3) CALL LU4ENT(1,2,21,21,-2,40.,0.4,0.64,0.6,0.12,0.2) 
10663         IF(ITY.GE.4) CALL LU4ENT(1,2,-3,3,-2,40.,0.4,0.64,0.6,0.12,0.2) 
10664  
10665 C...A hundred events with random jets (check invariant mass). 
10666       ELSEIF(IEV.LE.300) THEN 
10667   100   DO 110 J=1,5 
10668         PSUM(J)=0. 
10669   110   CONTINUE 
10670         NJET=2.+6.*RLU(0) 
10671         DO 130 I=1,NJET 
10672         KFL=21 
10673         IF(I.EQ.1) KFL=INT(1.+4.*RLU(0)) 
10674         IF(I.EQ.NJET) KFL=-INT(1.+4.*RLU(0)) 
10675         EJET=5.+20.*RLU(0) 
10676         THETA=ACOS(2.*RLU(0)-1.) 
10677         PHI=6.2832*RLU(0) 
10678         IF(I.LT.NJET) CALL LU1ENT(-I,KFL,EJET,THETA,PHI) 
10679         IF(I.EQ.NJET) CALL LU1ENT(I,KFL,EJET,THETA,PHI) 
10680         IF(I.EQ.1.OR.I.EQ.NJET) MSTJ(93)=1 
10681         IF(I.EQ.1.OR.I.EQ.NJET) PSUM(5)=PSUM(5)+ULMASS(KFL) 
10682         DO 120 J=1,4 
10683         PSUM(J)=PSUM(J)+P(I,J) 
10684   120   CONTINUE 
10685   130   CONTINUE 
10686         IF(PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2.LT. 
10687      &  (PSUM(5)+PARJ(32))**2) GOTO 100 
10688  
10689 C...Fifty e+e- continuum events with matrix elements. 
10690       ELSEIF(IEV.LE.350) THEN 
10691         MSTJ(101)=2 
10692         CALL LUEEVT(0,40.) 
10693  
10694 C...Fifty e+e- continuum event with varying shower options. 
10695       ELSEIF(IEV.LE.400) THEN 
10696         MSTJ(42)=1+MOD(IEV,2) 
10697         MSTJ(43)=1+MOD(IEV/2,4) 
10698         MSTJ(44)=MOD(IEV/8,3) 
10699         CALL LUEEVT(0,90.) 
10700  
10701 C...Fifty e+e- continuum events with coherent shower, including top. 
10702       ELSEIF(IEV.LE.450) THEN 
10703         MSTJ(104)=6 
10704         CALL LUEEVT(0,500.) 
10705  
10706 C...Fifty Upsilon decays to ggg or gammagg with coherent shower. 
10707       ELSEIF(IEV.LE.500) THEN 
10708         CALL LUONIA(5,9.46) 
10709  
10710 C...One decay each for some heavy mesons. 
10711       ELSEIF(IEV.LE.560) THEN 
10712         ITY=IEV-501 
10713         KFLS=2*(ITY/20)+1 
10714         KFLB=8-MOD(ITY/5,4) 
10715         KFLC=KFLB-MOD(ITY,5) 
10716         CALL LU1ENT(1,100*KFLB+10*KFLC+KFLS,0.,0.,0.) 
10717  
10718 C...One decay each for some heavy baryons. 
10719       ELSEIF(IEV.LE.600) THEN 
10720         ITY=IEV-561 
10721         KFLS=2*(ITY/20)+2 
10722         KFLA=8-MOD(ITY/5,4) 
10723         KFLB=KFLA-MOD(ITY,5) 
10724         KFLC=MAX(1,KFLB-1) 
10725         CALL LU1ENT(1,1000*KFLA+100*KFLB+10*KFLC+KFLS,0.,0.,0.) 
10726       ENDIF 
10727  
10728 C...Generate event. Find total momentum, energy and charge. 
10729       DO 140 J=1,4 
10730       PINI(J)=PLU(0,J) 
10731   140 CONTINUE 
10732       PINI(6)=PLU(0,6) 
10733       CALL LUEXEC 
10734       DO 150 J=1,4 
10735       PFIN(J)=PLU(0,J) 
10736   150 CONTINUE 
10737       PFIN(6)=PLU(0,6) 
10738  
10739 C...Check conservation of energy, momentum and charge; 
10740 C...usually exact, but only approximate for single jets. 
10741       MERR=0 
10742       IF(IEV.LE.50) THEN 
10743         IF((PFIN(1)-PINI(1))**2+(PFIN(2)-PINI(2))**2.GE.4.) MERR=MERR+1 
10744         EPZREM=PINI(4)+PINI(3)-PFIN(4)-PFIN(3) 
10745         IF(EPZREM.LT.0..OR.EPZREM.GT.2.*PARJ(31)) MERR=MERR+1 
10746         IF(ABS(PFIN(6)-PINI(6)).GT.2.1) MERR=MERR+1 
10747       ELSE 
10748         DO 160 J=1,4 
10749         IF(ABS(PFIN(J)-PINI(J)).GT.0001*PINI(4)) MERR=MERR+1 
10750   160   CONTINUE 
10751         IF(ABS(PFIN(6)-PINI(6)).GT.0.1) MERR=MERR+1 
10752       ENDIF 
10753       IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6), 
10754      &(PFIN(J),J=1,4),PFIN(6) 
10755  
10756 C...Check that all KF codes are known ones, and that partons/particles 
10757 C...satisfy energy-momentum-mass relation. Store particle statistics. 
10758       DO 170 I=1,N 
10759       IF(K(I,1).GT.20) GOTO 170 
10760       IF(LUCOMP(K(I,2)).EQ.0) THEN 
10761         WRITE(MSTU(11),5100) I 
10762         MERR=MERR+1 
10763       ENDIF 
10764       PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2 
10765       IF(ABS(PD).GT.MAX(0.1,0.001*P(I,4)**2).OR.P(I,4).LT.0.) THEN 
10766         WRITE(MSTU(11),5200) I 
10767         MERR=MERR+1 
10768       ENDIF 
10769   170 CONTINUE 
10770       IF(MTEST.GE.1) CALL LUTABU(21) 
10771  
10772 C...List all erroneous events and some normal ones. 
10773       IF(MERR.NE.0.OR.MSTU(24).NE.0.OR.MSTU(28).NE.0) THEN 
10774         CALL LULIST(2) 
10775       ELSEIF(MTEST.GE.1.AND.MOD(IEV-5,100).EQ.0) THEN 
10776         CALL LULIST(1) 
10777       ENDIF 
10778  
10779 C...Stop execution if too many errors. 
10780       IF(MERR.NE.0) NERR=NERR+1 
10781       IF(NERR.GE.10) THEN 
10782         WRITE(MSTU(11),5300) IEV 
10783         STOP 
10784       ENDIF 
10785   180 CONTINUE 
10786  
10787 C...Summarize result of run. 
10788       IF(MTEST.GE.1) CALL LUTABU(22) 
10789       IF(NERR.EQ.0) WRITE(MSTU(11),5400) 
10790       IF(NERR.GT.0) WRITE(MSTU(11),5500) NERR 
10791  
10792 C...Reset commonblock variables changed during run. 
10793       MSTJ(2)=3 
10794       PARJ(17)=0. 
10795       PARJ(22)=1. 
10796       PARJ(43)=0.5 
10797       PARJ(54)=0. 
10798       MSTJ(105)=1 
10799       MSTJ(107)=0 
10800  
10801 C...Format statements for output. 
10802  5000 FORMAT(/' Momentum, energy and/or charge were not conserved ', 
10803      &'in following event'/' sum of',9X,'px',11X,'py',11X,'pz',11X, 
10804      &'E',8X,'charge'/' before',2X,4(1X,F12.5),1X,F8.2/' after',3X, 
10805      &4(1X,F12.5),1X,F8.2) 
10806  5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code') 
10807  5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ', 
10808      &'kinematics') 
10809  5300 FORMAT(/5X,'Ten errors experienced by event ',I3/ 
10810      &5X,'Something is seriously wrong! Execution stopped now!') 
10811  5400 FORMAT(//5X,'End result of LUTEST: no errors detected.') 
10812  5500 FORMAT(//5X,'End result of LUTEST:',I2,' errors detected.'/ 
10813      &5X,'This should not have happened!') 
10814  
10815       RETURN 
10816       END 
10817  
10818 C********************************************************************* 
10819  
10820       BLOCK DATA LUDATA 
10821  
10822 C...Purpose: to give default values to parameters and particle and 
10823 C...decay data. 
10824       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
10825       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
10826       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) 
10827       COMMON/LUDAT4/CHAF(500) 
10828       CHARACTER CHAF*8 
10829       COMMON/LUDATR/MRLU(6),RRLU(100) 
10830       SAVE /LUDAT1/,/LUDAT2/,/LUDAT3/,/LUDAT4/,/LUDATR/ 
10831  
10832 C...LUDAT1, containing status codes and most parameters. 
10833       DATA MSTU/ 
10834      &    0,    0,    0, 4000,10000,  500, 2000,    0,    0,    2, 
10835      1    6,    1,    1,    0,    1,    1,    0,    0,    0,    0, 
10836      2    2,   10,    0,    0,    1,   10,    0,    0,    0,    0, 
10837      3    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
10838      4    2,    2,    1,    4,    2,    1,    1,    0,    0,    0, 
10839      5   25,   24,    0,    1,    0,    0,    0,    0,    0,    0, 
10840      6    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
10841      7  30*0, 
10842      &    1,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
10843      1    1,    5,    3,    5,    0,    0,    0,    0,    0,    0, 
10844      2  60*0, 
10845      8    7,  401, 1994,   02,   11,  700,    0,    0,    0,    0, 
10846      9    0,    0,    0,    0,    0,    0,    0,    0,    0,    0/ 
10847       DATA PARU/ 
10848      & 3.1415927, 6.2831854, 0.1973, 5.068, 0.3894, 2.568,   4*0., 
10849      1 0.001, 0.09, 0.01,  0.,   0.,   0.,   0.,   0.,   0.,   0., 
10850      2   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
10851      3   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
10852      4  2.0,  1.0, 0.25,  2.5, 0.05,   0.,   0., 0.0001, 0.,   0., 
10853      5  2.5,  1.5,  7.0,  1.0,  0.5,  2.0,  3.2,   0.,   0.,   0., 
10854      6  40*0., 
10855      & 0.00729735, 0.232, 0., 0., 0.,  0.,   0.,   0.,   0.,   0., 
10856      1 0.20, 0.25,  1.0,  4.0,  10.,   0.,   0.,   0.,   0.,   0., 
10857      2 -0.693, -1.0, 0.387, 1.0, -0.08, -1.0, 1.0, 1.0, 1.0,   0., 
10858      3  1.0, -1.0,  1.0, -1.0,  1.0,   0.,   0.,   0.,   0.,   0., 
10859      4  5.0,  1.0,  1.0,   0.,  1.0,  1.0,   0.,   0.,   0.,   0., 
10860      5  1.0,   0.,   0.,   0., 1000., 1.0,  1.0,  1.0,  1.0,   0., 
10861      6  1.0,  1.0,  1.0,  1.0,  1.0,   0.,   0.,   0.,   0.,   0., 
10862      7  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,   0.,   0.,   0., 
10863      8  1.0,  1.0,  1.0,  0.0,  0.0,  1.0,  1.0,  0.0,  0.0,   0., 
10864      9   0.,   0.,   0.,   0.,  1.0,   0.,   0.,   0.,   0.,   0./ 
10865       DATA MSTJ/ 
10866      &    1,    3,    0,    0,    0,    0,    0,    0,    0,    0, 
10867      1    4,    2,    0,    1,    0,    0,    0,    0,    0,    0, 
10868      2    2,    1,    1,    2,    1,    2,    2,    0,    0,    0, 
10869      3    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
10870      4    2,    2,    4,    2,    5,    3,    3,    0,    0,    0, 
10871      5    0,    3,    0,    0,    0,    0,    0,    0,    0,    0, 
10872      6  40*0, 
10873      &    5,    2,    7,    5,    1,    1,    0,    2,    0,    2, 
10874      1    0,    0,    0,    0,    1,    1,    0,    0,    0,    0, 
10875      2  80*0/ 
10876       DATA PARJ/ 
10877      & 0.10, 0.30, 0.40, 0.05, 0.50, 0.50, 0.50,   0.,   0.,   0., 
10878      1 0.50, 0.60, 0.75,   0.,   0.,   0.,   0.,  1.0,  1.0,   0., 
10879      2 0.36,  1.0, 0.01,  2.0,  1.0,  0.4,   0.,   0.,   0.,   0., 
10880      3 0.10,  1.0,  0.8,  1.5,   0.,  2.0,  0.2,  2.5,  0.6,   0., 
10881      4  0.3, 0.58,  0.5,  0.9,  0.5,  1.0,  1.0,  1.0,   0.,   0., 
10882      5 0.77,0.77,0.77,-0.05,-0.005,-0.00001,-0.00001,-0.00001,1.0,0., 
10883      6  4.5,  0.7,  0., 0.003,  0.5,  0.5,   0.,   0.,   0.,   0., 
10884      7  10., 1000., 100., 1000., 0.,  0.7,  10.,   0.,   0.,   0., 
10885      8 0.29,  1.0,  1.0,   0.,  10.,  10.,   0.,   0.,   0.,   0., 
10886      9 0.02,  1.0,  0.2,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
10887      &   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
10888      1   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
10889      2  1.0, 0.25,91.187,2.489, 0.01, 2.0,  1.0, 0.25,0.002,   0., 
10890      3   0.,   0.,   0.,   0., 0.01, 0.99,   0.,   0.,  0.2,   0., 
10891      4  60*0./ 
10892  
10893 C...LUDAT2, with particle data and flavour treatment parameters. 
10894       DATA (KCHG(I,1),I=   1, 500)/-1,2,-1,2,-1,2,-1,2,2*0,-3,0,-3,0, 
10895      &-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, 
10896      &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, 
10897      &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, 
10898      &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, 
10899      &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, 
10900      &-3,0,3,-3,0,-3,114*0/ 
10901       DATA (KCHG(I,2),I=   1, 500)/8*1,12*0,2,16*0,2,1,50*0,-1,410*0/ 
10902       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, 
10903      &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, 
10904      &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, 
10905      &0,6*1,4*0,6*1,4*0,16*1,4*0,6*1,114*0/ 
10906       DATA (PMAS(I,1),I=   1, 500)/0.0099,0.0056,0.199,1.35,5.,160., 
10907      &2*250.,2*0.,0.00051,0.,0.1057,0.,1.777,0.,250.,5*0.,91.187,80.25, 
10908      &80.,6*0.,500.,900.,500.,3*300.,350.,200.,5000.,60*0.,0.1396, 
10909      &0.4977,0.4936,1.8693,1.8645,1.9688,5.2787,5.2786,5.47972,6.594, 
10910      &0.135,0.5475,0.9578,2.9788,9.4,320.,2*500.,2*0.,0.7669,0.8961, 
10911      &0.8916,2.0101,2.0071,2.11,2*5.325,5.5068,6.602,0.7683,0.782, 
10912      &1.0194,3.0969,9.4603,320.,2*500.,2*0.,1.232,2*1.29,2*2.424,2.536, 
10913      &2*5.73,5.97,7.3,1.232,1.17,1.4,3.46,9.875,320.,2*500.,2*0.,0.983, 
10914      &2*1.429,2*2.272,2.5,2*5.68,5.92,7.25,0.9827,1.,1.4,3.4151,9.8598, 
10915      &320.,2*500.,2*0.,1.26,2*1.402,2*2.372,2.56,2*5.78,6.02,7.3,1.26, 
10916      &1.282,1.42,3.5106,9.8919,320.,2*500.,2*0.,1.318,1.432,1.425, 
10917      &2*2.46,2.61,2*5.83,6.07,7.35,1.318,1.275,1.525,3.5562,9.9132, 
10918      &320.,2*500.,2*0.,2*0.4977,8*0.,3.686,3*0.,10.0233,70*0.,1.1156, 
10919      &5*0.,2.2849,0.,2.473,2.466,6*0.,5.641,0.,2*5.84,6*0.,0.9396, 
10920      &0.9383,0.,1.1974,1.1926,1.1894,1.3213,1.3149,0.,2.4525,2.4529, 
10921      &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, 
10922      &1.231,1.3872,1.3837,1.3828,1.535,1.5318,1.6724,3*2.5,2*2.63,2.8, 
10923      &4*0.,3*5.81,2*5.97,6.13,114*0./ 
10924       DATA (PMAS(I,2),I=   1, 500)/22*0.,2.489,2.066,88*0.,0.0002, 
10925      &0.001,6*0.,0.149,0.0505,0.0498,7*0.,0.151,0.00843,0.0044,7*0., 
10926      &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, 
10927      &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, 
10928      &0.024,0.06,0.0009,6*0.,0.11,0.109,0.098,2*0.019,5*0.02,0.11, 
10929      &0.185,0.076,0.002,146*0.,4*0.12,0.0394,0.036,0.0358,0.0099, 
10930      &0.0091,131*0./ 
10931       DATA (PMAS(I,3),I=   1, 500)/22*0.,2*20.,88*0.,0.002,0.005,6*0., 
10932      &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., 
10933      &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, 
10934      &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, 
10935      &4*0.12,5*0.05,0.25,0.17,0.2,0.01,146*0.,4*0.14,0.04,2*0.035, 
10936      &2*0.05,131*0./ 
10937       DATA (PMAS(I,4),I=   1, 500)/12*0.,658650.,0.,0.0914,68*0.,0.1, 
10938      &0.387,15*0.,7804.,0.,3709.,0.32,0.1259,0.135,3*0.387,0.15,110*0., 
10939      &15500.,26.75,83*0.,78.88,5*0.,0.057,0.,0.025,0.09,6*0.,0.387,0., 
10940      &2*0.387,9*0.,44.3,0.,23.95,49.1,86.9,6*0.,0.13,9*0.,0.387,13*0., 
10941      &24.60001,130*0./ 
10942       DATA PARF/ 
10943      &  0.5, 0.25,  0.5, 0.25,   1.,  0.5,   0.,   0.,   0.,   0., 
10944      1  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
10945      2  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
10946      3  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
10947      4  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
10948      5  0.5,   0.,  0.5,   0.,   1.,   1.,   0.,   0.,   0.,   0., 
10949      6 0.75,  0.5,   0., 0.1667, 0.0833, 0.1667, 0., 0., 0.,   0., 
10950      7   0.,   0.,   1., 0.3333, 0.6667, 0.3333, 0., 0., 0.,   0., 
10951      8   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
10952      9   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
10953      & 0.325, 0.325, 0.5, 1.6,  5.0,   0.,   0.,   0.,   0.,   0., 
10954      1   0., 0.11, 0.16, 0.048, 0.50, 0.45, 0.55, 0.60,  0.,   0., 
10955      2  0.2,  0.1,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 
10956      3  1870*0./ 
10957       DATA ((VCKM(I,J),J=1,4),I=1,4)/ 
10958      1  0.95113,  0.04884,  0.00003,  0.00000, 
10959      2  0.04884,  0.94940,  0.00176,  0.00000, 
10960      3  0.00003,  0.00176,  0.99821,  0.00000, 
10961      4  0.00000,  0.00000,  0.00000,  1.00000/ 
10962  
10963 C...LUDAT3, with particle decay parameters and data. 
10964       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, 
10965      &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, 
10966      &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, 
10967      &9*0,5*1,0,6*1,4*0,6*1,4*0,16*1,4*0,6*1,114*0/ 
10968       DATA (MDCY(I,2),I=   1, 500)/1,9,17,25,33,41,50,60,2*0,70,74,76, 
10969      &81,83,124,126,132,2*0,135,144,156,172,192,6*0,209,0,231,254,274, 
10970      &292,301,304,305,42*0,314,315,319,328,331,336,338,11*0,358,359, 
10971      &361,367,430,491,524,560,596,635,666,668,675,681,682,683,684,685, 
10972      &2*0,686,688,691,694,697,699,700,701,702,703,704,708,713,721,724, 
10973      &733,734,735,2*0,736,737,742,747,749,751,753,755,757,759,761,762, 
10974      &765,769,770,771,772,773,2*0,774,775,777,779,781,783,785,787,789, 
10975      &791,793,794,799,804,806,808,809,810,2*0,811,813,815,817,819,821, 
10976      &823,825,827,829,831,833,846,850,852,854,855,856,2*0,857,863,873, 
10977      &884,892,900,904,912,920,924,928,936,945,951,953,955,956,957,2*0, 
10978      &958,966,8*0,968,3*0,979,70*0,993,5*0,997,0,1073,1074,6*0,1075,0, 
10979      &1092,1093,9*0,1094,1096,1097,1100,1101,0,1103,1104,1105,1106, 
10980      &1107,1108,4*0,1109,1110,1111,1112,1113,1114,4*0,1115,1116,1119, 
10981      &1122,1123,1126,1129,1132,1134,1136,1140,1141,1142,1143,1145,1147, 
10982      &4*0,1148,1149,1150,1151,1152,1153,114*0/ 
10983       DATA (MDCY(I,3),I=   1, 500)/5*8,9,2*10,2*0,4,2,5,2,41,2,6,3,2*0, 
10984      &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, 
10985      &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, 
10986      &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, 
10987      &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, 
10988      &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, 
10989      &6*1,4*0,1,2*3,1,3*3,2*2,4,3*1,2*2,1,4*0,6*1,114*0/ 
10990       DATA (MDME(I,1),I=   1,2000)/6*1,-1,7*1,-1,7*1,-1,7*1,-1,7*1,-1, 
10991      &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, 
10992      &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, 
10993      &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, 
10994      &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, 
10995      &16*1,-1,2*1,3*-1,1665*1/ 
10996       DATA (MDME(I,2),I=   1,2000)/75*102,42,6*102,2*42,2*0,7*41,2*0, 
10997      &24*41,6*102,45,29*102,8*32,8*0,16*32,4*0,8*32,4*0,32,4*0,8*32, 
10998      &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, 
10999      &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, 
11000      &24*42,41*0,16*42,46*0,10*42,20*0,2*13,14*42,16*0,48,3*13,16*42, 
11001      &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, 
11002      &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, 
11003      &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, 
11004      &32,86,87,88,40*0,12,0,32,86,87,88,95*0,12,0,32,86,87,88,2*0,4*42, 
11005      &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, 
11006      &2*42,2*85,14*0,84,5*0,85,886*0/ 
11007       DATA (BRAT(I)  ,I=   1, 439)/75*0.,1.,6*0.,0.179,0.178,0.116, 
11008      &0.235,0.005,0.056,0.018,0.023,0.011,2*0.004,0.0067,0.014,2*0.002, 
11009      &2*0.001,0.0022,0.054,0.002,0.016,0.005,0.011,0.0101,5*0.006, 
11010      &0.002,2*0.001,5*0.002,6*0.,1.,29*0.,0.15394,0.11936,0.15394, 
11011      &0.11926,0.15254,3*0.,0.03368,0.06664,0.03368,0.06664,0.03368, 
11012      &0.06664,2*0.,0.3214,0.0165,2*0.,0.0165,0.3207,2*0.,0.00001, 
11013      &0.00059,6*0.,3*0.1081,3*0.,0.0003,0.048,0.8705,4*0.,0.0002, 
11014      &0.0603,0.,0.0199,0.0008,3*0.,0.143,0.111,0.143,0.111,0.143,0.085, 
11015      &2*0.,0.03,0.058,0.03,0.058,0.03,0.058,8*0.,0.25,0.01,2*0.,0.01, 
11016      &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., 
11017      &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, 
11018      &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, 
11019      &0.01,0.015,0.005,1.,3*0.,1.,4*0.,1.,0.25,0.01,2*0.,0.01,0.25, 
11020      &4*0.,0.24,5*0.,3*0.08,0.,1.,2*0.5,0.635,0.212,0.056,0.017,0.048, 
11021      &0.032,0.07,0.065,2*0.005,2*0.011,5*0.001,0.07,0.065,2*0.005, 
11022      &2*0.011,5*0.001,0.026,0.019,0.066,0.041,0.045,0.076,0.0073, 
11023      &2*0.0047,0.026,0.001,0.0006,0.0066,0.005,2*0.003,2*0.0006, 
11024      &2*0.001,0.006,0.005,0.012,0.0057,0.067,0.008,0.0022,0.027,0.004, 
11025      &0.019,0.012,0.002,0.009,0.0218,0.001,0.022,0.087,0.001,0.0019, 
11026      &0.0015,0.0028,0.034,0.027,2*0.002,2*0.004,2*0.002,0.034,0.027/ 
11027       DATA (BRAT(I)  ,I= 440, 655)/2*0.002,2*0.004,2*0.002,0.0365, 
11028      &0.045,0.073,0.062,3*0.021,0.0061,0.015,0.025,0.0088,0.074,0.0109, 
11029      &0.0041,0.002,0.0035,0.0011,0.001,0.0027,2*0.0016,0.0018,0.011, 
11030      &0.0063,0.0052,0.018,0.016,0.0034,0.0036,0.0009,0.0006,0.015, 
11031      &0.0923,0.018,0.022,0.0077,0.009,0.0075,0.024,0.0085,0.067,0.0511, 
11032      &0.017,0.0004,0.0028,0.01,2*0.02,0.03,2*0.005,2*0.02,0.03,2*0.005, 
11033      &0.015,0.037,0.028,0.079,0.095,0.052,0.0078,4*0.001,0.028,0.033, 
11034      &0.026,0.05,0.01,4*0.005,0.25,0.0952,0.02,0.055,2*0.005,0.008, 
11035      &0.012,0.02,0.055,2*0.005,0.008,0.012,0.01,0.03,0.0035,0.011, 
11036      &0.0055,0.0042,0.009,0.018,0.015,0.0185,0.0135,0.025,0.0004, 
11037      &0.0007,0.0008,0.0014,0.0019,0.0025,0.4291,0.08,0.07,0.02,0.015, 
11038      &0.005,0.02,0.055,2*0.005,0.008,0.012,0.02,0.055,2*0.005,0.008, 
11039      &0.012,0.01,0.03,0.0035,0.011,0.0055,0.0042,0.009,0.018,0.015, 
11040      &0.0185,0.0135,0.025,0.0004,0.0007,0.0008,0.0014,0.0019,0.0025, 
11041      &0.4291,0.08,0.07,0.02,0.015,0.005,0.02,0.055,2*0.005,0.008,0.012, 
11042      &0.02,0.055,2*0.005,0.008,0.012,0.01,0.03,0.0035,0.011,0.0055, 
11043      &0.0042,0.009,0.018,0.015,0.0185,0.0135,0.025,2*0.0002,0.0007, 
11044      &2*0.0004,0.0014,0.001,0.0009,0.0025,0.4291,0.08,0.07,0.02,0.015, 
11045      &0.005,0.047,0.122,0.006,0.012,0.035,0.012,0.035,0.003,0.007,0.15, 
11046      &0.037,0.008,0.002,0.05,0.015,0.003,0.001,0.014,0.042,0.014,0.042/ 
11047       DATA (BRAT(I)  ,I= 656, 931)/0.24,0.065,0.012,0.003,0.001,0.002, 
11048      &0.001,0.002,0.014,0.003,0.988,0.012,0.389,0.319,0.2367,0.049, 
11049      &0.005,0.001,0.0003,0.441,0.206,0.3,0.03,0.022,0.001,5*1.,0.99955, 
11050      &0.00045,0.665,0.333,0.002,0.666,0.333,0.001,0.65,0.3,0.05,0.56, 
11051      &0.44,5*1.,0.99912,0.00079,0.00005,0.00004,0.888,0.085,0.021, 
11052      &2*0.003,0.49,0.344,3*0.043,0.023,0.013,0.001,0.0627,0.0597, 
11053      &0.8776,3*0.027,0.015,0.045,0.015,0.045,0.77,0.029,4*1.,0.28,0.14, 
11054      &0.313,0.157,0.11,0.28,0.14,0.313,0.157,0.11,0.667,0.333,0.667, 
11055      &0.333,2*0.5,0.667,0.333,0.667,0.333,4*0.5,1.,0.333,0.334,0.333, 
11056      &4*0.25,6*1.,0.667,0.333,0.667,0.333,0.667,0.333,0.667,0.333, 
11057      &2*0.5,0.667,0.333,0.667,0.333,4*0.5,1.,0.52,0.26,0.11,2*0.055, 
11058      &0.62,0.31,0.035,2*0.0175,0.007,0.993,0.02,0.98,3*1.,2*0.5,0.667, 
11059      &0.333,0.667,0.333,0.667,0.333,0.667,0.333,2*0.5,0.667,0.333, 
11060      &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, 
11061      &0.727,0.35,0.65,3*1.,2*0.35,0.144,0.105,0.048,0.003,0.333,0.166, 
11062      &0.168,0.084,0.087,0.043,0.059,2*0.029,0.002,0.332,0.166,0.168, 
11063      &0.084,0.086,0.043,0.059,2*0.029,2*0.002,0.3,0.15,0.16,0.08,0.13, 
11064      &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, 
11065      &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, 
11066      &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/ 
11067       DATA (BRAT(I)  ,I= 932,2000)/0.024,2*0.012,0.003,0.566,0.283, 
11068      &0.069,0.028,0.023,2*0.0115,0.005,0.003,0.356,2*0.178,0.28, 
11069      &2*0.004,0.135,0.865,0.22,0.78,3*1.,0.217,0.124,2*0.193,2*0.135, 
11070      &0.002,0.001,0.686,0.314,2*0.0083,0.1866,0.324,0.184,0.027,0.001, 
11071      &0.093,0.087,0.078,0.0028,3*0.014,0.008,0.024,0.008,0.024,0.425, 
11072      &0.02,0.185,0.088,0.043,0.067,0.066,0.641,0.357,2*0.001,0.018, 
11073      &2*0.005,0.003,0.002,2*0.006,0.018,2*0.005,0.003,0.002,2*0.006, 
11074      &0.0066,0.025,0.016,0.0088,2*0.005,0.0058,0.005,0.0055,4*0.004, 
11075      &2*0.002,2*0.004,0.003,0.002,2*0.003,3*0.002,2*0.001,0.002, 
11076      &2*0.001,2*0.002,0.0013,0.0018,5*0.001,4*0.003,2*0.005,2*0.002, 
11077      &2*0.001,2*0.002,2*0.001,0.2432,0.057,2*0.035,0.15,2*0.075,0.03, 
11078      &2*0.015,2*1.,2*0.105,0.04,0.0077,0.02,0.0235,0.0285,0.0435, 
11079      &0.0011,0.0022,0.0044,0.4291,0.08,0.07,0.02,0.015,0.005,2*1., 
11080      &0.999,0.001,1.,0.516,0.483,0.001,1.,0.995,0.005,13*1.,0.331, 
11081      &0.663,0.006,0.663,0.331,0.006,1.,0.88,2*0.06,0.88,2*0.06,0.88, 
11082      &2*0.06,0.667,2*0.333,0.667,0.676,0.234,0.085,0.005,3*1.,4*0.5, 
11083      &7*1.,847*0./ 
11084       DATA (KFDP(I,1),I=   1, 507)/21,22,23,4*-24,25,21,22,23,4*24,25, 
11085      &21,22,23,4*-24,25,21,22,23,4*24,25,21,22,23,4*-24,25,21,22,23, 
11086      &4*24,25,37,21,22,23,4*-24,25,2*-37,21,22,23,4*24,25,2*37,22,23, 
11087      &-24,25,23,24,-12,22,23,-24,25,23,24,-12,-14,35*16,22,23,-24,25, 
11088      &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, 
11089      &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, 
11090      &4*-3,4*-5,4*-7,-11,-13,-15,-17,1,2,3,4,5,6,7,8,11,13,15,17,21, 
11091      &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, 
11092      &35,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,3*24,1,2,3,4,5,6,7,8,11, 
11093      &13,15,17,21,2*22,23,24,23,25,36,1,2,3,4,5,6,7,8,11,13,15,17,21, 
11094      &2*22,23,24,23,-1,-3,-5,-7,-11,-13,-15,-17,24,5,6,21,2,1,2,3,4,5, 
11095      &6,11,13,15,82,-11,-13,2*2,-12,-14,-16,2*-2,2*-4,-2,-4,2*89,37, 
11096      &2*-89,2*5,-37,2*89,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,-13,130, 
11097      &310,-13,3*211,12,14,11*-11,11*-13,-311,-313,-311,-313,-20313, 
11098      &2*-311,-313,-311,-313,2*111,2*221,2*331,2*113,2*223,2*333,-311, 
11099      &-313,2*-321,211,-311,-321,333,-311,-313,-321,211,2*-321,2*-311, 
11100      &-321,211,113,8*-11,8*-13,-321,-323,-321,-323,-311,2*-313,-311, 
11101      &-313,2*-311,-321,-10323,-321,-323,-321,-311,2*-313,211,111,333, 
11102      &3*-321,-311,-313,-321,-313,310,333,211,2*-321,-311,-313,-311,211, 
11103      &-321,3*-311,211,113,321,-15,5*-11,5*-13,221,331,333,221,331,333/ 
11104       DATA (KFDP(I,1),I= 508, 924)/10221,211,213,211,213,321,323,321, 
11105      &323,2212,221,331,333,221,2*2,6*12,6*14,2*16,3*-411,3*-413,2*-411, 
11106      &2*-413,2*441,2*443,2*20443,2*2,2*4,2,4,6*12,6*14,2*16,3*-421, 
11107      &3*-423,2*-421,2*-423,2*441,2*443,2*20443,2*2,2*4,2,4,6*12,6*14, 
11108      &2*16,3*-431,3*-433,2*-431,2*-433,3*441,3*443,3*20443,2*2,2*4,2,4, 
11109      &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, 
11110      &2*-1,3*22,111,211,2*22,211,22,211,111,3*22,111,82,21,3*0,2*211, 
11111      &321,3*311,2*321,421,2*411,2*421,431,511,521,531,541,211,111,13, 
11112      &11,211,22,211,2*111,321,130,-213,113,213,211,22,111,11,13,82,11, 
11113      &13,15,1,2,3,4,21,22,3*0,223,321,311,323,313,2*311,321,313,323, 
11114      &321,423,2*413,2*423,413,523,2*513,2*523,2*513,523,223,213,113, 
11115      &-213,313,-313,323,-323,82,21,3*0,221,321,2*311,321,421,2*411,421, 
11116      &411,421,521,2*511,2*521,2*511,521,221,211,111,321,130,310,211, 
11117      &111,321,130,310,443,82,553,21,3*0,113,213,323,2*313,323,423, 
11118      &2*413,2*423,413,523,2*513,2*523,2*513,523,213,-213,10211,10111, 
11119      &-10211,2*221,213,2*113,-213,2*321,2*311,313,-313,323,-323,443,82, 
11120      &553,21,3*0,213,113,221,223,321,211,321,311,323,313,323,313,321, 
11121      &4*311,321,313,323,313,323,311,4*321,421,411,423,413,423,413,421, 
11122      &2*411,421,413,423,413,423,411,2*421,411,423,413,521,511,523,513, 
11123      &523,513,521,2*511,521,513,523,513,523,511,2*521,511,523,513,511/ 
11124       DATA (KFDP(I,1),I= 925,2000)/521,513,523,213,-213,221,223,321, 
11125      &130,310,111,211,111,2*211,321,130,310,221,111,321,130,310,221, 
11126      &211,111,443,82,553,21,3*0,111,211,-12,12,-14,14,211,111,211,111, 
11127      &11,13,82,4*443,10441,20443,445,441,11,13,15,1,2,3,4,21,22,2*553, 
11128      &10551,20553,555,2212,2*2112,-12,7*-11,7*-13,2*2224,2*2212,2*2214, 
11129      &2*3122,2*3212,2*3214,5*3222,4*3224,2*3322,3324,2*2224,7*2212, 
11130      &5*2214,2*2112,2*2114,2*3122,2*3212,2*3214,2*3222,2*3224,4*2,3, 
11131      &2*2,1,2*2,2*0,-12,-14,-16,5*4122,441,443,20443,2*-2,2*-4,-2,-4, 
11132      &2*0,2112,-12,3122,2212,2112,2212,3*3122,3*4122,4132,4232,0, 
11133      &3*5122,5132,5232,0,2112,2212,2*2112,2212,2112,2*2212,3122,3212, 
11134      &3112,3122,3222,3112,3122,3222,3212,3322,3312,3322,3312,3122,3322, 
11135      &3312,-12,3*4122,2*4132,2*4232,4332,3*5122,5132,5232,5332,847*0/ 
11136       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, 
11137      &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, 
11138      &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, 
11139      &-211,-213,-211,-213,-211,-213,3*-211,-321,-323,-321,-323,3*-321, 
11140      &4*-211,-213,-211,-213,-211,-213,-211,-213,-211,-213,6*-211,2*15, 
11141      &16,15,16,15,18,2*17,18,17,2*18,2*17,-1,-2,-3,-4,-5,-6,-7,-8,21, 
11142      &-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,-1,-2,-3,-4,-5,-6,-7,-8, 
11143      &-11,-12,-13,-14,-15,-16,-17,-18,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8, 
11144      &12,14,16,18,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23, 
11145      &-24,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24, 
11146      &-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, 
11147      &25,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,-24,2*25, 
11148      &36,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,-24,25,2,4, 
11149      &6,8,12,14,16,18,25,-5,-6,21,11,-3,-4,-5,-6,-7,-8,-13,-15,-17,-82, 
11150      &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, 
11151      &4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,14,2*0,14,111,211,111,-11,-13, 
11152      &11*12,11*14,2*211,2*213,211,20213,2*321,2*323,211,213,211,213, 
11153      &211,213,211,213,211,213,211,213,3*211,213,211,2*321,8*211,2*113, 
11154      &2*211,8*12,8*14,2*211,2*213,2*111,221,2*113,223,333,20213,211, 
11155      &2*321,323,2*311,313,-211,111,113,2*211,321,2*211,311,321,310,211/ 
11156       DATA (KFDP(I,2),I= 477, 857)/-211,4*211,321,4*211,113,2*211,-321, 
11157      &16,5*12,5*14,3*211,3*213,211,2*111,2*113,2*-311,2*-313,-2112, 
11158      &3*321,323,2*-1,6*-11,6*-13,2*-15,211,213,20213,211,213,20213,431, 
11159      &433,431,433,311,313,311,313,311,313,-1,-4,-3,-4,-1,-3,6*-11, 
11160      &6*-13,2*-15,211,213,20213,211,213,20213,431,433,431,433,321,323, 
11161      &321,323,321,323,-1,-4,-3,-4,-1,-3,6*-11,6*-13,2*-15,211,213, 
11162      &20213,211,213,20213,431,433,431,433,221,331,333,221,331,333,221, 
11163      &331,333,-1,-4,-3,-4,-1,-3,-15,-3,-1,2*-11,2*-13,2*-15,-1,-4,-3, 
11164      &-4,-3,-4,-1,-4,2*12,2*14,2,3,2,3,2*12,2*14,2,1,22,11,22,111,-211, 
11165      &211,11,-211,13,-211,111,113,223,22,111,-82,21,3*0,111,22,-211, 
11166      &111,22,211,111,22,211,111,22,111,6*22,-211,22,-13,-11,-211,111, 
11167      &-211,2*111,-321,310,211,111,2*-211,221,22,-11,-13,-82,-11,-13, 
11168      &-15,-1,-2,-3,-4,2*21,3*0,211,-213,113,-211,111,223,213,113,211, 
11169      &111,223,211,111,-211,111,321,311,-211,111,211,111,-321,-311,411, 
11170      &421,111,-211,111,211,-311,311,-321,321,-82,21,3*0,211,-211,111, 
11171      &211,111,211,111,-211,111,311,321,-211,111,211,111,-321,-311,411, 
11172      &421,111,-211,111,-321,130,310,-211,111,-321,130,310,22,-82,22,21, 
11173      &3*0,211,111,-211,111,211,111,211,111,-211,111,321,311,-211,111, 
11174      &211,111,-321,-311,411,421,-211,211,-211,111,2*211,111,-211,211, 
11175      &111,211,-321,2*-311,-321,-311,311,-321,321,22,-82,22,21,3*0,111/ 
11176       DATA (KFDP(I,2),I= 858,2000)/3*211,-311,22,-211,111,-211,111, 
11177      &-211,211,-213,113,223,221,211,111,211,111,2*211,213,113,223,221, 
11178      &22,211,111,211,111,4*211,-211,111,-211,111,-211,211,-211,211,321, 
11179      &311,321,311,-211,111,-211,111,-211,211,-211,2*211,111,211,111, 
11180      &4*211,-321,-311,-321,-311,411,421,411,421,-211,211,111,211,-321, 
11181      &130,310,22,-211,111,2*-211,-321,130,310,221,111,-321,130,310,221, 
11182      &-211,111,22,-82,22,21,3*0,111,-211,11,-11,13,-13,-211,111,-211, 
11183      &111,-11,-13,-82,211,111,221,111,4*22,-11,-13,-15,-1,-2,-3,-4, 
11184      &2*21,211,111,3*22,-211,111,22,11,7*12,7*14,-321,-323,-311,-313, 
11185      &-311,-313,211,213,211,213,211,213,111,221,331,113,223,111,221, 
11186      &113,223,321,323,321,-211,-213,111,221,331,113,223,333,10221,111, 
11187      &221,331,113,223,211,213,211,213,321,323,321,323,321,323,311,313, 
11188      &311,313,2*-1,-3,-1,2203,3201,3203,2203,2101,2103,2*0,11,13,15, 
11189      &-211,-213,-20213,-431,-433,3*3122,1,4,3,4,1,3,2*0,-211,11,22,111, 
11190      &211,22,-211,111,22,-211,111,211,2*22,0,-211,111,211,2*22,0, 
11191      &2*-211,111,22,111,211,22,211,2*-211,2*111,-211,2*211,111,211, 
11192      &-211,2*111,211,-321,-211,111,11,-211,111,211,111,22,111,2*22, 
11193      &-211,111,211,3*22,847*0/ 
11194       DATA (KFDP(I,3),I=   1, 944)/75*0,14,6*0,2*16,2*0,5*111,310,130, 
11195      &2*0,2*111,310,130,321,113,211,223,221,2*113,2*211,2*223,2*221, 
11196      &2*113,221,113,2*213,-213,195*0,4*3,4*4,1,4,3,2*2,10*81,25*0,-211, 
11197      &3*111,-311,-313,-311,-321,-313,-323,111,221,331,113,223,-311, 
11198      &-313,-311,-321,-313,-323,111,221,331,113,223,22*0,111,113,2*211, 
11199      &-211,-311,211,111,3*211,-211,7*211,-321,-323,-311,-321,-313,-323, 
11200      &-211,-213,-321,-323,-311,-321,-313,-323,-211,-213,22*0,111,113, 
11201      &-311,2*-211,211,-211,310,-211,2*111,211,2*-211,-321,-211,2*211, 
11202      &-211,111,-211,2*211,0,221,331,333,321,311,221,331,333,321,311, 
11203      &20*0,3,0,-411,-413,-10413,-10411,-20413,-415,-411,-413,-10413, 
11204      &-10411,-20413,-415,-411,-413,16*0,-4,-1,-4,-3,2*-2,-421,-423, 
11205      &-10423,-10421,-20423,-425,-421,-423,-10423,-10421,-20423,-425, 
11206      &-421,-423,16*0,-4,-1,-4,-3,2*-2,-431,-433,-10433,-10431,-20433, 
11207      &-435,-431,-433,-10433,-10431,-20433,-435,-431,-433,19*0,-4,-1,-4, 
11208      &-3,2*-2,3*0,441,443,441,443,441,443,-4,-1,-4,-3,-4,-3,-4,-1,531, 
11209      &533,531,533,3,2,3,2,511,513,511,513,1,2,0,-11,0,2*111,-211,-11, 
11210      &11,-13,2*221,3*0,111,27*0,111,2*0,22,111,5*0,111,12*0,2*21,103*0, 
11211      &-211,2*111,-211,3*111,-211,111,211,14*0,111,6*0,111,-211,8*0,111, 
11212      &-211,9*0,111,-211,111,-211,4*0,111,-211,111,-211,8*0,111,-211, 
11213      &111,-211,4*0,111,-211,111,-211,11*0,-211,6*0,111,211,4*0,111/ 
11214       DATA (KFDP(I,3),I= 945,2000)/13*0,2*111,211,-211,211,-211,7*0, 
11215      &-211,111,13*0,2*21,-211,111,6*0,2212,3122,3212,3214,2112,2114, 
11216      &2212,2112,3122,3212,3214,2112,2114,2212,2112,52*0,3*3,1,8*0, 
11217      &3*4122,8*0,4,1,4,3,2*2,3*0,2112,43*0,3322,861*0/ 
11218       DATA (KFDP(I,4),I=   1,2000)/88*0,3*111,8*0,-211,0,-211,3*0,111, 
11219      &2*-211,0,111,0,2*111,113,221,111,-213,-211,211,195*0,13*81,41*0, 
11220      &111,211,111,211,7*0,111,211,111,211,35*0,2*-211,2*111,211,111, 
11221      &-211,2*211,2*-211,2*0,-211,111,-211,111,4*0,-211,111,-211,111, 
11222      &34*0,111,-211,3*111,3*-211,2*111,3*-211,4*0,-321,-311,3*0,-321, 
11223      &-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, 
11224      &2*-5,7*0,-11,264*0,111,-211,4*0,111,57*0,-211,111,5*0,-211,111, 
11225      &52*0,2101,2103,2*2101,19*0,6*2101,909*0/ 
11226       DATA (KFDP(I,5),I=   1,2000)/90*0,111,16*0,111,7*0,111,0,2*111, 
11227      &303*0,-211,2*111,-211,111,-211,111,54*0,111,-211,3*111,-211,111, 
11228      &1510*0/ 
11229  
11230 C...LUDAT4, with character strings. 
11231       DATA (CHAF(I)  ,I=   1, 281)/'d','u','s','c','b','t','l','h', 
11232      &2*' ','e','nu_e','mu','nu_mu','tau','nu_tau','chi','nu_chi', 
11233      &2*' ','g','gamma','Z','W','H',2*' ','reggeon','pomeron',2*' ', 
11234      &'Z''','Z"','W''','H''','A','H','eta_tech','LQ_ue','R',40*' ', 
11235      &'specflav','rndmflav','phasespa','c-hadron','b-hadron', 
11236      &'t-hadron','l-hadron','h-hadron','Wvirt','diquark','cluster', 
11237      &'string','indep.','CMshower','SPHEaxis','THRUaxis','CLUSjet', 
11238      &'CELLjet','table',' ','pi',2*'K',2*'D','D_s',2*'B','B_s','B_c', 
11239      &'pi','eta','eta''','eta_c','eta_b','eta_t','eta_l','eta_h',2*' ', 
11240      &'rho',2*'K*',2*'D*','D*_s',2*'B*','B*_s','B*_c','rho','omega', 
11241      &'phi','J/psi','Upsilon','Theta','Theta_l','Theta_h',2*' ','b_1', 
11242      &2*'K_1',2*'D_1','D_1s',2*'B_1','B_1s','B_1c','b_1','h_1','h''_1', 
11243      &'h_1c','h_1b','h_1t','h_1l','h_1h',2*' ','a_0',2*'K*_0',2*'D*_0', 
11244      &'D*_0s',2*'B*_0','B*_0s','B*_0c','a_0','f_0','f''_0','chi_0c', 
11245      &'chi_0b','chi_0t','chi_0l','chi_0h',2*' ','a_1',2*'K*_1', 
11246      &2*'D*_1','D*_1s',2*'B*_1','B*_1s','B*_1c','a_1','f_1','f''_1', 
11247      &'chi_1c','chi_1b','chi_1t','chi_1l','chi_1h',2*' ','a_2', 
11248      &2*'K*_2',2*'D*_2','D*_2s',2*'B*_2','B*_2s','B*_2c','a_2','f_2', 
11249      &'f''_2','chi_2c','chi_2b','chi_2t','chi_2l','chi_2h',2*' ','K_L', 
11250      &'K_S',8*' ','psi''',3*' ','Upsilon''',45*' ','pi_diffr'/ 
11251       DATA (CHAF(I)  ,I= 282, 500)/'n_diffr','p_diffr','rho_diff', 
11252      &'omega_di','phi_diff','J/psi_di',18*' ','Lambda',5*' ', 
11253      &'Lambda_c',' ',2*'Xi_c',6*' ','Lambda_b',' ',2*'Xi_b',6*' ','n', 
11254      &'p',' ',3*'Sigma',2*'Xi',' ',3*'Sigma_c',2*'Xi''_c','Omega_c', 
11255      &4*' ',3*'Sigma_b',2*'Xi''_b','Omega_b',4*' ',4*'Delta', 
11256      &3*'Sigma*',2*'Xi*','Omega',3*'Sigma*_c',2*'Xi*_c','Omega*_c', 
11257      &4*' ',3*'Sigma*_b',2*'Xi*_b','Omega*_b',114*' '/ 
11258  
11259 C...LUDATR, with initial values for the random number generator. 
11260       DATA MRLU/19780503,0,0,97,33,0/ 
11261  
11262       END 
11263 
11264 
Generated on Sun Oct 20 20:24:08 2013 for C++InterfacetoTauola by  doxygen 1.6.3