]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HIJING/hipyset1_35/ulmass_hijing.F
Protection in function PAWT added.
[u/mrichter/AliRoot.git] / HIJING / hipyset1_35 / ulmass_hijing.F
1 * $Id$
2     
3 C*********************************************************************  
4     
5       FUNCTION ULMASS_HIJING(KF)   
6     
7 C...Purpose: to give the mass of a particle/parton. 
8 #include "ludat1_hijing.inc"
9 #include "ludat2_hijing.inc"
10     
11 C...Reset variables. Compressed code.   
12       ULMASS_HIJING=0. 
13       KFA=IABS(KF)  
14       KC=LUCOMP_HIJING(KF) 
15       IF(KC.EQ.0) RETURN    
16       PARF(106)=PMAS(6,1)   
17       PARF(107)=PMAS(7,1)   
18       PARF(108)=PMAS(8,1)   
19     
20 C...Guarantee use of constituent masses for internal checks.    
21       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.KFA.LE.10) THEN   
22         ULMASS_HIJING=PARF(100+KFA)    
23         IF(MSTJ(93).EQ.2) ULMASS_HIJING=MAX(0.,ULMASS_HIJING-PARF(121))   
24     
25 C...Masses that can be read directly off table. 
26       ELSEIF(KFA.LE.100.OR.KC.LE.80.OR.KC.GT.100) THEN  
27         ULMASS_HIJING=PMAS(KC,1)   
28     
29 C...Find constituent partons and their masses.  
30       ELSE  
31         KFLA=MOD(KFA/1000,10)   
32         KFLB=MOD(KFA/100,10)    
33         KFLC=MOD(KFA/10,10) 
34         KFLS=MOD(KFA,10)    
35         KFLR=MOD(KFA/10000,10)  
36         PMA=PARF(100+KFLA)  
37         PMB=PARF(100+KFLB)  
38         PMC=PARF(100+KFLC)  
39     
40 C...Construct masses for various meson, diquark and baryon cases.   
41         IF(KFLA.EQ.0.AND.KFLR.EQ.0.AND.KFLS.LE.3) THEN  
42           IF(KFLS.EQ.1) PMSPL=-3./(PMB*PMC) 
43           IF(KFLS.GE.3) PMSPL=1./(PMB*PMC)  
44           ULMASS_HIJING=PARF(111)+PMB+PMC+PARF(113)*PARF(101)**2*PMSPL 
45         ELSEIF(KFLA.EQ.0) THEN  
46           KMUL=2    
47           IF(KFLS.EQ.1) KMUL=3  
48           IF(KFLR.EQ.2) KMUL=4  
49           IF(KFLS.EQ.5) KMUL=5  
50           ULMASS_HIJING=PARF(113+KMUL)+PMB+PMC 
51         ELSEIF(KFLC.EQ.0) THEN  
52           IF(KFLS.EQ.1) PMSPL=-3./(PMA*PMB) 
53           IF(KFLS.EQ.3) PMSPL=1./(PMA*PMB)  
54           ULMASS_HIJING=2.*PARF(112)/3.+PMA+PMB+PARF(114)*PARF(101)**2
55      $         *PMSPL   
56           IF(MSTJ(93).EQ.1) ULMASS_HIJING=PMA+PMB  
57           IF(MSTJ(93).EQ.2) ULMASS_HIJING=MAX(0.,ULMASS_HIJING-PARF(122)
58      $         -2.*PARF(112)/3.)  
59         ELSE    
60           IF(KFLS.EQ.2.AND.KFLA.EQ.KFLB) THEN   
61             PMSPL=1./(PMA*PMB)-2./(PMA*PMC)-2./(PMB*PMC)    
62           ELSEIF(KFLS.EQ.2.AND.KFLB.GE.KFLC) THEN   
63             PMSPL=-2./(PMA*PMB)-2./(PMA*PMC)+1./(PMB*PMC)   
64           ELSEIF(KFLS.EQ.2) THEN    
65             PMSPL=-3./(PMB*PMC) 
66           ELSE  
67             PMSPL=1./(PMA*PMB)+1./(PMA*PMC)+1./(PMB*PMC)    
68           ENDIF 
69           ULMASS_HIJING=PARF(112)+PMA+PMB+PMC+PARF(114)*PARF(101)**2
70      $         *PMSPL 
71         ENDIF   
72       ENDIF 
73     
74 C...Optional mass broadening according to truncated Breit-Wigner    
75 C...(either in m or in m^2).    
76       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1E-4) THEN 
77         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN    
78            ULMASS_HIJING=ULMASS_HIJING+0.5*PMAS(KC,2)*TAN((2.
79      $          *RLU_HIJING(0)-1.)*ATAN(2.*PMAS(KC,3)/PMAS(KC,2)))   
80         ELSE    
81           PM0=ULMASS_HIJING    
82           PMLOW=ATAN((MAX(0.,PM0-PMAS(KC,3))**2-PM0**2)/    
83      &    (PM0*PMAS(KC,2))) 
84           PMUPP=ATAN((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2))   
85           ULMASS_HIJING=SQRT(MAX(0.,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+   
86      &    (PMUPP-PMLOW)*RLU_HIJING(0))))   
87         ENDIF   
88       ENDIF 
89       MSTJ(93)=0    
90     
91       RETURN    
92       END