File indexing completed on 2025-08-05 08:15:43
0001
0002
0003
0004 SUBROUTINE LUCELL(NJET)
0005
0006
0007
0008 COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0009 SAVE /LUJETS/
0010 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0011 SAVE /LUDAT1/
0012 COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
0013 SAVE /LUDAT2/
0014
0015
0016 NCE2=2*MSTU(51)*MSTU(52)
0017 PTLRAT=1./SINH(PARU(51))**2
0018 NP=0
0019 NC=N
0020 DO 110 I=1,N
0021 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
0022 IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110
0023 IF(MSTU(41).GE.2) THEN
0024 KC=LUCOMP(K(I,2))
0025 IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
0026 & KC.EQ.18) GOTO 110
0027 IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0)
0028 & GOTO 110
0029 ENDIF
0030 NP=NP+1
0031 PT=SQRT(P(I,1)**2+P(I,2)**2)
0032 ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3))
0033 IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5*(ETA/PARU(51)+1.))))
0034 PHI=ULANGL(P(I,1),P(I,2))
0035 IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5*(PHI/PARU(1)+1.))))
0036 IETPH=MSTU(52)*IETA+IPHI
0037
0038
0039 DO 100 IC=N+1,NC
0040 IF(IETPH.EQ.K(IC,3)) THEN
0041 K(IC,4)=K(IC,4)+1
0042 P(IC,5)=P(IC,5)+PT
0043 GOTO 110
0044 ENDIF
0045 100 CONTINUE
0046 IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN
0047 CALL LUERRM(11,'(LUCELL:) no more memory left in LUJETS')
0048 NJET=-2
0049 RETURN
0050 ENDIF
0051 NC=NC+1
0052 K(NC,3)=IETPH
0053 K(NC,4)=1
0054 K(NC,5)=2
0055 P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51))
0056 P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52))
0057 P(NC,5)=PT
0058 110 CONTINUE
0059
0060
0061 IF(MSTU(53).GE.1) THEN
0062 DO 130 IC=N+1,NC
0063 PEI=P(IC,5)
0064 IF(MSTU(53).EQ.2) PEI=P(IC,5)/COSH(P(IC,1))
0065 120 PEF=PEI+PARU(55)*SQRT(-2.*LOG(MAX(1E-10,RLU(0)))*PEI)*
0066 & COS(PARU(2)*RLU(0))
0067 IF(PEF.LT.0..OR.PEF.GT.PARU(56)*PEI) GOTO 120
0068 P(IC,5)=PEF
0069 130 IF(MSTU(53).EQ.2) P(IC,5)=PEF*COSH(P(IC,1))
0070 ENDIF
0071
0072
0073 NJ=NC
0074 140 ETMAX=0.
0075 DO 150 IC=N+1,NC
0076 IF(K(IC,5).NE.2) GOTO 150
0077 IF(P(IC,5).LE.ETMAX) GOTO 150
0078 ICMAX=IC
0079 ETA=P(IC,1)
0080 PHI=P(IC,2)
0081 ETMAX=P(IC,5)
0082 150 CONTINUE
0083 IF(ETMAX.LT.PARU(52)) GOTO 210
0084 IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN
0085 CALL LUERRM(11,'(LUCELL:) no more memory left in LUJETS')
0086 NJET=-2
0087 RETURN
0088 ENDIF
0089 K(ICMAX,5)=1
0090 NJ=NJ+1
0091 K(NJ,4)=0
0092 K(NJ,5)=1
0093 P(NJ,1)=ETA
0094 P(NJ,2)=PHI
0095 P(NJ,3)=0.
0096 P(NJ,4)=0.
0097 P(NJ,5)=0.
0098
0099
0100 DO 160 IC=N+1,NC
0101 IF(K(IC,5).EQ.0) GOTO 160
0102 IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 160
0103 DPHIA=ABS(P(IC,2)-PHI)
0104 IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 160
0105 PHIC=P(IC,2)
0106 IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI)
0107 IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 160
0108 K(IC,5)=-K(IC,5)
0109 K(NJ,4)=K(NJ,4)+K(IC,4)
0110 P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1)
0111 P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC
0112 P(NJ,5)=P(NJ,5)+P(IC,5)
0113 160 CONTINUE
0114
0115
0116 IF(P(NJ,5).LT.PARU(53)) THEN
0117 NJ=NJ-1
0118 DO 170 IC=N+1,NC
0119 170 IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5)
0120 ELSEIF(MSTU(54).LE.2) THEN
0121 P(NJ,3)=P(NJ,3)/P(NJ,5)
0122 P(NJ,4)=P(NJ,4)/P(NJ,5)
0123 IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2),
0124 & P(NJ,4))
0125 DO 180 IC=N+1,NC
0126 180 IF(K(IC,1).LT.0) K(IC,1)=0
0127 ELSE
0128 DO 190 J=1,4
0129 190 P(NJ,J)=0.
0130 DO 200 IC=N+1,NC
0131 IF(K(IC,5).GE.0) GOTO 200
0132 P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2))
0133 P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2))
0134 P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1))
0135 P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1))
0136 K(IC,5)=0
0137 200 CONTINUE
0138 ENDIF
0139 GOTO 140
0140
0141
0142 210 DO 230 I=1,NJ-NC
0143 ETMAX=0.
0144 DO 220 IJ=NC+1,NJ
0145 IF(K(IJ,5).EQ.0) GOTO 220
0146 IF(P(IJ,5).LT.ETMAX) GOTO 220
0147 IJMAX=IJ
0148 ETMAX=P(IJ,5)
0149 220 CONTINUE
0150 K(IJMAX,5)=0
0151 K(N+I,1)=31
0152 K(N+I,2)=98
0153 K(N+I,3)=I
0154 K(N+I,4)=K(IJMAX,4)
0155 K(N+I,5)=0
0156 DO 230 J=1,5
0157 P(N+I,J)=P(IJMAX,J)
0158 230 V(N+I,J)=0.
0159 NJET=NJ-NC
0160
0161
0162 IF(MSTU(54).EQ.2) THEN
0163 DO 240 I=N+1,N+NJET
0164 ETA=P(I,3)
0165 P(I,1)=P(I,5)*COS(P(I,4))
0166 P(I,2)=P(I,5)*SIN(P(I,4))
0167 P(I,3)=P(I,5)*SINH(ETA)
0168 P(I,4)=P(I,5)*COSH(ETA)
0169 240 P(I,5)=0.
0170 ELSEIF(MSTU(54).GE.3) THEN
0171 DO 250 I=N+1,N+NJET
0172 250 P(I,5)=SQRT(MAX(0.,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2))
0173 ENDIF
0174
0175
0176 MSTU(61)=N+1
0177 MSTU(62)=NP
0178 MSTU(63)=NC-N
0179 IF(MSTU(43).LE.1) MSTU(3)=NJET
0180 IF(MSTU(43).GE.2) N=N+NJET
0181
0182 RETURN
0183 END