Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:15:46

0001     
0002 C*********************************************************************  
0003     
0004       FUNCTION ULMASS(KF)   
0005     
0006 C...Purpose: to give the mass of a particle/parton. 
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 C...Reset variables. Compressed code.   
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 C...Guarantee use of constituent masses for internal checks.    
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 C...Masses that can be read directly off table. 
0027       ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN  
0028         ULMASS=PMAS(KC,1)   
0029     
0030 C...Find constituent partons and their masses.  
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 C...Construct masses for various meson, diquark and baryon cases.   
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 C...Optional mass broadening according to truncated Breit-Wigner    
0074 C...(either in m or in m^2).    
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