Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:21:12

0001  
0002 C*********************************************************************
0003  
0004 C...PYMASS
0005 C...Gives the mass of a particle/parton.
0006  
0007       FUNCTION PYMASS(KF)
0008  
0009 C...Double precision and integer declarations.
0010       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0011       IMPLICIT INTEGER(I-N)
0012       INTEGER PYK,PYCHGE,PYCOMP
0013 C...Commonblocks.
0014       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0015       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0016       SAVE /PYDAT1/,/PYDAT2/
0017  
0018 C...Reset variables. Compressed code. Special case for popcorn diquarks.
0019       PYMASS=0D0
0020       KFA=IABS(KF)
0021       KC=PYCOMP(KF)
0022       IF(KC.EQ.0) THEN
0023         MSTJ(93)=0
0024         RETURN
0025       ENDIF
0026  
0027 C...Guarantee use of constituent masses for internal checks.
0028       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.
0029      &(KFA.LE.10.OR.MOD(KFA/10,10).EQ.0)) THEN
0030         IF(KFA.LE.5) THEN
0031           PYMASS=PARF(100+KFA)
0032           IF(MSTJ(93).EQ.2) PYMASS=MAX(0D0,PYMASS-PARF(121))
0033         ELSEIF(KFA.LE.10) THEN
0034           PYMASS=PMAS(KFA,1)
0035         ELSEIF(MSTJ(93).EQ.1) THEN
0036           PYMASS=PARF(100+MOD(KFA/1000,10))+PARF(100+MOD(KFA/100,10))
0037         ELSE
0038           PYMASS=MAX(0D0,PMAS(KC,1)-PARF(122)-2D0*PARF(112)/3D0)
0039         ENDIF
0040  
0041 C...Other masses can be read directly off table.
0042       ELSE
0043         PYMASS=PMAS(KC,1)
0044       ENDIF
0045  
0046 C...Optional mass broadening according to truncated Breit-Wigner
0047 C...(either in m or in m^2).
0048       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1D-4) THEN
0049         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN
0050           PYMASS=PYMASS+0.5D0*PMAS(KC,2)*TAN((2D0*PYR(0)-1D0)*
0051      &    ATAN(2D0*PMAS(KC,3)/PMAS(KC,2)))
0052         ELSE
0053           PM0=PYMASS
0054           PMLOW=ATAN((MAX(0D0,PM0-PMAS(KC,3))**2-PM0**2)/
0055      &    (PM0*PMAS(KC,2)))
0056           PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2)))
0057           PYMASS=SQRT(MAX(0D0,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+
0058      &    (PMUPP-PMLOW)*PYR(0))))
0059         ENDIF
0060       ENDIF
0061       MSTJ(93)=0
0062  
0063       RETURN
0064       END