File indexing completed on 2025-08-05 08:15:46
0001
0002
0003
0004 FUNCTION ULMASS(KF)
0005
0006
0007 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0008 SAVE /LUDAT1/
0009 COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
0010 SAVE /LUDAT2/
0011
0012
0013 ULMASS=0.
0014 KFA=IABS(KF)
0015 KC=LUCOMP(KF)
0016 IF(KC.EQ.0) RETURN
0017 PARF(106)=PMAS(6,1)
0018 PARF(107)=PMAS(7,1)
0019 PARF(108)=PMAS(8,1)
0020
0021
0022 IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.KFA.LE.10) THEN
0023 ULMASS=PARF(100+KFA)
0024 IF(MSTJ(93).EQ.2) ULMASS=MAX(0.,ULMASS-PARF(121))
0025
0026
0027 ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN
0028 ULMASS=PMAS(KC,1)
0029
0030
0031 ELSE
0032 KFLA=MOD(KFA/1000,10)
0033 KFLB=MOD(KFA/100,10)
0034 KFLC=MOD(KFA/10,10)
0035 KFLS=MOD(KFA,10)
0036 KFLR=MOD(KFA/10000,10)
0037 PMA=PARF(100+KFLA)
0038 PMB=PARF(100+KFLB)
0039 PMC=PARF(100+KFLC)
0040
0041
0042 IF(KFLA.EQ.0.AND.KFLR.EQ.0.AND.KFLS.LE.3) THEN
0043 IF(KFLS.EQ.1) PMSPL=-3./(PMB*PMC)
0044 IF(KFLS.GE.3) PMSPL=1./(PMB*PMC)
0045 ULMASS=PARF(111)+PMB+PMC+PARF(113)*PARF(101)**2*PMSPL
0046 ELSEIF(KFLA.EQ.0) THEN
0047 KMUL=2
0048 IF(KFLS.EQ.1) KMUL=3
0049 IF(KFLR.EQ.2) KMUL=4
0050 IF(KFLS.EQ.5) KMUL=5
0051 ULMASS=PARF(113+KMUL)+PMB+PMC
0052 ELSEIF(KFLC.EQ.0) THEN
0053 IF(KFLS.EQ.1) PMSPL=-3./(PMA*PMB)
0054 IF(KFLS.EQ.3) PMSPL=1./(PMA*PMB)
0055 ULMASS=2.*PARF(112)/3.+PMA+PMB+PARF(114)*PARF(101)**2*PMSPL
0056 IF(MSTJ(93).EQ.1) ULMASS=PMA+PMB
0057 IF(MSTJ(93).EQ.2) ULMASS=MAX(0.,ULMASS-PARF(122)-
0058 & 2.*PARF(112)/3.)
0059 ELSE
0060 IF(KFLS.EQ.2.AND.KFLA.EQ.KFLB) THEN
0061 PMSPL=1./(PMA*PMB)-2./(PMA*PMC)-2./(PMB*PMC)
0062 ELSEIF(KFLS.EQ.2.AND.KFLB.GE.KFLC) THEN
0063 PMSPL=-2./(PMA*PMB)-2./(PMA*PMC)+1./(PMB*PMC)
0064 ELSEIF(KFLS.EQ.2) THEN
0065 PMSPL=-3./(PMB*PMC)
0066 ELSE
0067 PMSPL=1./(PMA*PMB)+1./(PMA*PMC)+1./(PMB*PMC)
0068 ENDIF
0069 ULMASS=PARF(112)+PMA+PMB+PMC+PARF(114)*PARF(101)**2*PMSPL
0070 ENDIF
0071 ENDIF
0072
0073
0074
0075 IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1E-4) THEN
0076 IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN
0077 ULMASS=ULMASS+0.5*PMAS(KC,2)*TAN((2.*RLU(0)-1.)*
0078 & ATAN(2.*PMAS(KC,3)/PMAS(KC,2)))
0079 ELSE
0080 PM0=ULMASS
0081 PMLOW=ATAN((MAX(0.,PM0-PMAS(KC,3))**2-PM0**2)/
0082 & (PM0*PMAS(KC,2)))
0083 PMUPP=ATAN((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2))
0084 ULMASS=SQRT(MAX(0.,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+
0085 & (PMUPP-PMLOW)*RLU(0))))
0086 ENDIF
0087 ENDIF
0088 MSTJ(93)=0
0089
0090 RETURN
0091 END