File indexing completed on 2025-08-05 08:15:43
0001
0002
0003
0004 SUBROUTINE LUBOEI(NSAV)
0005
0006
0007
0008
0009 IMPLICIT DOUBLE PRECISION(D)
0010 COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0011 SAVE /LUJETS/
0012 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0013 SAVE /LUDAT1/
0014 DIMENSION DPS(4),KFBE(9),NBE(0:9),BEI(100)
0015 DATA KFBE/211,-211,111,321,-321,130,310,221,331/
0016
0017
0018 IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN
0019 DO 100 J=1,4
0020 100 DPS(J)=0.
0021 DO 120 I=1,N
0022 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120
0023 DO 110 J=1,4
0024 110 DPS(J)=DPS(J)+P(I,J)
0025 120 CONTINUE
0026 CALL LUDBRB(0,0,0.,0.,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
0027 &-DPS(3)/DPS(4))
0028 PECM=0.
0029 DO 130 I=1,N
0030 130 IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4)
0031
0032
0033 NBE(0)=N+MSTU(3)
0034 DO 160 IBE=1,MIN(9,MSTJ(51))
0035 NBE(IBE)=NBE(IBE-1)
0036 DO 150 I=NSAV+1,N
0037 IF(K(I,2).NE.KFBE(IBE)) GOTO 150
0038 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
0039 IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN
0040 CALL LUERRM(11,'(LUBOEI:) no more memory left in LUJETS')
0041 RETURN
0042 ENDIF
0043 NBE(IBE)=NBE(IBE)+1
0044 K(NBE(IBE),1)=I
0045 DO 140 J=1,3
0046 140 P(NBE(IBE),J)=0.
0047 150 CONTINUE
0048 160 CONTINUE
0049
0050
0051 DO 210 IBE=1,MIN(9,MSTJ(51))
0052 IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 180
0053 IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2)).
0054 &LE.1) GOTO 180
0055 IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5),
0056 &NBE(7)-NBE(6)).LE.1) GOTO 180
0057 IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 180
0058 IF(IBE.EQ.1) PMHQ=2.*ULMASS(211)
0059 IF(IBE.EQ.4) PMHQ=2.*ULMASS(321)
0060 IF(IBE.EQ.8) PMHQ=2.*ULMASS(221)
0061 IF(IBE.EQ.9) PMHQ=2.*ULMASS(331)
0062 QDEL=0.1*MIN(PMHQ,PARJ(93))
0063 IF(MSTJ(51).EQ.1) THEN
0064 NBIN=MIN(100,NINT(9.*PARJ(93)/QDEL))
0065 BEEX=EXP(0.5*QDEL/PARJ(93))
0066 BERT=EXP(-QDEL/PARJ(93))
0067 ELSE
0068 NBIN=MIN(100,NINT(3.*PARJ(93)/QDEL))
0069 ENDIF
0070 DO 170 IBIN=1,NBIN
0071 QBIN=QDEL*(IBIN-0.5)
0072 BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12.)/SQRT(QBIN**2+PMHQ**2)
0073 IF(MSTJ(51).EQ.1) THEN
0074 BEEX=BEEX*BERT
0075 BEI(IBIN)=BEI(IBIN)*BEEX
0076 ELSE
0077 BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2)
0078 ENDIF
0079 170 IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1)
0080
0081
0082 180 DO 200 I1M=NBE(IBE-1)+1,NBE(IBE)-1
0083 I1=K(I1M,1)
0084 DO 200 I2M=I1M+1,NBE(IBE)
0085 I2=K(I2M,1)
0086 Q2OLD=MAX(0.,(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+
0087 &P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2)
0088 QOLD=SQRT(Q2OLD)
0089
0090
0091 IF(QOLD.LT.0.5*QDEL) THEN
0092 QMOV=QOLD/3.
0093 ELSEIF(QOLD.LT.(NBIN-0.1)*QDEL) THEN
0094 RBIN=QOLD/QDEL
0095 IBIN=RBIN
0096 RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1)
0097 QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))*
0098 & SQRT(Q2OLD+PMHQ**2)/Q2OLD
0099 ELSE
0100 QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
0101 ENDIF
0102 Q2NEW=Q2OLD*(QOLD/(QOLD+3.*PARJ(92)*QMOV))**(2./3.)
0103
0104
0105 HC1=(P(I1,4)+P(I2,4))**2-(Q2OLD-Q2NEW)
0106 HC2=(Q2OLD-Q2NEW)*(P(I1,4)-P(I2,4))**2
0107 HA=0.5*(1.-SQRT(HC1*Q2NEW/(HC1*Q2OLD-HC2)))
0108 DO 190 J=1,3
0109 PD=HA*(P(I2,J)-P(I1,J))
0110 P(I1M,J)=P(I1M,J)+PD
0111 190 P(I2M,J)=P(I2M,J)-PD
0112 200 CONTINUE
0113 210 CONTINUE
0114
0115
0116 DO 230 IM=NBE(0)+1,NBE(MIN(9,MSTJ(51)))
0117 I=K(IM,1)
0118 DO 220 J=1,3
0119 220 P(I,J)=P(I,J)+P(IM,J)
0120 230 P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
0121
0122
0123 PES=0.
0124 PQS=0.
0125 DO 240 I=1,N
0126 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 240
0127 PES=PES+P(I,4)
0128 PQS=PQS+P(I,5)**2/P(I,4)
0129 240 CONTINUE
0130 FAC=(PECM-PQS)/(PES-PQS)
0131 DO 260 I=1,N
0132 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 260
0133 DO 250 J=1,3
0134 250 P(I,J)=FAC*P(I,J)
0135 P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
0136 260 CONTINUE
0137
0138
0139 CALL LUDBRB(0,0,0.,0.,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4))
0140
0141 RETURN
0142 END